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():