From 83cb6ca99dfcc336478dfb343d6d55c95e98f842 Mon Sep 17 00:00:00 2001 From: Sara Lago Date: Thu, 20 Jan 2022 12:01:28 +0100 Subject: [PATCH] [FIX] pms: fix calculation of folio commission --- pms/models/pms_folio.py | 3 +- pms/tests/test_pms_folio.py | 73 +++++++++++++++++++++++++++++++++++-- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index a30755692..d8ffbe960 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -763,9 +763,10 @@ class PmsFolio(models.Model): @api.depends("reservation_ids", "reservation_ids.commission_amount") def _compute_commission(self): for folio in self: + folio.commission = 0 for reservation in folio.reservation_ids: if reservation.commission_amount != 0: - folio.commission += reservation.commission_amount + folio.commission = folio.commission + reservation.commission_amount else: folio.commission = 0 diff --git a/pms/tests/test_pms_folio.py b/pms/tests/test_pms_folio.py index cb772a1b5..bfe96cf96 100644 --- a/pms/tests/test_pms_folio.py +++ b/pms/tests/test_pms_folio.py @@ -133,8 +133,6 @@ class TestPmsFolio(TestPms): """ # ARRANGE self.create_sale_channel_scenario() - commission = (20 + 20 + 20) * 0.15 - # ACT folio1 = self.env["pms.folio"].create( { @@ -175,9 +173,78 @@ class TestPmsFolio(TestPms): ], } ) + self.commission = 0 + for reservation in folio1.reservation_ids: + self.commission = ( + self.commission + + reservation.price_total * self.agency1.default_commission / 100 + ) + # ASSERT self.assertEqual( - commission, folio1.commission, "The folio compute commission is wrong" + self.commission, folio1.commission, "The folio compute commission is wrong" + ) + + def test_folio_commission(self): + """ + Check commission of a folio with several reservations + """ + # 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, + }, + ), + ], + } + ) + + self.commission = 0 + for reservation in folio1.reservation_ids: + 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_reservation_agency_without_partner(self):