summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGoffin Simon <sig@odoo.com>2021-03-17 10:02:23 +0000
committerGoffin Simon <sig@odoo.com>2021-03-18 11:49:26 +0000
commit4565f92c459f136fc0db79f8145b058e8a8a8972 (patch)
treef19f4b889346a06508af00a0bf6d4aeefe60412f
parent402009b6c5082d949e433b8c8cbadb7012174865 (diff)
[FIX] website_sale: Wrong price in the shop
Steps to reproduce the issue: - Let's consider a product P (11€) with a 10% included tax T1 - Let's consider a fiscal position FP that mappes T1 to a tax T2 (0%) - Let's consider a website that displays prices with tax included - Let's consider a portal user PU with FP as fiscal postion - Log with PU - Go to the shop and filter products to see P Bug: The price of P was 11€ instead of 10€ PS: When adding P in the cart, the correct price is displayed. opw:2472528 closes odoo/odoo#68074 X-original-commit: e7bfadea847012ee956b7bb425688b5f9ccda9cf Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
-rw-r--r--addons/website_sale/models/product.py2
-rw-r--r--addons/website_sale/tests/test_website_sale_product_attribute_value_config.py15
2 files changed, 17 insertions, 0 deletions
diff --git a/addons/website_sale/models/product.py b/addons/website_sale/models/product.py
index caecf35012f..291d4185ce5 100644
--- a/addons/website_sale/models/product.py
+++ b/addons/website_sale/models/product.py
@@ -296,8 +296,10 @@ class ProductTemplate(models.Model):
# The list_price is always the price of one.
quantity_1 = 1
+ combination_info['price'] = self.env['account.tax']._fix_tax_included_price_company(combination_info['price'], product.sudo().taxes_id, taxes, company_id)
price = taxes.compute_all(combination_info['price'], pricelist.currency_id, quantity_1, product, partner)[tax_display]
if pricelist.discount_policy == 'without_discount':
+ combination_info['list_price'] = self.env['account.tax']._fix_tax_included_price_company(combination_info['list_price'], product.sudo().taxes_id, taxes, company_id)
list_price = taxes.compute_all(combination_info['list_price'], pricelist.currency_id, quantity_1, product, partner)[tax_display]
else:
list_price = price
diff --git a/addons/website_sale/tests/test_website_sale_product_attribute_value_config.py b/addons/website_sale/tests/test_website_sale_product_attribute_value_config.py
index 079a885cc53..c716f5bb5b9 100644
--- a/addons/website_sale/tests/test_website_sale_product_attribute_value_config.py
+++ b/addons/website_sale/tests/test_website_sale_product_attribute_value_config.py
@@ -115,3 +115,18 @@ class TestWebsiteSaleProductAttributeValueConfig(TestSaleProductAttributeValueCo
combination_info = test_product._get_combination_info()
self.assertEqual(combination_info['price'], 500, "500% + 0% tax (mapped from fp 15% -> 0% for BE)")
self.assertEqual(combination_info['list_price'], 500, "500% + 0% tax (mapped from fp 15% -> 0% for BE) (2)")
+
+ # Try same flow with tax included
+ tax15.write({'price_include': True})
+
+ # Reset / Safety check
+ self.env.user.partner_id.country_id = None
+ combination_info = test_product._get_combination_info()
+ self.assertEqual(combination_info['price'], 500, "434.78$ + 15% tax")
+ self.assertEqual(combination_info['list_price'], 500, "434.78$ + 15% tax (2)")
+
+ # Now with fiscal position, taxes should be mapped
+ self.env.user.partner_id.country_id = self.env.ref('base.be').id
+ combination_info = test_product._get_combination_info()
+ self.assertEqual(round(combination_info['price'], 2), 434.78, "434.78$ + 0% tax (mapped from fp 15% -> 0% for BE)")
+ self.assertEqual(round(combination_info['list_price'], 2), 434.78, "434.78$ + 0% tax (mapped from fp 15% -> 0% for BE)")