diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py index b635ec7d801..753223647e9 100644 --- a/addons/delivery/models/sale_order.py +++ b/addons/delivery/models/sale_order.py @@ -31,7 +31,14 @@ class SaleOrder(models.Model): @api.depends('carrier_id', 'partner_id', 'order_line') def _compute_delivery_price(self): for order in self: - order.delivery_price = order.carrier_id.with_context(order_id=order.id).price + if order.state != 'draft': + # we do not want to recompute the shipping price of an already validated/done SO + continue + elif order.carrier_id.delivery_type != 'grid' and not order.order_line: + # prevent SOAP call to external shipping provider when SO has no lines yet + continue + else: + order.delivery_price = order.carrier_id.with_context(order_id=order.id).price @api.multi def delivery_set(self):