From 4f6d71f1f41fe8dc641b192550cfe4843aa1ba72 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Wed, 4 Mar 2026 10:20:50 +0700 Subject: [PATCH] refactor(FE): Refactor payload creation in PurchaseOrderAcceptApprovalForm --- .../order/PurchaseOrderAcceptApprovalForm.tsx | 56 +++++++++++++++---- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx index 35882869..464bee47 100644 --- a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx +++ b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx @@ -175,26 +175,54 @@ const PurchaseOrderAcceptApprovalForm = ({ validateOnBlur: true, enableReinitialize: false, onSubmit: async (values) => { + type ItemPayload = { + purchase_item_id: number; + received_date: string; + travel_number: string; + received_qty: number; + vehicle_number?: string; + expedition_vendor_id?: number; + transport_per_item?: number; + }; + const payload: CreateAcceptApprovalRequestPayload = { action: 'APPROVED', notes: values.notes || '', items: values.items?.map((formItem) => { - return { + const item: ItemPayload = { purchase_item_id: formItem.purchase_item_id || 0, received_date: formItem.received_date || '', travel_number: formItem.travel_number || '', - vehicle_number: formItem.vehicle_number || null, - expedition_vendor_id: formItem.expedition_vendor_id || null, received_qty: typeof formItem.received_qty === 'string' ? parseFloat(formItem.received_qty) || 0 : formItem.received_qty || 0, - transport_per_item: - typeof formItem.transport_per_item === 'string' - ? parseFloat(formItem.transport_per_item) || 0 - : formItem.transport_per_item || null, }; + + if ( + formItem.vehicle_number && + formItem.vehicle_number.trim() !== '' + ) { + item.vehicle_number = formItem.vehicle_number; + } + + if ( + formItem.expedition_vendor_id && + formItem.expedition_vendor_id !== 0 + ) { + item.expedition_vendor_id = formItem.expedition_vendor_id; + } + + const transportValue = + typeof formItem.transport_per_item === 'string' + ? parseFloat(formItem.transport_per_item) || 0 + : formItem.transport_per_item || 0; + if (transportValue > 0) { + item.transport_per_item = transportValue; + } + + return item; }) || [], travel_documents: values.travel_documents @@ -258,7 +286,7 @@ const PurchaseOrderAcceptApprovalForm = ({ if (purchaseItems.length > 0 && initialValues?.items) { const updatedItems = initialValues.items.map((item) => { const expeditionVendorId = - item.expedition_vendor_id || item.expedition_vendor?.id || 0; + item.expedition_vendor_id || item.expedition_vendor?.id || null; return { purchase_item: null, @@ -327,10 +355,14 @@ const PurchaseOrderAcceptApprovalForm = ({ formik.setFieldTouched(`items.${idx}.expedition_vendor`, true); formik.setFieldValue(`items.${idx}.expedition_vendor`, expeditionVendor); formik.setFieldTouched(`items.${idx}.expedition_vendor_id`, true); - formik.setFieldValue( - `items.${idx}.expedition_vendor_id`, - expeditionVendor?.value || 0 - ); + if (expeditionVendor?.value) { + formik.setFieldValue( + `items.${idx}.expedition_vendor_id`, + expeditionVendor.value + ); + } else { + formik.setFieldValue(`items.${idx}.expedition_vendor_id`, null); + } }; // ===== PURCHASE ITEM OPERATIONS =====