企业 CRM 预约

Odoo 企业版预约转线索为什么不是“客户约了会就建一条 lead”而已:partner 识别、opportunity 关联与 multi-company

appointment_crm 真正补的是预约与 CRM 的身份桥:同一个预约人该挂到哪个 partner、什么时候创建新 lead、什么时候绑定已有

CRM 企业
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 6 阅读

“预约即线索”听起来简单,真正难的是同一个人多次预约、已有商机跟进中、甚至跨公司网站预约时该怎么落 CRM。

这篇文章主要参考了以下企业版源码与测试入口:

  • enterprise/appointment_crm/models/calendar_event.py
  • enterprise/appointment_crm/models/appointment_type.py
  • enterprise/appointment_crm/tests/test_appointment_crm.py

一、这个模块真正解决的不是表面动作,而是跨模块语义对齐

appointment_crm 真正补的是预约与 CRM 的身份桥:同一个预约人该挂到哪个 partner、什么时候创建新 lead、什么时候绑定已有 opportunity,以及多公司下这些动作如何不串公司。

如果只看 UI,很容易把它理解成一个按钮、一张表或一个新视图。但从 appointment_crm 的模型、测试和桥接关系看,官方真正关心的是:前台动作发生以后,后端主链路能不能继续保持同一套业务语义

二、核心机制链路

1. 是否建 lead 由 appointment type 决定

appointment_type._compute_lead_ids() 与 action_appointment_leads() 说明,预约类型本身决定这条预约是否进入 CRM,不是任何 booking 都无条件生成 lead。

2. calendar_event 创建时才真正落 CRM

calendar_event.create()、_create_lead_from_appointment()、_get_lead_values(partner) 说明身份匹配与 lead values 在 event 落地时统一处理。

3. 多公司是显式测试场景

test_create_opportunity_multi_company 与 UI 测试中的 anonymous create 场景说明,预约网站入口和 CRM 所属公司必须对齐,不能因为一个公开入口就把机会分错公司。

三、最容易被误解的边界

  • 所有预约都建新 lead,忽略已有 partner / opportunity 关联。
  • 先建 calendar event 再手工补 CRM,导致字段来源分裂。
  • 多公司环境里只看网站入口,不看 appointment type 与 lead 所属公司。

这些误解之所以常见,往往是因为大家只看见“入口动作”,却没有继续追到模型方法、状态切换、聚合口径和测试场景里去看 Odoo 究竟把什么当成事实、把什么当成辅助信息。

四、实施与排查时,建议按这个顺序看

  • 先查 appointment type 是否启用 lead generation。
  • 再核对 create() 时 partner 匹配与 lead values。
  • 最后在多公司下检查 event、lead 与 appointment type 的 company_id 是否一致。

对企业版功能来说,排查顺序非常重要。很多看似是“结果不对”的问题,真正根因往往更早:字段上下文没带过去、桥接对象没建、状态机没推进、或者权限/公司边界一开始就错了。

五、结论

预约转线索真正值钱的不是“自动化”,而是它知道什么时候该建新商机,什么时候该把一次预约接到已有销售关系上。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。