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模型中执行此操作:
- 使用 @api.约束装饰器。
- 重写写入/创建函数。
下面是每种方式的代码示例:
- @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!")
- 使用覆盖写入/创建函数:
@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)
谢谢你的问题
最好的问候。