diff --git a/addons/maintenance/__manifest__.py b/addons/maintenance/__manifest__.py index 80925151e65..d40bdbe3d9e 100644 --- a/addons/maintenance/__manifest__.py +++ b/addons/maintenance/__manifest__.py @@ -16,6 +16,7 @@ 'data/mail_data.xml', 'views/maintenance_views.xml', 'views/maintenance_templates.xml', + 'views/mail_activity_views.xml', 'data/maintenance_cron.xml', ], 'demo': ['data/maintenance_demo.xml'], diff --git a/addons/maintenance/data/mail_data.xml b/addons/maintenance/data/mail_data.xml index 74a3a6abe9d..c7b3945b0c7 100644 --- a/addons/maintenance/data/mail_data.xml +++ b/addons/maintenance/data/mail_data.xml @@ -1,6 +1,13 @@ + + + Maintenance Request + fa-wrench + + + helpdesk diff --git a/addons/maintenance/models/maintenance.py b/addons/maintenance/models/maintenance.py index 47bcf0a95b3..e324123595f 100644 --- a/addons/maintenance/models/maintenance.py +++ b/addons/maintenance/models/maintenance.py @@ -336,6 +336,7 @@ class MaintenanceRequest(models.Model): request._add_followers() if request.equipment_id and not request.maintenance_team_id: request.maintenance_team_id = request.equipment_id.maintenance_team_id + request.activity_update() return request @api.multi @@ -349,8 +350,31 @@ class MaintenanceRequest(models.Model): self._add_followers() if self.stage_id.done and 'stage_id' in vals: self.write({'close_date': fields.Date.today()}) + self.activity_feedback(['maintenance.mail_act_maintenance_request']) + if 'schedule_date' in vals: + self.activity_update() return res + def activity_update(self): + """ Update maintenance activities based on current record set state. + It reschedule, unlink or create maintenance request activities. """ + self.filtered(lambda request: not request.schedule_date).activity_unlink(['maintenance.mail_act_maintenance_request']) + for request in self.filtered(lambda request: request.schedule_date): + date_dl = fields.Datetime.from_string(request.schedule_date).date() + updated = request.activity_reschedule( + ['maintenance.mail_act_maintenance_request'], + date_deadline=date_dl) + if not updated: + if request.equipment_id: + note = _('Request planned for %s') % ( + request.equipment_id._name, request.equipment_id.id, request.equipment_id.display_name) + else: + note = False + request.activity_schedule( + 'maintenance.mail_act_maintenance_request', + fields.Datetime.from_string(request.schedule_date).date(), + note=note, user_id=request.technician_user_id.id or request.owner_user_id.id or self.env.uid) + def _add_followers(self): for request in self: user_ids = (request.owner_user_id + request.technician_user_id).ids diff --git a/addons/maintenance/security/ir.model.access.csv b/addons/maintenance/security/ir.model.access.csv index 264be46b68e..a4609810350 100644 --- a/addons/maintenance/security/ir.model.access.csv +++ b/addons/maintenance/security/ir.model.access.csv @@ -7,4 +7,5 @@ access_equipment_category_admin_user,equipment.category system user,model_mainte access_maintenance_stage_user,maintenance.stage.user,model_maintenance_stage,base.group_user,1,0,0,0 access_maintenance_stage_admin_user,equipment.request.stage system user,model_maintenance_stage,group_equipment_manager,1,1,1,1 access_maintenance_team_user,maintenance.team.user,model_maintenance_team,base.group_user,1,0,0,0 -access_maintenance_team_admin_user,maintenance.team.admin.user,model_maintenance_team,group_equipment_manager,1,1,1,1 \ No newline at end of file +access_maintenance_team_admin_user,maintenance.team.admin.user,model_maintenance_team,group_equipment_manager,1,1,1,1 +access_mail_activity_type_equipment_manager,mail.activity.type.equipment.manager,mail.model_mail_activity_type,maintenance.group_equipment_manager,1,1,1,1 \ No newline at end of file diff --git a/addons/maintenance/views/mail_activity_views.xml b/addons/maintenance/views/mail_activity_views.xml new file mode 100644 index 00000000000..1768df708a3 --- /dev/null +++ b/addons/maintenance/views/mail_activity_views.xml @@ -0,0 +1,17 @@ + + + + + Activity Types + mail.activity.type + form + tree,form + ['|', ('res_model_id', '=', False), ('res_model_id.model', '=', 'maintenance.request')] + {'default_res_model': 'maintenance.request'} + + + \ No newline at end of file