正航批號管理功能 Plus(加增儲位版) 版本定位:在原本「依批號查庫存」基礎上, 加上「儲位管理」與「異動總帳」 。 資料源: 正航 ERP(MSSQL) + 本地儲位資料庫(SQLite) 。 一、系統目標 以 SKU(ProdID)+批號(BatchID) 為主軸查詢庫存。 僅顯示 庫存數量 > 0 且 排除倉庫 B(WareID <> 'B') 的批號。 透過 SQLite 擴充「儲位(Location)」管理,並提供: 儲位新增 / 編輯 / 刪除 儲位庫存異動單(暫存 → 執行) 異動總帳(Inventory Ledger)追蹤每筆更動 二、系統架構 1) 後端 Flask (port: 5202 ) MSSQL(正航 ERP) :查 SKU/批號/數量/日期 主要表: comProduct 、 comBatchAmount 查詢條件: BCQty > 0 且 WareID <> 'B' SQLite(本地儲位資料庫) :儲位與異動紀錄 batch_locations :儲位主表(以 prod_id + batch_id + location 唯一) inventory_ledger :儲位庫存異動總帳 2) 前端頁面(Jinja2 模板) / :依商品關鍵字查批號庫存(含各批號的儲位清單) /locations :儲位管理(可切換以「商品」或「儲位」關鍵字查) /transfer_slip :異動單檢視(暫存清單) /history :異動總帳查詢 /edit_location/ :儲位編輯頁 三、資料表(SQLite) 1) batch_locations 欄位 型別 說明 id INTEGER PK 儲位記錄主鍵 prod_id TEXT SKU(對應正航 ProdID ) batch_id TEXT 批號(對應正航 BatchID ) location TEXT 儲位(例:A20-1-1) quantity INTEGER 此儲位現有量(可為空) remark TEXT 備註 created_at TIMESTAMP 建立時間(預設 NOW) 外鍵 : FOREIGN KEY(location_id) REFERENCES batch_locations(id) ON DELETE CASCADE 四、主要業務規則 ERP 查詢條件 只抓 庫存 > 0( BCQty > 0 ) 的批號 排除倉庫 B ( WareID <> 'B' ) 只顯示欄位:SKU(ProdID)、品名規格(ProdName)、批號(BatchID)、倉庫(WareID)、數量(BCQty)、製造日期(ProduceDate)、有效期限(ValidDate) 儲位管理 新增儲位:若同 SKU+批號+儲位 不存在,建立記錄;若有初始量會同時寫入總帳( INITIAL_STOCK )。 編輯儲位:若 數量變動 ,寫入總帳( MANUAL_EDIT )。 刪除儲位:僅允許 庫存=0 時刪除,否則阻擋。 異動單(Transfer Slip) 可從搜尋結果將儲位加入「待處理異動」。 執行異動時,每筆會: 驗證目前量是否足夠扣減 更新儲位量、寫入總帳( TRANSFER_DEDUCTION ) 產生參考單號: MV-YYYYMMDDHHMMSS 總帳(Ledger) 任何造成儲位量變化的操作都寫入此表。 可於 /history 依時間序檢視。