diff --git a/pms_api_rest/datamodels/pms_property.py b/pms_api_rest/datamodels/pms_property.py index 0e2a7c6bf..ffe7bbae3 100644 --- a/pms_api_rest/datamodels/pms_property.py +++ b/pms_api_rest/datamodels/pms_property.py @@ -27,3 +27,4 @@ class PmsPropertyInfo(Datamodel): simpleOutColor = fields.String(required=False, allow_none=True) simpleInColor = fields.String(required=False, allow_none=True) simpleFutureColor = fields.String(required=False, allow_none=True) + availabilityRuleFields = fields.List(fields.String(), required=False, allow_none=True) diff --git a/pms_api_rest/models/pms_property.py b/pms_api_rest/models/pms_property.py index a9c224253..5482dc38c 100644 --- a/pms_api_rest/models/pms_property.py +++ b/pms_api_rest/models/pms_property.py @@ -82,3 +82,21 @@ class PmsProperty(models.Model): help="Color for pending payment reservations in the planning.", default="rgba(162,70,137)", ) + + availability_rule_field_ids = fields.Many2many( + string="Availability Rules", + help="Configurable availability rules", + default=lambda x: x._get_default_avail_rule_fields(), + comodel_name="ir.model.fields", + relation="ir_model_fields_pms_property_rel", + column1="ir_model_fields", + column2="pms_property", + + ) + + def _get_default_avail_rule_fields(self): + avail_rule_fields = self.env['ir.model.fields'].search([('model_id', '=', 'pms.availability.plan.rule'), ('name', 'in', ('min_stay', 'quota'))]) + if avail_rule_fields: + return avail_rule_fields.ids + else: + return [] diff --git a/pms_api_rest/services/pms_availability_plan_service.py b/pms_api_rest/services/pms_availability_plan_service.py index 8ee6077a6..cc9382038 100644 --- a/pms_api_rest/services/pms_availability_plan_service.py +++ b/pms_api_rest/services/pms_availability_plan_service.py @@ -220,14 +220,13 @@ class PmsAvailabilityPlanService(Component): vals.update( {"max_stay_arrival": pms_avail_plan_rule_info.maxStayArrival} ) - if pms_avail_plan_rule_info.closed: - vals.update({"closed": pms_avail_plan_rule_info.closed}) - if pms_avail_plan_rule_info.closedDeparture: - vals.update( - {"closed_departure": pms_avail_plan_rule_info.closedDeparture} - ) - if pms_avail_plan_rule_info.closedArrival: - vals.update({"closed_arrival": pms_avail_plan_rule_info.closedArrival}) if pms_avail_plan_rule_info.quota: vals.update({"quota": pms_avail_plan_rule_info.quota}) + vals.update( + { + "closed": pms_avail_plan_rule_info.closed, + "closed_departure": pms_avail_plan_rule_info.closedDeparture, + "closed_arrival": pms_avail_plan_rule_info.closedArrival + } + ) avail_rule.write(vals) diff --git a/pms_api_rest/services/pms_property_service.py b/pms_api_rest/services/pms_property_service.py index d889e3237..dcbcc0dee 100644 --- a/pms_api_rest/services/pms_property_service.py +++ b/pms_api_rest/services/pms_property_service.py @@ -28,6 +28,9 @@ class PmsPropertyService(Component): for prop in self.env["pms.property"].search( domain, ): + avail_rule_names = [] + for avail_field in prop.availability_rule_field_ids: + avail_rule_names.append(avail_field.name) result_properties.append( PmsPropertyInfo( id=prop.id, @@ -46,6 +49,7 @@ class PmsPropertyService(Component): simpleOutColor=prop.simple_out_color, simpleInColor=prop.simple_in_color, simpleFutureColor=prop.simple_future_color, + availabilityRuleFields=avail_rule_names, ) ) return result_properties @@ -65,10 +69,13 @@ class PmsPropertyService(Component): def get_property(self, property_id): pms_property = self.env["pms.property"].search([("id", "=", property_id)]) res = [] + avail_rule_names = [] PmsPropertyInfo = self.env.datamodels["pms.property.info"] if not pms_property: pass else: + for avail_field in pms_property.availability_rule_field_ids: + avail_rule_names.append(avail_field.name) res = PmsPropertyInfo( id=pms_property.id, name=pms_property.name, @@ -84,6 +91,7 @@ class PmsPropertyService(Component): staffReservationColor=pms_property.staff_reservation_color, toAssignReservationColor=pms_property.to_assign_reservation_color, pendingPaymentReservationColor=pms_property.pending_payment_reservation_color, + availabilityRuleFields=avail_rule_names ) return res diff --git a/pms_api_rest/views/pms_property_views.xml b/pms_api_rest/views/pms_property_views.xml index cc3afd76e..8c6c35ec6 100644 --- a/pms_api_rest/views/pms_property_views.xml +++ b/pms_api_rest/views/pms_property_views.xml @@ -71,6 +71,14 @@ attrs="{'invisible': [('color_option_config', '!=', 'advanced')]}" /> + + +