跳轉到

程式資訊

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

工作流程派送(簽核發起)

功能簡介

「工作流程派送」是各單據在工具列按下 工作流程(簽核)時跳出的設定面板,負責把一張已存在的單據送進公司的簽核/工作流程。它做三件事:

  1. 從該單據的單據別自動載入可用的流程樣板,由樣板帶出每一道關卡(處理人、審核順序、處理事項)。
  2. 讓使用者檢視並微調流程關卡(可手動補關卡、改處理人 Email),並掛上附件
  3. 儲存 後正式發行:寫入聯絡單/工作流程資料、產生簽核 PDF、並寄信通知下一關處理人

它不是查詢報表,而是簽核流程的發起與檢視面板。發起後,後續每一關的簽核動作改在 工作流程簽核 進行;而流程樣板(每個單據別預設有哪些關卡)則在 流程樣板選擇 維護。

從哪裡打開

本面板沒有獨立的主選單入口,而是由單據作業(Ade 表單)的 工作流程 按鈕觸發:系統先取得目前單據的主檔,檢查可否送簽,再以 ContentWindowService 彈出本視窗(程式 WorkflowService.ExecuteWorkflowAsync)。因此必須先有一張存好的單據才會出現此畫面。

前置需求

  • 權限:執行單據作業時需具備該單據的工作流程/簽核權限(AllowWorkflow);無權限會提示「沒有權限」並中止。
  • 基礎資料:流程能不能正確帶出關卡,取決於下列資料的維護——
資料 影響的結果
流程樣板(依單據別設定) 流程樣板 下拉的選項與預設帶出的關卡;沒有樣板就無法送簽
樣板關卡設定(處理事項、審核順序、處理部門) Detail 清單每一列的處理事項/審核順序/處理人
人事資料(員工 Email、簽名圖檔) 各關卡的處理人 Email(補寄通知用)、發行者簽名圖檔(產 PDF 用)
部門 / 處理人對照(WKFLOWHANDLER seek) 手動新增關卡時,處理部門選人後帶回部門名稱/處理人/Email
單據主檔欄位(客戶、廠商、部門、特殊人員) 樣板 Pick 依這些值挑選對應關卡(例如某客戶走特定簽核線)

操作步驟

  1. 在單據作業中先儲存好一張單據,再按工具列的 工作流程(簽核)。系統會帶出本面板,上方顯示該單據的聯絡單號/建檔日期/製表人員/結案/主旨等唯讀資訊。
  2. 流程樣板 下拉選擇要套用的流程樣板
    • 選定後系統自動帶出內容(依樣板與單據內容組出的簽核說明)、主旨,並在下方 Detail 清單列出該樣板的所有關卡。
    • 右側文字框會顯示該樣板的顯示流程(流程文字說明)。
  3. 視需要在內容欄補充說明(可編輯、可換行)。
  4. 視需要掛上附件:在右上附件清單按 載入 選檔、按 顯示 開檔;附件列預設提供 10 筆空白列可填。
  5. 視需要微調流程關卡(多數欄位唯讀,僅特定情況開放,詳見欄位連動與附加功能):
    • 在清單空白處按右鍵 新增數筆 可在流程末端補一道關卡。
    • 補的關卡用 處理部門 seek 欄選人,會自動帶回部門名稱/處理人/Email。
  6. 確認無誤後按 儲存。系統會:
    • 寫入聯絡單與工作流程資料、產生簽核 PDF、並寄 Email 通知下一關處理人。
    • 存檔後視窗自動關閉(CloseWindowAfterSave);按 取消 同樣會關閉視窗(CloseWindowAfterCancel)。

注意

一旦流程已發行(單據已在簽核中),再次打開本面板時整個流程清單與樣板下拉會變成唯讀,只能檢視進度、不能再改樣板或關卡——後續處理請改用 工作流程簽核

欄位說明

主檔(上方資訊區)

欄位 必填 說明 / 預設
聯絡單號 唯讀;新發起時系統暫填 +++,存檔後由系統產生正式單號
建檔日期 唯讀;選樣板時帶入今天
製表人員 唯讀;預設為目前登入者(顯示其姓名)
結案 唯讀;流程結案狀態
主旨 可編輯;選樣板時自動組成「顯示流程,單號:xxx,發行:登入者」
內容 可編輯、可換行;選樣板時依樣板+單據內容自動帶入,已有內容則保留

流程樣板區

