[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;
This commit is contained in:
@@ -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'],
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
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
|
||||
|
@@ -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>
|
||||
Reference in New Issue
Block a user