From 66704d3d1f193884d3ee2de85dccda54ee144aa2 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Thu, 6 Dec 2018 12:48:00 +0000 Subject: [PATCH] [FIX] delivery: cast to float Some providers (e.g. Fedex) return a `decimal.Decimal` instead of a `float`, which causes a crash. opw-1903784 closes odoo/odoo#29311 --- addons/delivery/models/delivery_carrier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/delivery/models/delivery_carrier.py b/addons/delivery/models/delivery_carrier.py index d1e76fae927..7ac9bb8af86 100644 --- a/addons/delivery/models/delivery_carrier.py +++ b/addons/delivery/models/delivery_carrier.py @@ -119,7 +119,7 @@ class DeliveryCarrier(models.Model): if hasattr(self, '%s_rate_shipment' % self.delivery_type): res = getattr(self, '%s_rate_shipment' % self.delivery_type)(order) # apply margin on computed price - res['price'] = res['price'] * (1.0 + (float(self.margin) / 100.0)) + res['price'] = float(res['price']) * (1.0 + (float(self.margin) / 100.0)) # free when order is large enough if res['success'] and self.free_over and order._compute_amount_total_without_delivery() >= self.amount: res['warning_message'] = _('Info:\nThe shipping is free because the order amount exceeds %.2f.\n(The actual shipping cost is: %.2f)') % (self.amount, res['price'])