From d0e2caee4e046bb38a091320908e9c1ea3e26187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 1 Dec 2017 13:18:14 +0100 Subject: [PATCH] [IMP] maintenance: improve activity management on maintenance request model This commit improves maintenance requests management through a better integration of activities and addition of automated activities. Several things are done in this commit : * automatic activities generation is added for maintenance requests. Activities are generated to remind assigned users about maintenance to perform. They are also automatically removed or updated if the scheduled date is changed or if the request is done to avoid bloating users with unnecessary activities; * a menu to configure activity types is added. Indeed equipment managers should be able to see and configure activity types related to their job; --- addons/maintenance/__manifest__.py | 1 + addons/maintenance/data/mail_data.xml | 7 ++++++ addons/maintenance/models/maintenance.py | 24 +++++++++++++++++++ .../maintenance/security/ir.model.access.csv | 3 ++- .../maintenance/views/mail_activity_views.xml | 17 +++++++++++++ 5 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 addons/maintenance/views/mail_activity_views.xml 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