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

Odoo15销售报价单单价低于价目表定价触发管理员审批实现方法

Odoo 15 销售报价单低价触发管理员审批实现方案

核心逻辑

基于Odoo原生的价目表计算能力做扩展,不改动原有报价、价目表的核心逻辑:新增字段留存价目表计算的基准单价,用户手动修改单价时实时比对,只要改后单价低于对应价目表定价就自动锁止确认操作,推送给销售管理员审批,审批通过后才可完成报价确认。

具体实现步骤

  • 扩展模型字段
    所有字段扩展都通过Odoo原生继承机制实现,不修改原生代码:
    • 继承主模型sale.order(报价单),新增3个字段:
      • is_price_approval_needed:布尔型,标记当前报价是否存在低于价目表定价的行,默认值为False
      • price_approval_state:选择型,可选值为无需审批/待审批/审批通过/审批驳回,默认值为无需审批
      • approver_note:文本型,用来存管理员的审批意见/驳回原因
    • 继承行模型sale.order.line(报价单行),新增2个字段:
      • pricelist_origin_price:浮点型,存当前行产品匹配所选价目表算出的原始基准单价,字段设为前端只读、普通用户不可见,避免手动篡改
      • is_below_pricelist:布尔型,标记当前行单价是否低于价目表基准价,默认值为False
        字段赋值规则:每次报价单切换价目表、新增产品行、修改行上的产品/数量/折扣(这些参数都会影响价目表计算结果)时,自动调用Odoo原生的_get_price_unit价目表计算方法,把算出的基准值写入pricelist_origin_price。
  • 实现改价实时校验
    给sale.order.line的price_unit(单价)、pricelist_origin_price字段加@api.onchange监听:
    两个字段任意一个值变动时,直接比对当前行的price_unit和pricelist_origin_price,如果price_unit < pricelist_origin_price就把当前行is_below_pricelist设为True,反之设为False。
    单行校验完成后自动遍历当前报价单所有行:只要存在任意一行is_below_pricelist为True,就把主单的is_price_approval_needed设为True,price_approval_state改为待审批,同时禁用报价单的确认按钮;如果所有行都不符合低价触发条件,就把主单审批状态重置为无需审批,恢复确认按钮可用。
    额外加一层判断:如果单据已经是审批通过状态,用户再修改任意行单价触发低价规则,要自动把审批状态打回待审批,清空之前的审批意见,避免审批后改价绕过流程。
  • 拦截确认操作
    重写sale.order的action_confirm(报价转销售单)方法,在调用super()执行原生逻辑前先做校验:
    如果当前单据price_approval_state为待审批或者审批驳回,直接抛出用户提示:当前报价存在低于价目表定价的产品行,请提交销售管理员审批通过后再确认,直接阻断后续确认逻辑。只有状态为无需审批或审批通过的单据,才允许正常执行确认操作。
    注意待审批状态下不要拦截报价单的打印、发送给客户、保存编辑等常规操作,只卡最终确认转销售的节点。
  • 配置审批权限与交互
    • 给Odoo默认的销售管理员组(sale.group_sale_manager)开放审批操作权限,普通销售组用户只能查看审批状态,不能修改审批结果
    • 在报价单表单视图上加状态条显示审批状态,待审批状态下给管理员显示「审批通过」「审批驳回」两个按钮,点驳回时弹出文本框让管理员填写驳回原因
    • 单据进入待审批状态时,自动发系统内部通知给所有有审批权限的销售管理员,附带单据直达入口,不用管理员手动翻找待审单据
  • 兼容边界场景
    开发时要覆盖几个容易漏的场景,避免逻辑漏洞:
    • 批量导入报价单行、通过API创建/修改报价单时,也要触发同样的基准价计算和低价校验逻辑,不能只做前端页面的校验
    • 价目表本身设置了数量阶梯、客户等级折扣、日期生效规则的,要完全复用Odoo原生的价目表计算规则取基准价,不要自己写计算逻辑和原生规则冲突
    • 报价单复制、生成退款单、生成续订报价的时候,要重置审批状态,重新走校验

可选优化

  • 可以在销售设置页加可配置的容忍阈值,比如设置低于价目表5%以内的改价不需要触发审批,阈值支持后台调整不用改代码
  • 新增审批日志模型,记录每次审批的操作人、操作时间、审批意见,满足审计需求
  • 可以加多级审批规则,比如低于10%销售经理审批,低于30%需要销售总监审批,按企业实际流程调整

内容的提问来源于stack exchange,提问作者MohammadAliChamass

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:21:26