From 6f5540eb91f2adc025f3b04b730bc4ffd77eb9b7 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Fri, 23 Jan 2026 16:26:25 +0700 Subject: [PATCH] refactor(FE): Reset deliveries when products change --- .../inventory/movement/form/MovementForm.tsx | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/components/pages/inventory/movement/form/MovementForm.tsx b/src/components/pages/inventory/movement/form/MovementForm.tsx index a73bd634..e035c53a 100644 --- a/src/components/pages/inventory/movement/form/MovementForm.tsx +++ b/src/components/pages/inventory/movement/form/MovementForm.tsx @@ -1115,6 +1115,44 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => { formik.errors.destination_warehouse_id, ]); + useEffect(() => { + if (formik.values.products && formik.values.deliveries) { + const productIds = formik.values.products.map((p) => p.product_id); + + const updatedDeliveries = formik.values.deliveries.map((delivery) => { + const deliveryProduct = delivery.products[0]; + if (deliveryProduct && deliveryProduct.product_id !== 0) { + if (!productIds.includes(deliveryProduct.product_id)) { + return { + ...delivery, + products: [ + { + product: null, + product_id: 0, + product_qty: '', + }, + ], + delivery_cost: '', + delivery_cost_per_item: '', + }; + } + } + return delivery; + }); + + const hasChanges = formik.values.deliveries.some( + (delivery, idx) => + delivery.products[0]?.product_id !== + updatedDeliveries[idx]?.products[0]?.product_id || + delivery.delivery_cost !== updatedDeliveries[idx]?.delivery_cost + ); + + if (hasChanges) { + formik.setFieldValue('deliveries', updatedDeliveries); + } + } + }, [formik.values.products]); + useEffect(() => { if (productQtyErrorShown) { toast.dismiss();