跳轉到

程式資訊

  • 程式 IDPDTINF_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 天內沒有對應日期的製令。

操作步驟

本表單只有一個動作:設定起始日後查詢。

  1. 在製令/製通單畫面,按工具列的 其他2 開啟「製單排程」視窗。
  2. BeginningDate(起始日) 欄輸入起算日期(格式 yyyy/MM/dd)。系統會自動以此日為第 1 天,往後推 90 天(起始日 + 89 天)作為查詢區間。
  3. 查詢,表格隨即列出每個品號在這 90 天內每一天的數量。
  4. 檢視完畢後按 離開 關閉視窗,回到製令畫面(關閉後系統會重新整理製令目前的資料)。

製單排程查詢結果

改起始日就重查

改了 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 版面預先畫了 C01C99 共 99 個欄位,但程式只填到 C90(剛好對應 90 天區間),標頭也只產生 90 個。C91C99 是版面預留欄,正常情況不會有值。

欄位連動與附加功能

這張表的「魔法」全在日期欄標頭的動態產生數量落格的計算兩段邏輯,以下逐一說明。

開窗即帶出 90 個日期標頭

  • 視窗一建立(InitHeader)時,會先用 C01C90 當暫時標頭佔位。
  • 真正按 查詢 後,標頭由 GetHeaders() 重算:以 BeginningDate 為基準,逐日往後算 90 天,產生每一欄的標頭文字。
    • 第 1 欄(C01) 顯示「月/日」(例如起始日 2026/06/14 → 標頭 06/14),讓你一眼看出區間起點是哪個月。
    • 第 2 欄起(C02~C90) 只顯示「日」兩碼(1516…),保持欄寬精簡。

為什麼第一欄較長

第一欄帶「月/日」是刻意的:當區間跨月時(例如從 6 月底排到 8 月),你仍能從第一欄判斷整段的起點月份;其餘欄位只標日數以節省畫面寬度。

休假日/非工作日的紅字標示

  • 產生標頭時,系統會比對工作日曆
  • 若某一天在工作日曆中的工作時數為 0(休假日、週末或國定假日),該欄標頭會被加上 Red 標記,於畫面上以紅色呈現。
  • 這讓你在排產時能避開沒有產能的日子——紅字欄即使有數字,也代表那天其實是休假,需要留意。

紅字來自工作日曆,不是製令

紅字與否完全取決於工作日曆維護的工作時數,跟製令本身無關。若某假日沒被標紅,請先檢查工作日曆是否已把那天設為工作時數 0。

數量如何落到對應的日格

查詢 後,每一筆製令的數量是這樣分配到日格的:

  1. 取該筆製令的 Calulate Date(計算基準日)——即所選日期別(預設出貨日期)的日期。
  2. 算出「計算基準日 − 起始日」相差幾天,得到一個 2 位數的位移。
  3. 把製令的數量寫進名稱為 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 天,程式只填 C01C90C91C99 是預留欄,正常不會有值。

相關功能


需補截圖清單

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

  1. pdtinf_2-step1.png — 製單排程查詢結果(建議畫面顯示起始日輸入欄、查詢鈕,以及含紅字假日標頭的 90 日日格表格)