跳轉到

程式資訊

  • 程式 IDCOMMPR
  • 所屬子系統:L.聯絡傳訊
  • 狀態:stable

聯絡單(工作流程通知單)

功能簡介

「聯絡單」是 TsERP 內部工作流程/通知的底層單據(單號以 CM 開頭)。當其他業務單據(採購、訂單、生產等)需要送出簽核流程通知相關人員夾帶附件時,系統都會在背後建立一張聯絡單,記下這張流程的主旨、內容、會簽意見、附件清單與每一關卡的處理人員/狀態

本頁畫面(Commpr 表單)的定位是瀏覽器:它把資料庫中所有 CM% 開頭的聯絡單撈出來供使用者逐筆查閱,上半部顯示聯絡單表頭與內容,下方三個表格分別呈現自訂表單欄位(viewxml)附件清單工作流程關卡明細。實際的「填寫流程、挑簽核人、送出」動作,是在各業務單據上按工作流程鈕時彈出的工作流程視窗完成的,再回到本頁追蹤結果。

適用對象為全體員工:發起人用它確認自己送出的流程內容,簽核者與被通知者用它回顧某張單據的處理歷程。

前置需求

  • 權限:L.聯絡傳訊 → L-010 聯絡單 的瀏覽權限。
  • 基礎資料:聯絡單的內容由其他模組帶入,下列資料會影響你在本頁看到的結果——
資料 影響的結果
流程樣板 每張聯絡單的工作流程關卡(誰要簽、順序、處理事項)由樣板帶出
人事資料(部門/姓名/email) 流程明細的部門名稱/姓名/email電子郵件=Y 時自動補 email
程式類別(單據別) 表頭的 單據別、以及自訂表單欄位(viewxml)的欄位定義
附件儲存路徑(ERPIO 設定) 附件能否上傳、載入 旗標是否成功變 Y
工作流程代碼設定(處理事項/狀態/優先順序) 流程明細的處理事項/狀態/優先順序顯示文字

聯絡單不是從主選單「新增」出來的

聯絡單沒有獨立的新增按鈕。它一律由其他單據的工作流程動作(或系統的通知功能)自動產生,本頁主要用來查閱與追蹤。詳見欄位連動與附加功能

操作步驟

瀏覽既有聯絡單

  1. 從主選單開啟 L 聯絡傳訊 → 聯絡單
  2. 表單載入後,系統自動套用篩選條件 聯絡單號 like 'CM%',只列出聯絡單類型的資料。
  3. 用工具列的上一筆/下一筆(或瀏覽查詢)切換記錄。每切換一筆,系統會即時:
    • 把工作流程明細的處理事項/狀態/優先順序碼轉成中文顯示(逐列 SetDisplayDescription());
    • 依目前單據的單據別+其他單據id 向伺服器(TWORK_WKFLOW_GETNOTES)重撈該聯絡單,並用回傳結果重新整理下方明細。
  4. 上半部檢視表頭:聯絡單號、建檔日期、製表人員、單據別、主旨、內容、會簽、取消意見等。
  5. 下方三個表格分別檢視:
    1. 自訂表單欄位:若此單據有 viewxml(自訂版面),其欄位內容顯示於最上方的格線。
    2. 附件:附件檔名與載入狀態。
    3. 工作流程:每一關卡的審核順序、處理事項、部門、姓名、狀態、完成率、處理說明等。

聯絡單瀏覽畫面

小技巧

各表格的格線都支援欄位排序與匯出 Excel(格線右鍵)。流程明細裡的完成率=100 表示該關卡已處理完成。

在業務單據上發起工作流程

聯絡單的「建立/編輯」實際發生在各業務單據的工作流程視窗:

  1. 在採購、訂單、生產等支援工作流程的單據上,按該單據的工作流程鈕。
  2. 系統開啟工作流程視窗,若此單據已有聯絡單則載入既有內容;否則新建一張,並自動帶入:
    • 單據別=目前單據的程式代碼、其他單據id=目前單據主檔 pkid、單號=目前單據關鍵欄位值;
    • 製表人員=目前登入者。
  3. 選擇流程樣板後,系統依樣板帶出各關卡的部門/處理人
  4. 視需要在附件區按 開啟檔案載入檔案 夾帶附件(一次預留 10 筆空列)。
  5. 按儲存送出。送出後系統會:
    • 把附件實體檔上傳到 ERPIO,成功者載入 設為 Y
    • 產生流程 PDF;
    • 呼叫 NotifyNext 通知下一關處理人。

本頁不負責這段操作

