From fd01aa07e61c2dac523c18378fc0274e5b8a6ec2 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Wed, 28 Jul 2021 14:39:15 +0200 Subject: [PATCH] [FIX] pms: control ine seats configured in the property and remove from menu the pms_ine_tourism_category model --- pms_l10n_es/models/pms_property.py | 4 +- pms_l10n_es/tests/test_wizard_ine.py | 5 ++- .../views/pms_ine_tourism_type_category.xml | 14 +++---- pms_l10n_es/wizards/wizard_ine.py | 42 ++++++++++--------- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/pms_l10n_es/models/pms_property.py b/pms_l10n_es/models/pms_property.py index da519ae6e..8d0554281 100644 --- a/pms_l10n_es/models/pms_property.py +++ b/pms_l10n_es/models/pms_property.py @@ -38,7 +38,9 @@ class PmsProperty(models.Model): help="Registration number in the Ministry of Tourism. Used for INE statistics.", ) ine_seats = fields.Integer( - "Beds available", default=0, help="Used for INE statistics." + "Beds available excluding extra beds", + default=0, + help="Used for INE statistics.", ) ine_permanent_staff = fields.Integer( "Permanent Staff", default=0, help="Used for INE statistics." diff --git a/pms_l10n_es/tests/test_wizard_ine.py b/pms_l10n_es/tests/test_wizard_ine.py index 48eddf5d2..5bd89e6f0 100644 --- a/pms_l10n_es/tests/test_wizard_ine.py +++ b/pms_l10n_es/tests/test_wizard_ine.py @@ -9,6 +9,9 @@ from .common import TestPms class TestWizardINE(TestPms): def setUp(self): super().setUp() + # number of seats established in the property + self.pms_property1.ine_seats = 50 + # create room types self.room_type = self.env["pms.room.type"].create( { @@ -362,7 +365,7 @@ class TestWizardINE(TestPms): # ACT rooms = self.env["pms.ine.wizard"].ine_rooms( - start_date, end_date, self.pms_property1.id + start_date, end_date, self.pms_property1 ) # ASSERT self.assertDictEqual(rooms, expected_result) diff --git a/pms_l10n_es/views/pms_ine_tourism_type_category.xml b/pms_l10n_es/views/pms_ine_tourism_type_category.xml index d032f941a..a84c48cb8 100644 --- a/pms_l10n_es/views/pms_ine_tourism_type_category.xml +++ b/pms_l10n_es/views/pms_ine_tourism_type_category.xml @@ -29,11 +29,11 @@ pms.ine.tourism.type.category tree,form - + + + + + + + diff --git a/pms_l10n_es/wizards/wizard_ine.py b/pms_l10n_es/wizards/wizard_ine.py index 6403931e3..276e7b000 100644 --- a/pms_l10n_es/wizards/wizard_ine.py +++ b/pms_l10n_es/wizards/wizard_ine.py @@ -68,7 +68,7 @@ class WizardIne(models.TransientModel): self.env["pms.reservation.line"] .search( [ - ("pms_property_id", "=", pms_property_id), + ("pms_property_id", "=", pms_property_id.id), ("occupies_availability", "=", True), ("reservation_id.reservation_type", "=", "normal"), ("room_id.in_ine", "=", True), @@ -85,7 +85,7 @@ class WizardIne(models.TransientModel): self.env["pms.reservation.line"] .search( [ - ("pms_property_id", "=", pms_property_id), + ("pms_property_id", "=", pms_property_id.id), ("occupies_availability", "=", True), ("reservation_id.reservation_type", "=", "normal"), ("room_id.in_ine", "=", True), @@ -100,7 +100,7 @@ class WizardIne(models.TransientModel): # service lines with extra beds extra_bed_service_lines = self.env["pms.service.line"].search( [ - ("pms_property_id", "=", pms_property_id), + ("pms_property_id", "=", pms_property_id.id), ("product_id.is_extra_bed", "=", True), ("reservation_id.reservation_type", "=", "normal"), ("date", "=", p_date), @@ -132,7 +132,7 @@ class WizardIne(models.TransientModel): ("occupies_availability", "=", True), ("reservation_id.reservation_type", "=", "normal"), ("room_id.in_ine", "=", True), - ("pms_property_id", "=", pms_property_id), + ("pms_property_id", "=", pms_property_id.id), ] ) .mapped("room_id") @@ -143,6 +143,21 @@ class WizardIne(models.TransientModel): all_rooms - double_rooms_double_use ) - double_rooms_single_use + seats_excluding_extra_beds = ( + sum(other_rooms.mapped("capacity")) + + sum(double_rooms_double_use.mapped("capacity")) + + sum(double_rooms_single_use.mapped("capacity")) + ) + if seats_excluding_extra_beds > pms_property_id.ine_seats: + raise ValidationError( + _( + "The number of seats, excluding extra beds (%s)" + % str(seats_excluding_extra_beds) + + " exceeds the number of seats established in the property (%s)" + % str(pms_property_id.ine_seats) + ) + ) + # no room movements -> no dict entrys if not ( extra_beds == 0 @@ -391,19 +406,6 @@ class WizardIne(models.TransientModel): self.revpar = revpar return revpar - @api.model - def ine_calculate_capacity(self): - # TODO: Review if calculate like below or get the info from property.ine_seats - return sum( - self.env["pms.room"] - .search( - [ - ("in_ine", "=", True), - ] - ) - .mapped("capacity") - ) - @api.model def ine_get_nif_cif(self, cif_nif): country_codes = self.env["res.country"].search([]).mapped("code") @@ -416,6 +418,8 @@ class WizardIne(models.TransientModel): raise ValidationError(_("The date range must belong to the same month.")) if not self.pms_property_id.company_id.vat: raise ValidationError(_("The VAT is not established.")) + if not self.pms_property_id.phone: + raise ValidationError(_("The phone is not established.")) # INE XML survey_tag = ET.Element("ENCUESTA") @@ -462,7 +466,7 @@ class WizardIne(models.TransientModel): ) ET.SubElement(header_tag, "PLAZAS_DISPONIBLES_SIN_SUPLETORIAS").text = str( - self.ine_calculate_capacity() + self.pms_property_id.ine_seats ) ET.SubElement(header_tag, "URL").text = self.pms_property_id.website @@ -531,7 +535,7 @@ class WizardIne(models.TransientModel): ) rooms_tag = ET.SubElement(survey_tag, "HABITACIONES") - rooms = self.ine_rooms(self.start_date, self.end_date, self.pms_property_id.id) + rooms = self.ine_rooms(self.start_date, self.end_date, self.pms_property_id) # INE XML -> ROOMS for key_date, value_rooms in rooms.items():