跳轉到

程式資訊

  • 程式 IDWorkFlowTemplateSelect
  • 所屬子系統:Other
  • 狀態:stable

流程樣板選擇

此功能尚在規劃中,目前未啟用

本頁描述的「流程樣板選擇」彈窗(TsERP/Other/WorkFlowTemplateSelect.xaml,視窗標題列文字為 流程樣板選擇)在現行版本中尚未接通

  1. 視窗程式碼(WorkFlowTemplateSelect.xaml.cs)裡建立 ViewModel 並綁定 DataContext 的那一行被註解掉,因此即使開啟視窗也不會帶出資料。
  2. ViewModel(WorkFlowTemplateSelectViewModel)裡把「所選樣板的 pkid 回填給流程」的那一行(constructorParameter.WorkflowTemplatePkid = ...)同樣被註解掉。
  3. 全專案目前沒有任何程式碼會去開這個視窗(WindowName.WorkFlowTemplateSelect 已登錄,但沒有呼叫端)。

實際操作時,選流程樣板不是走這個彈窗,而是走聯絡單/工作流程視窗內建的流程樣板下拉選單(詳見相關功能)。本頁先記錄這支彈窗的規劃用途與資料來源,待功能接通後再補完整操作步驟與截圖。

功能簡介

「流程樣板選擇」是一支在單據上發起簽核流程時,用來挑選要套用哪一張流程樣板的彈窗。當一張單據(如採購單、訂單、傳票…)所屬的單據別底下維護了多張流程樣板時,使用者需要先選定其中一張,系統才知道要把這張單據送給哪些人、依什麼順序簽核。

依規劃,此彈窗會列出該單據別可用的所有流程樣板,使用者點選一張後按 選擇,系統便帶著選定的樣板開啟聯絡單/工作流程視窗,由該樣板自動展開簽核關卡(誰簽、簽核順序、處理事項)。

與「聯絡單流程樣板下拉」的關係

現行版本把「選樣板」這件事做在聯絡單/工作流程視窗內的下拉選單裡(程式內部由 WorkflowRegionViewModel 負責),預設自動帶第一張樣板;換樣板就改下拉。本彈窗是規劃中的另一種選法——先彈窗選好樣板、再開流程視窗,兩者選的是同一份流程樣板清單。

前置需求

規劃中功能

下列為此彈窗依規劃所需的前置條件;功能正式啟用前,請改在聯絡單/工作流程視窗內選樣板。

  • 權限:使用者對該單據別須具備「可否流程」權限(可否流程 = 1)。沒有流程權限或該單據別未設任何流程樣板時,單據工具列的流程按鈕不會啟用。
  • 基礎資料:彈窗清單的內容取決於下列資料的維護狀況——
資料 影響的結果
流程樣板主檔(A 系統管理 → 流程樣板維護 WKFLOWT 清單列出的流程樣板號/流程說明/顯示流程,以及該樣板展開出的簽核關卡
單據別與流程樣板的對應(樣板上的 單據別 欄位) 彈窗只列出單據別等於目前單據的樣板
簽核人員、部門、處理事項碼等流程設定 選定樣板後展開出的簽核名單與順序
單據本身的廠商/客戶/部門/特殊人員欄位 流程展開時用來帶出對應的簽核人員(由 WorkflowConstructorParameter 從單據抓取)

操作步驟

以下為規劃中的操作流程,目前彈窗未啟用

功能接通前,請改用聯絡單/工作流程視窗的流程樣板下拉選單。

  1. 在單據畫面(採購單、訂單、傳票…)上點工具列的流程按鈕,準備對這張單據發起簽核。
  2. 若該單據別只有一張流程樣板,依規劃會直接帶入、不彈窗;若有多張,才彈出本「流程樣板選擇」視窗。
  3. 在清單中點選要套用的那一張流程樣板(一次選一張)。
  4. 按右側的 選擇 按鈕。
  5. 系統關閉本彈窗,帶著選定的樣板開啟聯絡單/工作流程視窗,並依該樣板展開簽核關卡。

流程樣板選擇彈窗

欄位說明

彈窗主體是一份唯讀清單(ListView),列出該單據別可用的流程樣板,欄位皆不可編輯:

欄位 必填 說明
流程樣板號 流程樣板的編號,於流程樣板維護 WKFLOWT 設定,清單依此排序
單據別 此樣板所屬的單據別;彈窗只會列出與目前單據相同單據別的樣板
資料表別名 該單據別對應的資料表別名(系統內部用,供流程套用時定位資料)
流程說明 流程樣板的文字說明,協助辨識要選哪一張

顯示流程(多語系說明)

清單載入時,系統會把每張樣板的 流程說明 透過語系服務翻譯成 顯示流程顯示流程 欄位)。在聯絡單/工作流程視窗中,這個「顯示流程」還會被組進聯絡單主旨(格式為「顯示流程,單號:xxx,發行:使用者」)。

