[FIX] product: correctly pass pricelist arguments to recursive calls.
When computing the price of a product through a pricelist item, if the item was based on anotherp pricelist, the dates and uom weren't given to the subsequent method call. As the majority of the calls to those pricelist methods put all their arguments in the context, it wasn't noticed until now. Functional example: Pricelist A: Rule A1 : 10% discount on Pricelist B, from day 3 to day 6. Pricelist B: Rule B1: 5% discount on Sales price, from day 3 to day 6, Rule B2: 10% discount, from day 7 to day 9. If today was day 8, the call to pricelist(A)._compute_price_rule(day=5) would use rules A1 and B2, but should have used rules A1 and B1. closes odoo/odoo#41295 X-original-commit: df9b113805ed28f274711bb4ba0dd9a2610e5035 Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
This commit is contained in:
@@ -214,7 +214,7 @@ class Pricelist(models.Model):
|
||||
continue
|
||||
|
||||
if rule.base == 'pricelist' and rule.base_pricelist_id:
|
||||
price_tmp = rule.base_pricelist_id._compute_price_rule([(product, qty, partner)])[product.id][0] # TDE: 0 = price, 1 = rule
|
||||
price_tmp = rule.base_pricelist_id._compute_price_rule([(product, qty, partner)], date, uom_id)[product.id][0] # TDE: 0 = price, 1 = rule
|
||||
price = rule.base_pricelist_id.currency_id._convert(price_tmp, self.currency_id, self.env.company, date, round=False)
|
||||
else:
|
||||
# if base option is public price take sale price else cost price of product
|
||||
|
||||
Reference in New Issue
Block a user