From 2ce67da4c2e07d14a7b77147ba54c11d22d4a4e1 Mon Sep 17 00:00:00 2001 From: vava-odoo Date: Wed, 27 Mar 2024 21:41:40 +0100 Subject: [PATCH] [FIX] sale_loyalty_delivery: fix reward for multiple delivery lines The method `_get_reward_values_free_shipping` assumes there is only one delivery line per sale order. But it is not always the case. This commit therefore makes sure the method does not raise an error in case of multiple lines by taking into account only the first delivery line. Fixes #136395 closes odoo/odoo#159584 Signed-off-by: Vallaeys Valentin (vava) --- addons/sale_loyalty_delivery/models/sale_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale_loyalty_delivery/models/sale_order.py b/addons/sale_loyalty_delivery/models/sale_order.py index 88e22bada2e..cd2f064690b 100644 --- a/addons/sale_loyalty_delivery/models/sale_order.py +++ b/addons/sale_loyalty_delivery/models/sale_order.py @@ -36,7 +36,7 @@ class SaleOrder(models.Model): return order_line.filtered(lambda line: not line.is_delivery) def _get_reward_values_free_shipping(self, reward, coupon, **kwargs): - delivery_line = self.order_line.filtered(lambda l: l.is_delivery) + delivery_line = self.order_line.filtered(lambda l: l.is_delivery)[:1] taxes = delivery_line.product_id.taxes_id.filtered(lambda t: t.company_id.id == self.company_id.id) taxes = self.fiscal_position_id.map_tax(taxes) max_discount = reward.discount_max_amount or float('inf')