Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何消除odoo采购订单产品线中的重复产品?_Python_Python 2.7_Odoo 8_Odoo - Fatal编程技术网

Python 如何消除odoo采购订单产品线中的重复产品?

Python 如何消除odoo采购订单产品线中的重复产品?,python,python-2.7,odoo-8,odoo,Python,Python 2.7,Odoo 8,Odoo,在创建采购订单时,如果我添加两次相同的产品,它将创建两个不同的产品线,而不是更新相同产品的数量 请任何人帮助我。您可以创建一个继承自purchase.order.line的模型,并通过以下方式覆盖其创建功能: class purchase_order_line(models.Model): _inherits = 'purchase.order.line' @api.one def create(self, vals): same_line = self

在创建采购订单时,如果我添加两次相同的产品,它将创建两个不同的产品线,而不是更新相同产品的数量


请任何人帮助我。

您可以创建一个继承自
purchase.order.line
的模型,并通过以下方式覆盖其创建功能:

class purchase_order_line(models.Model):
    _inherits = 'purchase.order.line'

    @api.one
    def create(self, vals):
        same_line = self.search([('product_id', '=', vals.get('product_id', False)),
                                 ('order_id', '=', vals.get('order_id', False))])
        if same_line:
            total_qty = same_line.product_qty + vals.get('product_qty', 0)
            vals.update({
                'product_qty': total_qty,
            })
            same_line.write(vals)
            return same_line
        else:
            return super(purchase_order_line, self).create(vals)

这个代码是做什么的?奥多的哪个型号?创建采购订单时,它不会显示任何结果。您必须创建一个从
purchase.order.line
继承的新模型。我将编辑答案,向您展示如何操作。只有在您按下
purchase.order
表单的“保存”按钮后,这项操作才会起作用。添加新行后,如果不保存,您将无法看到添加内容。是的,我创建了一个单独的.py文件,然后放入了您的代码,并与您在前面的评论中所说的完全相同。我认为应用这些行的最佳位置是
create
函数
purchase.order
并检查与
purchase.order.line
相关的
One2many字段(而不是直接重写
purchase.order.line
create方法)