You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

销售报价单确认时自动添加员工为关注者的自动化动作失效

Odoo自动化动作未添加销售单关注者排查方案

1. 触发配置类问题排查

  • 核对动作绑定模型:必须绑定sale.order模型,不要绑定报价单的临时继承模型、或其他关联模型。
  • 核对触发时机与筛选规则:如果触发节点选的「报价单确认」,不要额外加state = 'sale'的前置筛选条件——确认动作执行瞬间单据状态还未完成落库,这类筛选会直接导致动作匹配失败跳过。
  • 检查动作优先级与拦截逻辑:同模型下同触发节点的其他自动化动作、服务器动作如果提前抛出未捕获异常、或执行了返回阻断逻辑,当前动作会被静默跳过,前端不会弹出任何报错。
  • 核对动作生效范围:确认没有配置仅对特定公司、特定用户组生效,测试操作账号在动作的允许执行范围内。

注意:Odoo的自动化动作默认捕获所有执行异常,不会在前端弹出报错提示,所有执行错误只会写入服务端运行日志,排查时不要以有没有前端报错作为动作是否执行的判断依据。

2. 执行代码缺陷修复

原有代码没有做非空判断,只要四个自定义负责人字段中有任意一个为空(比如岗位暂未配置人员),partner_ids列表就会混入False值,直接导致message_subscribe方法抛出服务端静默异常,整个订阅逻辑会完全中断,不会添加任何关注者。
替换为带空值过滤的兼容代码:

# 过滤空值字段,避免无效ID导致方法执行中断
valid_partner_ids = []
for lead_field in [
    record.x_studio_overall_lead,
    record.x_studio_technical_lead,
    record.x_studio_overall_deputy,
    record.x_studio_technical_deputy
]:
    if lead_field:
        valid_partner_ids.append(lead_field.id)

if valid_partner_ids:
    record.message_subscribe(partner_ids=valid_partner_ids)

3. 字段配置类问题排查

  • 确认字段值持久化:选中客户后员工字段自动填充的逻辑,必须是服务端写入数据库的逻辑,不能是仅前端onchange临时赋值。校验方式:选完客户保存单据后刷新页面,看隐藏标签页下的四个员工字段值是否仍然存在,如果刷新后值丢失,说明字段值没有落库,服务端执行自动化动作时读到的是空值,无法生成有效关注者列表,需要补全字段层面的自动计算/写入逻辑。
  • 确认字段关联模型正确:四个自定义字段必须是指向res.partner(联系人/合作伙伴)的Many2one字段,如果误建成指向hr.employee(员工)的关联字段,直接取.id拿到的是员工表ID,而message_subscribe方法仅接收联系人表ID,传入无效ID会导致方法静默执行失败。

4. 快速定位技巧

  • 手动执行验证:开启开发者模式,打开任意一张测试销售单,通过顶部「动作」菜单找到你创建的自动化动作手动执行,如果手动执行也无法添加关注者,问题出在代码逻辑或字段值上;如果手动执行正常、确认单据时不触发,问题出在触发条件或动作优先级配置上。
  • 日志排查:开启服务端DEBUG级别日志,复现报价单确认操作,查看日志中是否有对应自动化动作的执行记录、相关异常栈,可直接定位阻断点。

内容的提问来源于stack exchange,提问作者for-loop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:27:13