From f9215738aa7386f886dac2ebfab898911ad339e7 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Sat, 22 Nov 2025 10:16:39 +0700 Subject: [PATCH] feat(FE-212): add quantity validation to PurchaseOrderAcceptApprovalForm to prevent submission with exceeded received quantities --- .../order/PurchaseOrderAcceptApprovalForm.tsx | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx index 5cf5e85e..7909ade9 100644 --- a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx +++ b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx @@ -263,6 +263,22 @@ const PurchaseOrderAcceptApprovalForm = ({ [purchaseItems] ); + const hasQuantityExceededErrors = useMemo(() => { + if (!formik.values.items || purchaseItems.length === 0) return false; + + return formik.values.items.some((item, idx) => { + if (!item.received_qty) return false; + + const receivedQty = + typeof item.received_qty === 'string' + ? parseFloat(item.received_qty) || 0 + : item.received_qty; + + const originalQty = purchaseItems[idx]?.quantity || 0; + return receivedQty > originalQty; + }); + }, [formik.values.items, purchaseItems]); + const getExpeditionVendorOptions = useCallback(() => { return expeditionVendors; }, [expeditionVendors]); @@ -713,7 +729,11 @@ const PurchaseOrderAcceptApprovalForm = ({ color='primary' className='px-4' isLoading={formik.isSubmitting} - disabled={!formik.isValid || formik.isSubmitting} + disabled={ + !formik.isValid || + formik.isSubmitting || + hasQuantityExceededErrors + } > Submit