From b16e145e9458f9f8b6b1d3aec5b26566549101dd Mon Sep 17 00:00:00 2001 From: Sara Lago Date: Thu, 3 Feb 2022 14:03:11 +0100 Subject: [PATCH] [FIX] pms: fix folio commission when it last reservation hasn't commission --- pms/models/pms_folio.py | 2 - pms/tests/test_pms_folio.py | 83 ++++++++++++++++++++++++++++++++++--- 2 files changed, 78 insertions(+), 7 deletions(-) diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index d8ffbe960..1bb141176 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -767,8 +767,6 @@ class PmsFolio(models.Model): for reservation in folio.reservation_ids: if reservation.commission_amount != 0: folio.commission = folio.commission + reservation.commission_amount - else: - folio.commission = 0 @api.depends("agency_id") def _compute_channel_type_id(self): diff --git a/pms/tests/test_pms_folio.py b/pms/tests/test_pms_folio.py index bfe96cf96..9831814e2 100644 --- a/pms/tests/test_pms_folio.py +++ b/pms/tests/test_pms_folio.py @@ -187,7 +187,7 @@ class TestPmsFolio(TestPms): def test_folio_commission(self): """ - Check commission of a folio with several reservations + Check commission of a folio with several reservations that have commission """ # ARRANGE self.create_sale_channel_scenario() @@ -235,10 +235,83 @@ class TestPmsFolio(TestPms): self.commission = 0 for reservation in folio1.reservation_ids: - self.commission = ( - self.commission - + reservation.price_total * self.agency1.default_commission / 100 - ) + if reservation.commission_amount != 0: + self.commission = ( + self.commission + + reservation.price_total * self.agency1.default_commission / 100 + ) + self.folio_commission = folio1.commission + # ASSERT + self.assertEqual( + self.commission, + self.folio_commission, + "The folio compute commission is wrong", + ) + + def test_folio_commission_with_reservations_without_commission(self): + """ + Check commission of a folio with several reservations, + of which the last hasn't commission + + --- folio1: + -reservation1: commission 15% --> commission amount 3.00 + -reservation2: commission 0% --> commission amount 0.00 + + folio1 commission --> 3.00 + """ + # ARRANGE + self.create_sale_channel_scenario() + + # ACT + + folio1 = self.env["pms.folio"].create( + { + "agency_id": self.agency1.id, + "pms_property_id": self.pms_property1.id, + } + ) + + self.env["pms.reservation"].create( + { + "folio_id": folio1.id, + "room_type_id": self.room_type_double.id, + "reservation_line_ids": [ + ( + 0, + False, + { + "date": fields.date.today(), + "price": 20, + }, + ), + ], + } + ) + + self.env["pms.reservation"].create( + { + "folio_id": folio1.id, + "room_type_id": self.room_type_double.id, + "reservation_line_ids": [ + ( + 0, + False, + { + "date": fields.date.today(), + "price": 40, + }, + ), + ], + "commission_percent": 0, + } + ) + self.commission = 0 + for reservation in folio1.reservation_ids: + if reservation.commission_amount != 0: + self.commission = ( + self.commission + + reservation.price_total * self.agency1.default_commission / 100 + ) self.folio_commission = folio1.commission # ASSERT self.assertEqual(