上述發起/簽核動作屬於工作流程視窗(程式 WORKFLOWVIEW)與各業務單據,不在 Commpr 瀏覽頁內。本頁只負責呈現結果。

欄位說明

表頭(聯絡單主檔)

欄位 必填 說明/格式/預設
聯絡單號 系統自動編號,前置碼固定 CM序號前置碼 預設 CM
建檔日期 建立當日(yyyy/MM/dd
製表人員 預設為發起當下的登入者帳號
單據別 來源單據的程式代碼(決定自訂表單欄位與流程)
流程樣板號 套用的流程樣板編號
其他單據id 來源單據主檔的 pkid,用來與原單關聯
主旨 流程主旨;通知時自動帶「項目通知-{項目名稱}」
內容 流程內容(多行,最長 999 字)
會簽 會簽意見(多行)
取消意見 取消/退回時填寫的說明(最長 138 字)
待通知部門 需通知的部門清單
是否須傳真/是否已傳真/是否已處理 單一字元旗標(Y/空白)
結案 結案旗標(Y/空白)
viewxml 自訂表單版面定義;有值時上方格線會依此 XML 展開欄位

附件明細(每筆一個檔案)

欄位 必填 說明/格式/預設
序號(LineNo_) 附件流水號,新增時自動續編(D3 三碼)
附件 檔名/路徑;留空者存檔時會被視為刪除
載入 Y=實體檔已上傳到 ERPIO;空白=尚未上傳
禁止刪除 Y 時該附件存檔不會被刪除(系統帶入的固定附件)

工作流程明細(每筆一個關卡)

欄位 說明/格式/預設
審核順序/序號 關卡先後(序號 00 為發送者,0102… 為後續關卡)
處理事項 由處理事項碼帶出(發送/通知/簽核…);碼為 0 的列存檔時刪除
部門名稱/姓名/email 處理人所屬部門與聯絡方式(可由人事資料自動補 email)
狀態/優先順序 由狀態碼/優先順序碼帶出中文顯示
完成率 100=該關卡已完成;發送者預設 100
實處人編號/實處人姓名 實際處理人(簽核完成後寫入)
處理說明/退件說明/退件序號 處理意見與退件資訊;發送者(00)的處理說明自動帶主旨
開始日/到期日/提醒時間/處理時間 各關卡時間欄位,新建時帶當下日期時間
流程結束 Y=整個流程結束

欄位連動與附加功能

這一節把「輸入某欄位後會發生什麼」「按某動作會做什麼」依真實程式碼整理出來。

表單載入與逐筆切換

  • 本頁是主-明細瀏覽器,主檔 MasterData 套用固定篩選 聯絡單號 like 'CM%',因此清單只會出現聯絡單,不會混入其他單據。
  • 當你切換到另一筆聯絡單時(AfterMoverRecord),系統會:
    1. 對工作流程明細逐列呼叫 SetDisplayDescription(),把處理事項碼/狀態碼/優先順序碼翻成中文顯示欄(處理事項/Status/Priority);
    2. 依目前單據的單據別+其他單據id 向伺服器(WorkflowBll.GetNoteMaster → SP TWORK_WKFLOW_GETNOTES)重撈該聯絡單,並用回傳結果(清空後 AddRange)重新整理一個下方明細 DataManager——所以下方明細呈現的是即時重撈的結果,而非載入當下的快照。
  • 自訂表單欄位格線綁定 viewxml:當聯絡單帶有 viewxml 時,viewxml 欄位的 setter 會把 XML 解析成 DataTableXmlSource),格線即依此自動產生欄位顯示原單據的版面資料。

viewxml(自訂版面)連動

當你輸入或載入 viewxml 內容:

  • 系統立即用 DataTableXmlHelper 把 XML 還原成資料表,並把第一個資料表指派給 XmlSource;上方第一個格線(AutoGenerateColumns=True)就會依這份資料表自動長出欄位。
  • 這通常用於「紀錄型」聯絡單(IsRecord=Y)——發起時把原單據的畫面欄位連同 XML 一起存進聯絡單,日後在本頁可重現當時的單據外觀。

附件區(開啟/載入/存檔)

附件由附件明細承載,存檔時的處理在 CommprBll.Attachment()

  • 空白附件=刪除:某列的 附件 欄留空,存檔時該列自動標記為刪除(增刪修=D)。
  • 上傳實體檔附件 有值且 載入≠Y 時,系統呼叫 Context.ERPIO.SaveFile 把檔案複製到附件庫,成功後回填新路徑、完整路徑、把載入設為 Y、並產生一組唯一鍵(GUID)。上傳失敗則整筆存檔中止。
  • 禁止刪除的附件保留禁止刪除=Y 的列會清掉刪除標記(增刪修=""),確保系統帶入的固定附件不被移除。
  • 工作流程視窗按 載入檔案 會挑選檔案寫回 附件,並把該列標記為待更新載入=""增刪修=E);按 開啟檔案 則開啟既有附件。