欄位 可編輯 說明
流程樣板 未發行時可選 單據別載入可用樣板;發行後唯讀並定位到當前樣板
顯示流程 唯讀;所選樣板的流程文字說明

流程關卡清單(Detail)

欄位 可編輯 說明 / 預設
序號 關卡序號
審核順序 簽核先後順序;發行關卡為 0
處理事項 手動列可改 下拉(通知/發行/簽核…);手動新增列預設 通知
處理部門 手動列可改 seek 欄選人,帶回部門名稱/處理人/Email
部門名稱/處理人姓名 由樣板或 seek 帶出
處理人Email 可改 樣板未填時,若人事資料有 Email 且設定要寄信會自動補上
實際處理人 實際執行該關卡的人(簽核後回填)
狀態 該關卡狀態;手動新增列預設「未開始」
處理時間 該關卡處理完成時間
流程結束 是否為流程結束關卡
電子郵件 是否寄 Email 通知(Y/N),手動新增列預設 Y
產生報表 該關卡要產生的報表名稱(發行關卡用以產 PDF)
執行方法/方法名稱/參數 自動執行設定(核可後觸發指定方法)
開始日/到期日 手動新增列預設今天
完成率 0~100;手動新增列預設 0、發行關卡 100
處理說明/退件序號/退件說明 簽核過程回填的處理/退件資訊

附件清單

欄位 可編輯 說明
序號 附件序號,自動編號(D3,如 001
載入 按鈕 載入 開檔案對話框選檔並掛到該列
附件 已掛附件的檔名(唯讀)
標籤 可改 附件分類標籤(系統會依單據客戶/廠商/部門等帶入預設標籤)
顯示 按鈕 顯示 開啟該附件

欄位連動與附加功能

這一節列出本面板「輸入某欄位/按某按鈕後系統會做什麼」,全部以實際程式碼為準。

打開面板時(自動帶資料)

  • 自動判斷新發起或檢視既有流程:開窗時呼叫 GetNoteMaster(單據別, 主檔id)。若該單據已建過聯絡單/流程,直接載入既有主檔、附件與流程關卡;否則建一張新的聯絡單(NewCommpr),帶入單據別、單號、製表人員(登入者)、資料表名稱等預設。
  • 自動補 10 筆空白附件列AddItem 會在現有附件之後補 10 筆空列供填寫,序號接續既有最大序號(格式 D3)。
  • 已發行 → 全面唯讀:若查到的流程關卡筆數 > 0(SetWorkflow(true)),樣板下拉與流程清單設為唯讀、隱藏手動加列;樣板下拉自動定位到單據目前的流程樣板號
  • 自動嘗試帶出單據資料:開窗時若 CanSave() 成立(尚未發行、流程關卡都還是新列、且 CheckTemplate 通過——即流程中有「發行」關卡),就先做一次 TransferQuery 把來源單據的資料抓進來;若樣板缺發行關卡,CheckTemplate 會在此時(開窗階段)提示「沒有發行者,請檢查工作流程表是否有設定錯誤」。

選擇「流程樣板」後(SetCommpr

當你在 流程樣板 下拉選定一個樣板(且流程尚未發行),系統會:

  1. GetContents 依樣板+單據組出內容文字(內容原本空白才填,不覆蓋你已打的字)並取得 viewxml(非「歷史記錄」模式時寫回主檔,供產 PDF 用)。
  2. 帶入建檔日期=今天聯絡單號=+++(暫填)。
  3. 組出主旨=「{顯示流程},單號:{單號},發行:{登入者}」。
  4. 寫回流程樣板號,並呼叫 SetDetail1 用樣板挑出所有關卡。

關卡挑選與帶值(SetDetail1 / Pick

  • 透過 DARB_WKFLOW_PICK樣板+廠商代號/客戶代號/部門代號/特殊人員挑出對應關卡(這四個值來自來源單據主檔,由 WorkflowConstructorParameter 反射取得)。
  • 登入者佔位符 #I#:樣板某關卡的處理部門若填 #I#,代表「此關由目前登入者本人處理」,系統會清空部門並帶入登入者為處理人(SetSignInUserWhenPlaceholder)。
  • 發行關卡自動帶發行者:處理事項為「發行」的關卡,自動帶入登入者為處理人並設完成率 100、狀態完成(SetPublish)。
  • 自動補 Email:若關卡設定要寄信(電子郵件=Y)但 Email 空白,會去人事資料用處理人編號補 Email(SetEmail)。

流程關卡清單操作

  • 右鍵「新增數筆」(手動補關卡):只有尚未發行且已選樣板(流程清單已有列)時才能加列(AddItem);新列預設處理事項=通知、狀態=未開始、優先順序=一般(Normal)、開始日/到期日=今天、電子郵件=Y、完成率=0,序號/審核順序接在末端。只有手動新增的列開放編輯(IsRowReadOnly),樣板帶出的列維持唯讀。
  • 處理事項下拉:選定後寫回處理事項碼/處理事項(系統值)/顯示名稱JobCodeEnum)。
  • 處理部門 seek 欄(WKFLOWHANDLER):選定人員後自動帶回部門名稱、處理人編號、處理人姓名、EmailRow setter)。

附件操作

  • 載入:開檔案對話框選檔,把檔名寫進該附件列;若該列原本不是新增列,會把增刪修標記改為 E(修改)LoadFileExecute)。
  • 顯示:以系統預設程式開啟該附件(OpenFileExecute)。
  • 附件不可刪條件禁止刪除=Y 的附件列為唯讀、不可編輯刪除(CanEdit)。

