как вызвать исключение, если тот же продукт выбирает в on2many в odoo8 - PullRequest
0 голосов
/ 05 мая 2018

Haii frds ...

Я не понимаю, как вызвать исключение, если в one2many выбран один и тот же продукт.

В строке заказа на продажу -> Строка заказа, когда я выбрал один продукт, например, Book & pen

В другое время, когда я выбираю тот же продукт (книга и ручка), в то же время возникает исключение. это возможно, когда я сохраняю заказ на продажу, это ошибка повышения. Но хочу это одновременно ..

S.NO Продукт Кол-во UOM

1 [FINAL-0001] GDFB-H-035-XL 1.0000 Единица

2 [FINAL-0001] GDFB-H-035-XL 1,0000 Единица

Пожалуйста, помогите мне решить эту проблему ...... Заранее спасибо ...

1 Ответ

0 голосов
/ 18 июня 2018



Вы можете сделать это двумя способами, в sale.order.line модель:

  1. с использованием декоратора @ api.constrains.
  2. переопределение функций записи / создания.

Вот пример кода для каждого способа:

  1. С @ api.constrains:
    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)


спасибо за ваш вопрос
С наилучшими пожеланиями.

...