diff options
| -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 |
