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

Odoo8中one2many字段选重复产品时即时抛出异常的实现方法

解决Odoo 8销售订单行重复产品即时校验问题

嗨,这个需求我之前在Odoo 8项目里刚好处理过!要实现选完产品立刻触发重复校验,而不是等保存订单才报错,核心是要在销售订单行的product_id字段变更时添加实时校验逻辑,下面给你具体的实现步骤:

1. 继承销售订单行模型,添加实时校验方法

创建一个自定义模块(如果还没有的话),在模块的models文件里继承sale.order.line,并添加onchange校验方法:

from openerp import models, fields, api, exceptions

class SaleOrderLine(models.Model):
    _inherit = 'sale.order.line'

    @api.onchange('product_id')
    def onchange_product_id_check_duplicate(self):
        # 当用户选择/修改产品时触发此方法
        if self.product_id and self.order_id:
            # 过滤当前订单中已存在的相同产品行(排除当前正在编辑的行)
            duplicate_lines = self.order_id.order_line.filtered(
                lambda line: line.product_id == self.product_id and line.id != self.id
            )
            if duplicate_lines:
                # 抛出即时警告,Odoo会直接弹出提示框
                raise exceptions.Warning(
                    f"⚠️ 错误:产品「{self.product_id.name}」已经存在于当前订单中,不能重复添加!"
                )

2. (可选)添加保存时的兜底校验

如果担心用户通过后台导入、批量操作等方式绕过前端的onchange校验,可以再添加一个模型约束,确保保存时也会检查:

@api.one
    @api.constrains('product_id', 'order_id')
    def _constrain_duplicate_product(self):
        if self.product_id and self.order_id:
            # 统计当前订单中相同产品的行数(排除当前行)
            duplicate_count = self.order_id.order_line.search_count(
                [
                    ('product_id', '=', self.product_id.id),
                    ('order_id', '=', self.order_id.id),
                    ('id', '!=', self.id)
                ]
            )
            if duplicate_count > 0:
                raise exceptions.ValidationError("订单中不允许存在重复的产品!")

3. 配置模块依赖并部署

在模块的__openerp__.py文件里声明依赖sale模块,确保模块能正确加载:

{
    'name': 'Sale Order Duplicate Product Validation',
    'version': '1.0',
    'depends': ['sale'],
    'author': 'Your Name',
    'data': [],
    'installable': True,
    'auto_install': False,
}

把模块打包部署到Odoo 8实例,安装后测试:当你在销售订单行选择已存在的产品时,会立刻弹出警告弹窗,阻止重复添加,完全不需要等到保存订单!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:24:50