欄位連動與附加功能

以下行為來自程式碼,部分節點因功能未接通而目前不會觸發;已逐一標示。

  • 清單來源(單據別過濾):彈窗的清單並非全表列出。系統從本機快取的流程樣板表(d_流程樣板m)讀出單據別等於目前單據的樣板,依流程樣板號由小到大排序後顯示。也就是說,你在 A 流程樣板維護裡掛在「採購單」底下的樣板,只會在開採購單時出現。

  • 顯示流程自動翻譯:每張樣板載入時,系統會拿 流程說明 去語系對照表(WorkflowTemplate 語系鍵)翻成 顯示流程。若你在不同語系登入,看到的流程說明文字會跟著切換;對照表沒有對應時,沿用原本的流程說明。

  • 單張樣板免彈窗(規劃):依規劃,當某單據別只有一張流程樣板時不需要這支彈窗——系統會直接套用唯一那張,省去選擇動作。只有兩張以上才需要使用者手動挑。

  • 選擇 的後續動作

    1. 系統依規劃會把你選中那一列的樣板 pkid 記回流程建構參數(WorkflowConstructorParameter)。 !!! warning "目前未生效" 這一步在現行程式碼中被註解掉(//constructorParameter.WorkflowTemplatePkid = List[SelectIndex].pkid;),因此即使彈窗能開,所選樣板也尚未真正回填。功能接通需先補回此行並補上對應屬性。
    2. 接著開啟聯絡單/工作流程視窗(內部以 WindowName.Commpr 開窗),把流程建構參數一併帶過去。
    3. 關閉本彈窗。
  • 流程建構參數帶哪些單據欄位:開窗時系統會建立 WorkflowConstructorParameter,從目前單據自動抓出廠商代號/客戶代號/部門代號/特殊人員四個關係人欄位(由 GetWorkflowFieldName 依單據別決定要抓哪幾欄)。這四個值會在流程展開時交給 WorkflowBll.Pick 用來決定簽核名單。標籤(Tag) 則是另外組的——系統依單據別設定(GetAttachmentFields)抓出附件相關欄位的值串接而成(目前 GetTag 內把四個關係人欄位併入標籤的程式已被註解,標籤只由附件欄位組成),於存檔時回填到聯絡單主檔的標籤欄。

  • 選定樣板後展開簽核關卡:樣板選定後(不論走彈窗或下拉),實際的簽核名單是由 WorkflowBll.Pick樣板 pkid+廠商/客戶/部門/特殊人員從後端(DARB_WKFLOW_PICK)取回,逐關列入聯絡單的工作流程明細。換言之,同一張樣板套在不同關係人的單據上,展開出來的簽核人員可能不同

技術備註:本彈窗目前的接通缺口

供開發者參考,功能尚未啟用的兩個關鍵點:

  1. WorkFlowTemplateSelect.xaml.cs 建構式中 viewmodel = new WorkFlowTemplateSelectViewModel(...) 被註解 → DataContextnull,清單與按鈕都不會綁到資料。
  2. WorkFlowTemplateSelectViewModel.OpenCommprExecute() 中回填 WorkflowTemplatePkid 的行被註解 → 即使選了樣板也沒帶出去。

此外 WorkflowConstructorParameter 目前沒有 WorkflowTemplatePkid 屬性,接通時需一併補上。

常見問題

我在單據上找不到「流程樣板選擇」這個彈窗?

這支彈窗目前未啟用,不會在任何單據上彈出。實際要選流程樣板,請開聯絡單/工作流程視窗,用視窗內的流程樣板下拉選單選擇(預設會自動帶第一張樣板)。

單據工具列的「流程」按鈕是灰的、按不下去?

兩個原因之一:一是你對這張單據的單據別沒有流程權限可否流程 不等於 1);二是這個單據別底下還沒有任何流程樣板。請先到 A 系統管理的流程樣板維護 WKFLOWT 為該單據別建立樣板,並確認權限。

為什麼這張單據看不到我建的某張流程樣板?

彈窗(及下拉)只列出單據別與目前單據相同的樣板。請檢查該流程樣板的 單據別 欄位是否設成這張單據的單據別;單據別不符的樣板不會出現。

選了流程樣板,簽核名單卻是空的或不對?

簽核名單是由樣板 pkid 搭配單據上的廠商/客戶/部門/特殊人員從後端展開的。請確認:流程樣板維護裡有設好各關卡的簽核人員;以及單據上對應的關係人欄位有填值。同一張樣板套在不同關係人的單據上,展開出的人員會不同。

相關功能


需補截圖清單

本功能尚未啟用,以下截圖待功能接通並 runtime 驗收後再補拍(放 docs/Other/images/):

  1. workflowtemplateselect-step1.png — 流程樣板選擇彈窗全貌(含樣板清單與「選擇」按鈕)