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 @@ +