From dc2e990aec67676a316566a5071ea28fb94b28f1 Mon Sep 17 00:00:00 2001 From: Pierre Masereel Date: Tue, 10 Sep 2019 12:57:37 +0000 Subject: [PATCH] [FIX] delivery: get correct carrier for invoicing policy The carrier argument passed to the _create_delivery_line function can be different to the carrier already existing in the sale order so we should use the correct setting of carrier where we are calling the function. closes odoo/odoo#36424 Signed-off-by: pimodoo --- addons/delivery/models/sale_order.py | 6 +++--- addons/delivery/models/stock_picking.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py index 2d263e39d8f..3d26f6843ef 100644 --- a/addons/delivery/models/sale_order.py +++ b/addons/delivery/models/sale_order.py @@ -48,7 +48,7 @@ class SaleOrder(models.Model): self._remove_delivery_line() for order in self: - order._create_delivery_line(carrier, amount, price_unit_in_description=self.carrier_id.invoice_policy == 'real') + order._create_delivery_line(carrier, amount) return True def action_open_delivery_wizard(self): @@ -73,7 +73,7 @@ class SaleOrder(models.Model): } } - def _create_delivery_line(self, carrier, price_unit, price_unit_in_description=False): + def _create_delivery_line(self, carrier, price_unit): SaleOrderLine = self.env['sale.order.line'] if self.partner_id: # set delivery detail in the customer language @@ -101,7 +101,7 @@ class SaleOrder(models.Model): 'tax_id': [(6, 0, taxes_ids)], 'is_delivery': True, } - if price_unit_in_description: + if carrier.invoice_policy == 'real': values['price_unit'] = 0 values['name'] += _(' (Estimated Cost: %s )') % self._format_currency_amount(price_unit) else: diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py index 66bea256e92..2b2da5777b0 100644 --- a/addons/delivery/models/stock_picking.py +++ b/addons/delivery/models/stock_picking.py @@ -171,7 +171,7 @@ class StockPicking(models.Model): if sale_order and self.carrier_id.invoice_policy == 'real' and self.carrier_price: delivery_lines = sale_order.order_line.filtered(lambda l: l.is_delivery and l.currency_id.is_zero(l.price_unit) and l.product_id == self.carrier_id.product_id) if not delivery_lines: - sale_order._create_delivery_line(self.carrier_id, self.carrier_price, price_unit_in_description=False) + sale_order._create_delivery_line(self.carrier_id, self.carrier_price) else: delivery_line = delivery_lines[0] delivery_line[0].write({