[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) <vava@odoo.com>
This commit is contained in:
vava-odoo
2024-03-28 18:06:45 +00:00
parent 726d973ade
commit 2ce67da4c2
@@ -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')