程式資訊
- 程式 ID:
ORD_QRY4 - 所屬子系統:M.主管資訊
- 狀態:stable
訂單存貨計劃(Order & Stock Plan)¶
功能簡介¶
「訂單存貨計劃」把訂單、生產(製通單)、現有庫存、採購在途這幾條供需資訊,按日攤開成兩張「逐日結餘」報表,協助生管/物管主管回答兩個問題:
- 成品面——以起始日起 61 天為視窗,每個有訂單的品號目前庫存與生產進貨能不能接得上訂單交期?哪一天會缺貨(結餘轉負)?
- 材料面——把訂單依 BOM 展開到最低階零件,以起始日起 90 天為視窗,每個料號的庫存加採購在途能撐到第幾天?並回推每個料號的安全庫存建議量。
兩張表共用同一組查詢條件(起始日期 + 可用倉儲),一次查詢同時算出。畫面分兩個頁籤:
- 訂單存貨計劃(第一頁):品號 × 三列(
1.PDT生產/2.ORDER訂單/3.BALANCE結餘)。 - 材料用量計劃(第二頁):料號 × 多列(
1.Order訂單用量/2.Purchase採購/3.Stock含採購結餘/4.Actual不含採購結餘),下方再附安全庫存清單。
與生產計劃查詢的差異
本頁是逐日結餘的存貨/材料攤平表,需求只取「目前訂單與生產」、不做去年同期預估;而生產計劃查詢(見主管資訊模組首頁)多了「預示+去年同期預估」與「採購金額」維度。兩支查詢用途不同,請勿混用。
前置需求¶
- 權限:M.主管資訊 →
M-150 訂單存貨計劃的瀏覽(與列印)權限。 - 必選條件:可用倉儲為必填,未選倉庫直接按查詢會被擋下(見操作步驟)。
- 基礎資料:兩張表的完整度取決於下列資料的維護狀況——
| 資料 | 影響的結果 |
|---|---|
| 銷售訂單明細(含預訂交期、已交數量) | 兩頁的訂單需求列(2.ORDER/1.Order)、期初未交 |
| 製通單(生產排程,含預訂完工日) | 第一頁 1.PDT 生產列的日別進貨 |
| 庫存明細(依倉儲代號彙總現有數量) | 兩頁期初庫存(C00),會被可用倉儲篩選 |
| 採購單(含預訂交期、已交數量、是否結案) | 第二頁 2.Purchase 採購列、3.Stock 結餘 |
| BOM(最低階零件表,依日期生效) | 第二頁訂單 1.Order 展開成的料號用量 |
| 庫存主檔(品名、廠商代號、LeadTime) | 第二頁料號的品名、廠商、安全庫存天數判斷 |
| 廠商資料(廠商簡稱) | 第二頁的廠商簡稱欄 |
| 客戶資料/客戶產品(客戶品號→客戶簡稱) | 第二頁訂單列的客戶簡稱欄 |
| 工作日曆(每日工作時數) | 欄位標題的「休」標記、安全庫存的當月工作天數 |
操作步驟¶
步驟① 設定查詢條件¶
條件面板有兩個欄位:
- 輸入起始日期:預設帶今天。第一頁自此日(含)起算 61 天、第二頁自此日(含)起算 90 天。
-
指定可用倉儲(必填,可多選):
- 在左側挑選盒輸入或挑一個倉儲代號,放開後系統會自動把它附加到右側清單(重複的不會再加)。
- 也可直接在右側文字框輸入多個倉儲代號,以逗號分隔。
- 期初庫存只會彙總「落在這些倉儲」的現有數量。
注意
未填可用倉儲就按查詢,系統會跳出「請選擇倉庫!!!」並中止,不會出任何資料。
步驟② 執行查詢¶
按工具列的 查詢,系統一次算出兩頁,並把每一欄的標題換成實際日期(見欄位連動與附加功能)。
- 切到 訂單存貨計劃 頁看成品逐日結餘。
- 切到 材料用量計劃 頁看料號逐日結餘與安全庫存。
步驟③ 篩選與檢視缺料(第二頁)¶
- 在材料用量計劃頁,點任一列即會在下方安全庫存清單只顯示「該料號」對應的安全庫存資料(依選取列的料號連動)。
- 勾選底部的 只顯示負數 (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.Stock/4.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倉儲挑選視窗逐一挑,新版改成挑選盒附加的形式,效果相同。
按 查詢 後系統會做的事¶
- 先擋空倉庫:可用倉儲為空(或只有空白)時跳「請選擇倉庫!!!」並中止,不查詢。
- 重算欄位標題:依起始日把第一頁 62 欄(期初+61 天)、第二頁 91 欄(期初+90 天)的標題換成日期——第一個日期欄顯示
MM/dd、其餘只顯示dd;若該日在工作日曆中工作時數為 0(休假日),標題會多一個「休」字。查詢前的預設標題以今天起算、不帶休假標記。 - 第一頁結餘攤平:
- 每個「期間內有訂單」的品號各建
1.PDT/2.ORDER/3.BALANCE三列。 1.PDT的 C00=可用倉現有庫存,日別填入製通單的生產未交(依預訂完工日落格)。2.ORDER的 C00=起始日前未結案訂單(數量>已交),日別填入訂單未交(依預訂交期落格)。3.BALANCE從「庫存-期初未交訂單」開始,逐日期末 += 生產 − 訂單,算出每天的存貨結餘。
- 每個「期間內有訂單」的品號各建
- 第二頁 BOM 展開+結餘攤平:
- 訂單(數量-已交數量)先依 BOM 最低階零件表展開:每個料號用量=訂單數量 × 單位數量;某品號查無 BOM 時,以品號本身當料號直接帶入。
2.Purchase列把採購單未交量依預訂交期落格;預訂交期早於起始日的(過期在途)合併進 C00。- 每個料號跑 90 天結餘:
3.Stock=期初庫存(C01 起併入過期採購)逐日−訂單用量 +採購到貨;4.Actual同樣逐日扣訂單用量、但不加採購,代表「只靠現有庫存」能撐到第幾天。 - 全零料號整組剔除:某料號所有列(C00~C90)全為 0 時整組不顯示。
- 負數標記:某料號的
4.Actual任一天結餘<0,系統把該料號全部列標上負數註記<0(供 Filter <0 與底色判斷)。 - 客戶簡稱回填:
1.Order列若有客戶品號,會透過「客戶品號→客戶代號→客戶簡稱」對照回填客戶簡稱欄。 - 安全庫存計算:取「起始日+45 天」所在月份,把該月所有訂單對各料號的用量加總,再按
ROUND(合計 ÷ 當月工作天數 × 天數)推算安全庫存;天數依該料號 LeadTime 是否≤20 取 5 或 30 天。
第二頁的列底色(視覺輔助)¶
1.Order與2.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/):
ord_qry4-step1.png— 條件面板(起始日期 + 可用倉儲挑選盒與清單)ord_qry4-step2.png— 訂單存貨計劃頁(品號 ×1.PDT/2.ORDER/3.BALANCE 三列,日別欄標題帶日期)ord_qry4-step3.png— 材料用量計劃頁(含淡綠/紫色列底色 + 下方安全庫存清單 + 只顯示負數勾選)