[FIX] sale_margin: make sale.order.line create override handle section lines

The sale.order.line model has a 'display_type' field since 762adedece
that specify if the line is a dummy line used for presentation purposes.
These dummy lines are 'section' lines or 'note' lines.
If it is the case, the line does not have a product_id.
The sale_margin module overrides the create method of lines to add the margin
computation, assuming there are no dummy lines since that part of the code
is older than the new feature.
As a result the line creation would crash on a key error on dummy lines.

We now skip the margin computation if the line has a display_type.

opw 1939881

closes odoo/odoo#31035
This commit is contained in:
Nans Lefebvre
2019-02-13 08:24:59 +00:00
parent f0b3e847d8
commit 3b256ba487
+1 -1
View File
@@ -46,7 +46,7 @@ class SaleOrderLine(models.Model):
# Calculation of the margin for programmatic creation of a SO line. It is therefore not
# necessary to call product_id_change_margin manually
if 'purchase_price' not in vals:
if 'purchase_price' not in vals and ('display_type' not in vals or not vals['display_type']):
order_id = self.env['sale.order'].browse(vals['order_id'])
product_id = self.env['product.product'].browse(vals['product_id'])
product_uom_id = self.env['uom.uom'].browse(vals['product_uom'])