流程明細(送出時的整理)

存檔時 CommprBll.Workflow() 會做兩件事:

  • 發送者帶主旨:序號 00 的那一關(發送者),其處理說明會自動填入聯絡單的主旨
  • 清掉空關卡:處理事項碼為 0 的關卡視為未設定,存檔時自動刪除(增刪修=D)。

流程樣板與處理部門佔位符

工作流程明細(Twork_com_vw_commpr_2Source)有數個欄位連動,發生在挑樣板與設定處理人時:

  • 處理部門 seek 帶值:在流程明細選定處理部門(WKFLOWHANDLER 查詢)後,系統用選回的資料列自動帶出部門簡稱、處理人編號、處理人姓名、email
  • 登入者佔位符 #I#:流程樣板若把某關的處理部門設為 #I#,代表「此關由目前登入者本人處理」。SetSignInUserWhenPlaceholder() 會清空部門、改填目前登入者為處理人(帳號/姓名/email)。
  • 自動補 email:當某關 電子郵件=Y 但 email 為空時,SetEmail() 會回查人事資料補上該處理人的 email——所以即使設定流程當下對方還沒 email,事後在人事資料補了也會自動帶入。
  • 處理事項下拉:選定處理事項後,系統同步寫回處理事項碼/處理事項(系統值)/顯示文字;既有資料載入時則依處理事項碼回查顯示。

簽核送出後的連動(工作流程視窗)

在工作流程視窗按儲存成功後(SqlEditTurnViewModel_AfterSave):

  1. 把回傳的聯絡單 pkid 寫回流程主檔;
  2. 產生流程 PDFCreatePdf);
  3. 呼叫 WorkflowApproveBll.NotifyNext 通知下一關處理人。

系統通知(Notify)

CommprBll.Notify 提供「項目通知」用途(由行事曆/待辦等模組呼叫,非本頁按鈕):

  • 自動組一張聯絡單,聯絡單號帶 +++(交由伺服器配號)、建檔日期=今天、製表人員=登入者、主旨=「項目通知-{項目名稱}」、內容=項目的通知訊息、並標記已審核=Y
  • 流程關卡帶一筆發送者(登入者)+一筆通知關卡給設定的通知人員;
  • 未設定通知人員,回傳「未設定通知人員」並中止。

本頁無新增/列印按鈕

Commpr 瀏覽頁本身沒有提供新增、列印、轉傳票等工具列動作;列印(流程 PDF)與通知都發生在工作流程視窗與背景流程。若需要這些動作,請從來源業務單據的工作流程鈕進入。

常見問題

聯絡單列表是空的,或找不到某張單?

本頁固定只顯示 聯絡單號 like 'CM%' 的資料。聯絡單是由其他單據的工作流程動作產生的——若該單據從未送過流程/通知,就不會有對應的聯絡單。請先確認來源單據有按過工作流程鈕並儲存。

切到某筆時,下方明細跟我記得的不一樣?

每切換一筆,系統都會依單據別+其他單據id 重新呼叫伺服器(TWORK_WKFLOW_GETNOTES)重撈該聯絡單後刷新下方明細,不是載入當下的快照。看到的內容就是該單據目前最新的狀態。

附件的「載入」一直是空白,沒變成 Y?

載入=Y 代表實體檔已成功上傳到 ERPIO 附件庫。若一直空白,多半是上傳失敗(路徑無權限或 ERPIO 設定不正確),此時整筆存檔會被中止。請確認附件路徑有效並聯絡管理員檢查 ERPIO 設定。

流程明細裡有空白的關卡,存檔後不見了?

處理事項碼為 0(未設定處理事項)的關卡會在存檔時自動刪除——這是設計,用來清掉樣板預留但未填的空列,不是資料遺失。

某關處理人沒有 email,通知寄不出去?

若該關 電子郵件=Y 但 email 為空,系統會在儲存/載入時回查人事資料自動補 email。請確認該處理人在人事資料中有維護 email;補上後重新開啟即會帶入。

處理部門填 #I# 是什麼意思?

#I# 是流程樣板的登入者佔位符,代表「這一關由目前登入者本人處理」。系統會自動把它換成你的帳號/姓名/email,不必手動填部門。

相關功能


需補截圖清單

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

  1. commpr-step1.png — 聯絡單瀏覽畫面全貌(表頭+附件+工作流程三表格)