diff --git a/src/components/PoDetail/PoDetail.tsx b/src/components/PoDetail/PoDetail.tsx index 4edadb5..a64596c 100644 --- a/src/components/PoDetail/PoDetail.tsx +++ b/src/components/PoDetail/PoDetail.tsx @@ -32,6 +32,7 @@ import { Radio, } from "@mui/material"; import { useTranslation } from "react-i18next"; +import { submitDialogWithWarning } from "../Swal/CustomAlerts"; // import InputDataGrid, { TableRow } from "../InputDataGrid/InputDataGrid"; import { GridColDef, @@ -443,42 +444,54 @@ const PoDetail: React.FC = ({ po, warehouse, printerCombo }) => { [rows] ); - const handleStart = useCallback( - () => { - setTimeout(async () => { - // post stock in line - const currentDnNo = dnFormProps.watch("dnNo"); - const oldId = row.id; + const handleStart = useCallback( + () => { + const orderQty = Number(row?.qty) ?? 0; const acceptedQty = Number(polInputList[rowIndex].dnQty); - if (isNaN(acceptedQty) || acceptedQty <= 0) { alert("來貨數量必須大於0!"); return; } // Temp check, need update + + if (isNaN(acceptedQty) || acceptedQty <= 0) { + alert("來貨數量必須大於0!"); + return; + } if (!Number.isInteger(acceptedQty)) { alert("來貨數量必須是整數(不能有小數)!"); return; } - const postData = { - dnNo: dnFormProps.watch("dnNo"), - receiptDate: outputDateStringToInputDateString(dnFormProps.watch("receiptDate")), - itemId: row.itemId, - itemNo: row.itemNo, - itemName: row.itemName, - // purchaseOrderId: row.purchaseOrderId, - purchaseOrderLineId: row.id, - acceptedQty: acceptedQty, - productLotNo: polInputList[rowIndex].lotNo || '', - // acceptedQty: secondReceiveQty || 0, - // acceptedQty: row.acceptedQty, + + const doSubmit = () => { + setTimeout(async () => { + const currentDnNo = dnFormProps.watch("dnNo"); + const postData = { + dnNo: dnFormProps.watch("dnNo"), + receiptDate: outputDateStringToInputDateString(dnFormProps.watch("receiptDate")), + itemId: row.itemId, + itemNo: row.itemNo, + itemName: row.itemName, + purchaseOrderLineId: row.id, + acceptedQty: acceptedQty, + productLotNo: polInputList[rowIndex].lotNo || '', + }; + const res = await createStockInLine(postData); + if (res) { + fetchPoDetail(selectedPoId.toString(), true); + } + console.log(res); + }, 200); }; - // if (secondReceiveQty === 0) return - const res = await createStockInLine(postData); - if (res) { - fetchPoDetail(selectedPoId.toString(), true); - //dnFormProps.setValue("dnNo", currentDnNo); + + const exceedOrderBy10Percent = orderQty > 0 && acceptedQty > orderQty * 1.1; + if (exceedOrderBy10Percent) { + submitDialogWithWarning(doSubmit, t, { + title: t("Confirm submit"), + html: t("This batch quantity exceeds order quantity by more than 10%. Do you still want to submit?"), + confirmButtonText: t("Submit"), + }); + } else { + doSubmit(); } - console.log(res); - }, 200); - }, - [polInputList, row, dnFormProps], - ); + }, + [polInputList, row, rowIndex, dnFormProps, selectedPoId, fetchPoDetail, t], + ); const handleChange = useCallback(debounce((e: React.ChangeEvent) => { const raw = e.target.value; diff --git a/src/components/PoDetail/PutAwayForm.tsx b/src/components/PoDetail/PutAwayForm.tsx index bc1bb75..732b9db 100644 --- a/src/components/PoDetail/PutAwayForm.tsx +++ b/src/components/PoDetail/PutAwayForm.tsx @@ -395,7 +395,7 @@ const PutAwayForm: React.FC = ({ itemDetail, warehouse=[], disabled, sugg diff --git a/src/i18n/zh/purchaseOrder.json b/src/i18n/zh/purchaseOrder.json index ce12e34..e04660b 100644 --- a/src/i18n/zh/purchaseOrder.json +++ b/src/i18n/zh/purchaseOrder.json @@ -50,6 +50,8 @@ "acceptedQty": "本批收貨數量", "acceptedPutawayQty": "本批上架數量", "putawayQty": "上架數量", + "Confirm submit": "確定提交", + "This batch quantity exceeds order quantity by more than 10%. Do you still want to submit?": "本批收貨數量超出訂單數量超過10%。仍要提交嗎?", "acceptQty": "揀收數量", "printQty": "列印數量", "qcResult": "品檢結果", @@ -170,6 +172,7 @@ "Invalid Date": "無效日期", "Missing QC Template, please contact administrator": "找不到品檢模板,請聯絡管理員", "submitting": "提交中...", + "Submit": "提交", "Total must equal Required Qty. Missing": "總數量必須等於所需數量。缺少:{{diff}}", "Total must equal Required Qty. Exceeds by": "總數量必須等於所需數量。超出:{{diff}}" }