diff --git a/src/components/Jodetail/JobPickExecutionForm.tsx b/src/components/Jodetail/JobPickExecutionForm.tsx index d6052d0..1014d76 100644 --- a/src/components/Jodetail/JobPickExecutionForm.tsx +++ b/src/components/Jodetail/JobPickExecutionForm.tsx @@ -94,9 +94,9 @@ const PickExecutionForm: React.FC = ({ const missSet = formData.missQty != null; const badItemSet = formData.badItemQty != null; const badPackageSet = (formData as any).badPackageQty != null; - const calculateRemainingAvailableQty = useCallback((lot: LotPickData) => { - return lot.availableQty || 0; - }, []); +const calculateRemainingAvailableQty = useCallback((lot: LotPickData) => { + return (lot.availableQty + lot.requiredQty ) || 0; +}, []); const calculateRequiredQty = useCallback((lot: LotPickData) => { // Use the original required quantity, not subtracting actualPickQty // The actualPickQty in the form should be independent of the database value @@ -203,14 +203,14 @@ useEffect(() => { const totalBadQty = badItem + badPackage; const total = ap + miss + totalBadQty; const availableQty = selectedLot?.availableQty || 0; - + const maxActual = requiredQty + availableQty; // 1. Check actualPickQty cannot be negative if (ap < 0) { newErrors.actualPickQty = t("Qty cannot be negative"); } // 2. Check actualPickQty cannot exceed available quantity - if (ap > availableQty) { + if (ap > maxActual) { newErrors.actualPickQty = t("Actual pick qty cannot exceed available qty"); } @@ -223,10 +223,10 @@ useEffect(() => { } // 4. Total (actualPickQty + missQty + badItemQty + badPackageQty) cannot exceed lot available qty - if (total > availableQty) { + if (total > maxActual) { const errorMsg = t( "Total qty (actual pick + miss + bad) cannot exceed available qty: {available}", - { available: availableQty } + { available: maxActual } ); newErrors.actualPickQty = errorMsg; newErrors.missQty = errorMsg; @@ -322,6 +322,8 @@ useEffect(() => { const remainingAvailableQty = calculateRemainingAvailableQty(selectedLot); const requiredQty = calculateRequiredQty(selectedLot); + const availableQty = selectedLot?.availableQty || 0; + const maxActual = requiredQty + availableQty; return (