mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-435,436): Add location_id to expense form and payload
This commit is contained in:
@@ -11,6 +11,7 @@ type ExpenseFormSchemaType = {
|
|||||||
value: number;
|
value: number;
|
||||||
label: string;
|
label: string;
|
||||||
};
|
};
|
||||||
|
location_id: number;
|
||||||
transaction_date?: string;
|
transaction_date?: string;
|
||||||
kandangs?: { id: number; name: string }[];
|
kandangs?: { id: number; name: string }[];
|
||||||
supplier?: {
|
supplier?: {
|
||||||
@@ -46,6 +47,8 @@ export const ExpenseRequestFormSchema: Yup.ObjectSchema<ExpenseFormSchemaType> =
|
|||||||
label: Yup.string().required(),
|
label: Yup.string().required(),
|
||||||
}).required('Lokasi wajib diisi!'),
|
}).required('Lokasi wajib diisi!'),
|
||||||
|
|
||||||
|
location_id: Yup.number().min(1).required('Lokasi wajib diisi!'),
|
||||||
|
|
||||||
transaction_date: Yup.string().required('Tanggal transaksi wajib diisi!'),
|
transaction_date: Yup.string().required('Tanggal transaksi wajib diisi!'),
|
||||||
kandangs: Yup.array()
|
kandangs: Yup.array()
|
||||||
.of(
|
.of(
|
||||||
@@ -128,6 +131,7 @@ export const getExpenseFormInitialValues = (
|
|||||||
label: initialValues.location.name,
|
label: initialValues.location.name,
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
|
location_id: Number(initialValues?.location.id || 0),
|
||||||
transaction_date: initialValues?.transaction_date
|
transaction_date: initialValues?.transaction_date
|
||||||
? formatDate(initialValues.transaction_date, 'YYYY-MM-DD')
|
? formatDate(initialValues.transaction_date, 'YYYY-MM-DD')
|
||||||
: undefined,
|
: undefined,
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ const ExpenseRequestForm = ({
|
|||||||
|
|
||||||
const expensePayload: CreateExpensePayload = {
|
const expensePayload: CreateExpensePayload = {
|
||||||
category: formik.values.category?.value as 'BOP' | 'NON-BOP',
|
category: formik.values.category?.value as 'BOP' | 'NON-BOP',
|
||||||
|
location_id: values.location_id as number,
|
||||||
transaction_date: values?.transaction_date as string,
|
transaction_date: values?.transaction_date as string,
|
||||||
supplier_id: values.supplier?.value as number,
|
supplier_id: values.supplier?.value as number,
|
||||||
documents: values.documents as File[],
|
documents: values.documents as File[],
|
||||||
@@ -130,6 +131,7 @@ const ExpenseRequestForm = ({
|
|||||||
case 'edit':
|
case 'edit':
|
||||||
const expenseUpdatePayload: UpdateExpensePayload = {
|
const expenseUpdatePayload: UpdateExpensePayload = {
|
||||||
category: formik.values.category?.value as 'BOP' | 'NON-BOP',
|
category: formik.values.category?.value as 'BOP' | 'NON-BOP',
|
||||||
|
location_id: values.location_id as number,
|
||||||
transaction_date: values?.transaction_date as string,
|
transaction_date: values?.transaction_date as string,
|
||||||
supplier_id: values.supplier?.value as number,
|
supplier_id: values.supplier?.value as number,
|
||||||
documents: values.documents as File[],
|
documents: values.documents as File[],
|
||||||
@@ -179,6 +181,9 @@ const ExpenseRequestForm = ({
|
|||||||
formik.setFieldTouched('location', true);
|
formik.setFieldTouched('location', true);
|
||||||
formik.setFieldValue('location', val);
|
formik.setFieldValue('location', val);
|
||||||
|
|
||||||
|
const locationId = Array.isArray(val) ? val[0]?.value : val?.value;
|
||||||
|
formik.setFieldValue('location_id', locationId);
|
||||||
|
|
||||||
formik.setFieldValue('kandangs', []);
|
formik.setFieldValue('kandangs', []);
|
||||||
formik.setFieldValue('expense_nonstocks', []);
|
formik.setFieldValue('expense_nonstocks', []);
|
||||||
};
|
};
|
||||||
@@ -454,7 +459,9 @@ const ExpenseRequestForm = ({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
<ExpenseRequestKandangDetailExpense
|
<ExpenseRequestKandangDetailExpense
|
||||||
|
type={type}
|
||||||
formik={formik}
|
formik={formik}
|
||||||
|
supplierId={formik.values.supplier?.value as number}
|
||||||
className={{
|
className={{
|
||||||
wrapper: 'col-span-12',
|
wrapper: 'col-span-12',
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import { removeArrayItemAndSync } from '@/lib/utils/formik';
|
|||||||
interface ExpenseRequestKandangDetailExpenseProps {
|
interface ExpenseRequestKandangDetailExpenseProps {
|
||||||
type?: 'add' | 'edit' | 'detail';
|
type?: 'add' | 'edit' | 'detail';
|
||||||
formik: FormikContextType<ExpenseRequestFormValues>;
|
formik: FormikContextType<ExpenseRequestFormValues>;
|
||||||
|
supplierId?: number;
|
||||||
className?: {
|
className?: {
|
||||||
wrapper?: string;
|
wrapper?: string;
|
||||||
};
|
};
|
||||||
@@ -28,12 +29,18 @@ interface ExpenseRequestKandangDetailExpenseProps {
|
|||||||
|
|
||||||
const ExpenseRequestKandangDetailExpense: React.FC<
|
const ExpenseRequestKandangDetailExpense: React.FC<
|
||||||
ExpenseRequestKandangDetailExpenseProps
|
ExpenseRequestKandangDetailExpenseProps
|
||||||
> = ({ type, formik, className }) => {
|
> = ({ type, formik, supplierId, className }) => {
|
||||||
const {
|
const {
|
||||||
setInputValue: setNonstockInputValue,
|
setInputValue: setNonstockInputValue,
|
||||||
options: nonstockOptions,
|
options: nonstockOptions,
|
||||||
isLoadingOptions: isLoadingNonstockOptions,
|
isLoadingOptions: isLoadingNonstockOptions,
|
||||||
} = useSelect<Nonstock>(NonstockApi.basePath, 'id', 'name');
|
} = useSelect<Nonstock>(
|
||||||
|
NonstockApi.basePath,
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'search',
|
||||||
|
supplierId ? { supplier_id: String(supplierId) } : undefined
|
||||||
|
);
|
||||||
|
|
||||||
const nonstockChangeHandler = (
|
const nonstockChangeHandler = (
|
||||||
kandangExpenseIdx: number,
|
kandangExpenseIdx: number,
|
||||||
|
|||||||
@@ -483,6 +483,7 @@ export class ExpenseApiService extends BaseApiService<
|
|||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
|
|
||||||
formData.append('category', payload.category);
|
formData.append('category', payload.category);
|
||||||
|
formData.append('location_id', String(payload.location_id));
|
||||||
formData.append('transaction_date', payload.transaction_date);
|
formData.append('transaction_date', payload.transaction_date);
|
||||||
formData.append('supplier_id', String(payload.supplier_id));
|
formData.append('supplier_id', String(payload.supplier_id));
|
||||||
|
|
||||||
@@ -505,6 +506,7 @@ export class ExpenseApiService extends BaseApiService<
|
|||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
|
|
||||||
formData.append('category', payload.category);
|
formData.append('category', payload.category);
|
||||||
|
formData.append('location_id', String(payload.location_id));
|
||||||
formData.append('transaction_date', payload.transaction_date);
|
formData.append('transaction_date', payload.transaction_date);
|
||||||
formData.append('supplier_id', String(payload.supplier_id));
|
formData.append('supplier_id', String(payload.supplier_id));
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -57,6 +57,7 @@ export type Expense = BaseMetadata & BaseExpense;
|
|||||||
|
|
||||||
export type CreateExpensePayload = {
|
export type CreateExpensePayload = {
|
||||||
category: 'BOP' | 'NON-BOP';
|
category: 'BOP' | 'NON-BOP';
|
||||||
|
location_id: number;
|
||||||
transaction_date: string;
|
transaction_date: string;
|
||||||
supplier_id: number;
|
supplier_id: number;
|
||||||
documents: File[];
|
documents: File[];
|
||||||
@@ -72,6 +73,7 @@ export type CreateExpensePayload = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type UpdateExpensePayload = {
|
export type UpdateExpensePayload = {
|
||||||
|
location_id: number;
|
||||||
category: 'BOP' | 'NON-BOP';
|
category: 'BOP' | 'NON-BOP';
|
||||||
transaction_date: string;
|
transaction_date: string;
|
||||||
supplier_id: number;
|
supplier_id: number;
|
||||||
|
|||||||
Reference in New Issue
Block a user