summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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