程式資訊
- 程式 ID:
PDTINF_2 - 所屬子系統:F.生產管理
- 狀態:stable
製單排程(90 日日曆表)¶
功能簡介¶
「製單排程」是製令/製通單建立的延伸視窗,把製令上的品號攤平成一張以日為欄、品號為列的 90 天日曆表:從你指定的起始日往後算 90 天,每一欄代表一天,格內數字是該品號在那一天要做(或要完工)的數量。生管人員開這張表,是為了在製令編輯畫面之外,一眼看出「未來三個月每天每個品號的產出落點」,作為排產與產能檢視的輔助。
這支表單只查詢、不寫入——它讀取製令主檔視圖(Twork_pdt_vw_pdtinfma)的數量,依某一種日期欄位(出貨日期/備料完成日/預訂生產日…)把數量分配到對應的日格,不會修改任何製令資料。
它是製令的子視窗,不是獨立選單
本頁對應 VFP 舊版製令表單上標題為「計畫表」的按鈕(內部 CMDELSE2/其他2)。在新版中,它由製令畫面的 其他2 鈕開啟(製令 VM 的 ExtendedFunction2() → 開啟 Pdtinf_2 視窗),不是主選單上的獨立功能。
前置需求¶
- 權限:本視窗由製令表單(PDTINF)的
其他2鈕開啟,因此實際取決於你在製令程式的權限。VFP 舊版會在按下「計畫表」鈕時檢查IS_可其他2,沒有權限就跳「無此權限」並擋下開窗。 - 基礎資料:日曆表的內容與外觀取決於下列資料——
| 資料 | 影響的結果 |
|---|---|
| 製令/製通單(含品號、數量、各種日期) | 表格的列(品號)與每格數量的唯一來源 |
| 工作日曆(工作日曆維護) | 欄位日期標頭的休假日紅字標示(工作時數為 0 的日子) |
需先有製令資料
本表單讀的是製令主檔視圖。若查詢區間內沒有任何符合條件的製令,表格會是空的——這不是錯誤,而是該 90 天內沒有對應日期的製令。
操作步驟¶
本表單只有一個動作:設定起始日後查詢。
- 在製令/製通單畫面,按工具列的
其他2開啟「製單排程」視窗。 - 在 BeginningDate(起始日) 欄輸入起算日期(格式
yyyy/MM/dd)。系統會自動以此日為第 1 天,往後推 90 天(起始日 + 89 天)作為查詢區間。 - 按
查詢,表格隨即列出每個品號在這 90 天內每一天的數量。 - 檢視完畢後按
離開關閉視窗,回到製令畫面(關閉後系統會重新整理製令目前的資料)。

