[FIX] website_sale: unit price

Commit 180866fe1e 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) <nim@odoo.com>
This commit is contained in:
Nicolas Martinelli
2019-04-17 11:03:49 +00:00
parent b6f55dac56
commit 2f9e793d24
+3
View File
@@ -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: