From 2f9e793d24a04f248ba21e34072ece740e5e32ce Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Wed, 17 Apr 2019 11:03:49 +0000 Subject: [PATCH] [FIX] website_sale: unit price Commit 180866fe1e3b8998cc47ee58 introduced an error in the following case: - Go to Sales > Configuration > Settings - Enable "Multiple Sales Prices per Product" and select option "Prices computed from formulas (discounts, margins, roundings)" - Go to Sales > Catalog / Pricelists - Select "Public Pricelist" and set "Discount Policy: Show public price & discount to the customer" - Define the pricelist as based on the cost of the product with a negative discount for a product P - Go to the eCommerce, buy the product The price used in the cart is the cost price instead of the cost + negative discount. This is because we force the discount to be zero in this case while using the price of the product without the pricelist. We usually don't want to show a negative discount, since it means the client pays more than usual. However we still want to use the price defined on the pricelist. We modify as follow: if the discount is negative, we don't show it to the user (value = 0), but we use the unit price with the discount included. opw-1967870 closes odoo/odoo#32768 Signed-off-by: Nicolas Martinelli (nim) --- addons/website_sale/models/sale_order.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index 098a8629e15..b751cecf446 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -111,7 +111,10 @@ class SaleOrder(models.Model): pu = request.env['res.currency'].browse(currency_id).with_context(product_context).compute(pu, order.pricelist_id.currency_id) discount = (pu - price) / pu * 100 if discount < 0: + # In case the discount is negative, we don't want to show it to the customer, + # but we still want to use the price defined on the pricelist discount = 0 + pu = price else: pu = product.price if order.pricelist_id and order.partner_id: