概述
在 Odoo 系统里,模型决定了业务数据的组织方式与存储结构。每一条销售单、发票或潜在客户都会以模型记录的形式保存到数据库,模型就是数据的蓝图。
不论是功能顾问还是开发人员,理解模型是掌握 Odoo 的关键。模型定义字段、关系和嵌入的业务逻辑,是系统运行与扩展的根基。
本文聚焦 crm.lead 这个模型——它承载并驱动 CRM 中的销售线索与商机。不管你是在做模块定制、外部系统对接,还是设计销售流程,都会在某个环节碰到它。
什么是 crm.lead 模型
crm.lead 用来表示潜在客户(lead)与商机(opportunity)。它把与销售流程相关的信息集中管理:从初次询盘到成单或流失,同一张表记录不同阶段的数据。
CRM 模块直接使用该模型,网站表单、营销模块或其他插件常会扩展或引用它。比如网站表单提交、销售创建商机或将线索转为客户的操作,都在 crm.lead 上发生。
该模型通常通过 Odoo 的继承机制被逐步扩展。基础 CRM 定义了核心字段与行为,其他模块按需增添字段或方法,从而避免重复定义并利于升级维护。
模型中的核心字段
下面列出 crm.lead 中对业务最关键的一组字段,熟悉它们有助于更有效地管理线索与商机。
1. 名称(name)
类型:字符(Char)。用于记录线索或商机的标题,是列表与看板中最直观的识别信息。例如:"网站咨询——新项目"或"大客户商机——某公司"。
2. 联系人姓名(contact_name)
类型:字符。记录尚未关联到 res.partner 前的联系人名称,转化为客户时通常会复制到对应的联系人记录。
3. 邮箱(email_from)
类型:字符。线索的主要邮箱地址,常作为沟通与去重的关键字段,许多自动化也依赖此字段判定来源。
4. 电话(phone)
类型:字符。主要座机或联系电话,在线索表单显示并用于电话记录与跟进。
5. 手机(mobile)
类型:字符。移动电话,适用于短信或需要更及时联系时使用。
6. 关联客户(partner_id)
类型:Many2one(res.partner)。当线索被确认或转化后,此字段指向对应的客户或公司;未转化前通常为空。
7. 负责人(user_id)
类型:Many2one(res.users)。负责该线索的销售人员,用于分配、报表统计与活动安排,驱动“我的商机”等视图。
8. 销售团队(team_id)
类型:Many2one(crm.team)。以团队为单位组织线索,便于轮流分配与团队维度的绩效分析。
9. 阶段(stage_id)
类型:Many2one(crm.stage)。表示当前在销售漏斗中的阶段(例如新线索、已资格审查、报价、谈判、赢单、丢单),阶段变更通常触发自动化与统计。
10. 类型(type)
类型:选择(Selection)。标识记录是早期的 Lead 还是已确认的 Opportunity;类型会影响可见视图与可用阶段。
11. 预计收入(expected_revenue)
类型:浮点(Float)。若商机成单,预计可带来的收入金额;常用于管道金额统计与预测,可能由金额与概率计算得出。
12. 成交概率(probability)
类型:浮点。以百分比表示的赢单概率(0–100),用于加权管道计算,可手动设置也可基于阶段自动调整。
13. 公司归属(company_id)
类型:Many2one(res.company)。多公司环境下表明该线索属于哪个公司,影响访问权限与币种等设置。
14. 描述(description)
类型:文本(Text)。用于记录内部备注、会议纪要和跟进背景,帮助销售人员掌握上下文。
15. 创建时间(create_date)
类型:日期时间(Datetime)。系统自动记录的创建时间,常用于线索老化与转化周期分析。
16. 修改时间(write_date)
类型:日期时间。记录最后一次更新的时间,有助于追踪信息是否及时维护。
17. 指派时间(date_open)
类型:日期时间。当负责人被分配时记录的时间,用来衡量首次接触响应时效。
18. 关闭时间(date_closed)
类型:日期时间。线索被标记为赢单或丢单时记录的时间,用于计算销售周期长度与转化分析。
19. 预计结束日期(date_deadline)
类型:日期。销售人员填写的预计完成或关闭日期,便利预测与计划活动。
20. 激活状态(active)
类型:布尔值。相当于软删除开关;设为 False 会在默认视图中隐藏记录,常用于归档已失效或合并的线索。
21. 地址字段(street, street2, city, zip)
类型:字符。保留线索在转化前的地址,转化时常会被复制到客户记录。
22. 国家(country_id)
类型:Many2one(res.country)。用于区域报表与地址格式化,帮助按国家进行领土管理和筛选。
23. 省/州(state_id)
类型:Many2one(res.country.state)。与国家联动,用于更细粒度的地域分组与过滤。
24. 来源(source_id)
类型:Many2one(utm.source)。记录线索来源(如网站、推荐、广告活动等),是营销归因的重要字段。
25. 营销活动(campaign_id)
类型:Many2one(utm.campaign)。将线索映射到具体活动,便于计算 OMROI 与活动效果追踪。
26. 活动记录(activity_ids)
类型:One2many(mail.activity)。存放与该线索相关的跟进行为:任务、电话、会议等,驱动提醒与下次行动视图。
27. 颜色(color)
类型:整数。在看板或列表中用于视觉区分,可按优先级、来源或自定义规则上色。
28. 消息(message_ids)
类型:One2many(mail.message)。Chatter 会话记录,包括内部留言、邮件往来与活动历史,帮助保留沟通全文上下文。
业务流程中如何使用该模型
1. 网站线索抓取
当访客在 Odoo 网站上提交联系表单时,系统会生成一条 crm.lead 记录,表单中的邮箱、联系人姓名与留言通常会填入相应字段,随后进入销售团队的管道等待处理。
2. 线索甄别与转化
销售人员通过移动阶段来对线索进行资格审核:把类型从 Lead 改为 Opportunity、填写预计收入,最终赢单时将线索转化为客户,系统会创建或关联 res.partner,并可选创建销售订单。
3. 销售管道与报表
管理者使用 crm.lead 的数据做管道报表:预计收入、概率与阶段共同决定加权管道价值,按 user_id 与 team_id 可查看个人或团队绩效。
4. 营销归因
source_id 与 campaign_id 将线索与营销活动关联起来。来自邮件或广告的线索常由 UTM 参数填充,用于衡量不同渠道或活动的效果。
5. 活动管理与跟进
销售人员会在记录上安排跟进行动(电话、会议、任务),这些动作保存在 activity_ids 中,activity_date_deadline 驱动列表视图的“下次活动”提醒,确保及时跟进。
开发者如何扩展此模型
开发者可以通过多种方式扩展 crm.lead,Odoo 的模型继承是最常用的手段。
模型继承
在自定义模块中使用 _inherit = 'crm.lead' 来添加字段或覆盖方法。通过继承把变更保存在独立模块内,有利于升级与维护,同时避免直接修改核心代码。
新增字段
在继承模型中定义需要的字段:Char、Many2one、Boolean、Integer、Text、Selection 等。常见扩展包括自定义来源、关注产品或行业字段。在多公司场景下考虑 company_dependent 设置。
Python 层逻辑
可在模型中重写 create、write 或 action_convert 等方法来加入业务逻辑,记得使用 super() 调用父类实现。借助 @api.depends、@api.onchange 等装饰器处理计算字段和界面联动,但对阶段变更与转化逻辑要格外小心。
Odoo Studio
Odoo Studio 允许非编码方式快速添加字段与简单定制,适合临时或轻量级需求;但若涉及复杂逻辑或需要长期维护,还是建议通过模块化编码实现。
最佳实践建议
- 为阶段配置正确的流程,确保与贵司实际的销售步骤一致;必要时为 Lead 与 Opportunity 配置不同的阶段序列。
- 在网站表单中从 UTM 参数填充 source_id 与 campaign_id,以便后续进行营销归因和效果评估。
- 利用 team_id 实现轮流分配或按区域分配,在 crm.team 中定义详细的分配规则以保证线索不会被遗漏。
- 做 API 对接时可使用 XML-RPC 或 JSON-RPC 与 crm.lead 交互。为外部系统的 ID 映射保留自定义字段(如 ref)以便同步管理。
- 自定义字段请以 x_ 或模块前缀命名,避免与未来 Odoo 核心字段冲突,降低升级阻力。
常见错误与陷阱
- 创建重复线索而不先检查邮箱。建议在创建前使用 email_normalized 或其他去重规则检查,避免数据冗余。
- 混淆 type 与 stage_id 的作用。type 决定记录是 Lead 还是 Opportunity,stage_id 决定在漏斗中的阶段;两者共同影响展示与统计。
- 忘记设置 user_id 或 team_id。未分配的线索容易被忽视,应配置自动分配或确保有人手动领取。
- 在覆盖转换逻辑时未调用 super()。action_convert 包含重要的默认行为,扩展时应在合适位置调用父实现以免破坏核心流程。
- 添加必填的自定义字段却不提供默认值。升级或激活模块时,历史记录可能因为缺少必填数据而导致验证失败。
总结
crm.lead 是 Odoo CRM 的核心:它保存线索与商机信息、支撑销售管道,并且是许多自动化与报表的来源。熟悉其字段与扩展方式有助于更稳妥地配置与集成 Odoo。
无论你是负责梳理销售流程的顾问,还是编写 CRM 定制模块的开发者,掌握 crm.lead 都能显著节省调试成本并降低实施风险。
需要我们协助您的 Odoo 部署吗?
Dasolo 专注于帮助企业实施、定制与优化 Odoo,擅长 API 对接与模块开发。我们的团队对 Odoo 的数据结构与像 crm.lead 这样的关键模型有丰富实践经验。
如果您需要在 Odoo 上实现定制 CRM 功能、系统对接或项目支持,我们可以提供专业服务与咨询。 预约演示 与我们讨论您的项目。