ccairn

同業(B2B)

同業是你的 B2B 客群——合作的旅行社同業、票務代理、揪團團主。你用 agencies 資源把他們建成檔,指派負責業務、記下帳期,並讓他們的訂單走同業通路價。

同業是跨梯次的租戶層客戶資料,不是某一張訂單的明細。理解這層分離,你才能正確使用 agencies API:建檔與訂單是兩件事,訂單透過「同業通路」把兩者接起來。

同業建檔

一筆同業(agency)記錄一家 B2B 客戶的基本資料與一位負責業務。建立:POST /agencies(只有 name 必填,其餘選填),需 agency.manage 權限。

讀取:GET /agencies 列表、GET /agencies/{id} 取單筆,需 agency.read

欄位(回傳)意義
name同業公司/團主名稱
taxId統一編號(選填;個人團主可能沒有)
contactName / phone / email / address主要聯絡人與聯絡方式
paymentTerm帳期/付款條件(自由文字,如「月結 30 天」)
ownerUserId / ownerName負責業務(見下)
statusactive(啟用中)或 archived(已封存)
note內部備註
orderCount此同業累計訂單數(派生)
說明

同業是租戶層實體,沒有 owner-scope——只要有 agency.read,你看得到全部同業,不會因角色被限縮到「自己的同業」。可見範圍的限縮發生在訂單那一層,不在同業名單。

業務歸屬與可見範圍

每家同業可指派一位負責業務ownerUserId),代表「這家同業長期由誰維護」——這是 CRM 歸屬,不是訂單業績歸屬。候選名單來自 GET /agencies/assignable-staff(回傳可指派的員工 userId / name / role),把它當作指派下拉的資料來源。

業務歸屬有兩個獨立層次,別混淆:

層次欄位回答的問題
客戶層(同業)同業的 ownerUserId這家同業長期歸誰維護
訂單層訂單的經手業務這張單算誰的業績

同業的負責業務會在下單時作為訂單派發的來源之一帶入,但最終誰拿到這張單仍由租戶的派發規則決定。換手同業負責業務不會改寫歷史訂單的業績歸屬,反之亦然。

注意

可見範圍看的是訂單層,不是同業層。 一位 sales 看得到同業名單(agency.read),但在訂單那邊只看得到自己經手的單。所以「指派同業負責業務」與「誰能看到這家同業的訂單」是兩回事——後者由訂單的經手業務與 owner-scope 決定(見總覽)。

帳期、結算與佣金

paymentTerm 是一個自由文字欄位,用來記下你與同業約定的帳期(例如「月結 30 天」「貨到付款」)。它是給人看的備註,平台目前據此自動產生月結對帳或信用額度控管——結構化的同業帳期/月結屬未來的會計對帳能力。

佣金與分潤同樣不掛在同業身上

  • 業績跟著訂單的經手業務走,不是同業的 ownerUserId
  • 佣金/出款核簽請款與出款通路分潤(如 KOL)走 discount-codes 的分潤設定。

換句話說,同業這層只負責「這是哪一家客戶、約定什麼帳期、歸誰維護」,錢的流向由訂單與金流那幾條線各自表達。

同業訂單(agency 通路價)

同業要下單時,你照常用 POST /orders 建單,差別在把 customerType 設為 agency(預設 direct 直客)——這讓整張單走同業通路價,而非牌價。

同業通路價是行程定價裡與直客價、優惠價並列的一組價格;把 customerType 設成 agency 後,成交價會以同業通路計算並快照在該訂單的商品明細上(金額怎麼派生見訂單與金流模型)。除了通路不同,建單流程(保座、應收、收款計畫)與直客單完全一致。

要回頭盤點某家同業的訂單,用 GET /orders 並以 agencyId 篩選(GET /orders/export 同樣支援),不必逐張單翻找。

上下架

不再合作的同業用封存而非刪除,以保留歷史訂單關聯。切換狀態:POST /agencies/{id}/status,body 帶 statusactive 上架/archived 封存),需 agency.manage

也可以用 PATCH /agencies/{id} 做真・部分更新——只送你要改的欄位(含 statusownerUserId),省略的欄位不動。

說明

封存是軟下架:同業仍在資料裡、歷史訂單關聯不變,只是從「啟用中」名單隱去。需要時用 status=active 重新上架。

匯出整份名單(沿用列表的 status / owner / hasTaxId 篩選)用 GET /agencies/export

下一步

Command Palette

Search for a command to run...