跳轉到

程式資訊

  • 程式 IDORD_QRY4
  • 所屬子系統:M.主管資訊
  • 狀態:stable

訂單存貨計劃(Order & Stock Plan)

功能簡介

「訂單存貨計劃」把訂單、生產(製通單)、現有庫存、採購在途這幾條供需資訊,按日攤開成兩張「逐日結餘」報表,協助生管/物管主管回答兩個問題:

  1. 成品面——以起始日起 61 天為視窗,每個有訂單的品號目前庫存與生產進貨能不能接得上訂單交期?哪一天會缺貨(結餘轉負)?
  2. 材料面——把訂單依 BOM 展開到最低階零件,以起始日起 90 天為視窗,每個料號的庫存加採購在途能撐到第幾天?並回推每個料號的安全庫存建議量。

兩張表共用同一組查詢條件(起始日期 + 可用倉儲),一次查詢同時算出。畫面分兩個頁籤:

  • 訂單存貨計劃(第一頁):品號 × 三列(1.PDT 生產/2.ORDER 訂單/3.BALANCE 結餘)。
  • 材料用量計劃(第二頁):料號 × 多列(1.Order 訂單用量/2.Purchase 採購/3.Stock 含採購結餘/4.Actual 不含採購結餘),下方再附安全庫存清單。

與生產計劃查詢的差異

本頁是逐日結餘的存貨/材料攤平表,需求只取「目前訂單與生產」、不做去年同期預估;而生產計劃查詢(見主管資訊模組首頁)多了「預示+去年同期預估」與「採購金額」維度。兩支查詢用途不同,請勿混用。

前置需求

  • 權限:M.主管資訊 → M-150 訂單存貨計劃 的瀏覽(與列印)權限。
  • 必選條件可用倉儲為必填,未選倉庫直接按查詢會被擋下(見操作步驟)。
  • 基礎資料:兩張表的完整度取決於下列資料的維護狀況——
資料 影響的結果
銷售訂單明細(含預訂交期、已交數量) 兩頁的訂單需求列(2.ORDER1.Order)、期初未交
製通單(生產排程,含預訂完工日) 第一頁 1.PDT 生產列的日別進貨
庫存明細(依倉儲代號彙總現有數量) 兩頁期初庫存(C00),會被可用倉儲篩選
採購單(含預訂交期、已交數量、是否結案) 第二頁 2.Purchase 採購列、3.Stock 結餘
BOM(最低階零件表,依日期生效) 第二頁訂單 1.Order 展開成的料號用量
庫存主檔(品名、廠商代號、LeadTime) 第二頁料號的品名、廠商、安全庫存天數判斷
廠商資料(廠商簡稱) 第二頁的廠商簡稱欄
客戶資料/客戶產品(客戶品號→客戶簡稱) 第二頁訂單列的客戶簡稱欄
工作日曆(每日工作時數) 欄位標題的「休」標記、安全庫存的當月工作天數

操作步驟

步驟① 設定查詢條件

條件面板有兩個欄位:

  1. 輸入起始日期:預設帶今天。第一頁自此日(含)起算 61 天、第二頁自此日(含)起算 90 天。
  2. 指定可用倉儲(必填,可多選):

    • 在左側挑選盒輸入或挑一個倉儲代號,放開後系統會自動把它附加到右側清單(重複的不會再加)。
    • 也可直接在右側文字框輸入多個倉儲代號,以逗號分隔。
    • 期初庫存只會彙總「落在這些倉儲」的現有數量。

    注意

    未填可用倉儲就按查詢,系統會跳出「請選擇倉庫!!!」並中止,不會出任何資料。

步驟② 執行查詢

按工具列的 查詢,系統一次算出兩頁,並把每一欄的標題換成實際日期(見欄位連動與附加功能)。

  1. 切到 訂單存貨計劃 頁看成品逐日結餘。
  2. 切到 材料用量計劃 頁看料號逐日結餘與安全庫存。

步驟③ 篩選與檢視缺料(第二頁)

  1. 在材料用量計劃頁,點任一列即會在下方安全庫存清單只顯示「該料號」對應的安全庫存資料(依選取列的料號連動)。
  2. 勾選底部的 只顯示負數 (Filter <0),清單會只留下「4.Actual 任一天結餘曾轉負」的料號群組,快速鎖定會缺料的零件;取消勾選即還原全部。

步驟④ 列印/匯出

報表與 Excel 匯出規劃中

VFP 原版第一頁可列印 ORD_QRY41 報表並把材料用量/安全庫存匯出成 Excel。新版 C# 目前的 列印匯出 工具列按鈕走的是 RadGridView 的通用匯出(格線右鍵或工具列),尚未接上 VFP 那份專屬報表與 Excel 範本;如需與舊版完全相同的版面,屬規劃中項目。日常檢視可直接以格線匯出。

