|
- {
- "pageTitle": "庫存帳修復",
- "inventory10Title": "1.0 inventory(方案 A)",
- "inventory10Description": "保留現有 id;lot 有、inventory 沒有的 UOM 會新增;onHand = Σ(in−out) 按 item+UOM。沒有 lot 的列會變成 0。同一料多顆舊列時只留一顆 stock UOM 桶,其餘 deleted=1。請在進出倉暫停時執行,再逐日 Fix。",
- "inventory10LoadError": "無法載入 inventory 1.0 預覽(需要 ADMIN / TESTING)",
- "inventory10Preview": "現有 inventory {{rows}} 列;lot 的 item+UOM {{lotPairs}} 組;缺 {{missing}} 組;stockUomId 仍 NULL {{nullUom}} 列。",
- "inventory10Running": "重算中…",
- "inventory10Run": "Run inventory 1.0 (A)",
- "inventory10Confirm": "方案 A:保留現有 inventory.id;從 lot 回填 stockUomId(舊 uomId 是 stock 則改回 base);補缺 (itemId, stockUomId);用 lot 的 in−out 重算 onHand/unavailable。不寫 onHoldQty、不改 inventory_lot_line。確定執行?",
- "inventory10Done": "inventory 1.0 完成:回填 stockUomId {{patched}} 列、新增 {{inserted}} 列、殘列 deleted {{orphans}}、重算 {{updated}} 列、之後仍缺 UOM {{missingAfter}}、仍 NULL stockUomId {{nullAfter}}",
- "inventory10Fail": "inventory 1.0 失敗",
- "adjTitle": "2.7 ADJ:超發 remain→0,再對齊 ledger",
- "adjDescription": "請先選 ADJ 日期再預覽。預設昨天;freeze dump 夜可選今天(例如 31/8 23:17 寫 ADJ 到 31/8)。先處理超發(line 入少於出):把該 lot 的 inQty 補到等於 outQty(remain=0,trigger 重算 inventory)。再處理 miss:line 與 ledger 有差就 ADJ,掛既有 lot 的入/出倉行(不改 lot 數量)。一次 Apply 共用一張入倉單、一張出倉單,下面多行;同一 ADJ 日期再跑會沿用這兩張單。明細最多 20 列。",
- "adjDateLabel": "ADJ 日期",
- "adjDateRequired": "請填 ADJ 日期",
- "adjDateFuture": "ADJ 日期不能是未來",
- "adjDateAndPreviewRequired": "請填 ADJ 日期並先預覽",
- "adjTodayFreeze": "今天(freeze 夜)",
- "adjYesterday": "昨天",
- "adjLoadError": "無法載入 ADJ 預覽(需要 ADMIN / TESTING)",
- "adjPreviewSummary": "ADJ 日期 {{date}};可處理 {{lotCount}} 條 lot(超發 remain→0 {{overIssueCount}}、合計 {{sumOverIssue}};miss 入 {{adjInCount}}、出 {{adjOutCount}});缺入合計 {{sumMissIn}}、缺出合計 {{sumMissOut}};SKU 淨額 {{skuNet}}{{skuNetNote}}{{revNote}}。下列最多 20 列(超發優先)。",
- "adjSkuNetNote": "(非 0 表示有缺入沒有對應缺出)",
- "adjRevNote": ";含反向 ADJ {{count}} 條(ledger 多記)",
- "adjColLotLineId": "lotLineId",
- "adjColItemCode": "itemCode",
- "adjColLineInOut": "line in/out",
- "adjColLedgerInOut": "ledger in/out",
- "adjColMissIn": "缺入",
- "adjColMissOut": "缺出",
- "adjColOverIssue": "超發",
- "adjPreviewing": "預覽中…",
- "adjPreviewAgain": "重新預覽",
- "adjPreview": "預覽",
- "adjApplying": "寫入 ADJ 中…",
- "adjApply": "Apply ADJ",
- "adjConfirm": "會在 {{date}} 先修超發 remain→0({{overIssueCount}} 條 lot,合計 {{sumOverIssue}},會改 lot inQty)。再補 miss ADJ:入向 {{adjInCount}} 筆、出向 {{adjOutCount}} 筆。入向全部掛同一張入倉單、出向全部掛同一張出倉單(miss 不改 lot 數量)。缺入合計 {{sumMissIn}}、缺出合計 {{sumMissOut}}。確定?",
- "adjDone": "ADJ {{date}}:超發 remain→0 {{overIssuePatched}}、入 {{insertedIn}}、出 {{insertedOut}}、lotQty {{filledLotQty}}、balance {{filledBalance}}、日結 {{dayRowsWritten}}",
- "adjFail": "ADJ 對齊失敗",
- "tabCalendar": "日曆",
- "tabInventory": "Inventory",
- "tabLot": "Lot line",
- "calendarHint": "點左上標題可先選年再選月。換月不會查資料;點某一天才檢查當天。今天可修(freeze dump 夜)。",
- "selectDate": "請選日期",
- "dayLoadError": "無法載入當日檢查",
- "dayLedgerCount": "當天 ledger {{cnt}} 列",
- "cannotFixFuture": "不能修未來日期",
- "cannotFixFutureRange": "不能修未來日期(今天可以,給 freeze dump 夜修)",
- "pickAtLeastOneStep": "請至少勾一個步驟(預設全跑 2.1–2.6)",
- "allSteps216": "全部 2.1–2.6",
- "confirmPartialSteps": "只跑 {{steps}}({{date}})。未勾的步驟不會重算。確定?",
- "fixDayDone": "已修 {{date}}({{steps}}):lot {{lot}}、uom {{uom}}、inventory {{inventory}}、lotQty {{lotQty}}、balance {{balance}}、日結 {{dayRows}}",
- "fixFailed": "修復失敗",
- "fixing": "修復中…",
- "fixThisDay": "Fix this day",
- "stepsTitle": "步驟(預設全跑)",
- "stepsHint": "套 SQL 後只改 inventoryId 時只勾 2.3。只跑部分時未勾的不會重算。",
- "selectAll": "全選",
- "step21": "2.1 lot",
- "step22": "2.2 uom",
- "step23": "2.3 inventoryId",
- "step24": "2.4 lotQty",
- "step25": "2.5 balance",
- "step26": "2.6 日結",
- "rangeTitle": "區間修(2.1–2.6 一次)",
- "rangeHint": "使用上面勾的步驟,一次 API 但改為逐日(與單日修相同 SQL,每天 commit)。可含今天(freeze dump 夜)。前端最長約 20 分鐘;大區間仍建議匯出 SQL。",
- "rangeFromRequired": "請填區間修 from / to",
- "toMustBeGteFrom": "to 必須 ≥ from",
- "fromTooEarly": "from 不能早於 {{date}}",
- "rangeConfirm": "一次修 {{from}} → {{to}}(步驟:{{steps}})。改為逐日跑(每天 commit)。中途失敗時已跑完的天會留下。確定?",
- "rangeProgress": "區間修 {{from}} → {{to}}({{steps}})進行中…",
- "rangeDone": "區間修完成 {{date}}({{steps}}):lot {{lot}}、uom {{uom}}、inventory {{inventory}}、lotQty {{lotQty}}、balance {{balance}}、日結 {{dayRows}}",
- "rangeFail": "區間修失敗",
- "rangeRunning": "區間修中…",
- "rangeRun": "區間修",
- "from": "from",
- "to": "to",
- "exportTitle": "匯出已修 SQL(新庫用)",
- "exportHint": "勾選要匯出的段落(同日修步驟)。套檔順序:1.0 → ledger(±2.3)→ 2.7 入出倉單+ADJ INSERT → 2.6。完整檔(含 1.0+2.3)且正式庫 freeze/id 同源時,可跳過正式庫 1.0/2.3。預設只匯 ledger+日結(舊行為)。",
- "exportPickAtLeastOne": "請至少勾一個匯出項目",
- "export23Without10": "已勾 2.3 inventoryId 但未勾 1.0 inventory:正式庫若缺新 id,UPDATE 會指到空列。建議一併勾 1.0(完整檔)。仍要匯出?",
- "exportFail": "匯出失敗",
- "exporting": "匯出中…",
- "exportSql": "匯出 .sql",
- "exportDefault": "預設",
- "exportFull": "完整檔",
- "exportFromToRequired": "請填 from / to",
- "export10": "1.0 inventory",
- "export23": "2.3 inventoryId",
- "exportLedger": "ledger lot/uom/lotQty/balance",
- "export26": "2.6 日結",
- "export27": "2.7 ADJ+入出倉單",
- "invTabHint": "搜 itemCode 或 inventoryId。Fix 會重算這顆料到今天為止全部流水的 lotQty、日結與 balance,不必逐日點日曆。白天倉還在寫這顆料時,修完後新流水仍由 live writer 接。",
- "invSearchLabel": "itemCode / inventoryId",
- "searching": "搜尋中…",
- "search": "搜尋",
- "searchFailed": "搜尋失敗",
- "colInventoryId": "inventoryId",
- "colItemCode": "itemCode",
- "colUomId": "uomId",
- "colLedgerRows": "ledger 列",
- "invLoadError": "無法載入 inventory",
- "invScopeSummary": "{{itemCode}} / inventory {{id}} / uom {{uomId}};{{firstDate}} → {{lastDate}};{{cnt}} 列;最後 balance {{lastBalance}}",
- "invFixConfirm": "會重算這顆 inventory 到今天為止全部 ledger 的 lotQty、日結,以及這顆料的 balance。確定?",
- "invFixDone": "已修 inventory {{id}}:lot {{lot}}、uom {{uom}}、inventory {{inventory}}、lotQty {{lotQty}}、balance {{balance}}、日結 {{dayRows}}",
- "fixThisInventory": "Fix this inventory",
- "lotTabHint": "搜 lotNo 或 inventoryLotLineId。Fix 只重算這張 lot 的 lotQty 與日結,不改 balance。",
- "lotSearchLabel": "lotNo / lot line id",
- "colLotLineId": "lot line id",
- "colLotNo": "lotNo",
- "lotLoadError": "無法載入 lot",
- "lotScopeSummary": "{{lotNo}} / lot {{id}} / {{itemCode}};{{firstDate}} → {{lastDate}};{{cnt}} 列;最後 lotQtyAfter {{lastLotQtyAfter}}",
- "lotFixConfirm": "只修這張 lot 的 lotQty 與日結,不會改整顆料的 balance。確定?",
- "lotFixDone": "已修 lot {{id}}:lot {{lot}}、uom {{uom}}、inventory {{inventory}}、lotQty {{lotQty}}、日結 {{dayRows}}",
- "fixThisLot": "Fix this lot",
- "checkItem": "項目",
- "checkStatus": "狀態",
- "checkCorrect": "正確",
- "checkMiss": "缺",
- "checkIncorrect": "不正確",
- "checkReason": "原因",
- "checkRows": "列數",
- "checkDash": "—",
- "canAutoFix": "可自動修(按 Fix 會處理)",
- "cannotAutoFix": "不能自動修(Fix 不會消;舊 TKE 開新批/真超發/沒有 lot 來源)",
- "verdictCorrect": "correct",
- "verdictMiss": "miss",
- "verdictOverIssue": "over-issue",
- "verdictCanFix": "可修",
- "verdictCannotFix": "不能修",
- "verdictIncorrect": "incorrect",
- "part": {
- "lot": "inventoryLotLineId",
- "uom": "uomId",
- "inventory": "inventoryId",
- "lotQty": "lotQtyBefore/After(lot 已有)",
- "overIssue": "over-issue (lotQty < 0)",
- "balance": "balance",
- "dayTable": "stock_lot_day",
- "fixable21a": "可修 2.1a:SIL/SOL 已有 lot line",
- "fixable21b": "可修 2.1b:inventoryLotId 僅一條 line",
- "fixableLotQty": "可修:lot 已有但缺 lotQty",
- "cannotNoSource": "不能修:沒有 SIL/SOL lot 來源",
- "cannotMultiLine": "不能修:同一 lot 有多條 warehouse line",
- "earlyTke": "不能修:舊 TKE 開新批(sibling 盤盈)",
- "realOver": "不能修:over-issue 非舊 TKE(真超發/帳不一致)"
- }
- }
|