程式資訊
- 程式 ID:
COMPLAIN - 所屬子系統:J.品質管理
- 狀態:stable
客訴單¶
功能簡介¶
「客訴單」用來逐月記錄並追蹤客戶抱怨——以「年度月份」為單據主鍵,明細逐筆登錄某個客戶、聯絡人、抱怨事項、責任單位、處理情形與是否結案。主要使用者是品管人員與品管主管,位於品質管理流程的後段:
客戶反映 → 客訴(Complain)→ 維修(Repair)→ 出貨(E)
實務上,品管把同一個月份收到的客戶抱怨集中登在同一張客訴單上,依責任單位分派處理、追蹤處理情形,待問題解決後逐列勾選結案。
與營業模組「抱怨單」的區別
本頁是品質管理(J)的客訴單(程式代號 COMPLAIN,View 為 Twork_jqc_vw_complainm/d)。系統另有一支營業收款(E)的抱怨單(程式代號 CMPLAIN,選單 E-210),兩者來自相同的 VFP 來源(cmplain),欄位語意相近,但屬於兩支獨立程式、各自的資料表與單據編號規則,請勿混用。
前置需求¶
- 權限:品質管理 →
客訴單的新增/修改/刪除/瀏覽權限。 - 基礎資料:明細的客戶連動需要下列主檔先維護完整——
| 資料 | 影響的結果 |
|---|---|
| 客戶主檔(客戶資料,含聯絡人 1/聯絡 1 電話) | 明細輸入客戶代號後自動帶出的主要聯絡人、聯絡電話 |
| 客戶代號正確性 | 找不到客戶代號時相關欄位會留空 |
操作步驟¶
新增客訴單¶
- 開啟「客訴單」進入畫面,按工具列
新增。 - 輸入 Year And Month(年度月份):格式
YYYY/MM(遮罩YearAndMonth),例如2026/06。這是本單據的主鍵。 - Document No(單號) 與 Created Date(建檔日期) 由系統產生、唯讀,不需手動輸入(單號於存檔時自動帶為年度月份,詳見欄位連動與附加功能)。
- 視需要填寫 Notes(備註)。
- 在下方明細格線逐筆登錄抱怨:
- 輸入 客戶代號(
Customer Code欄)。系統自動帶出主要聯絡人(Primary Contact)與聯絡電話(Primary Contact Tel)。 - 填寫 單號資料、抱怨事項、責任單位、處理情形。
- 輸入 客戶代號(
- 確認無誤後按工具列
儲存。
明細日期欄目前為唯讀(已知缺口)
明細的 Date(日期) 欄在格線中設為唯讀(ForceReadOnly),新版尚未提供日期輸入或自動帶入的途徑(VFP 原版會把表頭年度月份帶入明細日期,新版該段對應程式碼 AfterAddNew 目前被註解停用)。但存檔檢核仍要求每列明細的日期月份等於表頭年度月份,因此此表單在新版尚未完整可用——詳見欄位連動與附加功能。
修改與追蹤處理情形¶
- 用工具列的
查詢/上一筆/下一筆(MoveRecord)找到要追蹤的客訴單。 - 按
修改,更新明細的處理情形、責任單位等欄位。 - 問題處理完成後,勾選該明細列的 Is Closed(是否結案) 核取方塊。
- 按
儲存。
刪除空白明細
若某一列明細的日期與抱怨事項都留白,存檔時系統會自動把該列視為刪除(不會存成空列),不需手動刪行。
刪除明細/整張單據¶
- 刪除單列明細:選取明細列後刪除;存檔即移除。
- 刪除整張客訴單:找到該單後按工具列
刪除。
匯出明細¶
明細格線支援以右鍵匯出 Excel。
列印功能尚未移植
VFP 原版 cmplain 設有客訴單報表(印 = CMPLAIN_P,SCX_ORDP),但新版 ComplainViewModel 未實作列印介面(沒有 IPrintViewModel),工具列也未提供可用的列印動作。需要紙本時請先以明細格線右鍵匯出 Excel。
欄位說明¶
表頭(Master)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| Document No(單號) | — | 系統產生、唯讀;存檔時自動帶為年度月份字串 |
| Year And Month(年度月份) | ✔ | 格式 YYYY/MM;本單據主鍵,未輸入無法存檔 |
| Created Date(建檔日期) | — | 系統產生、唯讀 |
| Notes(備註) | — | 最長 80 字 |
明細(Detail)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| Line No(序號) | — | 明細序號 |
| Date(日期) | — | 格式 YYYY/MM/DD;格線中唯讀(ForceReadOnly),新版無輸入途徑。存檔檢核要求其月份等於表頭年度月份;日期與抱怨事項皆空白的列存檔時自動刪除 |
| 客戶代號(Customer Code) | — | 透過客戶查詢欄(TsCustomerSeekGridViewColumn)輸入;輸入後自動帶出主要聯絡人與聯絡電話 |
| Customer Name(客戶簡稱) | — | 對應 DB 欄位;新版輸入客戶代號時並不會自動帶入此欄(見下方說明) |
| Primary Contact(主要聯絡人) | — | 輸入客戶代號後自動帶出(客戶主檔的「聯絡人 1」) |
| Primary Contact Tel(聯絡電話) | — | 輸入客戶代號後自動帶出(客戶主檔的「聯絡 1 電話」) |
| 單號資料 | — | 相關單號(最長 20 字) |
| 抱怨事項 | — | 抱怨內容描述(最長 80 字) |
| 責任單位 | — | 負責處理的單位(最長 10 字) |
| 處理情形 | — | 處理進度/結果(最長 20 字) |
| Is Closed(是否結案) | — | 核取方塊,勾選=已結案;未勾選預設為未結案 |
欄位連動與附加功能¶
這一節說明「輸入某欄位後系統會做什麼」「按某動作會發生什麼」,全部依新版 C# 程式碼(ComplainViewModel / ComplainSave / Twork_jqc_vw_complaindSource)與 VFP 原版 cmplain 行為整理。
明細輸入客戶代號 → 自動帶聯絡人與電話¶
當你在明細的客戶代號欄(CustomerCodeBinding)輸入並離開時,系統會用該代號查客戶主檔(Context.DescriptionHelper.GetCustomer),若查得到,會帶入兩欄:
- Primary Contact(主要聯絡人) ← 客戶的「聯絡人 1」
- Primary Contact Tel(聯絡電話) ← 客戶的「聯絡 1 電話」
客戶簡稱(Customer Name)目前不會自動帶入
與 VFP 原版不同,新版 CustomerCodeBinding 的 setter 只設定主要聯絡人與聯絡電話,並未回寫 Customer Name。客戶查詢欄(TsCustomerSeekGridViewColumn)雖設了 DescriptionBindingPath="客戶簡稱",但本明細 Source 的對應屬性名為 CustomerName(英文),description 回寫指向不存在的 客戶簡稱 屬性而靜默失效,因此客戶簡稱欄通常會留空。VFP 原版 sql_cuno1.Valid 則會一併帶出客戶名稱/簡稱,查無代號時跳「查無客戶代號」提示;新版查無代號時不另跳提示,相關欄位維持原值。
存檔前處理:單號自動帶年度月份¶
存檔時(HandleDataBeforeEndEdit),系統會把表頭的 Document No(單號)自動設為 Year And Month(年度月份)。因此單號不必、也無法手動輸入。
與營業版抱怨單的編碼差異
營業(E)版抱怨單的單號是「公司代碼 + 年度月份 + 流水」;本品質版客訴單的單號直接等於年度月份,沒有公司代碼前綴,畫面上也沒有「公司代碼」欄位。
存檔檢核(AllowSave)¶
按儲存時會依序檢查,任何一項不過就擋下並提示:
- 年度月份必填:未輸入時提示請輸入年度月份。
- 年度月份須為合法日期:把「年度月份 + /01」嘗試解析為日期,無法解析(例如
2026/13)時提示日期格式錯誤。 - 明細日期須落在表頭月份:每一列未標記刪除的明細,其日期的年月(前 7 碼)必須等於表頭年度月份,否則以「序號 + 日期格式錯誤」提示並擋存。
空白明細自動刪除¶
明細若抱怨事項與日期都空白,存檔時該列會被視為刪除(NeedDeleteFunction),不會留下空列——對應 VFP 原版「日期為空且抱怨事項為空 → 標記增刪修 = D」的邏輯。
移動單據(上一筆/下一筆)¶
本程式支援單據逐筆瀏覽(IMoveRecord);移動到不同單據時會重新載入該單的表頭與明細。
其他 1 按鈕目前非客訴功能(規劃中)
程式內 其他 1(ExtendedFunction1)目前的動作是開啟採購暫收英文版(Purama_E)視窗,這是從品質模組其他表單沿用過來的樣板殘留,與客訴單用途無關,並非可用的客訴功能。維修單(Repair)也有相同的殘留。請暫時不要使用此按鈕;正式的客訴延伸功能仍在規劃中。
常見問題¶
按了儲存,卻跳「請輸入年度月份」或日期格式錯誤?
年度月份是必填主鍵,且必須是合法的年月(格式 YYYY/MM)。系統會把「年度月份 + /01」當日期驗證,像 2026/13 這種不存在的月份會被擋下。請確認年度月份輸入正確。
存檔時提示某序號「日期格式錯誤」?
明細每一列的日期月份必須和表頭年度月份相同。例如表頭是 2026/06,明細日期就必須是 2026/06/xx。把該列日期改成同月份即可,或若該列是誤填的空列,把日期與抱怨事項都清空、存檔時會自動刪除。
明細輸入客戶代號後,聯絡人/電話沒帶出來?
主要聯絡人與聯絡電話是依客戶代號查客戶主檔自動帶入的。若帶不出來,請確認:該客戶代號存在於客戶主檔,且客戶主檔有維護「聯絡人 1」「聯絡 1 電話」。代號錯誤或客戶未建檔時欄位會留空。請注意客戶簡稱(Customer Name)在新版並不會自動帶入(屬於已知缺口,見欄位連動與附加功能)。
明細列空白,存檔後消失了?
這是預期行為。日期與抱怨事項都空白的明細列,存檔時會被自動刪除,避免留下無意義的空列。要保留某列請至少填入日期或抱怨事項。
「其他 1」按鈕開出來的是採購暫收視窗,是壞掉了嗎?
那是樣板沿用造成的殘留,與客訴單無關(維修單也有同樣情況),並非可用功能。請勿使用該按鈕,正式的客訴延伸功能仍在規劃中。詳見欄位連動與附加功能。
為什麼單號不能自己打?
單號由系統在存檔時自動帶為「年度月份」,刻意設為唯讀。需要區分不同客訴單時,請以年度月份來分。
相關功能¶
- 維修作業(Repair):客訴後續的不良品維修流程
- 進料品質(Purama):進料檢驗紀錄
- 製程品質(Twrama):製程品質檢驗
- 品質管理模組首頁
- 營業收款模組(含抱怨單 E-210)
- 生產管理模組
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/J-Quality/images/):
complain-step1.png— 客訴單整體畫面(表頭年度月份/備註 + 明細格線)complain-step2.png— 明細輸入客戶代號後自動帶出主要聯絡人/聯絡電話complain-step3.png— 勾選「是否結案」核取方塊的明細列