程式資訊
- 程式 ID:
VISITROUTE - 所屬子系統:E.營業收款
- 狀態:stable
拜訪行程規劃¶
功能簡介¶
「拜訪行程規劃」把當天要跑的幾張拜訪單排成一條路線:依序算出每一站的預計到達/離開時間、到下一站的車程、里程、國道里程與過路費估算,並在右側地圖上畫出整段路線。順序可以手動上移/下移,也可以請 AI 依各站的時間窗提出建議順序。確認後按一顆鈕,就能把每一段的里程數與過路費回填到對應的拜訪單。
使用者主要是業務員(出門前排今天的路線、途中導航、回來回填里程)與業務主管(檢視業務當天的動線與交通成本估算)。
前置需求¶
- 權限:能開拜訪單(ProgramClass
VISIT)並使用工具列的其他功能1開啟拜訪查詢視窗即可,行程規劃本身不需要另外開權限。 - 帳套要有拜訪單:沒有啟用拜訪單的帳套(例如部分舊帳套),拜訪查詢視窗上不會出現
行程規劃鈕。 - 拜訪單要有受訪客戶,客戶主檔要有地址:路線是用客戶基本資料的地址去定位的;地址空白或查不到的站會列進無法定位清單。
- 公司地址:起點/終點預設帶入公司地址,可在視窗上方直接改成任何地址。
- 網路連線:地址定位、路線計算與地圖圖磚都要連外部服務。無外網時地圖區會顯示失敗,行程表仍會依已有的座標快取計算。
- AI 建議順序需要 AI 金鑰:系統未設定
CLAUDE_API_KEY時,按AI建議順序只會顯示提示、不會有建議。 - 系統參數(選填):定位/路線服務、預設出發時間與停留時間可由系統管理員在參數表調整,見系統參數。全部不設定也能用免費預設值運作。
操作步驟¶
一、把當天的拜訪單送進行程規劃¶
- 開啟 E.銷售訂單 → 拜訪單,點工具列延伸功能
其他功能1,開啟拜訪查詢視窗。 - 切到 拜訪日報表(日查詢)分頁,設定拜訪日期與業務員編號區間後按
查詢。 - 在結果的資料表格中,用最左邊的選取欄勾選今天要跑的拜訪單。
- 按
行程規劃,開啟拜訪行程規劃視窗。
拜訪日報表分頁勾選當天的拜訪單後,按右下角的「行程規劃」(實機截圖)
!!! tip "一筆都沒勾=整批帶入"
沒有勾選任何一列時,系統會把查詢結果**整批**帶進行程規劃;先用日期+業務員把條件縮到當天,再直接按 `行程規劃` 最快。
二、確認起點、終點與出發時間¶
視窗上方有四個欄位:
- 起點、終點:預設都是公司地址,可以直接改(例如今天從家裡出發、最後不回公司)。
- 出發時間:預設
08:30,可以改成實際出門的時間。所有站的預計到達/離開都是從這個時間往後推算的。 - 拜訪日期、業務員:由帶進來的拜訪單決定,唯讀。
改完任何一項後按 重新計算,行程表會依新的起點/終點/出發時間重新排一次。
三、看懂行程表¶
行程表由上而下就是當天的行進順序,欄位意義見行程表欄位。
行程規劃視窗:上方起訖點與出發時間、行程表(含預計到達/離開)、四項合計與右側地圖(實機截圖)
車程、里程、國道、過路費四欄都是「本站到下一站」
這四欄講的是離開這一站之後那一段路,不是「到這一站」的路。因此最後一列一律是 0(最後一段是回終點,不掛在任何一站上)。回填時系統會自動換成「上一站到本站」的口徑,見八、回填里程與過路費。
視窗上方會同時顯示總里程、總車程、總國道里程與過路費估算四項合計。
第一次開窗要等十幾秒
第一次規劃時,每個沒有座標快取的地址都要向外部定位服務查一次(每秒一站),狀態列會顯示「定位中 3/7:客戶名」「計算路線中(7 站)…」的進度;六站大約十幾秒。查過的地址會存進座標快取,之後再排同樣的客戶就很快。
四、調整順序¶
- 點選要移動的那一列。
- 按
上移或下移。列會立刻交換位置,狀態列顯示「順序已變更,重新計算中…」。 - 幾秒後,車程、里程、國道、過路費與各站的預計到達/離開會依新順序更新。
按「上移」的瞬間:列已經換位、序號重編,狀態列顯示計算中(實機截圖)
五、請 AI 建議順序¶
- 按
AI建議順序。系統把各站的時間窗(拜訪單的起始/截止時間)與估算車程交給 AI。 - AI 回覆後,畫面右側出現建議區塊:建議順序、建議出發時間、各段理由、衝突警告與摘要。
- 覺得合理就按
採納建議——系統依 AI 的順序重新計算,並把出發時間帶成 AI 建議的時間,各站預計到達/離開隨之更新。 - 不採納就按
關閉建議,原本的順序與數字完全不動。
AI 建議區塊:建議順序、建議出發時間、各段理由,以及「採納建議」「關閉建議」兩鈕(實機截圖)
AI 只排順序,不產生任何數字
里程、車程、國道里程與過路費一律由路線服務與系統公式計算,AI 不會、也不能產生這些數值。AI 的輸出只有順序、建議出發時間、理由、衝突警告與摘要五項;按 採納建議 之後所有數字都是重算出來的。
六、無法定位的站要手動指定位置¶
地址查不到座標的站不會排進路線,而是列在行程表下方的 無法定位 清單(含原因)。手動指定一次即可:
- 在無法定位清單中點選一列。
- 按
在地圖點選定位,狀態列會提示「請在右側地圖上點一下『客戶名』的位置」。 - 在右側地圖上點一下該客戶的實際位置。系統記住這個座標並重新計算路線,該站就會排進行程表。
「無法定位」清單選一列、按「在地圖點選定位」後,狀態列與地圖上方提示要點哪一家(實機截圖)
手動指定的座標永遠優先
手動點過的位置會被記住,不會被之後的自動查詢覆蓋;同一個客戶下次排行程直接沿用。客戶搬家時,改完主檔地址再手動點一次新位置即可。
七、導航與地圖¶
- 行程表每一列的導航欄可以點:會用地圖網站開啟從這一站導航到下一站的路線,適合在車上照著走。
- 按
Google地圖開整段,用地圖網站一次開啟整段行程(起點 → 各站 → 終點)。 - 右側地圖顯示各站標記與整段路線;地圖區下方標示定位服務來源(內政部全國門牌地址定位服務(TGOS))。
右側地圖:各站標記、整段路線,手動指定位置的站也標了上去(實機截圖)
!!! note "沒有外網時地圖是空的,但行程表照常"
地圖圖磚要連外部服務,無外網時地圖區會顯示載入失敗;行程表、時間推算與過路費估算不受影響。
八、回填里程與過路費¶
確認路線之後,按 回填里程過路費,系統會把每一段的數字寫回對應的拜訪單:
- 系統先跳出確認訊息,說明回填口徑與「已審核的拜訪單會自動略過」,按確定才寫入。
- 寫入完成後,狀態列顯示「回填完成:更新 N 筆、略過 M 筆(已審核或查無單據)」。
- 回到拜訪單,各張單的里程數(公里)與過路費(元)已經有值。
按「回填里程過路費」後的確認訊息,說明回填口徑與已審核會略過(實機截圖)
回填後的拜訪單:里程數已帶入該段公里數(該段沒走國道時過路費為空白)(實機截圖)
回填口徑是「上一站到本站」
每張拜訪單填的是開車到這一站的那段路:第一站=起點(公司)到第一站;第二站=第一站到第二站,以此類推。最後一站回終點那一段不屬於任何拜訪單,不回填。這和畫面上「本站到下一站」的顯示口徑剛好差一段,是刻意的。
已審核的拜訪單不會被改
已審核的單一律略過,不會被回填覆蓋,會計入狀態列的「略過」筆數。需要更新已審核單的里程時,請先取消審核再回填。
欄位說明¶
上方欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 起點 | ✔ | 出發地址,預設公司地址,可改 |
| 終點 | ✔ | 結束地址,預設公司地址,可改(不回公司就改成實際終點) |
| 出發時間 | ✔ | HH:mm,預設 08:30;預設值可由系統參數 GEO_DEPART_TIME 調整 |
| 拜訪日期 | 帶入 | 由帶進來的拜訪單決定,唯讀 |
| 業務員 | 帶入 | 由帶進來的拜訪單決定,唯讀 |
| 總里程/總車程/總國道里程/過路費估算 | 計算 | 整段行程的合計,唯讀 |
| 狀態列 | 顯示 | 目前進度與結果訊息(定位中、計算中、順序已變更、回填完成…) |
行程表欄位¶
| 欄位 | 說明 |
|---|---|
| 順序 | 行進順序,用 上移/下移 調整 |
| 時間 | 該張拜訪單的起始時間(約好的時間) |
| 預計到達 | 上一站的預計離開時間+這一段車程 |
| 預計離開 | 「預計到達」與該站起始時間取較晚者,再加上停留時間(見時間怎麼算) |
| 客戶 | 受訪客戶名稱 |
| 地址 | 用來定位的客戶地址 |
| 車程分 | 本站到下一站的行車時間(分鐘) |
| 里程 | 本站到下一站的距離(公里) |
| 國道 | 本站到下一站行經國道的里程(公里) |
| 過路費估 | 本站到下一站分攤到的過路費(元,估算值) |
| 導航 | 點下去用地圖網站導航到下一站 |
終點只有到達時間
終點(回公司)那一列只算預計到達,沒有預計離開,也沒有停留時間。
無法定位清單¶
| 欄位 | 說明 |
|---|---|
| 客戶 | 定位失敗的客戶名稱 |
| 地址 | 主檔上的地址原文 |
| 原因 | 為什麼定位不到(地址空白、查無此地址…) |
在地圖點選定位 |
選一列後按此鈕,再到右側地圖點一下實際位置 |
系統參數¶
由系統管理員在參數表(_prgpar)維護,全部不設定也能用免費預設值運作。
| 參數 | 用途 | 預設 |
|---|---|---|
GEO_GEOCODE_PROVIDER |
地址定位服務來源(NOMINATIM/TGOS/CENTRAL) |
NOMINATIM(免費) |
GEO_ROUTE_PROVIDER |
路線計算服務來源 | 免費路線服務 |
GEO_OSRM_URL |
自建路線服務網址 | 公用服務 |
GEO_TGOS_APPID/GEO_TGOS_APIKEY |
內政部全國門牌地址定位服務(TGOS)的帳號資訊 | 空白(尚未申請) |
GEO_TILE_STYLE |
地圖圖磚樣式 | 預設樣式 |
GEO_DEPART_TIME |
出發時間的預設值 | 08:30 |
GEO_STAY_MINUTES |
拜訪單沒填截止時間時採用的停留分鐘數 | 60 |
計算方式說明¶
時間怎麼算¶
從出發時間開始逐站往後推:
- 預計到達 = 上一站的預計離開 + 這一段車程。第一站則是出發時間 + 起點到第一站的車程。
- 停留時間 = 拜訪單有填截止時間時,停到該截止時間為止;沒填時採用預設停留分鐘數(系統參數
GEO_STAY_MINUTES,預設 60 分鐘)。 -
預計離開 = 「預計到達」與該站起始時間兩者取較晚者,再加上停留時間。
也就是說,提早到了要等到約定時間才開始拜訪;遲到了就從實際到達時間起算。
過路費怎麼估(小型車)¶
- 先由路線判斷經過哪些國道路段(國道 1、2、3、3甲、4、5、6、8、10),加總為當日國道總里程。
- 每日前 20 公里免費;20~200 公里的部分每公里 1.2 元;超過 200 公里的部分打 75 折;結果四捨五入到元。
- 再依各段的國道里程比例,把當日總過路費分攤到每一段,就是行程表上的過路費估。
過路費是「估算」,不等於實際帳單
畫面上標示為估算,下列情況會有落差:
- 匝道常漏算:路線判斷不到的短程匝道里程不會計入。
- 國道 8 實際免費:公式仍會把它算成計費里程,估算會偏高。
- 連續假期費率不同:國定連假的計費方式與平日不同,未反映在估算中。
- 同一天另有出車:每日免費 20 公里是整天共用的;當天還有其他行程(別的路線、其他車輛)時,本次估算會偏低。
要核實際金額請以電子收費系統的帳單為準。
地址怎麼定位¶
- 先查各帳套的座標快取(客戶/廠商/員工共用一份),命中就直接用。
- 沒有快取才向外部定位服務查一次,查到的結果存回快取;之後只有主檔地址被修改時才會重查。
- 目前使用的免費定位服務只有路名等級的精度:門牌號常常查不到,系統會自動退階再試——先去掉郵遞區號與括號備註,再退到巷、路/段層級查詢。
- 門牌等級的精度要等內政部全國門牌地址定位服務(TGOS)申請核准並設定金鑰後才會啟用。
- 全部退階都查不到的站列進無法定位清單,改用手動點選定位;手動座標永遠優先。
常見問題¶
拜訪查詢視窗上沒有 行程規劃 鈕?
這個鈕只出現在有拜訪單的帳套。沒有啟用拜訪單的帳套不會顯示。若貴公司有拜訪單卻看不到,請洽系統管理員確認版本。
按了 行程規劃,卻有幾家客戶不在行程表上?
看行程表下方的 無法定位 清單——地址空白或查不到座標的站會被排除。選一列按 在地圖點選定位,在地圖上點一下實際位置即可補上;同時建議回客戶基本資料把地址補完整(含縣市、鄉鎮市區、路段)。
第一次開窗很久沒反應?
第一次規劃要逐站向外部定位服務查地址,每秒一站,狀態列會顯示「定位中 3/7:客戶名」的進度;六站大約十幾秒。查過的地址會存進座標快取,之後同樣的客戶就很快。
地圖是空白的/顯示載入失敗?
地圖圖磚要連外部網路。無外網(或防火牆擋掉)時地圖顯示不出來,但行程表、時間推算、過路費估算照常;有座標快取時整份規劃仍算得出來。
位置點錯了,可以重點嗎?
可以。同一個客戶再選一次、按 在地圖點選定位 重點一次即可覆蓋。手動座標的優先權高於自動查詢,因此不會被之後的自動定位改掉。
按 上移/下移 後,里程與過路費沒有馬上變?
列的位置是立刻交換的,數字要等重算完成——狀態列會顯示「順序已變更,重新計算中…」,幾秒後車程、里程、國道、過路費與各站預計到達/離開一起更新。
按 AI建議順序 只跳提示,沒有給建議?
代表系統還沒設定 AI 金鑰(CLAUDE_API_KEY),請洽系統管理員。沒有 AI 也能用手動 上移/下移 排順序,其餘功能完全不受影響。
AI 給的里程和畫面上的不一樣?
不會有這種情況——AI 不產生任何數字。它只回順序、建議出發時間、理由、衝突警告與摘要;所有里程、車程、國道里程與過路費都是採納建議後由系統重新計算的。
過路費估算和實際收費差很多?
這是估算值,常見落差來源是匝道漏算、國道 8 實際免費、連續假期費率不同,以及當天另有出車時每日免費 20 公里被共用。詳見過路費怎麼估。
回填之後,拜訪單上的里程和畫面上那一列的里程對不起來?
兩者口徑差一段:畫面顯示的是「本站到下一站」,回填寫的是「上一站到本站」(第一站=起點到第一站)。最後一段回終點不屬於任何拜訪單,不回填。
回填後有幾張單沒有被更新?
狀態列的「略過 N 筆」通常是已審核的拜訪單(系統一律不覆蓋),或該筆單據已被刪除。需要更新已審核單,請先取消審核再回填一次。
出發時間每次都要改成我的習慣時間?
可以請系統管理員把系統參數 GEO_DEPART_TIME 設成貴公司的標準出發時間,之後開窗就直接帶入。單次調整仍可在視窗上方直接改。
客戶只約了時間、沒約多久,系統怎麼抓停留時間?
拜訪單有填截止時間就停到截止時間;沒填則採用預設停留分鐘數(系統參數 GEO_STAY_MINUTES,預設 60 分鐘)。想讓預估更準,建議在拜訪單把起始/截止時間填齊。