diff --git a/pms_base/data/pms_amenity_type.xml b/pms_base/data/pms_amenity_type.xml
index 65757707b..aecdf2052 100644
--- a/pms_base/data/pms_amenity_type.xml
+++ b/pms_base/data/pms_amenity_type.xml
@@ -12,4 +12,16 @@
Kitchen facilities
+
+ Laundry Room
+
+
+
+ Parking Lot
+
+
+
+ Pets
+
+
diff --git a/pms_base/data/pms_room_type.xml b/pms_base/data/pms_room_type.xml
index 18615b0fa..48c694d33 100644
--- a/pms_base/data/pms_room_type.xml
+++ b/pms_base/data/pms_room_type.xml
@@ -75,4 +75,24 @@
90
+
+ Laundry Room
+ 100
+
+
+
+ Parking Lot
+ 110
+
+
+
+ Pets
+ 120
+
+
+
+ Half Bathroom
+ 130
+
+
diff --git a/pms_base/models/pms_property.py b/pms_base/models/pms_property.py
index bbc04f0dd..2c5a9f0be 100644
--- a/pms_base/models/pms_property.py
+++ b/pms_base/models/pms_property.py
@@ -13,6 +13,9 @@ class PmsProperty(models.Model):
_inherit = ["mail.thread", "mail.activity.mixin"]
_inherits = {"res.partner": "partner_id"}
+ def _default_team_id(self):
+ return self.env.ref("pms_base.pms_team_default", raise_if_not_found=False)
+
partner_id = fields.Many2one(
string="Property",
help="Current property",
@@ -83,7 +86,9 @@ class PmsProperty(models.Model):
childs_property_count = fields.Integer(
"Children Count", compute="_compute_childs_property"
)
- team_id = fields.Many2one("pms.team", string="Team")
+ team_id = fields.Many2one(
+ "pms.team", string="Team", default=lambda self: self._default_team_id()
+ )
floors_num = fields.Integer(string="Floor")
unit_floor = fields.Integer(string="Unit Floor")
balcony = fields.Boolean(string="Balcony", compute="_compute_balcony", store=True)
@@ -119,39 +124,114 @@ class PmsProperty(models.Model):
@api.depends("room_ids")
def _compute_balcony(self):
- self.balcony = False
+ type_id = self.env.ref(
+ "pms_base.pms_room_type_balcony", raise_if_not_found=False
+ )
+ balcony = len(self.room_ids.filtered(lambda x: x.type_id == type_id))
+ if balcony:
+ self.balcony = True
+ else:
+ self.balcony = False
@api.depends("room_ids", "amenity_ids")
def _compute_laundry_room(self):
- self.laundry_room = False
+ room_type_id = self.env.ref(
+ "pms_base.pms_room_type_laundry", raise_if_not_found=False
+ )
+ amenity_type_id = self.env.ref(
+ "pms_base.pms_amenity_type_3", raise_if_not_found=False
+ )
+ room_count_laundry = len(
+ self.room_ids.filtered(lambda x: x.type_id == room_type_id)
+ )
+ amenity_count_laundry = len(
+ self.amenity_ids.filtered(lambda x: x.type_id == amenity_type_id)
+ )
+ if room_count_laundry or amenity_count_laundry:
+ self.laundry_room = True
+ else:
+ self.laundry_room = False
@api.depends("room_ids", "amenity_ids")
def _compute_parking_lot(self):
- self.parking_lot = False
+ room_type_id = self.env.ref(
+ "pms_base.pms_room_type_parking_lot", raise_if_not_found=False
+ )
+ amenity_type_id = self.env.ref(
+ "pms_base.pms_amenity_type_4", raise_if_not_found=False
+ )
+ room_count_parking = len(
+ self.room_ids.filtered(lambda x: x.type_id == room_type_id)
+ )
+ amenity_count_parking = len(
+ self.amenity_ids.filtered(lambda x: x.type_id == amenity_type_id)
+ )
+ if room_count_parking or amenity_count_parking:
+ self.parking_lot = True
+ else:
+ self.parking_lot = False
@api.depends("room_ids", "amenity_ids")
def _compute_pets(self):
- self.pets = False
+ room_type_id = self.env.ref(
+ "pms_base.pms_room_type_pets", raise_if_not_found=False
+ )
+ amenity_type_id = self.env.ref(
+ "pms_base.pms_amenity_type_5", raise_if_not_found=False
+ )
+ room_count_pets = len(
+ self.room_ids.filtered(lambda x: x.type_id == room_type_id)
+ )
+ amenity_count_pets = len(
+ self.amenity_ids.filtered(lambda x: x.type_id == amenity_type_id)
+ )
+ if room_count_pets or amenity_count_pets:
+ self.pets = True
+ else:
+ self.pets = False
@api.depends("room_ids")
def _compute_terrace(self):
- self.terrace = False
+ type_id = self.env.ref("pms_base.pms_room_type_patio", raise_if_not_found=False)
+ terrace = len(self.room_ids.filtered(lambda x: x.type_id == type_id))
+ if terrace:
+ self.terrace = True
+ else:
+ self.terrace = False
@api.depends("room_ids")
def _compute_qty_half_bathroom(self):
- self.qty_half_bathroom = 0
+ type_id = self.env.ref(
+ "pms_base.pms_room_type_half_bath", raise_if_not_found=False
+ )
+ self.qty_half_bathroom = len(
+ self.room_ids.filtered(lambda x: x.type_id == type_id)
+ )
@api.depends("room_ids")
def _compute_qty_living_room(self):
- self.qty_living_room = 0
+ type_id = self.env.ref(
+ "pms_base.pms_room_type_living", raise_if_not_found=False
+ )
+ self.qty_living_room = len(
+ self.room_ids.filtered(lambda x: x.type_id == type_id)
+ )
@api.depends("room_ids")
def _compute_qty_dining_room(self):
- self.qty_dining_room = 0
+ type_id = self.env.ref(
+ "pms_base.pms_room_type_dining", raise_if_not_found=False
+ )
+ self.qty_dining_room = len(
+ self.room_ids.filtered(lambda x: x.type_id == type_id)
+ )
@api.depends("room_ids")
def _compute_qty_kitchen(self):
- self.qty_kitchen = 0
+ type_id = self.env.ref(
+ "pms_base.pms_room_type_kitchen", raise_if_not_found=False
+ )
+ self.qty_kitchen = len(self.room_ids.filtered(lambda x: x.type_id == type_id))
def action_view_childs_property_list(self):
action = self.env["ir.actions.actions"]._for_xml_id(
diff --git a/pms_base/views/pms_property.xml b/pms_base/views/pms_property.xml
index 756272764..df4c27c97 100644
--- a/pms_base/views/pms_property.xml
+++ b/pms_base/views/pms_property.xml
@@ -130,6 +130,7 @@
+