feat(FE-212): add quantity validation to PurchaseOrderAcceptApprovalForm to prevent submission with exceeded received quantities

This commit is contained in:
rstubryan
2025-11-22 10:16:39 +07:00
parent b12a1ebd36
commit f9215738aa
@@ -263,6 +263,22 @@ const PurchaseOrderAcceptApprovalForm = ({
[purchaseItems] [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(() => { const getExpeditionVendorOptions = useCallback(() => {
return expeditionVendors; return expeditionVendors;
}, [expeditionVendors]); }, [expeditionVendors]);
@@ -713,7 +729,11 @@ const PurchaseOrderAcceptApprovalForm = ({
color='primary' color='primary'
className='px-4' className='px-4'
isLoading={formik.isSubmitting} isLoading={formik.isSubmitting}
disabled={!formik.isValid || formik.isSubmitting} disabled={
!formik.isValid ||
formik.isSubmitting ||
hasQuantityExceededErrors
}
> >
Submit Submit
</Button> </Button>