diff options
| author | Thibault Delavallée <tde@odoo.com> | 2017-12-01 13:18:14 +0100 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2018-03-27 16:31:05 +0200 |
| commit | d0e2caee4e046bb38a091320908e9c1ea3e26187 (patch) | |
| tree | 4ef3c154d200348778a2104b753e02c066de1256 /addons/maintenance | |
| parent | 77c7b68a9b7970f64f3f90e854ef45f3cc073e72 (diff) | |
[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;
Diffstat (limited to 'addons/maintenance')
| -rw-r--r-- | addons/maintenance/__manifest__.py | 1 | ||||
| -rw-r--r-- | addons/maintenance/data/mail_data.xml | 7 | ||||
| -rw-r--r-- | addons/maintenance/models/maintenance.py | 24 | ||||
| -rw-r--r-- | addons/maintenance/security/ir.model.access.csv | 3 | ||||
| -rw-r--r-- | addons/maintenance/views/mail_activity_views.xml | 17 |
5 files changed, 51 insertions, 1 deletions
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 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> <data> + <!-- Maintenance-specific activities, for automatic generation mainly --> + <record id="mail_act_maintenance_request" model="mail.activity.type"> + <field name="name">Maintenance Request</field> + <field name="icon">fa-wrench</field> + <field name="res_model_id" ref="maintenance.model_maintenance_request"/> + </record> + <!-- email alias for maintenance requests --> <record id="mail_alias_equipment" model="mail.alias"> <field name="alias_name">helpdesk</field> 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 <a href="#" data-oe-model="%s" data-oe-id="%s">%s</a>') % ( + 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 @@ +<?xml version="1.0"?> +<odoo> + <!-- Activity types config --> + <record id="mail_activity_type_action_config_maintenance" model="ir.actions.act_window"> + <field name="name">Activity Types</field> + <field name="res_model">mail.activity.type</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="domain">['|', ('res_model_id', '=', False), ('res_model_id.model', '=', 'maintenance.request')]</field> + <field name="context">{'default_res_model': 'maintenance.request'}</field> + </record> + <menuitem id="maintenance_menu_config_activity_type" + action="mail_activity_type_action_config_maintenance" + parent="menu_maintenance_configuration" + sequence="20" + groups="base.group_no_one"/> +</odoo>
\ No newline at end of file |
