如果相同的产品在 Odoo8 中的 On2many 中选择,如何引发异常



Haii frds...

我不知道如何在 one2many 中选择相同产品时引发异常。

在销售订单行中 -> Order_line当我选择一个产品时,例如 Book&pen

在其他时候,当我选择相同的产品(Book&pen)时,它同时引发异常。 当我保存销售订单时,可能会引发错误。但是一次想要它..

S.NO 产品数量 计量单位

1 [FINAL-0001] GDFB-H-035-XL 1.0000 单位

2 [FINAL-0001] GDFB-H-035-XL 1.0000 单位

请任何人帮助我解决这个问题...... 提前感谢...



您可以通过两种方式在sale.order.line模型中执行此操作:

  1. 使用 @api.约束装饰器。
  2. 重写写入/创建函数。

下面是每种方式的代码示例:

  1. @api.约束:
from openerp.exceptions import ValidationError
@api.constrains('product_id')
def constr(self):
a=0
for rec in self.order_id.order_line:
if (rec.product_id.id == self.product_id.id) and (rec.id !=  self.id):
a=a+1
if a > 1:
raise ValidationError(u"Duplicate lines nthis line already exist!ncheck your lines again please!")
  1. 使用覆盖写入/创建函数:
@api.multi
def write(self,vals):
if 'product_id' in vals :
prod = self.env['product.product'].browse([vals.get('product_id')])
else:
prod = self.product_id
for line in self.env['sale.order'].browse([self.order_id.id]).order_line:
if (prod.id == line.product_id.id) and line.id !=  self.id:
raise ValidationError(u"Duplicate lines nthis line already exist!ncheck your lines again please!")
return super(sale_order_line,self).write(vals)
@api.model
def create(self,vals):
for line in self.env['sale.order'].browse([vals['order_id']]).order_line:
if (vals.get('product_id') == line.product_id.id) and line.id !=  self.id:
raise ValidationError(u"Duplicate lines nthis line already exist!ncheck your lines again please!")
return super(sale_order_line,self).create(vals)


谢谢你的问题
最好的问候。

最新更新