程式資訊
- 程式 ID:
WorkFlowTemplateSelect - 所屬子系統:Other
- 狀態:stable
流程樣板選擇¶
此功能尚在規劃中,目前未啟用
本頁描述的「流程樣板選擇」彈窗(TsERP/Other/WorkFlowTemplateSelect.xaml,視窗標題列文字為 流程樣板選擇)在現行版本中尚未接通:
- 視窗程式碼(
WorkFlowTemplateSelect.xaml.cs)裡建立 ViewModel 並綁定DataContext的那一行被註解掉,因此即使開啟視窗也不會帶出資料。 - ViewModel(
WorkFlowTemplateSelectViewModel)裡把「所選樣板的 pkid 回填給流程」的那一行(constructorParameter.WorkflowTemplatePkid = ...)同樣被註解掉。 - 全專案目前沒有任何程式碼會去開這個視窗(
WindowName.WorkFlowTemplateSelect已登錄,但沒有呼叫端)。
實際操作時,選流程樣板不是走這個彈窗,而是走聯絡單/工作流程視窗內建的流程樣板下拉選單(詳見相關功能)。本頁先記錄這支彈窗的規劃用途與資料來源,待功能接通後再補完整操作步驟與截圖。
功能簡介¶
「流程樣板選擇」是一支在單據上發起簽核流程時,用來挑選要套用哪一張流程樣板的彈窗。當一張單據(如採購單、訂單、傳票…)所屬的單據別底下維護了多張流程樣板時,使用者需要先選定其中一張,系統才知道要把這張單據送給哪些人、依什麼順序簽核。
依規劃,此彈窗會列出該單據別可用的所有流程樣板,使用者點選一張後按 選擇,系統便帶著選定的樣板開啟聯絡單/工作流程視窗,由該樣板自動展開簽核關卡(誰簽、簽核順序、處理事項)。
與「聯絡單流程樣板下拉」的關係
現行版本把「選樣板」這件事做在聯絡單/工作流程視窗內的下拉選單裡(程式內部由 WorkflowRegionViewModel 負責),預設自動帶第一張樣板;換樣板就改下拉。本彈窗是規劃中的另一種選法——先彈窗選好樣板、再開流程視窗,兩者選的是同一份流程樣板清單。
前置需求¶
規劃中功能
下列為此彈窗依規劃所需的前置條件;功能正式啟用前,請改在聯絡單/工作流程視窗內選樣板。
- 權限:使用者對該單據別須具備「可否流程」權限(
可否流程 = 1)。沒有流程權限或該單據別未設任何流程樣板時,單據工具列的流程按鈕不會啟用。 - 基礎資料:彈窗清單的內容取決於下列資料的維護狀況——
| 資料 | 影響的結果 |
|---|---|
流程樣板主檔(A 系統管理 → 流程樣板維護 WKFLOWT) |
清單列出的流程樣板號/流程說明/顯示流程,以及該樣板展開出的簽核關卡 |
| 單據別與流程樣板的對應(樣板上的 單據別 欄位) | 彈窗只列出單據別等於目前單據的樣板 |
| 簽核人員、部門、處理事項碼等流程設定 | 選定樣板後展開出的簽核名單與順序 |
| 單據本身的廠商/客戶/部門/特殊人員欄位 | 流程展開時用來帶出對應的簽核人員(由 WorkflowConstructorParameter 從單據抓取) |
操作步驟¶
以下為規劃中的操作流程,目前彈窗未啟用
功能接通前,請改用聯絡單/工作流程視窗的流程樣板下拉選單。
- 在單據畫面(採購單、訂單、傳票…)上點工具列的流程按鈕,準備對這張單據發起簽核。
- 若該單據別只有一張流程樣板,依規劃會直接帶入、不彈窗;若有多張,才彈出本「流程樣板選擇」視窗。
- 在清單中點選要套用的那一張流程樣板(一次選一張)。
- 按右側的
選擇按鈕。 - 系統關閉本彈窗,帶著選定的樣板開啟聯絡單/工作流程視窗,並依該樣板展開簽核關卡。

