跳至内容

Odoo19 审批工作流开发实操指南

2026年10月27日 由
Odoo19 审批工作流开发实操指南
中国 Odoo, 苏州远鼎

Odoo 19 里,单据生命周期靠 状态字段、Python 流转方法、界面按钮 与 权限 驱动,而不再使用旧版 XML Workflow 引擎。

1. 工作流如何运作

常见组合:

  • Selection 定义状态
  • 方法负责状态跳转
  • 按钮调用方法
  • 用户组 / 规则限制谁可触发
state = fields.Selection([
    ("draft", "Draft"),
    ("confirm", "Confirmed"),
    ("done", "Done"),
    ("cancel", "Cancelled"),
], default="draft")

2. 两种核心模式

模式思路
简单工作流线性状态变更,少审批——适合大批量、快处理
审批工作流关键跳转需授权——合规 / 高风险单据

3. 用模型继承扩展

最常用:_inherit + 重写方法,并调用 super()。

class SaleOrder(models.Model):
    _inherit = "sale.order"

    state = fields.Selection(
        selection_add=[("manager_approval", "Manager Approval")],
        ondelete={"manager_approval": "set default"},
    )

    def action_confirm(self):
        # 高金额 → 进入经理审批;否则走标准确认
        ...

    def action_manager_approve(self):
        # 从 manager_approval 继续 super().action_confirm()
        ...

完整示例见 040.code/workflow_extend_demo。

4. 扩展表单视图

用 XPath 按状态显示按钮:

<button name="action_manager_approve"
        string="Manager Approve"
        type="object" class="btn-success"
        invisible="state != 'manager_approval'"/>

5. 自动化规则(无代码)

路径:设置 → 技术 → 自动化规则 → 新建

按字段值 / 时间触发;通过服务器动作可:

  • 执行 Python
  • 创建 / 更新记录
  • 发邮件 / 短信
  • 加关注者
  • 创建活动
  • 串联动作

适合“当 X 发生则做 Y”、又不想写模块的场景。

6. AI 驱动动作(企业版)

Odoo 19 企业版可用自然语言描述自动化(例如:制造订单进行中且物料就绪 → 把关联商机推到谈判阶段)。当作加速器使用,仍需核对触发条件与权限。

7. 最佳实践

  • 务必调用 super(),保留库存、邮件、会计等副作用
  • 新状态用 selection_add(不要整段替换 Selection)
  • 按钮用 invisible="state != '…'" 控制显示
  • 自定义自动化 / 服务器动作 XML 放在 <data noupdate="1">,避免升级被冲掉
  • 敏感跳转用 ir.rule / 用户组保护


Odoo19 审批工作流开发实操指南
中国 Odoo, 苏州远鼎 2026年10月27日
标签
存档