跳轉到

程式資訊

  • 程式 IDWkpaper
  • 所屬子系統: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,導致預訂開工日算錯或派工別判斷異常。

操作步驟

查詢既有派工單

  1. 派工單號 旁的查詢列輸入單號,或用工具列的 查詢/瀏覽(Browse)挑選。
  2. 主檔顯示該派工單的生產部門、工程、數量、工時與日期;下方第一張格線是派工零件表(要領的料),第二張格線是派工排程表(排程明細)。

新增派工單

  1. 按工具列 新增
  2. 輸入主檔欄位:下單日期品號生產部門工程代號數量單位預訂開工日(Estimated Manufacture Date)預訂完成日(Estimated Completion Date)
  3. 視需要於下方派工零件表逐列輸入要領用的零件品號、數量、單位用量、轉出部門等。
  4. 儲存。存檔前系統會檢核必填日期並整理零件表(見下方「存檔前處理」)。

派工單號為系統產生

派工單號(Work Order No) 為唯讀,由系統依製通單號加流水序號(製通單號-NN)產生,不可手動輸入。

修改派工單

  1. 選定派工單後按 修改
  2. 系統先檢核:
    • 若該派工單在生產日報表已耗料,直接擋下不可修改。
    • 若該派工單已領料,跳出提示,由使用者確認是否續修。
  3. 修改 數量 時,存檔後系統會按比例重算每一列零件數量,並連動調整已領/應退料(見欄位連動與附加功能)。

刪除派工單

  1. 選定派工單後按 刪除
  2. 零件表中品號為空的列會在存檔時自動標記刪除,不會送出。

結案

  1. 結案日期(Closed Date) 填入日期即代表結案。
  2. 存檔時系統依結案日期自動設定「是否結案」旗標:有日期 → Y;清空 → 取消結案。

列印

  1. 按工具列 列印 取得派工單報表。

欄位說明

主檔欄位

欄位 必填 說明/格式/預設
派工單號 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 / MaterialChargeBinding setter 呼叫 SetAmount()
  • 當你修改 標準工時整備工時,系統會重算 合計工時 = round(數量 × 標準工時 ÷ 60) + 整備工時(取整數,單位:分)。對應 StandardWorkingHoursBinding / PreparationHoursBinding setter 呼叫 SetTotalHours()
  • VFP 原版中,數量 LostFocus 也會一併重新整理金額與合計工時;新版兩個合計欄為唯讀計算欄,輸入單價/工時時即時更新。

存檔前檢核與處理(AllowSave / HandleDataBeforeEndEdit)

當你按 儲存,系統依序做:

  1. 必填日期檢核下單日期預訂開工日預訂完成日 任一為空即擋下,提示請輸入。
  2. 生產部門委外判定:若生產部門在客廠部主檔的分類為 S,且派工別不是 6,系統自動把 派工別改成 6(委外加工)
  3. 結案旗標結案日期 為空 → 是否結案清空;有日期 → 是否結案設 Y
  4. 零件空列清理:派工零件表中品號為空的列自動標記為刪除(增刪修 = D),不會送出。
  5. 修改模式按比例重算零件數量(僅 修改 狀態且新舊數量不同、原數量 > 0 時):
    • 每一列 零件數量 = round(原零件數量 ÷ 原派工數量 × 新派工數量, 2)
    • 接著呼叫 SetQuantity 連動調整已領/應退料:
      • 數量調降且已領 > 新數量 → 把超領部分加進 應退料,已領數量壓到新數量。
      • 數量調升且已領 < 新數量且原本有應退料 → 用應退料補回已領,能補多少補多少。

修改前的耗料/領料檢核(AllowEdit)

當你按 修改,系統會:

  • wkpapera(生產日報表耗料)若該派工單已有耗料交易 → 直接擋下,提示「物料已在生產日報表使用」,不允許修改。
  • 查派工零件表若有任何列 已領數量 > 0 → 跳出 Yes/No 提示「工單已領料」,由使用者決定是否續修;選否則取消修改。

倉儲代號帶值(Bin)

派工批次產生時,系統依下列規則決定每張派工單的 倉儲代號TmpWkpaper.SetBin):

  • 有後續製程(非末站):
    • 非委外(派工別≠6)→ 取本站生產部門的「生產轉入倉」。
    • 委外(派工別=6)→ 取下一站生產部門的「生產轉入倉」。
  • 末站:先用品號查 BOM 的「生產轉入倉」;查不到時,非委外(派工別≠6)退回用生產部門的「出貨倉」,委外(派工別=6)則維持空白。

派工批次產生(由製通單展開)

這是派工單最核心、也最不直覺的部分。系統從製通單逐張展開(Updt_wkpaper):

  1. 取出尚未派工的計畫製通單(是否派工 為空者)。
  2. 對每張製通單,從品號的 BOM 逐階展開(最多展到 BomMaxLevel,若製通單標記「單階派工單」則只展一階);展開到品號「派工截止點 = Y」即停。
  3. 每一階、每一道製程各產生一張暫存派工單,帶入製程的標準工時、整備工時、生產部門、生產線,並依製程分類決定派工別(部門→1 廠內派工、委外→6 委外加工)。
  4. 預訂開工日回推SetEstimatedManufactureDate):依工時單位(秒/分)把「數量 × 標準工時 + 整備工時」換算成完工天數,再用每日人工分鐘與製程移轉天數,從預訂完成日往前推得到預訂開工日;早於今天則拉回今天,並用工作日曆(Updt_BackWKDay_Lcl)對齊工作日。
  5. 委外單價帶入SetUnitPrice):非廠內派工(派工別≠1)時,依生產部門+品號+工程查單價表(TWORK_BIZ_SPUPX),取符合採購量級距的代工單價、代料單價、單價與幣別。
  6. 委外比例分配Handle分配派工單):若生產部門等於「委外廠商替換代號」,系統依品號的廠商1~3比例把原始數量拆成多張派工單(派工別=6),尾差自動補到比例最大的廠商;零件表同步按比例拆分。
  7. 試作替換:製單別為試作(4)時,把生產部門換成 _prgpar 7005 設定的「廠內試做替換部門」。
  8. 轉入成倉:最後一張派工單,當製單別屬訂單/例領/試作/庫存/試組時自動設 轉入成倉 = Y
  9. 若品號沒有 BOM,系統會建立一張廠內包裝派工單(派工別 2,使用 _prgpar 7002/7003/7004 的包裝部門/工程/備料倉)。
  10. 全部展開後依序重編單號(製通單號-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 與品號的廠商比例控制。

相關功能


需補截圖清單

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

  1. wkpaper-step1.png — 派工單主畫面全貌(主檔 + 派工零件表 + 派工排程表)
  2. wkpaper-step2.png — 新增派工單時的必填欄位(下單日期/品號/生產部門/工程/數量/預訂開工完成日)
  3. wkpaper-step3.png — 修改數量後零件數量按比例重算的前後對照
  4. wkpaper-step4.png — 結案日期填入後是否結案旗標的變化