summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2017-12-01 13:18:14 +0100
committerThibault Delavallée <tde@odoo.com>2018-03-27 16:31:05 +0200
commitd0e2caee4e046bb38a091320908e9c1ea3e26187 (patch)
tree4ef3c154d200348778a2104b753e02c066de1256 /addons
parent77c7b68a9b7970f64f3f90e854ef45f3cc073e72 (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')
-rw-r--r--addons/maintenance/__manifest__.py1
-rw-r--r--addons/maintenance/data/mail_data.xml7
-rw-r--r--addons/maintenance/models/maintenance.py24
-rw-r--r--addons/maintenance/security/ir.model.access.csv3
-rw-r--r--addons/maintenance/views/mail_activity_views.xml17
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