如何以编程方式创建销售订单行(Odoo 13)

时间:2020-07-28 21:08:41

标签: python odoo odoo-13

我有销售记录

models.execute_kw(db, uid, password, 'sale.order', 'create', [{
         
            'partner_id': 10,
            'order_line': [(0, 0, {'product_id':1,'product_uom_qty':2}),

        

我需要能够根据变量中的数字创建'order_line'程序。例如if variable = 3

  models.execute_kw(db, uid, password, 'sale.order', 'create', [{

         
            'partner_id': 10,
            'order_line': [(0, 0, {'product_id':1,'product_uom_qty':2}),
            'order_line': [(0, 0, {'product_id':1,'product_uom_qty':2}),
            'order_line': [(0, 0, {'product_id':1,'product_uom_qty':2}),

我从这里进行了准确的操作,https://www.odoo.com/forum/help-1/question/programmatically-create-a-sale-order-line-99981。但是我一直在出错,因为自2016年以来Odoo似乎已经发生了很大变化。解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

在第二个示例中,您在提供订单行的值时忘记了右括号,而当您写三遍order_line时,只提供了最后一个值就等于了。

如果需要创建三行,则需要使用special commands在列表中传递三个元组。

以下示例将创建一条具有三行相同的销售订单:

models.execute_kw(DB, uid, PASSWORD, 'sale.order', 'create', [{

            'partner_id': 10,
            'order_line': [(0, 0, {'product_id':1,'product_uom_qty':2}),
                           (0, 0, {'product_id':1,'product_uom_qty':2}),
                           (0, 0, {'product_id':1,'product_uom_qty':2})
                          ]
            }])