diff --git a/pms_api_rest/__manifest__.py b/pms_api_rest/__manifest__.py
index 90e77815a..e235886f1 100644
--- a/pms_api_rest/__manifest__.py
+++ b/pms_api_rest/__manifest__.py
@@ -20,6 +20,7 @@
"data": [
"data/auth_jwt_validator.xml",
"views/pms_property_views.xml",
+ "views/res_users_views.xml"
],
"installable": True,
}
diff --git a/pms_api_rest/datamodels/pms_property.py b/pms_api_rest/datamodels/pms_property.py
index ffe7bbae3..0e2a7c6bf 100644
--- a/pms_api_rest/datamodels/pms_property.py
+++ b/pms_api_rest/datamodels/pms_property.py
@@ -27,4 +27,3 @@ 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/datamodels/pms_user.py b/pms_api_rest/datamodels/pms_user.py
index a3b390071..2c2dee967 100644
--- a/pms_api_rest/datamodels/pms_user.py
+++ b/pms_api_rest/datamodels/pms_user.py
@@ -18,3 +18,4 @@ class PmsApiRestUserOutput(Datamodel):
userImageBase64 = fields.String(required=False, allow_none=True)
defaultPropertyId = fields.Integer(required=True, allow_none=False)
defaultPropertyName = fields.String(required=True, allow_none=False)
+ availabilityRuleFields = fields.List(fields.String(), required=False, allow_none=True)
diff --git a/pms_api_rest/models/__init__.py b/pms_api_rest/models/__init__.py
index 9216f6ffd..49652c702 100644
--- a/pms_api_rest/models/__init__.py
+++ b/pms_api_rest/models/__init__.py
@@ -1 +1,2 @@
from . import pms_property
+from . import res_users
diff --git a/pms_api_rest/models/pms_property.py b/pms_api_rest/models/pms_property.py
index 5482dc38c..a9c224253 100644
--- a/pms_api_rest/models/pms_property.py
+++ b/pms_api_rest/models/pms_property.py
@@ -82,21 +82,3 @@ 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/models/res_users.py b/pms_api_rest/models/res_users.py
new file mode 100644
index 000000000..cb2c94328
--- /dev/null
+++ b/pms_api_rest/models/res_users.py
@@ -0,0 +1,23 @@
+from odoo import fields, models
+
+
+class ResUsers(models.Model):
+ _inherit = "res.users"
+
+ availability_rule_field_ids = fields.Many2many(
+ string="Availability Rules",
+ help="Configurable availability rules",
+ default=lambda self: self._get_default_avail_rule_fields(),
+ comodel_name="ir.model.fields",
+ relation="ir_model_fields_res_users_rel",
+ column1="ir_model_fields",
+ column2="res_users",
+
+ )
+
+ def _get_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 cc9382038..c5a2c9077 100644
--- a/pms_api_rest/services/pms_availability_plan_service.py
+++ b/pms_api_rest/services/pms_availability_plan_service.py
@@ -134,7 +134,7 @@ class PmsAvailabilityPlanService(Component):
closed=rule.closed,
closedDeparture=rule.closed_departure,
closedArrival=rule.closed_arrival,
- quota=rule.quota,
+ quota=rule.quota if rule.quota != -1 else 0,
)
result.append(availability_plan_rule_info)
@@ -208,25 +208,14 @@ class PmsAvailabilityPlanService(Component):
]
)
if avail_rule:
- 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.quota:
- vals.update({"quota": pms_avail_plan_rule_info.quota})
- vals.update(
+ 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
}
)
- avail_rule.write(vals)
diff --git a/pms_api_rest/services/pms_login_service.py b/pms_api_rest/services/pms_login_service.py
index 72ea073ac..95f650437 100644
--- a/pms_api_rest/services/pms_login_service.py
+++ b/pms_api_rest/services/pms_login_service.py
@@ -60,6 +60,9 @@ class PmsLoginService(Component):
key="pms_secret_key_example",
algorithm=jwt.ALGORITHMS.HS256,
)
+ avail_rule_names = []
+ for avail_field in user_record.availability_rule_field_ids:
+ avail_rule_names.append(avail_field.name)
return PmsApiRestUserOutput(
token=token,
@@ -69,4 +72,5 @@ class PmsLoginService(Component):
defaultPropertyId=user_record.pms_property_id.id,
defaultPropertyName=user_record.pms_property_id.name,
userImageBase64=user_record.partner_id.image_1024,
+ availabilityRuleFields=avail_rule_names,
)
diff --git a/pms_api_rest/services/pms_property_service.py b/pms_api_rest/services/pms_property_service.py
index dcbcc0dee..042047941 100644
--- a/pms_api_rest/services/pms_property_service.py
+++ b/pms_api_rest/services/pms_property_service.py
@@ -28,9 +28,6 @@ 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,
@@ -49,7 +46,6 @@ 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
@@ -74,8 +70,6 @@ class PmsPropertyService(Component):
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,
@@ -91,7 +85,6 @@ 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 8c6c35ec6..cc3afd76e 100644
--- a/pms_api_rest/views/pms_property_views.xml
+++ b/pms_api_rest/views/pms_property_views.xml
@@ -71,14 +71,6 @@
attrs="{'invisible': [('color_option_config', '!=', 'advanced')]}"
/>
-
-
-
diff --git a/pms_api_rest/views/res_users_views.xml b/pms_api_rest/views/res_users_views.xml
new file mode 100644
index 000000000..731260c72
--- /dev/null
+++ b/pms_api_rest/views/res_users_views.xml
@@ -0,0 +1,22 @@
+
+
+
+ User Properties fields
+ res.users
+
+
+
+
+
+
+
+
+
+
+
+