From bdb1ce15f2f3dc7025f631173334423cccc32962 Mon Sep 17 00:00:00 2001 From: Joseph Caburnay Date: Wed, 11 Sep 2019 05:24:14 +0000 Subject: [PATCH] [FIX] delivery: delivery line is not set to zero cost If the chosen delivery method has free_over active, and if the cost of the sale over exceeds the free_over amount, the delivery line should have price_unit of zero. --- addons/delivery/models/sale_order.py | 2 +- addons/delivery/wizard/choose_delivery_carrier.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py index 86f05513efc..2d263e39d8f 100644 --- a/addons/delivery/models/sale_order.py +++ b/addons/delivery/models/sale_order.py @@ -106,7 +106,7 @@ class SaleOrder(models.Model): values['name'] += _(' (Estimated Cost: %s )') % self._format_currency_amount(price_unit) else: values['price_unit'] = price_unit - if carrier.free_over and self._compute_amount_total_without_delivery() >= price_unit: + if carrier.free_over and self.currency_id.is_zero(price_unit) : values['name'] += '\n' + 'Free Shipping' if self.order_line: values['sequence'] = self.order_line[-1].sequence + 1 diff --git a/addons/delivery/wizard/choose_delivery_carrier.py b/addons/delivery/wizard/choose_delivery_carrier.py index 32b66143347..3c2488a5032 100644 --- a/addons/delivery/wizard/choose_delivery_carrier.py +++ b/addons/delivery/wizard/choose_delivery_carrier.py @@ -19,7 +19,7 @@ class ChooseDeliveryCarrier(models.TransientModel): ) delivery_type = fields.Selection(related='carrier_id.delivery_type') delivery_price = fields.Float() - display_price = fields.Float(string='Cost') + display_price = fields.Float(string='Cost', readonly=True) currency_id = fields.Many2one('res.currency', related='order_id.currency_id') company_id = fields.Many2one('res.company', related='order_id.company_id') available_carrier_ids = fields.Many2many("delivery.carrier", compute='_compute_available_carrier', string="Available Carriers") @@ -88,7 +88,7 @@ class ChooseDeliveryCarrier(models.TransientModel): } def button_confirm(self): - self.order_id.set_delivery_line(self.carrier_id, self.display_price) + self.order_id.set_delivery_line(self.carrier_id, self.delivery_price) self.order_id.write({ 'recompute_delivery_price': False, 'delivery_message': self.delivery_message,