程式資訊
- 程式 ID:
Pdtinf - 所屬子系統:F.生產管理
- 狀態:stable
製通單¶
功能簡介¶
「製通單」是生產模組的核心製令單(製造通知單),用來告訴工廠「要做什麼品號、做多少、何時要完工」。生管/PMC 人員建立製通單後,系統會依辨識號自動產生對應的派工單(WKPAPER),後續的領料、生產日報、入庫都接續在派工單上進行。
一張製通單包含:
- 主檔——成品品號、數量、製單別、各階段日期(備料完成日/預訂生產日/預訂完工日/實際完工日)、客戶/訂單關聯。
- 明細——製單來源別、客戶、訂單 pkid、數量、出貨日期等需求來源列(一張製通單可彙整多筆訂單需求)。
製通單在流程中的位置:訂單(ORMAST)→ 製通單(PDTINF)→ 派工單(WKPAPER)→ 生產日報(WKPAPER 子作業)→ 完工入庫。
與派工單的關係
製通單號(標示為紅色重點欄位)可直接超連結到對應的派工單。儲存製通單時系統自動呼叫 Updt_wkpaper 產生派工單;若派工單產生失敗,剛存的製通單會被自動刪除(rollback),避免留下沒有派工單的孤兒製通單。
前置需求¶
- 權限:F.生產 →
F-010 製通單的瀏覽/新增/修改/刪除/列印權限。 - 基礎資料:建立製通單前,下列資料需先維護完成——
| 資料 | 影響什麼 |
|---|---|
| 品號主檔(SK_INVENT) | 輸入品號時自動帶出品名與單位 |
| 客戶主檔(SK_CUDATA) | 以放大鏡輸入客戶代號時帶出客戶簡稱 |
| 銷售訂單(vw_ordetlid) | 製單別=訂單時,訂單pkid 必須對應到實際訂單明細才能存檔 |
| 製單別代碼(C241) | 製單別下拉選單來源(訂單/備料/例領/試做/庫存/試組) |
| 單位代碼(C104) | 單位下拉選單來源 |
| 工作日曆(WKDAY) | 計畫表(延伸功能②)以工作日曆判定假日,將工作時數為 0 的日期標為紅色欄標 |
操作步驟¶
新增製通單¶
- 按工具列
新增。系統自動把製單別預設為備料、預訂生產日預設為今天。 - 選擇製單別(訂單/備料/例領/試做/庫存/試組)。
- 輸入品號(可用放大鏡查詢);輸入後系統自動帶出品名與單位。
- 輸入數量與單位。
- 視製單別填寫關聯資料:
- 製單別=
訂單→ 必須輸入正確的訂單pkid,存檔時系統會以此 pkid 查訂單明細並組出序號前置碼(查不到會擋下)。 - 其他製單別 → 訂單 pkid 可留空。
- 製單別=
- 輸入各階段日期:備料完成日/預訂生產日/預訂完工日(預訂完工日為必填、紅色重點欄位)。
- 視需要填寫客戶代號/客戶訂單號/週數/單位材料價/是否派工/包裝料/拆零/單階派工單等欄位。
- 在下方明細格輸入需求來源列(製單來源別、客戶、訂單 pkid、數量、出貨日期)。
- 按
儲存。系統檢核必填欄位後寫入,並自動產生派工單。
修改¶
- 先查詢出要修改的製通單,按
修改。 - 系統會先檢查此製通單對應的派工單狀態(見欄位連動與附加功能):
- 若生產日報表已耗料 → 擋下,不允許修改。
- 若派工單已領料或已排程 → 僅提示警告,仍可繼續修改。
- 改完後按
儲存。
刪除¶
- 查詢出製通單,按
刪除,確認後刪除。 - 已進入後段作業(已產生派工單、領料、生產日報)的製通單不應刪除,刪除前請自行確認。
列印¶
按工具列 列印,套印製通單表單(VFP 報表程式 PDTINF_P)。
報表移植狀態
列印功能對應 VFP 的 PDTINF_P 報表。新版 C# 的報表掛載依系統報表設定而定,若清單中找不到製通單報表,請洽系統管理員確認報表已部署。
延伸功能:訂單轉製通單(轉單)¶
按延伸功能①開啟訂單轉製通單視窗,把尚未轉成製通單的訂單需求勾選合併後批次產生製通單。詳見欄位連動與附加功能。
延伸功能:生產計畫表查詢(計畫表)¶
按延伸功能②開啟生產計畫表視窗,以某個日期欄位(出貨日期/備料完成日/預訂生產日/預訂完工日/實際生產日/實際完工日)為基準,列出起始日起 90 天內每日的生產數量橫向排程。
欄位說明¶
主檔¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 製通單號 | 系統產生 | 單據編號,唯讀;可超連結到派工單 |
| 製單別 | ✔ | 訂單/備料/例領/試做/庫存/試組;新增時預設 備料 |
| 品號 | ✔ | 成品品號;輸入後自動帶品名、單位 |
| 品名 | — | 由品號帶出,唯讀 |
| 數量 | ✔ | 製造數量,必須 > 0 |
| 單位 | — | 由品號帶出,可改(C104) |
| 生產部門/部門簡稱 | — | 由 DB View 帶出,唯讀(畫面上不重算) |
| 出貨日期(製造交期) | — | 日期格式 YYYY/MM/DD |
| 備料完成日 | — | 日期 |
| 預訂生產日 | — | 日期;新增時預設今天 |
| 預訂完工日 | ✔ | 日期,紅色重點欄位,必填 |
| 實際完工日 | — | 唯讀,由後段作業回填,紅色重點欄位 |
| 訂單pkid | 製單別=訂單時必填 | 對應銷售訂單明細的 pkid |
| 訂單編號 | — | 由 DB View 帶出,唯讀 |
| 客戶代號/客戶簡稱 | — | 以放大鏡查客戶主檔輸入,帶出客戶簡稱 |
| 客戶訂單號 | — | 客戶端的訂單號 |
| 週數 | — | 數值,預設 0 |
| 單位材料價 | — | 數值(四位小數) |
| 是否派工/包裝料/拆零 | — | 是/否 |
| 單階派工單 | — | 是/否,紅色重點欄位 |
| 辨識號 | 系統產生 | 新增/複製時自動產生一組 GUID(ProductionHelper.GetNewCheckNo(),功能上對應 VFP 的 SYS(2015)),用來連結本次產生的派工單 |
| 注意事項/計畫備註 | — | 多行文字備註 |
| 輸入日期 | 系統產生 | 建檔時間,唯讀 |
明細¶
| 欄位 | 必填 | 說明 |
|---|---|---|
| 序號 | 系統產生 | 明細列序號 |
| 製單來源別 | ✔ | 需求來源類別 |
| 客戶代號/客戶簡稱 | — | 該需求列的客戶 |
| 訂單pkid | — | 對應訂單明細 |
| 訂單編號A | — | 訂單編號-序號,由 DB View 帶出,唯讀 |
| 數量 | ✔ | 該需求列數量 |
| 出貨日期 | — | 製造交期 |
| 預訂交期 | — | 由 DB View 帶出,唯讀 |
| 備註 | — | 文字備註 |
欄位連動與附加功能¶
本節說明「輸入某欄位後系統會做什麼」「按某按鈕會發生什麼」,這是本表單最關鍵的行為。
新增時的預設值(AfterAddNew)¶
當你按 新增,系統會自動:
- 把製單別設為
備料(代碼 2)。 - 把預訂生產日設為今天。
輸入品號(SKUBinding setter → DescriptionHelper.SetISKU)¶
當你在品號欄輸入或用放大鏡選品號後,系統會:
- 依品號查品號主檔(
vwseek_invent),自動帶出品名與單位。 - 若查不到品號,品名/單位維持空白(請確認品號正確、品號主檔已建)。
生產部門怎麼來
主檔的生產部門/部門簡稱是由查詢 DB View 載入時一併帶出的唯讀欄位,不會在輸入品號時於畫面上即時重算(SetISKU 只帶品名與單位)。
訂單 pkid 的查核(存檔時)¶
製單別=訂單時,訂單pkid 的檢核發生在存檔當下(並非輸入後即時觸發):
- 訂單pkid 為 0 → 提示輸入並擋下。
- 以訂單pkid 查
vw_ordetlid,查無資料 → 提示「請輸入正確的訂單明細 pkid」並擋下。 - 查到 → 用訂單編號與訂單序號組出序號前置碼寫回主檔。
與 VFP 舊版的差異
VFP 舊版在輸入訂單pkid 的當下(訂單pkid.Valid)就會即時回填客戶代號並顯示訂單編號-序號。新版改為存檔時才查核,不會在輸入後即時帶出客戶代號;客戶代號請自行輸入或留待轉單(延伸功能①)自動帶。
儲存檢核與動作(PdtinfSave)¶
按 儲存 時,系統依序檢核(任一不過即擋下並提示):
- 製單別 必須 > 0(必選)。
- 品號 不可空白。
- 數量 必須 > 0。
- 預訂完工日 不可空白。
- 新增/複製時:
- 自動產生辨識號(
ProductionHelper.GetNewCheckNo())。 - 若製單別=訂單:
- 訂單pkid 不可為 0,否則擋下。
- 以訂單 pkid 查
vw_ordetlid;查無資料提示「請輸入正確的訂單明細 pkid」並擋下。 - 查到後,序號前置碼自動組成
訂單編號片段-訂單序號。
- 其他製單別:序號前置碼自動設為
A+ 今年年份後兩碼(取yyyyMMdd的第 3、4 碼)。
- 自動產生辨識號(
存檔前處理(HandleDataBeforeEndEdit):明細中數量 ≤ 0 且客戶代號空白的列會被自動標記為刪除(不寫入)。
存檔後(AfterEndEdit):新增/複製且有辨識號時,呼叫 Updt_wkpaper(辨識號, 製單別) 自動產生派工單。
派工單產生失敗會 rollback
若 Updt_wkpaper 回傳失敗或丟出例外,系統會顯示錯誤訊息,並把剛剛存進去的這張製通單刪除,避免留下沒有派工單的製通單。看到「System Error … Delete」表示製通單已被退回,請依訊息排除問題後重存。
修改前的派工狀態檢查(PdtinfEdit)¶
按 修改 時,系統用製通單號去查派工單相關表,做三項檢查(此檢查僅在修改路徑執行;新版刪除不走此檢查):
- 生產日報表是否耗料(
wkpapera有耗料單號)→ 擋下,提示「料件已用於生產日報」,不允許修改。 - 派工單是否已領料(
wkpaper×wkpaperd已領數量 > 0)→ 僅警告,仍可繼續。 - 派工單是否已排程(
wkpaper排程起始日非空)→ 僅警告,仍可繼續。
延伸功能① 訂單轉製通單(ExtendedFunction1 → Pdtinf_1)¶
開啟「訂單轉製通單」視窗(WindowName.Pdtinf_1),用來把訂單需求批次轉成製通單:
- 按
查詢,系統呼叫TWORK_TUR_PDTINF抓出可轉的訂單需求(Tmp)與已鎖定的需求(LockedSource)。 - 相同品號的最後一筆會變色標註,方便辨識同品號的群組邊界。
- 操作方式:
- 左鍵點選(合併):把相同品號的多筆需求合併成一張製通單,數量累加。
- 右鍵點選(單選):把該筆需求單獨轉成一張製通單。
- 按存檔上傳時,每張合併出來的製通單會產生主檔+明細(明細記錄合併前各來源的訂單 pkid、客戶、數量、預訂交期),製單別固定為
訂單、製單來源別固定為1.訂單,並自動產生辨識號與派工單。 - 視窗關閉後回到製通單,若有成功產生的 pkid,主畫面會自動定位到該張新製通單。
同一訂單序號最多拆 30 筆
若同一「訂單編號-訂單序號」被拆成超過 30 筆製通單,上傳時會被擋下並提示。請調整合併方式。
延伸功能② 生產計畫表(ExtendedFunction2 → Pdtinf_2)¶
開啟「生產計畫表」查詢視窗(WindowName.Pdtinf_2):
- 選擇查詢基準日期欄位(出貨日期/備料完成日/預訂生產日/預訂完工日/實際生產日/實際完工日)。
- 輸入起始日期,系統以起始日起算連續 90 天為橫向欄位。
- 按
查詢,列出每個品號在這 90 天每日的生產數量;假日(工作日曆工作時數為 0 的日期)的欄位標題以紅色標示。 - 關閉視窗後製通單畫面會重新整理(
Renew)。
製通單號超連結¶
主檔的製通單號標籤是 KeyField 超連結,點擊可直接跳轉到對應的派工單(WKPAPER),方便追下游的領料與生產進度。
常見問題¶
存檔時一直提示要輸入某欄位?
製通單存檔有四個必填檢核:製單別、品號、數量(>0)、預訂完工日。任一缺漏都會被擋下。製單別=訂單時還會額外要求訂單pkid。
製單別選「訂單」,存檔說「請輸入正確的訂單明細 pkid」?
訂單型製通單的訂單pkid 必須能在銷售訂單明細(vw_ordetlid)中查到對應資料。此檢核在存檔時才執行,請確認 pkid 輸入正確、且該筆訂單明細存在。
輸入品號後品名/單位是空白?
品名與單位是依品號主檔自動帶出。若空白,多半是品號打錯或該品號尚未在品號主檔建立。請先到品號主檔維護後再回來輸入。
為什麼不能修改這張製通單?
若此製通單對應的派工單已在生產日報表耗料,系統會擋下修改(料件已實際使用,不允許再異動單頭)。若只是已領料或已排程,系統只會警告、仍可修改。
存檔成功卻跳出「System Error … Delete」?
這代表製通單主檔已寫入,但隨後產生派工單(Updt_wkpaper)失敗,系統為了不留孤兒單,已自動把這張製通單刪除(rollback)。請依錯誤訊息排除(常見為派工單相關設定或資料問題)後重新存檔。
明細有一列數量是 0 卻沒存進去?
存檔前處理會把數量 ≤ 0 且客戶代號空白的明細列自動視為刪除。若該列是有效需求,請補上客戶代號或正確數量。
相關功能¶
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/F-Production/images/):
pdtinf-step1.png— 製通單主畫面(主檔欄位 + 明細格全貌)pdtinf-step2.png— 新增模式,標出預設值(製單別=備料、預訂生產日=今天)pdtinf-step3.png— 訂單轉製通單(延伸功能①)視窗,含合併/單選與變色標註pdtinf-step4.png— 生產計畫表(延伸功能②)90 天橫向排程,含假日紅色欄標