按「儲存」後(發行流程,SqlEditTurnViewModel_AfterSave

  1. 把主檔、附件、流程關卡一起上傳(SetUpdateSourceCommprBll)。
  2. 產生簽核 PDF:若發行關卡有設定「產生報表」,依 viewxml 與報表名稱產出 PDF(CreatePdf / WorkflowPDFHelper),並以登入者的簽名圖檔作為發行者簽章;發行關卡沒設定報表時則略過產 PDF。
  3. 通知下一關:以 Detail1 第一關的 pkid 呼叫 WorkflowApproveBll.NotifyNext,由它找出下一關處理人;只對電子郵件=Y 且 Email 有值的關卡寄出工作流程通知信
  4. 重新整理來源單據資料並自動關閉本視窗。

「沒有發行者」是開窗時擋、不是按儲存時擋

流程必須有一道「發行」關卡的檢查(CheckTemplate)發生在打開面板的當下CanSave() 內),而非按 儲存 時:缺發行關卡時開窗階段就會跳「沒有發行者…」,且不會去帶來源單據資料。AfterSave 流程本身不再重做這項檢查。

規劃中/未啟用

XAML 中保留了一顆 Get Workflow 按鈕(GetCommpr2Command),目前已註解停用;流程關卡改由選樣板時自動帶出,毋須手動按鈕取得。

常見問題

按了「工作流程」沒有反應或提示無資料?

本面板必須先有一張已儲存的單據才會打開。若提示無權限,表示你對該單據沒有工作流程/簽核權限;若提示無資料,請先在單據作業新增並儲存一張單據再送簽。

流程樣板下拉是空的、選不到東西?

樣板依單據別載入。若該單據別還沒有設定任何流程樣板,下拉就會是空的,自然無法送簽。請先在流程樣板選擇/流程樣板維護為該單據別建立樣板。

一打開工作流程面板就跳「沒有發行者」?

流程關卡中必須有一道「發行」關卡才能送簽。這項檢查(CheckTemplate)在面板開啟當下就會執行,缺發行關卡時開窗階段即提示「沒有發行者,請檢查工作流程表是否有設定錯誤」。這通常是流程樣板設定缺了發行者,請到流程樣板選擇檢查該樣板的關卡設定是否正確。

關卡的處理人 Email 是空白,通知信沒寄出?

通知信只會寄給電子郵件=Y 且 Email 有值的關卡。系統會在挑關卡時用處理人編號到人事資料補 Email;若人事資料本身沒填 Email,這一關就補不到、也不會寄信。請補齊該員工的 Email。

為什麼整個流程清單變成灰色、改不了?

表示這張單據的流程已經發行(已進入簽核)。發行後樣板與關卡都鎖定唯讀,只能檢視進度。後續的核可/退件請到工作流程簽核處理。

手動「新增數筆」加不了關卡?

只有在尚未發行且已選定流程樣板(流程清單已有列)時才開放手動加列;流程已發行或還沒選樣板時,右鍵新增不會有作用。

相關功能


需補截圖清單

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

  1. workflowview-step1.png — 面板全貌(上方單據資訊+流程樣板下拉+流程關卡清單)
  2. workflowview-step2.png — 流程樣板下拉與帶出的流程關卡清單
  3. workflowview-step3.png — 附件清單(含「載入」「顯示」按鈕)
  4. workflowview-step4.png — 手動「新增數筆」補關卡與 WKFLOWHANDLER seek 選人