From 0195ebbb58cf65acafe8528a020f36cdc4d164ba Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Fri, 9 Oct 2026 15:26:19 +0800 Subject: [PATCH] 2.7 fix be 2.7 a 2.7 b --- src/app/api/stockLedgerFix/client.ts | 3 +- .../StockLedgerFixPageClient.tsx | 31 +++++++++++++------ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/app/api/stockLedgerFix/client.ts b/src/app/api/stockLedgerFix/client.ts index 2d16121c..5cc82325 100644 --- a/src/app/api/stockLedgerFix/client.ts +++ b/src/app/api/stockLedgerFix/client.ts @@ -113,10 +113,11 @@ export type StockLedgerFixAdjResponse = { export async function runStockLedgerFixAdj( adjDate?: string, + step?: "2.7a" | "2.7b", ): Promise { const response = await axiosInstance.post( `${NEXT_PUBLIC_API_URL}/stock-ledger-fix/adj`, - adjDate ? { adjDate } : {}, + { ...(adjDate ? { adjDate } : {}), ...(step ? { step } : {}) }, { timeout: 1200000 }, ); return response.data; diff --git a/src/components/StockLedgerFix/StockLedgerFixPageClient.tsx b/src/components/StockLedgerFix/StockLedgerFixPageClient.tsx index bad36cd1..c2d964c4 100644 --- a/src/components/StockLedgerFix/StockLedgerFixPageClient.tsx +++ b/src/components/StockLedgerFix/StockLedgerFixPageClient.tsx @@ -431,7 +431,7 @@ const StockLedgerFixPageClient: React.FC = () => { } }; - const onAdjApply = async () => { + const onAdjApply = async (step: "2.7a" | "2.7b") => { if (adjRunInFlight.current) return; const d = adjDate.trim(); if (!d) { @@ -443,7 +443,9 @@ const StockLedgerFixPageClient: React.FC = () => { return; } const ok = window.confirm( - `會在 ${d} 對最後餘額不等於 onHandQty 的庫存桶各寫一筆 ADJ(入或出),掛在既有 lot 上,並寫入庫存調整記錄。不改 lot line、不改 inventory。已對齊的桶不會再寫;缺調整記錄的舊 ADJ 會補上。確定?`, + step === "2.7a" + ? `會在 ${d} 找出出數量大於入數量的批號列,把入數量改成和出數量一樣,並在同一條批寫一筆入倉 ADJ(差額)和庫存調整記錄。已補過的列再跑不會再寫。確定?` + : `會在 ${d} 對最後餘額不等於 onHandQty 的庫存桶各寫一筆 ADJ(入或出),掛在既有 lot 上,並寫入庫存調整記錄。不改 lot line、不改 inventory。已對齊的桶不會再寫;缺調整記錄的舊 ADJ 會補上。確定?`, ); if (!ok) return; adjRunInFlight.current = true; @@ -451,9 +453,11 @@ const StockLedgerFixPageClient: React.FC = () => { setAdjError(null); setAdjMessage(null); try { - const res = await runStockLedgerFixAdj(d); + const res = await runStockLedgerFixAdj(d, step); setAdjMessage( - `ADJ ${res.adjDate}:入 ${res.insertedIn}、出 ${res.insertedOut}、調整記錄 ${res.adjustmentRecords ?? 0}、lotQty ${res.filledLotQty}、balance ${res.filledBalance}、日結 ${res.dayRowsWritten}`, + step === "2.7a" + ? `2.7a ${res.adjDate}:批號列 ${res.insertedIn}、調整記錄 ${res.adjustmentRecords ?? 0}、lotQty ${res.filledLotQty}、balance ${res.filledBalance}、日結 ${res.dayRowsWritten}` + : `2.7b ${res.adjDate}:入 ${res.insertedIn}、出 ${res.insertedOut}、調整記錄 ${res.adjustmentRecords ?? 0}、lotQty ${res.filledLotQty}、balance ${res.filledBalance}、日結 ${res.dayRowsWritten}`, ); } catch (e) { console.error(e); @@ -730,11 +734,10 @@ const StockLedgerFixPageClient: React.FC = () => { - 2.7 ADJ:對齊最後餘額與 onHandQty + 2.7 ADJ - 選 ADJ 日期後直接執行。預設昨天;freeze dump 夜可選今天。最後餘額低於 onHandQty - 的桶補一筆入倉 ADJ,高於 onHandQty 的桶補一筆出倉 ADJ,掛在既有 lot 上。不改 lot - line、不改 inventory。一次執行共用一張入倉單、一張出倉單;已對齊的桶再跑不會再寫。 + 先跑 2.7a,再跑 2.7b。2.7a 只處理出數量大於入數量的批號列:入數量改成和出數量一樣,並在同一條批寫入倉 + ADJ。2.7b 對最後餘額不等於 onHandQty 的庫存桶補一筆入或出,不改批號列。兩邊再跑都不會重複寫已對齊的資料。 { variant="contained" color="warning" disabled={adjRunning} - onClick={() => void onAdjApply()} + onClick={() => void onAdjApply("2.7a")} > - {adjRunning ? "寫入 ADJ 中…" : "Apply ADJ"} + {adjRunning ? "寫入 ADJ 中…" : "Apply 2.7a"} + +