Skip to main content

正航批號管理功能 Plus(加增儲位版)

版本定位:在原本「依批號查庫存」基礎上,加上「儲位管理」與「異動總帳」
資料源:正航 ERP(MSSQL) + 本地儲位資料庫(SQLite)


一、系統目標

  • SKU(ProdID)+批號(BatchID) 為主軸查詢庫存。

  • 僅顯示 庫存數量 > 0排除倉庫 B(WareID <> 'B') 的批號。

  • 透過 SQLite 擴充「儲位(Location)」管理,並提供:

    • 儲位新增 / 編輯 / 刪除

    • 儲位庫存異動單(暫存 → 執行)

    • 異動總帳(Inventory Ledger)追蹤每筆更動


二、系統架構

1) 後端

  • Flask(port:5202

  • MSSQL(正航 ERP):查 SKU/批號/數量/日期

    • 主要表:comProductcomBatchAmount

    • 查詢條件:BCQty > 0WareID <> '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


四、主要業務規則

  1. ERP 查詢條件

    • 只抓 庫存 > 0(BCQty > 0 的批號

    • 排除倉庫 BWareID <> 'B'

    • 只顯示欄位:SKU(ProdID)、品名規格(ProdName)、批號(BatchID)、倉庫(WareID)、數量(BCQty)、製造日期(ProduceDate)、有效期限(ValidDate)

  2. 儲位管理

    • 新增儲位:若同 SKU+批號+儲位 不存在,建立記錄;若有初始量會同時寫入總帳(INITIAL_STOCK)。

    • 編輯儲位:若數量變動,寫入總帳(MANUAL_EDIT)。

    • 刪除儲位:僅允許庫存=0 時刪除,否則阻擋。

  3. 異動單(Transfer Slip)

    • 可從搜尋結果將儲位加入「待處理異動」。

    • 執行異動時,每筆會:

      • 驗證目前量是否足夠扣減

      • 更新儲位量、寫入總帳(TRANSFER_DEDUCTION

      • 產生參考單號:MV-YYYYMMDDHHMMSS

  4. 總帳(Ledger)

    • 任何造成儲位量變化的操作都寫入此表。

    • 可於 /history 依時間序檢視。