欄位說明

查詢條件

欄位 必填 說明
起始日期 格式 yyyy/MM/dd,預設今天。第一頁算 61 天、第二頁算 90 天
可用倉儲 逗號分隔的倉儲代號清單;期初庫存只彙總這些倉儲
倉儲挑選盒 挑一個代號自動附加到可用倉儲清單(去重),本身不送查詢

第一頁 訂單存貨計劃(每品號 3 列)

欄位 說明
品號/品名/客戶品號 由「期間內有訂單」的品號建立,固定凍結在最左
類別 1.PDT(生產未交)/2.ORDER(訂單未交)/3.BALANCE(結餘)
期初(C00) 1.PDT=可用倉現有庫存;2.ORDER=起始日前的未結案訂單(期初未交);3.BALANCE=庫存-期初未交
C01~C61 自起始日(含)起逐日:1.PDT填當日生產未交、2.ORDER填當日訂單未交、3.BALANCE為逐日累積結餘

第二頁 材料用量計劃(每料號多列)

欄位 說明
廠商代號/廠商簡稱 取自料號的庫存主檔(廠商代號1)+廠商資料
料號/料名 BOM 展開後的最低階零件;查無 BOM 時以品號本身當料號
品號/品名/客戶品號/客戶簡稱 1.Order 列有值(追溯該料號是哪張訂單帶出的)
類別 1.Order(訂單 BOM 展開用量)/2.Purchase(採購)/3.Stock(含採購結餘)/4.Actual(不含採購結餘)
期初(C00) 3.Stock4.Actual=現有庫存;2.Purchase=過期(無日期)採購在途合計
C01~C90 逐日:1.Order填用量、2.Purchase填到貨、3.Stock=前日-訂單用量+採購、4.Actual=前日-訂單用量

安全庫存(第二頁下方)

欄位 說明
品號/品名 該料號
月份 取「起始日+45 天」所在月份(YYYY/MM)
合計數量 該月所有訂單對此料號的用量合計
工作日 該月工作日曆中工作時數>0 的天數
安全庫存 ROUND(合計數量 ÷ 工作日 × 天數)天數=LeadTime≤20 取 5、否則取 30

欄位連動與附加功能

這一節把「輸入某欄位/按某按鈕後系統會做什麼」依真實程式碼整理出來。

條件面板

  • 挑選倉儲自動附加:當你在倉儲挑選盒挑(或輸入)一個倉儲代號放開後,系統會把它 Trim 後加進可用倉儲清單;若清單裡已經有同一代號,不會重複加入。挑選盒本身的文字不會送進查詢,只是輔助輸入。
  • 可直接打逗號清單:你也可以略過挑選盒,直接在可用倉儲框輸入多個代號(逗號分隔)。VFP 原版是開 SEEKSPLACE 倉儲挑選視窗逐一挑,新版改成挑選盒附加的形式,效果相同。

查詢 後系統會做的事

  1. 先擋空倉庫:可用倉儲為空(或只有空白)時跳「請選擇倉庫!!!」並中止,不查詢。
  2. 重算欄位標題:依起始日把第一頁 62 欄(期初+61 天)、第二頁 91 欄(期初+90 天)的標題換成日期——第一個日期欄顯示 MM/dd、其餘只顯示 dd;若該日在工作日曆中工作時數為 0(休假日),標題會多一個「休」字。查詢前的預設標題以今天起算、不帶休假標記。
  3. 第一頁結餘攤平
    • 每個「期間內有訂單」的品號各建 1.PDT2.ORDER3.BALANCE 三列。
    • 1.PDT 的 C00=可用倉現有庫存,日別填入製通單的生產未交(依預訂完工日落格)。
    • 2.ORDER 的 C00=起始日前未結案訂單(數量>已交),日別填入訂單未交(依預訂交期落格)。
    • 3.BALANCE 從「庫存-期初未交訂單」開始,逐日 期末 += 生產 − 訂單,算出每天的存貨結餘。
  4. 第二頁 BOM 展開+結餘攤平
    • 訂單(數量-已交數量)先依 BOM 最低階零件表展開:每個料號用量=訂單數量 × 單位數量;某品號查無 BOM 時,以品號本身當料號直接帶入。
    • 2.Purchase 列把採購單未交量依預訂交期落格;預訂交期早於起始日的(過期在途)合併進 C00。
    • 每個料號跑 90 天結餘:3.Stock=期初庫存(C01 起併入過期採購)逐日 −訂單用量 +採購到貨4.Actual 同樣逐日扣訂單用量、但不加採購,代表「只靠現有庫存」能撐到第幾天。
    • 全零料號整組剔除:某料號所有列(C00~C90)全為 0 時整組不顯示。
  5. 負數標記:某料號的 4.Actual 任一天結餘<0,系統把該料號全部列標上負數註記 <0(供 Filter <0 與底色判斷)。
  6. 客戶簡稱回填1.Order 列若有客戶品號,會透過「客戶品號→客戶代號→客戶簡稱」對照回填客戶簡稱欄。
  7. 安全庫存計算:取「起始日+45 天」所在月份,把該月所有訂單對各料號的用量加總,再按 ROUND(合計 ÷ 當月工作天數 × 天數) 推算安全庫存;天數依該料號 LeadTime 是否≤20 取 5 或 30 天。

