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