diff --git a/odex25_realstate/property_management/views/end_rent_views.xml b/odex25_realstate/property_management/views/end_rent_views.xml
index a9646341e..179980396 100644
--- a/odex25_realstate/property_management/views/end_rent_views.xml
+++ b/odex25_realstate/property_management/views/end_rent_views.xml
@@ -175,7 +175,7 @@
@@ -252,4 +252,4 @@
-
\ No newline at end of file
+
diff --git a/odex25_realstate/real_estate/models/internal_property.py b/odex25_realstate/real_estate/models/internal_property.py
index 2951c903e..0b266a89a 100644
--- a/odex25_realstate/real_estate/models/internal_property.py
+++ b/odex25_realstate/real_estate/models/internal_property.py
@@ -18,6 +18,27 @@ class Property(models.Model):
_inherit = ['mail.thread', 'mail.activity.mixin']
_order = "id desc"
+ # Smart button to count related maintenance records
+ maintenance_count = fields.Integer(string="Maintenance Count", compute='_compute_maintenance_count')
+
+ def _compute_maintenance_count(self):
+ for record in self:
+ record.maintenance_count = self.env['property.management.maintenance'].search_count([
+ ('property_id', '=', record.id)
+ ])
+
+ def action_view_maintenance(self):
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': 'Maintenance',
+ 'view_mode': 'tree,form',
+ 'res_model': 'property.management.maintenance',
+ 'domain': [('property_id', '=', self.id)],
+ 'context': dict(self.env.context),
+ }
+
+ # Inherit the form view and add the button
+
@api.model
def _default_image(self):
image_path = get_module_resource('real_estate', 'static/src/img', 'default_logo.png')
diff --git a/odex25_realstate/real_estate/models/re_unit.py b/odex25_realstate/real_estate/models/re_unit.py
index 59ee3722c..33d58ad8f 100644
--- a/odex25_realstate/real_estate/models/re_unit.py
+++ b/odex25_realstate/real_estate/models/re_unit.py
@@ -72,7 +72,25 @@ class Unit(models.Model):
_sql_constraints = [
('name', 'unique(name)', _('Name must be unique.')),
]
+ # Smart button to count related maintenance records
+ maintenance_count = fields.Integer(string="Maintenance Count", compute='_compute_maintenance_count')
+ def _compute_maintenance_count(self):
+ for record in self:
+ record.maintenance_count = self.env['property.management.maintenance'].search_count([
+ ('unit_ids', 'in', record.id)
+ ])
+
+ def action_view_maintenance(self):
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': 'Maintenance',
+ 'view_mode': 'tree,form',
+ 'res_model': 'property.management.maintenance',
+ 'domain': [('unit_ids', 'in', self.id)],
+ 'context': dict(self.env.context),
+ }
+
@api.depends('state')
def set_color(self):
for record in self:
diff --git a/odex25_realstate/real_estate/views/internal_property_views.xml b/odex25_realstate/real_estate/views/internal_property_views.xml
index 5ebcd9b23..afc0e4b7d 100644
--- a/odex25_realstate/real_estate/views/internal_property_views.xml
+++ b/odex25_realstate/real_estate/views/internal_property_views.xml
@@ -34,6 +34,9 @@
+
diff --git a/odex25_realstate/real_estate/views/re_unit_view.xml b/odex25_realstate/real_estate/views/re_unit_view.xml
index b37302feb..cbef6cada 100644
--- a/odex25_realstate/real_estate/views/re_unit_view.xml
+++ b/odex25_realstate/real_estate/views/re_unit_view.xml
@@ -25,6 +25,10 @@
Unlock
Lock
+
+