第二頁的列底色(視覺輔助)

  • 1.Order2.Purchase 列底色為淡綠(沿用 VFP DynamicBackColor)。
  • 4.Actual 列且被標 <0(曾缺料)的列底色為紫色,方便一眼看出缺料料號。

選取列連動安全庫存

  • 在材料用量計劃格線點選一列時,下方安全庫存清單會即時只顯示「該列料號」的安全庫存(對應 VFP 的 SET RELATION 料號 INTO ORD_安全庫存)。沒選列時安全庫存清單為空。

只顯示負數 (Filter <0)

  • 勾選後,材料用量格線只留被標 <0 的料號群組(也就是只靠庫存會缺料的零件);取消勾選即還原全部料號。此勾選不需重新查詢,是前端即時篩選。

凍結欄與標題綁定

  • 第一頁左側 4 欄(品號/品名/客戶品號/類別)凍結;第二頁左側 9 欄(廠商~類別)凍結,向右捲動看日別時左側識別欄不會跑掉。
  • 日別欄標題綁定 VM 的「第一頁欄位標題/第二頁欄位標題」陣列(透過 BindingProxy),查詢後即時換成帶日期與「休」字的標題。

預示與去年同期預估尚未啟用

VFP 原始碼保留了「預示(Forecast/0.Forecast)」相關區塊,但被註解掉(原註:預示訂單都沒資料,暫時先不做)。新版 C# 也沿用此決策——本查詢只看目前訂單與生產,不做預示或去年同期預估。需要預估維度請改用生產計劃查詢(見主管資訊模組首頁)。

常見問題

按查詢沒反應,只跳出「請選擇倉庫!!!」?

可用倉儲是必填。請先用挑選盒挑一個倉儲代號(會自動附加),或直接在右框輸入逗號分隔的代號,再按查詢。

第一頁某些品號沒出現?

第一頁的列只由「起始日起 61 天內有訂單」的品號建立。沒有訂單的品號(即使有庫存或生產)不會出現在第一頁。要看純庫存/材料面請改看第二頁。

第二頁料號的期初庫存(C00)是 0?

期初庫存只彙總你在「可用倉儲」勾的那些倉的現有數量。若該料號的庫存放在沒選到的倉,C00 就會是 0。請確認可用倉儲是否涵蓋實際存放倉。

某料號整組沒出現在第二頁?

若一個料號的所有列(C00~C90)全部為 0,系統會整組剔除不顯示。代表它在這 90 天既無訂單用量、無採購、也無庫存波動。

勾了「只顯示負數」卻一片空白?

Filter <0 只留下「4.Actual 曾結餘轉負」的料號。若全空,代表這段期間內以目前庫存沒有任何料號會缺料——這是好事。取消勾選即可看全部。

安全庫存的「工作日」是 0、安全庫存算不出來?

安全庫存的當月工作天數來自工作日曆。若「起始日+45 天」所在月份在工作日曆沒有任何「工作時數>0」的日子,工作日會是 0,此時安全庫存固定回 0(避免除以零)。請補維護該月工作日曆。

材料用量的廠商簡稱/客戶簡稱空白?

廠商簡稱來自庫存主檔的廠商代號1+廠商資料;客戶簡稱來自「客戶品號→客戶代號→客戶資料」對照。對應主檔缺資料時該欄就會空白,請回頭補維護料號的供應商或客戶產品設定。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收後補拍(放 docs/M-EIS/images/):

  1. ord_qry4-step1.png — 條件面板(起始日期 + 可用倉儲挑選盒與清單)
  2. ord_qry4-step2.png — 訂單存貨計劃頁(品號 ×1.PDT/2.ORDER/3.BALANCE 三列,日別欄標題帶日期)
  3. ord_qry4-step3.png — 材料用量計劃頁(含淡綠/紫色列底色 + 下方安全庫存清單 + 只顯示負數勾選)