程式資訊
- 程式 ID:
VISIT - 所屬子系統:E.營業收款
- 狀態:stable
拜訪單(客戶拜訪記錄)¶
功能簡介¶
「拜訪單」用來登錄業務員每一次實際拜訪客戶的紀錄——何時去、去看誰、見了哪些受訪人員、談了什麼主旨與內容,以及交通上的里程數與過路費。它是業務日常活動的原始憑證,後續可透過內建的查詢報表彙整成日報表、週報表、里程數彙總、客戶彙總,供業務主管掌握團隊的客戶接觸狀況與交通成本。
使用者主要是業務員(登錄自己的拜訪)與業務主管(透過報表檢視全員拜訪)。在銷售流程中,它屬於銷售訂單模組的前端 CRM 環節,與客戶基本資料緊密相連:輸入受訪代號即自動帶出該客戶的簡稱、類別、經銷商與負責業務員。
前置需求¶
- 權限:E.銷售訂單 →
拜訪單(ProgramClassVISIT)的瀏覽/修改權限。 - 報表的「主管」視野:權限的備註欄若含「主管」二字,查詢報表才能看到全部業務員的資料;否則系統一律只回傳「姓名=目前登入者」的拜訪紀錄(見欄位連動與附加功能)。
- 基礎資料:下列主檔需先維護,拜訪單才能正確帶值——
| 資料 | 影響什麼 |
|---|---|
| 客戶基本資料 | 受訪代號帶出客戶簡稱/客戶名稱/客戶類別/經銷商/負責業務員 |
| 業務員(員工)主檔 | 業務員編號帶出姓名與所屬部門代號 |
| 部門主檔 | 部門代號帶出部門簡稱 |
| 客戶類別代碼(C262)、經銷商代碼(C270) | 下拉選單的可選值與顯示文字 |
操作步驟¶
新增一張拜訪單¶
- 從主選單開啟 E.銷售訂單 → 拜訪單。
- 點工具列
新增。系統會自動把公司代碼設為1(見欄位連動與附加功能)。 - 填寫拜訪日期、拜訪主旨。
- 在受訪代號輸入客戶代號(或用放大鏡查詢),離開欄位後系統自動帶出客戶簡稱、客戶類別、經銷商,並把該客戶的負責業務員帶進業務員編號。
- 視需要調整業務員編號;輸入後自動帶出姓名與業部門代號/部門簡稱。
- 填寫受訪人員、起始時間/截止時間、里程數、過路費。
- 在下方拜訪內容與附件及備註輸入詳細紀錄(皆為可換行的多行文字)。
-
點
儲存。小技巧
可用 Ctrl+S 快速儲存。拜訪單號為系統自動產生、不可輸入。
修改/刪除¶
- 用工具列的上一筆/下一筆或查詢功能切換到要處理的拜訪單;切換後系統會自動重新整理客戶簡稱、業務員姓名、部門簡稱等顯示文字(見欄位連動與附加功能)。
- 直接修改欄位後
儲存,或點刪除移除整張單。
查詢報表(拜訪統計)¶
- 在拜訪單畫面按工具列的延伸功能
其他功能1,開啟拜訪查詢(Visit Query)視窗。 -
視窗內有四個頁籤,各自有獨立的查詢條件與
查詢按鈕:- Daily Report(日報表):依拜訪日期區間+業務員編號區間列出每一筆拜訪明細。
- Weekly Report(週報表):把區間內的拜訪依「週」分組,並把每天的拜訪內容填進週一~週日的對應欄,彙總里程數與過路費。
- Mileage Summary Report(里程數彙總):依年度+業務員編號區間,把每位業務員的里程數攤平成一月~十二月十二欄並加總。
- Customer Summary Report(客戶彙總):依日期區間+業務員編號區間,並可加上客戶類別/經銷商篩選,列出以客戶為主軸的拜訪明細。
-
設定條件後按
查詢,結果顯示在格線中。 -
各頁籤下方有
列印版面控制(PrintLayoutControl)可輸出報表;按離開關閉視窗。關閉後拜訪單主畫面會自動重新整理資料。報表查詢不會改資料
查詢視窗只做查詢與列印,
儲存按鈕在此情境等同關閉視窗(不會回寫資料庫)。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 拜訪單號 | 自動 | 系統自動產生,唯讀,不可輸入 |
| 拜訪日期 | ✔ | yyyy/MM/dd;空白會擋存檔 |
| 拜訪主旨 | — | 文字(上限 80 字) |
| 受訪代號 | ✔ | 客戶代號;空白會擋存檔。輸入後連動帶出客戶資訊 |
| 客戶簡稱 | 帶出 | 由受訪代號帶出,唯讀 |
| 業務員編號 | ✔ | 空白會擋存檔。輸入後帶出姓名與部門 |
| 姓名 | 帶出 | 由業務員編號帶出,唯讀 |
| 業部門代號/部門簡稱 | 帶出 | 由業務員編號帶出 |
| 客戶類別 | 帶出/可選 | 下拉(代碼表 C262);輸入受訪代號時自動帶入 |
| 經銷商 | 帶出/可選 | 下拉(代碼表 C270);輸入受訪代號時自動帶入 |
| 受訪人員 | — | 多行文字(上限 999 字) |
| 起始時間/截止時間 | — | 時間格式(HH:mm) |
| 里程數(公里) | — | 數值,預設 0 |
| 過路費(元) | — | 數值,預設 0(程式內部屬性名為「過路費次數」) |
| 拜訪內容 | — | 多行文字(上限 999 字) |
| 附件及備註 | — | 多行文字(上限 999 字) |
| 公司代碼 | 自動 | 新增時自動設為 1;為 0 會擋存檔 |
查詢報表條件欄位¶
| 頁籤 | 條件 | 預設 |
|---|---|---|
| 日報表/週報表/客戶彙總 | Beginning Date~Ending Date | 起訖皆預設今天 |
| 日報表/週報表/里程數/客戶彙總 | Beginning~Ending SalesRep Code | 起=空、訖=zzzzz(涵蓋全部) |
| 里程數彙總 | Year | 預設今年 |
| 客戶彙總 | 客戶類別/經銷商 | 預設空白(不篩選) |
欄位連動與附加功能¶
這一節彙整「輸入某欄位/按某功能後系統會做什麼」,全部來自實際程式碼(VisitViewModel、Twork_ord_vw_visitSource、四支報表 VM 與 VisitSave)。
主畫面的欄位連動¶
-
輸入受訪代號:離開欄位後,系統用該代號去客戶主檔查資料並一次帶入多個欄位——
- 帶出客戶簡稱(
GetCustomerName)。 - 若查得到客戶,再帶出客戶名稱、客戶類別、經銷商。
- 並把該客戶設定的負責業務員編號帶進來,連帶觸發下一條的業務員連動。
一次輸入、整列帶齊
只要打對受訪代號,客戶相關欄位(簡稱、類別、經銷商)與負責業務員多半會自動填好,通常不必再手動選客戶類別或經銷商。
- 帶出客戶簡稱(
-
輸入業務員編號:離開欄位後,系統帶出該業務員的——
- 姓名(
GetSalesmenName)。 - 若查得到員工,帶出其部門代號並換算成部門簡稱。
- 姓名(
-
新增時的預設值(
AfterAddNew):按新增後,系統把公司代碼設為1。其餘數值欄(里程數、過路費)以 0 起始。 -
切換筆數時重新整理顯示(
AfterMoverRecord→RefreshDescription):每次移動到另一筆拜訪單,系統會依存檔的代號重新查出部門簡稱/客戶簡稱/業務員姓名,避免顯示舊客戶或舊業務員的名稱。
存檔檢核(VisitSave.AllowSave)¶
按 儲存 時,除了共用檢核外,下列四項任一不符就會擋下並提示「請輸入…」:
- 受訪代號不可空白。
- 公司代碼不可為 0。
- 業務員編號不可空白。
- 拜訪日期不可空白。
其他功能1:拜訪查詢報表(ExtendedFunction1)¶
工具列延伸功能 其他功能1 會開啟 Visit_q 視窗(四個報表頁籤)。視窗關閉後,主畫面會自動 Renew 重新載入目前的拜訪單。四個報表的計算邏輯如下:
-
共同的權限過濾:四個報表查詢時都會檢查
VISIT權限的備註——- 備註含「主管」→ 看得到條件內所有業務員的拜訪。
- 否則 → 自動加上「姓名=登入者名稱」,只看自己的拜訪。
-
日報表(
Visit_dailyViewModel):以拜訪日期 between 起訖、業務員編號 between 起訖為條件,直接列出原始拜訪明細(twork_ord_vw_visit_v檢視)。 -
週報表(
Visit_weeklyViewModel):先抓出區間內的拜訪,依年+週數分組(GetWeek,以星期日為週首)。每一週先放一列「週標題」列出該週週一~週日的日期;接著依「業務員+客戶類別」彙整,把每筆拜訪的內容(受訪代號 客戶簡稱 / 拜訪單號 / 拜訪主旨)填進對應的星期欄,並加總該組的里程數(TotalMileage)與過路費(TotalFee)。 -
里程數彙總(
Visit_mileageViewModel):以年度(拜訪日期前 4 碼)+業務員編號區間為條件,SQL 端依「業務員+姓名+月份」group by把里程數加總,再於 C# 端把每個月攤平成一月~十二月十二欄,並算出全年合計(TotalMileage)。 -
客戶彙總(
Visit_customerViewModel):以拜訪日期區間+業務員編號區間為條件,並可再加客戶類別、經銷商兩個篩選(留空=不篩),列出以客戶為主軸的拜訪明細。
尚未提供的功能
本表單目前沒有轉傳票、沖帳、簽核/工作流程或附件上傳功能;「附件及備註」是一個純文字欄位,並非檔案夾帶。報表查詢視窗的 查詢 按鈕在母層 Visit_qViewModel 為空實作,實際查詢由各頁籤自己的 查詢 觸發。
常見問題¶
輸入受訪代號後,客戶簡稱/類別/經銷商沒帶出來?
這些值來自客戶基本資料。請確認該客戶代號確實存在、且資料完整。若客戶主檔查不到此代號,系統只會留下你打的代號,其餘欄位維持空白。
業務員姓名或部門簡稱是空的?
姓名由業務員編號帶出、部門簡稱再由該業務員的部門代號帶出。若員工主檔沒有這位業務員,或業務員沒設定部門,連動就帶不到值。切換到別筆再切回來會觸發重新整理(RefreshDescription)。
按儲存出現「請輸入…」存不了?
存檔會檢核四個必填項:受訪代號、公司代碼、業務員編號、拜訪日期。其中公司代碼是新增時自動帶 1 的;若你是用其他方式建立而公司代碼為 0,也會被擋。請補齊紅框欄位後再存。
報表只看得到自己的拜訪,看不到別人的?
這是權限設計。只有 VISIT 權限的備註欄含「主管」字樣時,報表才會放行查看全體業務員的資料;否則系統一律過濾成只顯示登入者本人的拜訪。請洽系統管理員調整權限備註。
里程數彙總某些月份是 0?
里程數彙總是把該年度有拜訪紀錄的月份里程加總後攤平到十二欄;沒有拜訪(或里程數為 0)的月份自然顯示 0。也請確認查詢的年度與業務員編號區間正確。
過路費欄位為什麼程式裡叫「過路費次數」?
畫面標示為「過路費(元)」,但底層 Source 屬性名是 過路費次數,兩者是同一欄。週報表彙總時這個值會加總成 Total Fee。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/E-SalesOrder/images/):
visit-step1.png— 拜訪單主畫面(受訪代號/業務員連動帶值後的全貌)visit-step2.png— 新增並填妥一張拜訪單、含拜訪內容與附件及備註visit-step3.png— 拜訪查詢(Visit Query)視窗的四個報表頁籤visit-step4.png— 里程數彙總報表(一月~十二月攤平與合計)