欄位說明¶
彈窗主體是一份唯讀清單(ListView),列出該單據別可用的流程樣板,欄位皆不可編輯:
| 欄位 | 必填 | 說明 |
|---|---|---|
| 流程樣板號 | — | 流程樣板的編號,於流程樣板維護 WKFLOWT 設定,清單依此排序 |
| 單據別 | — | 此樣板所屬的單據別;彈窗只會列出與目前單據相同單據別的樣板 |
| 資料表別名 | — | 該單據別對應的資料表別名(系統內部用,供流程套用時定位資料) |
| 流程說明 | — | 流程樣板的文字說明,協助辨識要選哪一張 |
顯示流程(多語系說明)
清單載入時,系統會把每張樣板的 流程說明 透過語系服務翻譯成 顯示流程(顯示流程 欄位)。在聯絡單/工作流程視窗中,這個「顯示流程」還會被組進聯絡單主旨(格式為「顯示流程,單號:xxx,發行:使用者」)。
欄位連動與附加功能¶
以下行為來自程式碼,部分節點因功能未接通而目前不會觸發;已逐一標示。
-
清單來源(單據別過濾):彈窗的清單並非全表列出。系統從本機快取的流程樣板表(
d_流程樣板m)讀出單據別等於目前單據的樣板,依流程樣板號由小到大排序後顯示。也就是說,你在 A 流程樣板維護裡掛在「採購單」底下的樣板,只會在開採購單時出現。 -
顯示流程自動翻譯:每張樣板載入時,系統會拿 流程說明 去語系對照表(
WorkflowTemplate語系鍵)翻成 顯示流程。若你在不同語系登入,看到的流程說明文字會跟著切換;對照表沒有對應時,沿用原本的流程說明。 -
單張樣板免彈窗(規劃):依規劃,當某單據別只有一張流程樣板時不需要這支彈窗——系統會直接套用唯一那張,省去選擇動作。只有兩張以上才需要使用者手動挑。
-
按
選擇的後續動作:- 系統依規劃會把你選中那一列的樣板 pkid 記回流程建構參數(
WorkflowConstructorParameter)。 !!! warning "目前未生效" 這一步在現行程式碼中被註解掉(//constructorParameter.WorkflowTemplatePkid = List[SelectIndex].pkid;),因此即使彈窗能開,所選樣板也尚未真正回填。功能接通需先補回此行並補上對應屬性。 - 接著開啟聯絡單/工作流程視窗(內部以
WindowName.Commpr開窗),把流程建構參數一併帶過去。 - 關閉本彈窗。
- 系統依規劃會把你選中那一列的樣板 pkid 記回流程建構參數(
-
流程建構參數帶哪些單據欄位:開窗時系統會建立
WorkflowConstructorParameter,從目前單據自動抓出廠商代號/客戶代號/部門代號/特殊人員四個關係人欄位(由GetWorkflowFieldName依單據別決定要抓哪幾欄)。這四個值會在流程展開時交給WorkflowBll.Pick用來決定簽核名單。標籤(Tag) 則是另外組的——系統依單據別設定(GetAttachmentFields)抓出附件相關欄位的值串接而成(目前GetTag內把四個關係人欄位併入標籤的程式已被註解,標籤只由附件欄位組成),於存檔時回填到聯絡單主檔的標籤欄。 -
選定樣板後展開簽核關卡:樣板選定後(不論走彈窗或下拉),實際的簽核名單是由
WorkflowBll.Pick依樣板 pkid+廠商/客戶/部門/特殊人員從後端(DARB_WKFLOW_PICK)取回,逐關列入聯絡單的工作流程明細。換言之,同一張樣板套在不同關係人的單據上,展開出來的簽核人員可能不同。
技術備註:本彈窗目前的接通缺口
供開發者參考,功能尚未啟用的兩個關鍵點:
WorkFlowTemplateSelect.xaml.cs建構式中viewmodel = new WorkFlowTemplateSelectViewModel(...)被註解 →DataContext為null,清單與按鈕都不會綁到資料。WorkFlowTemplateSelectViewModel.OpenCommprExecute()中回填WorkflowTemplatePkid的行被註解 → 即使選了樣板也沒帶出去。
此外 WorkflowConstructorParameter 目前沒有 WorkflowTemplatePkid 屬性,接通時需一併補上。
常見問題¶
我在單據上找不到「流程樣板選擇」這個彈窗?
這支彈窗目前未啟用,不會在任何單據上彈出。實際要選流程樣板,請開聯絡單/工作流程視窗,用視窗內的流程樣板下拉選單選擇(預設會自動帶第一張樣板)。
單據工具列的「流程」按鈕是灰的、按不下去?
兩個原因之一:一是你對這張單據的單據別沒有流程權限(可否流程 不等於 1);二是這個單據別底下還沒有任何流程樣板。請先到 A 系統管理的流程樣板維護 WKFLOWT 為該單據別建立樣板,並確認權限。
為什麼這張單據看不到我建的某張流程樣板?
彈窗(及下拉)只列出單據別與目前單據相同的樣板。請檢查該流程樣板的 單據別 欄位是否設成這張單據的單據別;單據別不符的樣板不會出現。
選了流程樣板,簽核名單卻是空的或不對?
簽核名單是由樣板 pkid 搭配單據上的廠商/客戶/部門/特殊人員從後端展開的。請確認:流程樣板維護裡有設好各關卡的簽核人員;以及單據上對應的關係人欄位有填值。同一張樣板套在不同關係人的單據上,展開出的人員會不同。
相關功能¶
需補截圖清單
本功能尚未啟用,以下截圖待功能接通並 runtime 驗收後再補拍(放 docs/Other/images/):
workflowtemplateselect-step1.png— 流程樣板選擇彈窗全貌(含樣板清單與「選擇」按鈕)