创建销售订单行时如何为产品设置价目表折扣?在 Odoo 9
How can I set the pricelist discount to a product when I create a sale order line? In Odoo 9
我有一个从外部服务器检索销售订单的功能。
然后,我在 odoo 数据库中插入每个 销售订单 和 订单行。
除了 discount.
以外,一切都很好
我在销售订单中有价目表,有折扣(例如,每个产品都有 10% 的折扣) ,但在所有 销售订单行中 折扣为 0%。
如果我手动添加 销售订单行,折扣会正确显示 (10%)。
这是我的代码:
vals = {}
vals['order_id'] = downloaded_sale_order_id
vals['product_id'] = downloaded_product_id
vals['product_uom'] = downloaded_product_uom
new_line_id = self.env['sale.order.line'].create(vals)
我已经进入调试模式并意识到如果我在创建后调用其中一些函数,则会应用折扣
选项 1:
new_line_id.product_id_change()
选项 2:
new_line_id.product_uom_change()
但是...为什么在我启动 create 订单时没有调用它们?
我在代码中遗漏了什么吗?
在从外部服务器来源创建销售订单行时,您可以使用以下选项在销售订单行中设置折扣。
1) 如果您从外部服务器的源数据中获得折扣值,只需像其他参数一样设置折扣,如 uom、产品、价格等。
2) 您必须调用product 或uom onchange 方法来根据onchange 调用设置折扣,这是根据onchange 设置大部分数据的默认且安全的方法。它不会错过使用 onchange 方法进行的任何自定义中的任何特殊字段。如果任何折扣数据不是来自外部服务器源,我特别推荐使用此方法。
3) 您可以根据价格和数量等外部服务器源手动管理折扣计算,并将其设置在销售订单行中。
希望对您有所帮助。有什么不明白的地方尽管问。
我有一个从外部服务器检索销售订单的功能。
然后,我在 odoo 数据库中插入每个 销售订单 和 订单行。
除了 discount.
以外,一切都很好我在销售订单中有价目表,有折扣(例如,每个产品都有 10% 的折扣) ,但在所有 销售订单行中 折扣为 0%。
如果我手动添加 销售订单行,折扣会正确显示 (10%)。
这是我的代码:
vals = {}
vals['order_id'] = downloaded_sale_order_id
vals['product_id'] = downloaded_product_id
vals['product_uom'] = downloaded_product_uom
new_line_id = self.env['sale.order.line'].create(vals)
我已经进入调试模式并意识到如果我在创建后调用其中一些函数,则会应用折扣
选项 1:
new_line_id.product_id_change()
选项 2:
new_line_id.product_uom_change()
但是...为什么在我启动 create 订单时没有调用它们?
我在代码中遗漏了什么吗?
在从外部服务器来源创建销售订单行时,您可以使用以下选项在销售订单行中设置折扣。
1) 如果您从外部服务器的源数据中获得折扣值,只需像其他参数一样设置折扣,如 uom、产品、价格等。
2) 您必须调用product 或uom onchange 方法来根据onchange 调用设置折扣,这是根据onchange 设置大部分数据的默认且安全的方法。它不会错过使用 onchange 方法进行的任何自定义中的任何特殊字段。如果任何折扣数据不是来自外部服务器源,我特别推荐使用此方法。
3) 您可以根据价格和数量等外部服务器源手动管理折扣计算,并将其设置在销售订单行中。
希望对您有所帮助。有什么不明白的地方尽管问。