mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE): Refactor delivery order value initialization logic
This commit is contained in:
@@ -111,16 +111,34 @@ const DeliveryOrderFormModal = ({}: { initialValues?: Marketing }) => {
|
||||
useState<DeliveryOrderProductFormValues | null>(null);
|
||||
const [deliveryOrderValues, setDeliveryOrderValues] = useState<
|
||||
DeliveryOrderProductFormValues[]
|
||||
>(
|
||||
isResponseSuccess(marketing)
|
||||
? mergeSOwithDO(
|
||||
marketing?.data.sales_order?.map(SalesProductToFieldValues) ?? [],
|
||||
marketing?.data.delivery_order?.flatMap((delivery) =>
|
||||
DeliveryProductToFieldValues(marketing.data.sales_order, delivery)
|
||||
) ?? [],
|
||||
true
|
||||
)
|
||||
: []
|
||||
>([]);
|
||||
|
||||
const getDeliveryOrderValues = useCallback(
|
||||
(marketingData: Marketing): DeliveryOrderProductFormValues[] => {
|
||||
const hasDeliveryOrder =
|
||||
marketingData.delivery_order &&
|
||||
marketingData.delivery_order.length > 0 &&
|
||||
marketingData.delivery_order.some(
|
||||
(doItem) => doItem.deliveries && doItem.deliveries.length > 0
|
||||
);
|
||||
|
||||
if (hasDeliveryOrder) {
|
||||
return (
|
||||
marketingData.delivery_order?.flatMap((delivery) =>
|
||||
DeliveryProductToFieldValues(marketingData.sales_order, delivery)
|
||||
) ?? []
|
||||
);
|
||||
}
|
||||
|
||||
return mergeSOwithDO(
|
||||
marketingData.sales_order?.map(SalesProductToFieldValues) ?? [],
|
||||
marketingData.delivery_order?.flatMap((delivery) =>
|
||||
DeliveryProductToFieldValues(marketingData.sales_order, delivery)
|
||||
) ?? [],
|
||||
true
|
||||
);
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
// ================== SETUP FORMIK ==================
|
||||
@@ -129,14 +147,8 @@ const DeliveryOrderFormModal = ({}: { initialValues?: Marketing }) => {
|
||||
>(() => {
|
||||
if (!isResponseSuccess(marketing))
|
||||
return {} as SalesOrderFormValues & DeliveryOrderFormValues;
|
||||
const deliveryValues = mergeSOwithDO(
|
||||
marketing?.data.sales_order?.map(SalesProductToFieldValues) ?? [],
|
||||
marketing?.data.delivery_order?.flatMap((delivery) =>
|
||||
DeliveryProductToFieldValues(marketing.data.sales_order, delivery)
|
||||
) ?? [],
|
||||
true
|
||||
);
|
||||
|
||||
const deliveryValues = getDeliveryOrderValues(marketing.data);
|
||||
setDeliveryOrderValues(deliveryValues);
|
||||
|
||||
return {
|
||||
@@ -162,7 +174,7 @@ const DeliveryOrderFormModal = ({}: { initialValues?: Marketing }) => {
|
||||
) ?? [],
|
||||
delivery_order: deliveryValues,
|
||||
};
|
||||
}, [marketing]);
|
||||
}, [marketing, getDeliveryOrderValues]);
|
||||
|
||||
const formik = useFormik<SalesOrderFormValues & DeliveryOrderFormValues>({
|
||||
enableReinitialize: true,
|
||||
@@ -647,9 +659,8 @@ const DeliveryOrderFormModal = ({}: { initialValues?: Marketing }) => {
|
||||
<tr>
|
||||
<td className='text-sm px-4 py-3'>No. Order</td>
|
||||
<td className='text-sm px-4 py-3'>
|
||||
{marketing.data.do_number
|
||||
? marketing.data.do_number
|
||||
: marketing.data.so_number}
|
||||
{marketing.data.do_number ||
|
||||
marketing.data.so_number}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -764,6 +775,7 @@ const DeliveryOrderFormModal = ({}: { initialValues?: Marketing }) => {
|
||||
<MemoizedDeliveryOrderProductForm
|
||||
formState={'edit'}
|
||||
salesOrders={marketing?.data?.sales_order ?? []}
|
||||
deliveryOrders={marketing?.data?.delivery_order ?? []}
|
||||
exisitingValues={deliveryOrderValues}
|
||||
onSubmitForm={handleAddSubmitDO}
|
||||
initialValues={selectedDeliveryProduct ?? undefined}
|
||||
|
||||
Reference in New Issue
Block a user