mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[FIX] pms: control ine seats configured in the property and remove from menu the pms_ine_tourism_category model
This commit is contained in:
@@ -38,7 +38,9 @@ class PmsProperty(models.Model):
|
|||||||
help="Registration number in the Ministry of Tourism. Used for INE statistics.",
|
help="Registration number in the Ministry of Tourism. Used for INE statistics.",
|
||||||
)
|
)
|
||||||
ine_seats = fields.Integer(
|
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(
|
ine_permanent_staff = fields.Integer(
|
||||||
"Permanent Staff", default=0, help="Used for INE statistics."
|
"Permanent Staff", default=0, help="Used for INE statistics."
|
||||||
|
|||||||
@@ -9,6 +9,9 @@ from .common import TestPms
|
|||||||
class TestWizardINE(TestPms):
|
class TestWizardINE(TestPms):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
# number of seats established in the property
|
||||||
|
self.pms_property1.ine_seats = 50
|
||||||
|
|
||||||
# create room types
|
# create room types
|
||||||
self.room_type = self.env["pms.room.type"].create(
|
self.room_type = self.env["pms.room.type"].create(
|
||||||
{
|
{
|
||||||
@@ -362,7 +365,7 @@ class TestWizardINE(TestPms):
|
|||||||
|
|
||||||
# ACT
|
# ACT
|
||||||
rooms = self.env["pms.ine.wizard"].ine_rooms(
|
rooms = self.env["pms.ine.wizard"].ine_rooms(
|
||||||
start_date, end_date, self.pms_property1.id
|
start_date, end_date, self.pms_property1
|
||||||
)
|
)
|
||||||
# ASSERT
|
# ASSERT
|
||||||
self.assertDictEqual(rooms, expected_result)
|
self.assertDictEqual(rooms, expected_result)
|
||||||
|
|||||||
@@ -29,11 +29,11 @@
|
|||||||
<field name="res_model">pms.ine.tourism.type.category</field>
|
<field name="res_model">pms.ine.tourism.type.category</field>
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
</record>
|
</record>
|
||||||
<menuitem
|
<!-- <menuitem-->
|
||||||
name="INE Tourism Categories"
|
<!-- name="INE Tourism Categories"-->
|
||||||
id="menu_open_pms_ine_tourism_category_form_tree"
|
<!-- id="menu_open_pms_ine_tourism_category_form_tree"-->
|
||||||
action="open_pms_ine_tourism_category"
|
<!-- action="open_pms_ine_tourism_category"-->
|
||||||
parent="pms.menu_reservations"
|
<!-- parent="pms.menu_reservations"-->
|
||||||
sequence="30"
|
<!-- sequence="30"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class WizardIne(models.TransientModel):
|
|||||||
self.env["pms.reservation.line"]
|
self.env["pms.reservation.line"]
|
||||||
.search(
|
.search(
|
||||||
[
|
[
|
||||||
("pms_property_id", "=", pms_property_id),
|
("pms_property_id", "=", pms_property_id.id),
|
||||||
("occupies_availability", "=", True),
|
("occupies_availability", "=", True),
|
||||||
("reservation_id.reservation_type", "=", "normal"),
|
("reservation_id.reservation_type", "=", "normal"),
|
||||||
("room_id.in_ine", "=", True),
|
("room_id.in_ine", "=", True),
|
||||||
@@ -85,7 +85,7 @@ class WizardIne(models.TransientModel):
|
|||||||
self.env["pms.reservation.line"]
|
self.env["pms.reservation.line"]
|
||||||
.search(
|
.search(
|
||||||
[
|
[
|
||||||
("pms_property_id", "=", pms_property_id),
|
("pms_property_id", "=", pms_property_id.id),
|
||||||
("occupies_availability", "=", True),
|
("occupies_availability", "=", True),
|
||||||
("reservation_id.reservation_type", "=", "normal"),
|
("reservation_id.reservation_type", "=", "normal"),
|
||||||
("room_id.in_ine", "=", True),
|
("room_id.in_ine", "=", True),
|
||||||
@@ -100,7 +100,7 @@ class WizardIne(models.TransientModel):
|
|||||||
# service lines with extra beds
|
# service lines with extra beds
|
||||||
extra_bed_service_lines = self.env["pms.service.line"].search(
|
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),
|
("product_id.is_extra_bed", "=", True),
|
||||||
("reservation_id.reservation_type", "=", "normal"),
|
("reservation_id.reservation_type", "=", "normal"),
|
||||||
("date", "=", p_date),
|
("date", "=", p_date),
|
||||||
@@ -132,7 +132,7 @@ class WizardIne(models.TransientModel):
|
|||||||
("occupies_availability", "=", True),
|
("occupies_availability", "=", True),
|
||||||
("reservation_id.reservation_type", "=", "normal"),
|
("reservation_id.reservation_type", "=", "normal"),
|
||||||
("room_id.in_ine", "=", True),
|
("room_id.in_ine", "=", True),
|
||||||
("pms_property_id", "=", pms_property_id),
|
("pms_property_id", "=", pms_property_id.id),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
.mapped("room_id")
|
.mapped("room_id")
|
||||||
@@ -143,6 +143,21 @@ class WizardIne(models.TransientModel):
|
|||||||
all_rooms - double_rooms_double_use
|
all_rooms - double_rooms_double_use
|
||||||
) - double_rooms_single_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
|
# no room movements -> no dict entrys
|
||||||
if not (
|
if not (
|
||||||
extra_beds == 0
|
extra_beds == 0
|
||||||
@@ -391,19 +406,6 @@ class WizardIne(models.TransientModel):
|
|||||||
self.revpar = revpar
|
self.revpar = revpar
|
||||||
return 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
|
@api.model
|
||||||
def ine_get_nif_cif(self, cif_nif):
|
def ine_get_nif_cif(self, cif_nif):
|
||||||
country_codes = self.env["res.country"].search([]).mapped("code")
|
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."))
|
raise ValidationError(_("The date range must belong to the same month."))
|
||||||
if not self.pms_property_id.company_id.vat:
|
if not self.pms_property_id.company_id.vat:
|
||||||
raise ValidationError(_("The VAT is not established."))
|
raise ValidationError(_("The VAT is not established."))
|
||||||
|
if not self.pms_property_id.phone:
|
||||||
|
raise ValidationError(_("The phone is not established."))
|
||||||
|
|
||||||
# INE XML
|
# INE XML
|
||||||
survey_tag = ET.Element("ENCUESTA")
|
survey_tag = ET.Element("ENCUESTA")
|
||||||
@@ -462,7 +466,7 @@ class WizardIne(models.TransientModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
ET.SubElement(header_tag, "PLAZAS_DISPONIBLES_SIN_SUPLETORIAS").text = str(
|
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
|
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_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
|
# INE XML -> ROOMS
|
||||||
for key_date, value_rooms in rooms.items():
|
for key_date, value_rooms in rooms.items():
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user