正航批號管理功能 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/<id>:儲位編輯頁
三、資料表(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依時間序檢視。
-
No comments to display
No comments to display