程式資訊
- 程式 ID:
PDTINF_1 - 所屬子系統:F.生產管理
- 狀態:stable
銷售訂單轉製令(拆併單)¶
功能簡介¶
「銷售訂單轉製令」是 製令/製通單 表單上的延伸視窗,用來把尚未轉製令的銷售訂單明細一次轉成製通單(製單別=訂單)。它最大的特色是支援拆單與併單:
- 併單:同一品號(SKU)散落在多張訂單的需求,可以合併成一張製令一起生產。
- 拆單:同一張訂單明細的數量太大,可拆成多筆製令分批生產(每筆會在製通單明細各佔一列)。
使用者通常是生管人員。在製通單主檔按下「其他功能一」(轉製令)按鈕後,本視窗以模態彈窗開啟;確認轉檔成功後,主檔會自動跳到剛產生的那張製通單。它在流程上承接「業務已下單」、產出「待生產的製通單」,再由製通單流向領料、製程與報工。
與製通單手動新增的差異
製通單也可以手動新增(手動新增時製單別預設為備料),本視窗則是從既有銷售訂單批次帶出,並自動回填客戶、品號、數量、出貨日期與各階段預訂日,省去逐筆key單。轉出的製通單製單別固定為訂單。
前置需求¶
- 權限:F.生產 →
製令(PDTINF)的瀏覽與新增權限。本視窗沒有獨立選單,是透過製通單的延伸功能進入,因此沿用製通單的權限。 - 基礎資料:待轉資料與回填欄位的完整度,取決於下列來源——
| 資料 | 影響的結果 |
|---|---|
| 銷售訂單(含明細交期、未轉製令的明細) | 本視窗清單的來源;沒有未轉製令的訂單就查不到資料 |
| 客戶主檔 | 帶出客戶代號/客戶簡稱 |
| 品號主檔、製程/前置天數(Leadtime) | 費用品號(含 -)自動回推出貨日/備料完成日/預訂生產日/預訂完工日 |
| 工作日曆 | 回推日期時跳過非工作日 |
| BOM | 製令成立後才展開用料;本視窗本身不依賴 BOM 資料 |
操作步驟¶
開啟視窗¶
- 進入 製令/製通單 表單。
- 按工具列的 其他功能一(轉製令)。系統以模態視窗開啟「Sales Order To Production」。
步驟① 查詢待轉訂單¶
- 按視窗下方的
查詢。系統呼叫轉檔查詢,把目前尚未轉製令的銷售訂單明細載入上方格線(候選清單)。 - 同時下方第二個頁籤 Locked Source(鎖定中) 會列出正被其他使用者編輯中的來源,標籤旁顯示鎖定筆數。這些資料你無法同時操作,待對方存檔或取消後重查即可。
查不到資料時
若查詢結果為空,系統會提示「無資料」。代表查詢區間內沒有「未轉製令」的訂單明細,或全部被其他人鎖定。
步驟② 指定要轉的列(拆單/併單)¶
候選清單每一列最左邊有一個 Combine(合併)按鈕,左鍵與右鍵行為不同:
- 左鍵點
Combine→ 把這一列加入「轉出清單」並嘗試併單:- 系統會找出同品號(SKU)且已被選取的列,若已有同品號的合併目標,就把本列數量累加進去(多張訂單併成一張製令)。
- 若同品號還沒有合併目標,則以本列複製出一筆新的「合併單」。
- 被選取的列會標上一個流水狀態碼(Status Code),代表它屬於哪一組合併。
- 右鍵點
Combine→ 把這一列當作單獨一筆轉出(不與任何人合併),狀態碼標為-1。 - 再次點按已選的列可以取消:左鍵取消合併(數量從合併單扣回,合併組空了就移除),右鍵取消單獨轉出。
每按一次,下方第二格線「轉出清單(TmpUpload)」即時反映目前要轉出的製令內容,可隨時檢視合併後的數量。
怎麼判斷品號是否重複
同一品號的最後一筆的 SKU 欄會以紫色標示(提醒同品號還有多筆可一起併單),方便快速找出可併單的群組。
步驟③ 存檔轉出¶
- 確認轉出清單無誤後,按
儲存。 - 存檔成功後,系統會依設定自動關閉本視窗,並讓製通單主檔跳到剛產生的那張製令(透過 PKID 導頁)。
存檔前的兩道檢查
- 不可有未指定的列:轉出清單中若還有狀態碼為 0 的資料(既沒併也沒單獨選),會擋下存檔。
- 單一訂單明細拆單上限 30 筆:同一張「訂單編號+訂單項次」被拆成超過 30 筆時會擋存,並提示該筆訂單編號與項次。
欄位說明¶
候選清單與轉出清單的欄位相同,皆由銷售訂單帶出、唯讀為主(數量與部分日期可改):
| 欄位 | 可編輯 | 說明/格式/預設 |
|---|---|---|
| Status Code(狀態碼) | — | 拆併分組代碼。0=未選取;>0=合併組序號;-1=單獨轉出 |
| Split Or Combine Quantity(拆併數量) | — | 拆單/併單後的數量 |
| Customer Code/Name(客戶代號/簡稱) | — | 由訂單帶出 |
| Sales Order No(訂單編號) | — | 來源訂單編號 |
| Sales Order Line No(訂單項次) | — | 來源訂單項次 |
| SKU(品號) | — | 同品號最後一列以紫色標示 |
| SKUDescription(品名) | — | 品號說明 |
| Schedule Notes(計畫備註) | — | 帶入製通單的計畫備註 |
| Quantity(數量) | ✔ | 要生產的數量;併單時各列數量會累加成合併單數量 |
| Shipping Date(出貨日期) | — | 由訂單交期帶出;費用品號自動回推 |
| Estimated Completion Date(預訂完工日) | ✔ | 預計完工日 |
| Preparation Completed Date(備料完成日) | ✔ | 預計備料完成日 |
| Estimated Manufacture Date(預訂生產日) | ✔ | 預計開工日 |
| Production Lot(生產批) | — | 生產批量參考 |
| Production Ratio(生產比例) | — | 生產比例參考 |
| Weeks(週數) | — | 交期週數參考 |
Locked Source(鎖定中) 頁籤多出 Editing User(編輯者)、Actual Completion Date(實際完工日)、Actual Manufacture Date(實際生產日),用來辨識是誰在編輯該筆來源。
日期格式
各日期欄位以 YYYYMMDD 字串儲存與比較,畫面上以該格式顯示。
欄位連動與附加功能¶
這一節把「按某按鈕/點某列會發生什麼」「某種品號存檔時系統怎麼算」完整列出,全部來自實際程式行為。
查詢與鎖定來源¶
- 當你按
查詢,系統會:- 重置合併計數器,呼叫轉檔查詢(後端
TWORK_TUR_PDTINF),把候選清單載入上方格線、鎖定中的來源載入第二頁籤。 - 對候選清單依品號建立索引(lookup),供後續併單時快速找到同品號的列。
- 把每個品號分組後的最後一筆設為
ColorSKU=1,畫面上以紫色標示,提醒同品號還有多筆可併單。
- 重置合併計數器,呼叫轉檔查詢(後端
- 第二頁籤 Locked Source 的標題會即時顯示鎖定筆數(
LockedCount)。這些是被其他使用者「進入編輯」而鎖住的來源,你這次無法轉出。
費用品號(SKU 含 -)的日期自動回推¶
- 當某列品號含有
-(代表是費用項目)時,查詢載入後系統會自動依預訂交期(ETA)與備料前置天數(Leadtimest)回推下列日期。各日期都是從 ETA 各自往前推算(不是逐階相接),設備料前置天數為day:- 出貨日期 = ETA 往前推
day個工作日。 - 備料完成日 = ETA 往前推
day + 4個工作日。 - 預訂生產日 = ETA 往前推
day + 3個工作日。 - 預訂完工日 = ETA 往前推
day + 2個工作日。
- 出貨日期 = ETA 往前推
- 回推時使用工作日曆(會跳過非工作日)。其中備料完成日/預訂生產日/預訂完工日若回推結果早於今天會改成今天;出貨日期不套用此「不早於今天」的保護。
一般品號(不含 -)
一般品號的各階段日期沿用訂單原本帶出的值,不做上述自動回推。日期欄位仍可在格線中手動調整。
併單(左鍵 Combine)¶
當你左鍵點某列的 Combine:
- 若該列狀態碼為 0(尚未選)→ 計數器 +1 設為新狀態碼,接著找同品號中已選(狀態碼 > 0)的列:
- 找到 → 沿用該組的合併單,把本列數量加進合併單數量,並把本列登記到該合併單底下的明細清單。
- 沒找到 → 以本列複製出一筆新的合併單,加入轉出清單。
- 若該列已被選(狀態碼 > 0)→ 視為取消併單:從合併單數量扣回本列數量、把本列從該組明細移除;若該組已無明細則移除整張合併單,狀態碼歸 0。
單獨轉出(右鍵 Combine)¶
當你右鍵點某列的 Combine:
- 狀態碼為 0 → 標為
-1,以本列複製出一筆單獨的轉出單加入清單。 - 狀態碼為
-1(已單獨選)→ 取消:從轉出清單移除,狀態碼歸 0。 - 狀態碼 > 0(原本在某合併組)→ 先把它從合併組移除,再改為單獨轉出。
右鍵以 code-behind 處理
RadGridView 儲存格內的 MouseBinding 不穩定,因此 Combine 的右鍵改由視窗的 code-behind 攔截後再呼叫單選邏輯。功能上等同上述「單獨轉出」。
欄位標色含義¶
- 紫色(SKU 欄):同品號分組中的最後一列,提示該品號還有多筆可一併合併。對應
ColorSKU=1。 - 候選清單其餘儲存格維持一般底色;目前版本沒有依狀態碼(已選/未選)變更整列底色。
存檔(轉出製令)時的處理¶
按 儲存 時,系統依序執行:
- 拆單上限檢查:同一「訂單編號+訂單項次」被拆成超過 30 筆 → 擋存並提示該訂單編號與項次。
- 未指定檢查:轉出清單中仍有狀態碼 0 的列 → 擋存(提示 Status Code is zero)。
- 組製通單資料:對每一筆轉出單,組出製通單主檔(製單別=
訂單、製單來源別=訂單、辨識號為新產生的轉檔批號),並依是合併單或單獨單,把對應的訂單明細逐筆寫成製通單明細(明細序號001、002…)。 - 寫回資料庫:透過轉檔機制寫入製通單主檔與明細檢視表(
Twork_pdt_vw_pdtinfma/pdtinfde)。 - 產生工作底稿:存檔成功後自動觸發
Updt_wkpaper(依辨識號)產生對應的工作底稿。 - 失敗自動回收:若工作底稿產生失敗,系統會依辨識號刪除剛剛寫入的製通單資料並提示錯誤,避免留下半套資料。
存檔後導頁¶
- 存檔成功會記下新製令的 PKID。視窗關閉後,呼叫端(製通單主檔)會自動以該 PKID 導頁,讓你直接看到剛轉出的製通單。
離開¶
- 按
離開/Exit直接關閉視窗,不影響已存檔的資料。離開鈕在存檔流程進行中會被暫時停用,避免中途關閉。
常見問題¶
按了查詢卻顯示「無資料」?
本視窗只列出尚未轉製令的銷售訂單明細。若該區間的訂單都已轉過製令,或全部被其他使用者鎖定(會出現在「Locked Source」頁籤),就會查不到。請確認確實有未轉製令的訂單。
存檔時跳出 Status Code is zero(狀態碼為 0)?
代表轉出清單裡還有「既沒併單、也沒單獨選」的列。請把每一筆要轉的列都用左鍵(併單)或右鍵(單獨)指定後再存檔。不要轉的列不需處理。
存檔被擋,說某訂單拆超過 30 筆?
同一張「訂單編號+訂單項次」最多只能拆成 30 筆製令。請減少該筆訂單的拆單數量,或合併其中幾筆後再存檔。
費用品號的出貨日/完工日為什麼自動變了?
品號含 - 視為費用項目,系統會依預訂交期(ETA)與備料前置天數從 ETA 各自往前回推出貨日、備料完成日、預訂生產日、預訂完工日。其中備料完成日、預訂生產日、預訂完工日若回推結果早於今天會改成今天(出貨日不套用此保護)。這是刻意的設計,可在格線中再手動微調可編輯的日期欄。
為什麼有些列點不動、出現在「Locked Source」?
那些來源正被其他使用者編輯而鎖定,標籤旁會顯示鎖定筆數。待對方存檔或取消後重新查詢即可操作。
存檔成功了,但工作底稿好像沒出來?
存檔後系統會自動產生工作底稿;若這一步失敗,系統會刪掉剛存的製通單並提示錯誤,避免留下不完整資料。請依錯誤訊息排除後重做轉出。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/F-Production/images/):
pdtinf_1-step1.png— 從製通單按「其他功能一」開啟本視窗、按查詢後的候選清單全貌pdtinf_1-step2.png— 併單/單獨轉出操作(含紫色同品號末列、Combine 按鈕)pdtinf_1-step3.png— 下方轉出清單(TmpUpload)合併後的結果pdtinf_1-locked.png— 「Locked Source(鎖定中)」頁籤