程式資訊
- 程式 ID:
Wkpaper - 所屬子系統:F.生產管理
- 狀態:stable
派工單¶
功能簡介¶
「派工單」是生產現場的工作派發單據:依製通單(生產工單)展開 BOM 與製程後,把要做的每一站工作(廠內派工或委外加工)拆成一張張派工單,記錄生產部門、工程、數量、標準工時、預訂開始/完成日,並帶出該站所需的領用零件(派工零件表)。它是現場領料、報工、完工入庫的依據,主要使用者為生管排程人員與工廠主管。
在生產流程中,派工單位於製通單之後、領料與報工之前:
銷售訂單(E)→ 生產工單/製通單(PDTINFMA)→ 派工單(本單)
↓
派工零件表 → 領料(H 庫存)→ 報工(生產日報表)
↓
完工入庫(H 庫存)→ 成本(K)
派工單通常由系統批次產生
多數派工單不是手動逐張打的,而是由製通單「派工產生」程序依 BOM 逐階展開、依製程逐站建立(見 欄位連動與附加功能 的「派工批次產生」段)。本表單主要用來查詢、修改、結案、刪除已產生的派工單;手動新增多用於補單。
前置需求¶
- 權限:F.生產管理 →
F-020 派工單的新增/修改/刪除/瀏覽/列印權限。 - 基礎資料:派工單能否正確展開與帶值,取決於下列主檔的維護狀況——
| 資料 | 影響什麼 |
|---|---|
| 製通單(生產工單 PDTINFMA) | 派工批次產生的來源(客戶、品號、數量、預訂完工日、設變日期) |
| BOM 與製程(D 工程資料:bom_m / bom_d / proces) | 逐階展開零件、各製程的標準工時、整備工時、生產部門、生產線、移轉天數 |
| 品號主檔(invent,含「派工截止點」) | 品名、單位、展開到哪一階停止 |
| 生產部門 / 客廠部(cusp,含分類) | 生產部門簡稱、判斷是否委外(分類 S → 派工別自動改委外)、領料/轉入倉庫 |
| 工程主檔(proces / procno) | 工程簡稱、單位代工/代料單價 |
| 委外廠商比例(invent 廠商1~3 比例) | 委外加工時依比例把數量分配給多家廠商 |
全域參數 _prgpar 7001~7008 |
委外替換代號、廠內包裝部門/工程/備料倉、試做替換部門、交易單方式、製程工時單位、每日人工分鐘 |
全域參數需先登錄
派工批次產生會讀 _prgpar 的 7001~7008 八個參數。若未登錄,包裝部門、委外替換、工時換算等邏輯會帶空值或 0,導致預訂開工日算錯或派工別判斷異常。
操作步驟¶
查詢既有派工單¶
- 在
派工單號旁的查詢列輸入單號,或用工具列的查詢/瀏覽(Browse)挑選。 - 主檔顯示該派工單的生產部門、工程、數量、工時與日期;下方第一張格線是派工零件表(要領的料),第二張格線是派工排程表(排程明細)。
新增派工單¶
- 按工具列
新增。 - 輸入主檔欄位:下單日期、品號、生產部門、工程代號、數量、單位、預訂開工日(Estimated Manufacture Date)、預訂完成日(Estimated Completion Date)。
- 視需要於下方派工零件表逐列輸入要領用的零件品號、數量、單位用量、轉出部門等。
- 按
儲存。存檔前系統會檢核必填日期並整理零件表(見下方「存檔前處理」)。
派工單號為系統產生
派工單號(Work Order No) 為唯讀,由系統依製通單號加流水序號(製通單號-NN)產生,不可手動輸入。
修改派工單¶
- 選定派工單後按
修改。 - 系統先檢核:
- 若該派工單在生產日報表已耗料,直接擋下不可修改。
- 若該派工單已領料,跳出提示,由使用者確認是否續修。
- 修改 數量 時,存檔後系統會按比例重算每一列零件數量,並連動調整已領/應退料(見欄位連動與附加功能)。
刪除派工單¶
- 選定派工單後按
刪除。 - 零件表中品號為空的列會在存檔時自動標記刪除,不會送出。
結案¶
- 在
結案日期(Closed Date)填入日期即代表結案。 - 存檔時系統依結案日期自動設定「是否結案」旗標:有日期 →
Y;清空 → 取消結案。
列印¶
- 按工具列
列印取得派工單報表。
欄位說明¶
主檔欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 派工單號 WorkOrderNo | 系統產生 | 唯讀,格式 製通單號-NN(流水兩碼) |
| 製通單號 ProductionOrderNo | — | 來源製通單號,系統帶入 |
| 派工別 WorkOrderType | ✔ | 1.廠內派工/2.廠內包裝/6.委外加工…(展開時依製程「分類」自動判定:部門→1,委外→6) |
| 交易單方式 TransactionMethod | — | 1=先領料後耗料、入庫;2=同時領料、耗料、入庫 |
| 下單日期 WorkOrderDate | ✔ | 格式 yyyy/MM/dd,存檔必填 |
| 倉儲代號 Bin | — | 系統依品號/生產部門/派工別帶出生產或備料倉(見欄位連動) |
| 品號 SKU | ✔ | 帶出品名、單位 |
| 品名 SKUDescription | 唯讀 | 依品號自動帶 |
| 生產部門 ProductionDepartmentCode | ✔ | 帶出部門簡稱;分類為 S 時派工別強制改 6(委外) |
| 工程代號 ProcessingCode | ✔ | 帶出工程簡稱;存檔必填(VFP 規則) |
| 途程序號 ProcessingSequenceNo | — | 製程途程序號,前綴 P |
| 工作中心代號 WorkCenterCode | — | 工作中心 |
| 數量 Quantity | ✔ | 連動金額、合計工時、零件數量 |
| 單位 UnitOfMeasurement | ✔ | 下拉,取自單位代碼 |
| 標準工時 StandardWorkingHours | — | 秒/單位,連動合計工時 |
| 整備工時 PreparationHours | — | 分,連動合計工時 |
| 合計工時 TotalWorkingHours | 唯讀 | 系統計算(見下) |
| 代工單價 ProcessingCharge | — | 委外代工單價,連動單價、金額 |
| 代料單價 MaterialCharge | — | 委外代料單價,連動單價、金額 |
| 單價 UnitPrice | — | 代工單價+代料單價 |
| 金額 Amount | 唯讀 | 系統計算(見下) |
| 預訂開工日 EstimatedManufactureDate | ✔ | 存檔必填;批次產生時由完成日往前推工時天數算出 |
| 預訂完成日 EstimatedCompletionDate | ✔ | 存檔必填 |
| 結案日期 ClosedDate | — | 有日期即結案 |
| 轉入成倉 TransferToFinishedGoods | 唯讀 | 末站派工且製單別為訂單/例領/試作/庫存/試組時自動設 Y |
| 暫收(生產)數量 TempReceivingQuantity | 唯讀 | 報工暫收回填 |
| 生產線 ProductLine/人數/排程起訖日/起訖時間 | — | 排程資訊 |
| 移轉數量 InTransitQuantity | — | 在途數量 |
| 派工備註 Notes | — | 自由文字 |
幣別預設本位幣
批次產生時 幣別 Currency 預設帶入本位幣(Context.Env.LocalCurrency)。
派工零件表(明細)欄位¶
| 欄位 | 必填 | 說明 |
|---|---|---|
| 序號 LineNo_ | 系統產生 | 三碼流水 |
| 結構 Structure | — | BOM 結構碼 |
| 品號 SKU | ✔ | 空白列存檔時自動標記刪除 |
| 品名 SKUDescription | 唯讀 | 依品號帶 |
| 途程序號/工程代號/工程簡稱 | — | 對應製程 |
| 數量 Quantity | — | 主檔數量改動時按比例重算 |
| 已領數量 PickedQuantity | 唯讀 | 領料回填(特殊修改模式才可改,見下) |
| 應退料 ShouldReturnQuantity | 唯讀 | 數量調降時自動結算 |
| 轉出部門 SourceDepartment | — | 領料倉/轉出部門 |
| 單位用量 UnitAmount | — | BOM 單位用量 |
| 送貨地點 ShippingAddress/預訂交期 ETA/備註 Notes | — | 委外時的交貨資訊 |
欄位連動與附加功能¶
這一節列出「輸入某欄位或按某動作後,系統會做什麼」,全部來自實際程式碼(C# ViewModel / Source / SaveBll / EditBll / 批次產生程式,以及 VFP wkpaper.prg 欄位事件)。
金額與工時即時連動¶
- 當你修改 代工單價 或 代料單價,系統會把 單價 = 代工單價 + 代料單價,並重算 金額 = 數量 ×(代工單價 + 代料單價)(四捨五入到本位幣小數位)。對應 Source 的
ProcessingChargeBinding/MaterialChargeBindingsetter 呼叫SetAmount()。 - 當你修改 標準工時 或 整備工時,系統會重算 合計工時 = round(數量 × 標準工時 ÷ 60) + 整備工時(取整數,單位:分)。對應
StandardWorkingHoursBinding/PreparationHoursBindingsetter 呼叫SetTotalHours()。 - VFP 原版中,數量 LostFocus 也會一併重新整理金額與合計工時;新版兩個合計欄為唯讀計算欄,輸入單價/工時時即時更新。
存檔前檢核與處理(AllowSave / HandleDataBeforeEndEdit)¶
當你按 儲存,系統依序做:
- 必填日期檢核:
下單日期、預訂開工日、預訂完成日任一為空即擋下,提示請輸入。 - 生產部門委外判定:若生產部門在客廠部主檔的分類為 S,且派工別不是 6,系統自動把 派工別改成 6(委外加工)。
- 結案旗標:
結案日期為空 → 是否結案清空;有日期 → 是否結案設Y。 - 零件空列清理:派工零件表中品號為空的列自動標記為刪除(
增刪修 = D),不會送出。 - 修改模式按比例重算零件數量(僅
修改狀態且新舊數量不同、原數量 > 0 時):- 每一列 零件數量 = round(原零件數量 ÷ 原派工數量 × 新派工數量, 2)。
- 接著呼叫
SetQuantity連動調整已領/應退料:- 數量調降且已領 > 新數量 → 把超領部分加進 應退料,已領數量壓到新數量。
- 數量調升且已領 < 新數量且原本有應退料 → 用應退料補回已領,能補多少補多少。
修改前的耗料/領料檢核(AllowEdit)¶
當你按 修改,系統會:
- 查
wkpapera(生產日報表耗料)若該派工單已有耗料交易 → 直接擋下,提示「物料已在生產日報表使用」,不允許修改。 - 查派工零件表若有任何列 已領數量 > 0 → 跳出 Yes/No 提示「工單已領料」,由使用者決定是否續修;選否則取消修改。
倉儲代號帶值(Bin)¶
派工批次產生時,系統依下列規則決定每張派工單的 倉儲代號(TmpWkpaper.SetBin):
- 有後續製程(非末站):
- 非委外(派工別≠6)→ 取本站生產部門的「生產轉入倉」。
- 委外(派工別=6)→ 取下一站生產部門的「生產轉入倉」。
- 末站:先用品號查 BOM 的「生產轉入倉」;查不到時,非委外(派工別≠6)退回用生產部門的「出貨倉」,委外(派工別=6)則維持空白。
派工批次產生(由製通單展開)¶
這是派工單最核心、也最不直覺的部分。系統從製通單逐張展開(Updt_wkpaper):
- 取出尚未派工的計畫製通單(
是否派工為空者)。 - 對每張製通單,從品號的 BOM 逐階展開(最多展到
BomMaxLevel,若製通單標記「單階派工單」則只展一階);展開到品號「派工截止點 = Y」即停。 - 每一階、每一道製程各產生一張暫存派工單,帶入製程的標準工時、整備工時、生產部門、生產線,並依製程分類決定派工別(部門→1 廠內派工、委外→6 委外加工)。
- 預訂開工日回推(
SetEstimatedManufactureDate):依工時單位(秒/分)把「數量 × 標準工時 + 整備工時」換算成完工天數,再用每日人工分鐘與製程移轉天數,從預訂完成日往前推得到預訂開工日;早於今天則拉回今天,並用工作日曆(Updt_BackWKDay_Lcl)對齊工作日。 - 委外單價帶入(
SetUnitPrice):非廠內派工(派工別≠1)時,依生產部門+品號+工程查單價表(TWORK_BIZ_SPUPX),取符合採購量級距的代工單價、代料單價、單價與幣別。 - 委外比例分配(
Handle分配派工單):若生產部門等於「委外廠商替換代號」,系統依品號的廠商1~3比例把原始數量拆成多張派工單(派工別=6),尾差自動補到比例最大的廠商;零件表同步按比例拆分。 - 試作替換:製單別為試作(4)時,把生產部門換成
_prgpar7005 設定的「廠內試做替換部門」。 - 轉入成倉:最後一張派工單,當製單別屬訂單/例領/試作/庫存/試組時自動設
轉入成倉 = Y。 - 若品號沒有 BOM,系統會建立一張廠內包裝派工單(派工別 2,使用
_prgpar7002/7003/7004 的包裝部門/工程/備料倉)。 - 全部展開後依序重編單號(
製通單號-NN)與序號,呼叫上傳(AdeUploadBll.UpdateData)寫入派工單、派工零件表。
派工別=6(委外)的零件「轉出部門」
展開零件時,非委外站的零件轉出部門取本站生產部門的「生產轉入倉」;委外站則取下一站生產部門的轉入倉,找不到才退回部門代號本身(SetProductionDepartment)。
VFP 原版有、新版尚未提供的延伸功能¶
VFP wkpaper.prg 工具列上還有幾個自訂按鈕,目前新版 C# 表單(Wkpaper.xaml / WkpaperViewModel)尚未實作:
規劃中/尚未提供
- 設變(VFP
else1click→ 開 DESIGNC 設計變更):尚未提供。 - 製程表(VFP
else2click→ 開 WKPAPERH 列印製程表):尚未提供。 - 排程(VFP
else3click→ 開 WKPAPER_T_NEW 排程視窗):尚未提供,目前排程表僅供顯示。 - 特殊修改(VFP
else4click,opmode 9,可改已領數量/轉出部門):尚未提供。 - 查耗料單(VFP
查耗料單鈕→ 由 trwkde 連結開 TRLOST 耗料單):尚未提供。 - 送貨地點
?/[/]快速搜尋與送貨客廠部簡稱即時帶出:新版送貨地點為一般搜尋欄,未含 VFP 的分隔符快搜行為。
以上請以實際版本為準,本頁僅標示規劃缺口,不代表畫面上有可用按鈕。
常見問題¶
派工單號可以自己打嗎?
不行。派工單號 為唯讀,由系統依製通單號加流水序號(製通單號-NN)自動產生。要建立派工單,正常是從製通單做派工產生,或用新增補單由系統配號。
按了儲存卻一直擋住,說要輸入日期?
存檔必填 下單日期、預訂開工日、預訂完成日 三個日期,任一空白都會被擋下。請確認三欄都已填且格式為 yyyy/MM/dd。VFP 另外要求 工程代號 也需輸入。
金額或合計工時是 0,怎麼讓它算出來?
金額與合計工時是計算欄、唯讀。金額要有代工單價或代料單價、且數量 > 0 才會有值(金額 = 數量 ×(代工單價+代料單價));合計工時要有標準工時或整備工時(合計 = round(數量 × 標準工時 ÷ 60) + 整備工時)。改完單價或工時欄位即時重算。
改了派工數量,零件數量為什麼也一起變了?
這是設計行為。在修改模式下存檔,只要新舊數量不同且原數量 > 0,系統會把每列零件數量按 原零件數量 ÷ 原派工數量 × 新派工數量 重算,並連動調整已領/應退料。若不想連動,請勿在已展開的派工單上改主檔數量。
為什麼這張派工單不能修改?
兩種情況會擋:一是該派工單在生產日報表已耗料(直接擋下,無法修改);二是該派工單已領料(跳 Yes/No 提示,選否即取消)。已耗料的單請改走耗料/報工相關單據處理。
生產部門明明選了 A,存檔後派工別卻變成委外(6)?
若該生產部門在客廠部主檔的分類為 S(委外性質),系統會在存檔時自動把派工別改為 6(委外加工)。這是刻意的判定,不是錯誤。
委外的派工單怎麼變成好幾張、分給不同廠商?
當生產部門等於系統設定的「委外廠商替換代號」時,派工產生會依品號的廠商1~3比例把數量拆成多張委外派工單,尾差補到比例最大的廠商。這由全域參數 _prgpar 7001 與品號的廠商比例控制。
相關功能¶
- 生產工單 PDTINFMA:派工單的來源製通單主檔
- 銷售訂單轉製令(拆併單):製通單的訂單來源批次拆併單轉製令
- 製單排程(90 日日曆表):製令數量在 90 天日曆上的排程視覺化
- 生產日報表 / 報工:派工後的工時報工
- D 工程資料:BOM、製程、單位用量設定
- H 庫存管理:派工零件領料、完工入庫、耗料單(TRLOST)
- K 成本管理:派工工時與用料成本
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/F-Production/images/):
wkpaper-step1.png— 派工單主畫面全貌(主檔 + 派工零件表 + 派工排程表)wkpaper-step2.png— 新增派工單時的必填欄位(下單日期/品號/生產部門/工程/數量/預訂開工完成日)wkpaper-step3.png— 修改數量後零件數量按比例重算的前後對照wkpaper-step4.png— 結案日期填入後是否結案旗標的變化