📘 補貨參數計算系統 — 操作教學
本教學將引導您了解系統的完整操作流程,從資料準備到最終產出報表。
🔍 系統概述
補貨參數計算系統(RP Parameter Calculation System) 是將原本 Microsoft Access MDB 版本的補貨參數計算邏輯,移植到 Python Flask 網頁應用。本系統主要用於計算並管理商品補貨參數,支援兩種補貨類型(RP Type)的轉換與參數更新。
什麼是 RP Type?
- ND(Normal Distribution / 正常配送):商品經由倉庫配送至店舖,安全庫存量設為 0。
- RF(Replenishment by Forecast / 預測補貨):商品直接由供應商或倉庫補貨,安全庫存量依據 MOQ、ABC 分類及理想庫存來計算。
系統核心功能
- 商品主檔管理 — 彙入 / 檢視商品基本資料
- 三步驟計算工作流程 — 清除資料 → 產生計算結果 → 套用理想庫存
- MOQ 檢查 — 確保安全庫存不低於最低訂購量
- 問題交易檢查 — 自動標記異常資料
- 類型轉換 — ND ↔ RF 雙向轉換與參數重算
- 輸出報表 — 產生 RP 清單 / MSS 清單並可彙出 CSV
適用人員
- 供應鏈規劃人員
- 採購人員
- 庫存管理人員
資料準備
→
Step 1
清除資料 → Step 2
產生結果 → Step 3
套用理想庫存 → 輸出報表
清除資料 → Step 2
產生結果 → Step 3
套用理想庫存 → 輸出報表
📂 資料準備
在執行計算流程之前,需要先準備好以下資料。請依序彙入各項資料。
① 商品主檔(Article Master)
操作路徑 導覽列「資料管理」 → 「商品主檔」
上傳 CSV 檔案,欄位包含:article, article_description, brand, mc, mc_description, article_category, status, major_vendor_sap, supplu_source
② 理想庫存(Ideal Stock)
操作路徑 導覽列「資料管理」 → 「理想庫存」
CSV 格式:Site, Article, Ideal_Stock
💡 提示:理想庫存僅對「店舖分類(Shop Class)」中有記錄的 Site 生效。
③ 最低訂購量(MOQ)
操作路徑 導覽列「資料管理」 → 「最低訂購量(MOQ)」
CSV 格式:SKU, MOQ
④ 參考資料(Reference Data)
| 資料表 | 用途 | 主要欄位 |
|---|---|---|
| 店舖分類 | 定義各店舖的 ABC 分類及覆蓋天數 | Shop, Class, Coverage_A/B/C_Items |
| 供應商排程 | 定義各供應商的運送與計畫週期 | Shop, Vendor, Delivery_S, Planning_S, Lead_Time |
| 倉庫日曆 | 定義倉庫的計畫與配送週期 | Shop, P, D |
| MC 庫存參考 | MC 層級的 A/B/C 庫存量參考 | Shop, MC, A_Qty, B_Qty, C_Qty |
⚠️ 注意:執行 Step 1 清除資料後,所有已彙入的資料都會被刪除。請務必先彙入商品主檔及參考資料。
🧹 Step 1:清除全部資料
操作路徑 導覽列「工作流程」 → 「Step 1: 清除全部」
目的:清空所有資料表,為重新計算做好準備。
系統會清除:article_master、final_result、nd_to_rf、rf_to_nd、problem_transactions、rp_list、mss_list
🚨 重要:此操作無法復原。執行前請確認已備份所有需要的資料。
⚙️ Step 2:產生計算結果
操作路徑 導覽列「工作流程」 → 「Step 2: 產生結果」
目的:根據商品主檔及參考資料,計算每筆商品的 RP 補貨參數。
RF → ND 轉換
- new_safety_qty = 0
- new_planning_cycle = 倉庫日曆.P
- new_delivery_cycle = 倉庫日曆.D
- new_delivery_days = 3
- new_target_coverage = min(delivery_days + ABC 加成, Shop_Class 覆蓋天數)
- new_supply_source = 2
ND → RF 轉換
- Vendor(Supply Source = 1):依供應商排程計算 planning_cycle、delivery_cycle、delivery_days(lead_time)
- Warehouse(Supply Source = 2):delivery_days = 3、target_coverage = 3
- 安全庫存量:ND=0 ,RF+A=取A量,RF+B=取B量,RF+C=取C量
📊 Step 3:套用理想庫存
操作路徑 導覽列「工作流程」 → 「Step 3: 套用理想庫存」
目的:將「理想庫存(Ideal Stock)」的值覆蓋到對應商品的 new_safety_qty 欄位。
僅對「店舖分類」中有記錄的 Site 生效,且僅在理想庫存值與目前值不同時更新。
⚠️ 注意:Step 3 會強制覆蓋 Step 2 計算出的安全庫存量。請確認理想庫存資料的正確性。
🔎 MOQ 檢查 & 問題交易 & 類型轉換
① MOQ 檢查
操作路徑 導覽列「計算執行」 → 「MOQ檢查」
ND → new_safety_qty = 0 ;RF → new_safety_qty = MAX(MOQ, 原本值)
② 問題交易檢查
操作路徑 導覽列「計算執行」 → 「問題交易」
檢查三類異常:安全庫存為負數、缺少 RP 類型、商品不在主檔
③ 類型轉換
操作路徑 導覽列「計算執行」 → 「類型轉換」
記錄 ND ↔ RF 轉換並重算參數
📄 輸出報表
計算完成後可產生:
- RP 清單 — 從 final_result 篩選 new_rp_type 有值的記錄
- MSS 清單 — final_result 完整輸出
- 最終結果 — 可篩選、編輯、彙出 CSV
🔄 完整操作流程
① 準備資料
→
② Step 1
→
③ Step 2
→
④ Step 3
→
⑤ 輸出報表
| 動作 | 導覽路徑 | 説明 |
|---|---|---|
| 上傳商品主檔 | 資料管理 → 商品主檔 | CSV 上傳,支援多欄位 |
| 上傳理想庫存 | 資料管理 → 理想庫存 | CSV: Site, Article, Ideal_Stock |
| 清除全部 | 工作流程 → Step 1 | 清空所有資料表 |
| 計算結果 | 工作流程 → Step 2 | 產生補貨參數 |
| 套用理想庫存 | 工作流程 → Step 3 | 覆蓋安全庫存量 |
| 一次完成 | 工作流程 → 完整流程 1→③→④ | 三步驟一次執行 |
| MOQ 檢查 | 計算執行 → MOQ檢查 | 確保安全庫存 ≥ MOQ |
| 問題交易 | 計算執行 → 問題交易 | 檢查異常資料 |
| 產生 RP 清單 | 輸出報表 → 產生RP清單 | 產生補貨清單 |
| 彙出 CSV | 最終結果 → 彙出CSV | 下載所有計算結果 |