diff --git a/pms_api_rest/datamodels/pms_availability_plan_rule.py b/pms_api_rest/datamodels/pms_availability_plan_rule.py index e25373f92..be534ecd4 100644 --- a/pms_api_rest/datamodels/pms_availability_plan_rule.py +++ b/pms_api_rest/datamodels/pms_availability_plan_rule.py @@ -23,4 +23,5 @@ class PmsAvailabilityPlanRuleInfo(Datamodel): roomTypeId = fields.Integer(required=False, allow_none=True) date = fields.String(required=False, allow_none=True) quota = fields.Integer(required=False, allow_none=True) + maxAvailability = fields.Integer(required=False, allow_none=True) pmsPropertyId = fields.Integer(required=False, allow_none=True) diff --git a/pms_api_rest/models/res_users.py b/pms_api_rest/models/res_users.py index f6bd3db21..f5a02a57c 100644 --- a/pms_api_rest/models/res_users.py +++ b/pms_api_rest/models/res_users.py @@ -7,21 +7,8 @@ class ResUsers(models.Model): availability_rule_field_ids = fields.Many2many( string="Availability Rules", help="Configurable availability rules", - default=lambda self: self._default_avail_rule_fields(), comodel_name="ir.model.fields", relation="ir_model_fields_res_users_rel", column1="ir_model_fields", column2="res_users", ) - - def _default_avail_rule_fields(self): - default_avail_rule_fields = self.env["ir.model.fields"].search( - [ - ("model_id", "=", "pms.availability.plan.rule"), - ("name", "in", ("min_stay", "quota")), - ] - ) - if default_avail_rule_fields: - return default_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 bf3292d9f..59d0f83a1 100644 --- a/pms_api_rest/services/pms_availability_plan_service.py +++ b/pms_api_rest/services/pms_availability_plan_service.py @@ -135,6 +135,7 @@ class PmsAvailabilityPlanService(Component): closedDeparture=rule.closed_departure, closedArrival=rule.closed_arrival, quota=rule.quota if rule.quota != -1 else 0, + maxAvailability=rule.max_avail, ) result.append(availability_plan_rule_info) @@ -181,6 +182,8 @@ class PmsAvailabilityPlanService(Component): 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}) + if pms_avail_plan_rule_info.maxAvailability: + vals.update({"max_avail": pms_avail_plan_rule_info.maxAvailability}) avail_plan_rule = self.env["pms.availability.plan.rule"].create(vals) return avail_plan_rule.id @@ -207,14 +210,29 @@ class PmsAvailabilityPlanService(Component): ] ) if avail_rule: - avail_rule.write( - { - "min_stay": pms_avail_plan_rule_info.minStay, - "max_stay": pms_avail_plan_rule_info.maxStay, - "max_stay_arrival": pms_avail_plan_rule_info.maxStayArrival, - "quota": pms_avail_plan_rule_info.quota, - "closed": pms_avail_plan_rule_info.closed, - "closed_departure": pms_avail_plan_rule_info.closedDeparture, - "closed_arrival": pms_avail_plan_rule_info.closedArrival, - } - ) + vals = dict() + if pms_avail_plan_rule_info.minStay: + vals.update({"min_stay": pms_avail_plan_rule_info.minStay}) + if pms_avail_plan_rule_info.minStayArrival: + vals.update( + {"min_stay_arrival": pms_avail_plan_rule_info.minStayArrival} + ) + if pms_avail_plan_rule_info.maxStay: + vals.update({"max_stay": pms_avail_plan_rule_info.maxStay}) + if pms_avail_plan_rule_info.maxStayArrival: + 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}) + if pms_avail_plan_rule_info.maxAvailability: + vals.update({"max_avail": pms_avail_plan_rule_info.maxAvailability}) + avail_rule.write(vals) diff --git a/pms_api_rest/views/res_users_views.xml b/pms_api_rest/views/res_users_views.xml index 9f77bf081..0049c4906 100644 --- a/pms_api_rest/views/res_users_views.xml +++ b/pms_api_rest/views/res_users_views.xml @@ -15,7 +15,7 @@ name="availability_rule_field_ids" widget="many2many_tags" options="{'no_create': True}" - domain="['&',('model_id', '=', 'pms.availability.plan.rule'), ('name', 'in', ('min_stay', 'max_stay', 'quota', 'max_stay_arrival', 'closed_arrival', 'closed', 'closed_departure'))]" + domain="['&',('model_id', '=', 'pms.availability.plan.rule'), ('name', 'in', ('min_stay', 'max_stay', 'quota', 'max_stay_arrival', 'closed_arrival', 'closed', 'closed_departure', 'min_stay_arrival', 'max_avail'))]" />