|
|
|
@@ -108,6 +108,7 @@ const ManualLotConfirmationModal: React.FC<{ |
|
|
|
isLoading?: boolean; |
|
|
|
}> = ({ open, onClose, onConfirm, expectedLot, scannedLot, isLoading = false }) => { |
|
|
|
const { t } = useTranslation("pickOrder"); |
|
|
|
|
|
|
|
const [expectedLotInput, setExpectedLotInput] = useState(""); |
|
|
|
const [scannedLotInput, setScannedLotInput] = useState(""); |
|
|
|
const [error, setError] = useState(""); |
|
|
|
@@ -298,7 +299,11 @@ const WorkbenchPickExecution: React.FC<Props> = ({ filterArgs }) => { |
|
|
|
const [pickOrderLoading, setPickOrderLoading] = useState(false); |
|
|
|
const [pagingController, setPagingController] = useState({ pageNum: 1, pageSize: 10 }); |
|
|
|
const [totalCountItems, setTotalCountItems] = useState(0); |
|
|
|
|
|
|
|
const localizeBackendMessage = (msg: unknown, fallbackKey: string) => { |
|
|
|
const text = typeof msg === "string" ? msg.trim() : ""; |
|
|
|
if (!text) return t(fallbackKey); |
|
|
|
return t(text, { defaultValue: text }); |
|
|
|
}; |
|
|
|
const [selectedPickOrderLineId, setSelectedPickOrderLineId] = useState<number | null>(null); |
|
|
|
const [selectedPickOrderId, setSelectedPickOrderId] = useState<number | null>(null); |
|
|
|
const [selectedTopMeta, setSelectedTopMeta] = useState<{ |
|
|
|
@@ -579,21 +584,13 @@ const WorkbenchPickExecution: React.FC<Props> = ({ filterArgs }) => { |
|
|
|
...(typeof qtyValue === "number" && Number.isFinite(qtyValue) ? { qty: qtyValue } : {}), |
|
|
|
userId, |
|
|
|
}); |
|
|
|
if (res.code !== "SUCCESS") { |
|
|
|
setError((res.message as string) || t("Scan pick failed")); |
|
|
|
startTransition(() => { |
|
|
|
setQrScanError(true); |
|
|
|
setQrScanSuccess(false); |
|
|
|
setQrScanErrorMsg((res.message as string) || t("Scan pick failed")); |
|
|
|
}); |
|
|
|
return; |
|
|
|
} |
|
|
|
setMessage((res.message as string) || t("Scan pick success")); |
|
|
|
startTransition(() => { |
|
|
|
setQrScanError(false); |
|
|
|
setQrScanSuccess(true); |
|
|
|
setQrScanSuccessMsg((res.message as string) || t("Scan pick success")); |
|
|
|
}); |
|
|
|
const errMsg = localizeBackendMessage(res.message, "Scan pick failed"); |
|
|
|
setError(errMsg); |
|
|
|
setQrScanErrorMsg(errMsg); |
|
|
|
|
|
|
|
const okMsg = localizeBackendMessage(res.message, "Scan pick success"); |
|
|
|
setMessage(okMsg); |
|
|
|
setQrScanSuccessMsg(okMsg); |
|
|
|
if (workbenchScanPickResponseNeedsFullRefresh(res)) { |
|
|
|
if (selectedPickOrderId != null && selectedPickOrderLineId != null && selectedTopMeta) { |
|
|
|
await loadLineDetailV2(selectedPickOrderId, selectedPickOrderLineId, selectedTopMeta); |
|
|
|
|