改起始日就重查
改了 BeginningDate 之後要再按一次 查詢 才會重算 90 天區間與重排日格;表格不會隨輸入即時更新。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| BeginningDate(起始日) | ✔ | 查詢區間的第 1 天,格式 yyyy/MM/dd。系統自動把區間設為「起始日 ~ 起始日+89 天」共 90 天。預設為空白,需自行輸入。 |
結果表格欄位¶
| 欄位 | 說明 |
|---|---|
| SKU(品號) | 製令上的品號(查詢時實際取回的欄位之一)。 |
| Calulate Date(計算基準日) | 該筆製令用來分配數量的日期值,即所選日期別(預設出貨日期)的實際日期。 |
| C01 ~ C90 | 90 個「日格」欄,格內數字為該品號在某一天應有的數量(小數兩位)。欄標頭以起始日逐日往後標示(第 1 欄為起始日當天),但數量是依「計算基準日 − 起始日」的相差天數落格(相差 1 天進 C01),兩者相差一天——詳見下方〈數量如何落到對應的日格〉。 |
目前空白的版面欄位
版面上另有 ProductionDepartmentCode(生產部門代號)、ProductionDepartmentName(生產部門簡稱)、SKUDescription(品名) 三欄,但現行查詢的 SELECT 只取回計算基準日、品號、品名與數量,且品名未對應到 SKUDescription 屬性——因此這三欄在畫面上目前皆為空白。它們屬於尚未接上資料的預留欄。
C01–C99 與實際 90 欄
XAML 版面預先畫了 C01~C99 共 99 個欄位,但程式只填到 C90(剛好對應 90 天區間),標頭也只產生 90 個。C91~C99 是版面預留欄,正常情況不會有值。
欄位連動與附加功能¶
這張表的「魔法」全在日期欄標頭的動態產生與數量落格的計算兩段邏輯,以下逐一說明。
開窗即帶出 90 個日期標頭¶
- 視窗一建立(
InitHeader)時,會先用C01~C90當暫時標頭佔位。 - 真正按
查詢後,標頭由GetHeaders()重算:以 BeginningDate 為基準,逐日往後算 90 天,產生每一欄的標頭文字。- 第 1 欄(C01) 顯示「月/日」(例如起始日
2026/06/14→ 標頭06/14),讓你一眼看出區間起點是哪個月。 - 第 2 欄起(C02~C90) 只顯示「日」兩碼(
15、16…),保持欄寬精簡。
- 第 1 欄(C01) 顯示「月/日」(例如起始日
為什麼第一欄較長
第一欄帶「月/日」是刻意的:當區間跨月時(例如從 6 月底排到 8 月),你仍能從第一欄判斷整段的起點月份;其餘欄位只標日數以節省畫面寬度。
休假日/非工作日的紅字標示¶
- 產生標頭時,系統會比對工作日曆。
- 若某一天在工作日曆中的工作時數為 0(休假日、週末或國定假日),該欄標頭會被加上
Red標記,於畫面上以紅色呈現。 - 這讓你在排產時能避開沒有產能的日子——紅字欄即使有數字,也代表那天其實是休假,需要留意。
紅字來自工作日曆,不是製令
紅字與否完全取決於工作日曆維護的工作時數,跟製令本身無關。若某假日沒被標紅,請先檢查工作日曆是否已把那天設為工作時數 0。
數量如何落到對應的日格¶
按 查詢 後,每一筆製令的數量是這樣分配到日格的:
- 取該筆製令的 Calulate Date(計算基準日)——即所選日期別(預設出貨日期)的日期。
- 算出「計算基準日 − 起始日」相差幾天,得到一個 2 位數的位移。
- 把製令的數量寫進名稱為
C{位移}的日格欄(相差 5 天 → 寫入C05欄)。
也就是說,每一格的值=「該品號、依所選日期別、落在某個相對天數」應有的數量。落在 90 天區間外的製令不會出現對應日格。
起始日當天的資料
落格是用「相差天數」當欄名:相差 1 天進 C01、相差 89 天進 C89。計算基準日剛好等於起始日(相差 0 天)的製令,因為沒有對應的 C00 欄,目前不會出現在表上——查詢時起始日可往前抓一天以避開此情況。
依「日期別」決定數量的歸屬日(QueryType)¶
程式內部支援 6 種「日期別」,決定用製令的哪一個日期當作落格基準(GetColumnAndCondition):
| 日期別(QueryType) | 用來落格/篩選的日期 |
|---|---|
| ShippingDate(出貨日期)【預設】 | 出貨日期 |
| PreparationCompletionDate | 備料完成日 |
| EstimatedManufactureDate | 預訂生產日 |
| EstimatedCompletionDate | 預訂完工日 |
| ActualManufactureDate | 實際生產日 |
| ActualCompletionDate | 實際完工日 |
- 預設值=出貨日期(ShippingDate):視窗一開預設就以出貨日期當基準,並以「出貨日期介於起始日~起始日+89 天」當篩選條件。
- 不論選哪一種日期別,查詢區間一律是「起始日往後 90 天」。
畫面目前只露出起始日
現行版面只提供 BeginningDate 一個輸入欄與 查詢 鈕,日期別固定走預設的出貨日期。其餘 5 種日期別已寫在程式裡但尚未在畫面上開放切換,屬規劃中、目前不可由使用者選擇。
純查詢、不修改製令¶
- 表格屬性為唯讀(
IsReadOnly="True"),所有日格都不可編輯。 - 本視窗沒有新增、修改、刪除、列印、轉傳票或匯出鈕——它的唯一作用是把製令數量視覺化成日曆排程。要改製令數量或日期,請回到製令/製通單建立。
常見問題¶
按了「其他2」卻跳「無此權限」打不開?
製單排程由製令表單的 其他2 鈕開啟,VFP 舊版會在此檢查 IS_可其他2 權限。請向系統管理員確認你的帳號在製令(PDTINF)程式有「其他2」的權限。
查詢後表格整張空白?
表示「起始日~起始日+89 天」這 90 天內,沒有任何製令的出貨日期落在區間內。請確認:(1) BeginningDate 的年月是否正確;(2) 該區間內確實有製令存在。落在 90 天區間外的製令不會顯示。
改了起始日,表格沒變?
本表單不會隨輸入即時更新。改完 BeginningDate 後要再按一次 查詢 才會重算區間、重排日格與標頭。
某一格有數字,但那天其實是放假?
日格數量只看製令的日期,不會自動避開假日。標頭是否為紅字才代表該天是否為工作日——紅字(工作時數 0)即休假日。假日有數字時請依工作日曆的紅字提示,自行調整製令排程。
為什麼只有第一欄顯示「月/日」,其他只有日?
這是設計:第一欄帶「月/日」方便你判斷區間起點的月份,第 2 欄起只顯示兩碼日數以節省欄寬。跨月時也能靠第一欄推算後續欄位屬於哪個月。
C91~C99 欄為什麼都是空的?
版面預留了 99 欄,但查詢區間固定 90 天,程式只填 C01~C90。C91~C99 是預留欄,正常不會有值。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/F-Production/images/):
pdtinf_2-step1.png— 製單排程查詢結果(建議畫面顯示起始日輸入欄、查詢鈕,以及含紅字假日標頭的 90 日日格表格)