diff --git a/helpdesk_mgmt_rating/__init__.py b/helpdesk_mgmt_rating/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/helpdesk_mgmt_rating/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/helpdesk_mgmt_rating/__manifest__.py b/helpdesk_mgmt_rating/__manifest__.py new file mode 100644 index 0000000000..b818b380bb --- /dev/null +++ b/helpdesk_mgmt_rating/__manifest__.py @@ -0,0 +1,23 @@ +{ + 'name': 'Helpdesk Management Rating', + 'summary': """ + This module allows the customer to rate the assistance received + on a ticket. + """, + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Domatix', + 'website': 'https://www.domatix.com', + 'category': 'Productivity', + 'depends': ['helpdesk_mgmt', 'rating'], + 'data': [ + 'data/helpdesk_data.xml', + 'views/helpdesk_ticket_menu.xml', + 'views/helpdesk_ticket_view.xml', + 'views/helpdesk_ticket_stage_view.xml', + ], + 'qweb': [], + 'demo': [], + 'test': [], + 'installable': True, +} diff --git a/helpdesk_mgmt_rating/data/helpdesk_data.xml b/helpdesk_mgmt_rating/data/helpdesk_data.xml new file mode 100644 index 0000000000..abcd620352 --- /dev/null +++ b/helpdesk_mgmt_rating/data/helpdesk_data.xml @@ -0,0 +1,90 @@ + + + + + Ticket Rating + helpdesk.ticket + + Ratings + + + + Helpdesk Ticket: Rating Request + + ${object.rating_get_rated_partner_id().email or '' | safe} + ${object.rating_get_partner_id().email or '' | safe} + Satisfaction Survey of the ticket ${object.number} - ${object.name} + ${object.rating_get_partner_id().id} + + + + + + +
+ + + Satisfaction Survey +
+ + + + + + +
+

Hello,

+

Please take a moment to rate our services related to the ticket "${object.number} - ${object.name}" + assigned to ${object.rating_get_rated_partner_id().name}.

+

We appreciate your feedback. It helps us to improve continuously.

+
+ + + + + + + +
+

+ Tell us how you feel about our service: +

+
(click on one of these smileys)
+
+ + + + + + +
+ + Satisfied + + + + Not satisfied + + + + Highly Dissatisfied + +
+
+
${(object.user_id.signature or '')| safe}
+ + + + +
+ % if object.rating_status == 'stage_change': +

This customer survey has been sent because your ticket has been moved to the stage ${object.stage_id.name}

+ % endif +
+ + ]]>
+
+
+
diff --git a/helpdesk_mgmt_rating/models/__init__.py b/helpdesk_mgmt_rating/models/__init__.py new file mode 100644 index 0000000000..a4b70bdabc --- /dev/null +++ b/helpdesk_mgmt_rating/models/__init__.py @@ -0,0 +1,2 @@ +from . import helpdesk_ticket +from . import helpdesk_ticket_stage diff --git a/helpdesk_mgmt_rating/models/helpdesk_ticket.py b/helpdesk_mgmt_rating/models/helpdesk_ticket.py new file mode 100644 index 0000000000..3aa4b800d8 --- /dev/null +++ b/helpdesk_mgmt_rating/models/helpdesk_ticket.py @@ -0,0 +1,70 @@ +from openerp import models, api, fields, _ +from odoo.tools.safe_eval import safe_eval + + +class HelpdeskTicket(models.Model): + _name = 'helpdesk.ticket' + _inherit = ['helpdesk.ticket', 'rating.mixin'] + + positive_rate_percentage = fields.Integer( + string='Positive Rates Percentage', + compute="_compute_percentage", + store=True, + default=-1) + + rating_status = fields.Selection( + [('stage_change', 'Rating when changing stage'), + ('no_rate', 'No rating')], + string='Customer Rating', default="stage_change", require=True) + + @api.depends('rating_ids.rating') + def _compute_percentage(self): + for ticket in self: + activity = ticket.rating_get_grades() + ticket.positive_rate_percentage = activity['great'] * 100 / \ + sum(activity.values()) if sum(activity.values()) else -1 + + @api.multi + def write(self, vals): + res = super(HelpdeskTicket, self).write(vals) + if 'stage_id' in vals and vals.get('stage_id'): + stage = self.env['helpdesk.ticket.stage'].search([('id', '=', vals.get('stage_id'))]) + if(stage.rating_mail_template_id): + self._send_ticket_rating_mail(force_send=False) + return res + + def _send_ticket_rating_mail(self, force_send=False): + # for ticket in self: + if self.rating_status == 'stage_change': + survey_template = self.stage_id.rating_mail_template_id + if survey_template: + self.rating_send_request(survey_template, + lang=self.partner_id.lang, + force_send=force_send) + + @api.multi + def rating_apply(self, rate, token=None, feedback=None, subtype=None): + return super(HelpdeskTicket, self).rating_apply(rate, token=token, feedback=feedback, subtype="helpdesk_mgmt_rating.mt_ticket_rating") + + def rating_get_partner_id(self): + res = super(HelpdeskTicket, self).rating_get_partner_id() + if not res and self.partner_id: + return self.partner_id + return res + + def rating_get_parent_model_name(self, vals): + return 'helpdesk.ticket' + + def rating_get_ticket_id(self): + return self.id + + @api.multi + def action_view_ticket_rating(self): + action = self.env['ir.actions.act_window'].for_xml_id( + 'helpdesk_mgmt_rating', 'helpdesk_ticket_rating_action') + action['name'] = _('Ticket Rating') + action_context = safe_eval(action['context']) \ + if action['context'] else {} + action_context.update(self._context) + action_context.pop('group_by', None) + return dict(action, context=action_context) diff --git a/helpdesk_mgmt_rating/models/helpdesk_ticket_stage.py b/helpdesk_mgmt_rating/models/helpdesk_ticket_stage.py new file mode 100644 index 0000000000..00f8a27931 --- /dev/null +++ b/helpdesk_mgmt_rating/models/helpdesk_ticket_stage.py @@ -0,0 +1,12 @@ +from openerp import models, api, fields, _ + + +class HelpdeskTicketStage(models.Model): + _inherit = 'helpdesk.ticket.stage' + + rating_mail_template_id = fields.Many2one( + 'mail.template', + string="Rating Email Template", + domain=[('model', '=', 'helpdesk.ticket')], + help="If set, an email will be sent to the customer " + "with a rating survey when the ticket reaches this stage.") diff --git a/helpdesk_mgmt_rating/readme/CONFIGURE.rst b/helpdesk_mgmt_rating/readme/CONFIGURE.rst new file mode 100644 index 0000000000..fef9a8b1f0 --- /dev/null +++ b/helpdesk_mgmt_rating/readme/CONFIGURE.rst @@ -0,0 +1,17 @@ +To configure this module, you need to: +#. Edit or create stages. +#. Edit or create tickets. + +Stages +~~~~~~ +#. Go to *Helpdesk > Configuration > Stages* to edit or create new stages. +#. Edit or create a new stage. +#. Set the name for the stage. +#. You can select the Email template for rating. + +Tickets +~~~~~~~ +#. Go to *Helpdesk > Ticket* to edit or create new tickets. +#. Edit or create a new ticket. +#. Set the name for the ticket. +#. Select if the ticket should be qualified or not. diff --git a/helpdesk_mgmt_rating/readme/CONTRIBUTORS.rst b/helpdesk_mgmt_rating/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..31167c1876 --- /dev/null +++ b/helpdesk_mgmt_rating/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Domatix `_: + + * Samuel Calvo diff --git a/helpdesk_mgmt_rating/readme/DESCRIPTION.rst b/helpdesk_mgmt_rating/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..b73c3541ae --- /dev/null +++ b/helpdesk_mgmt_rating/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds the posibility to rate the assistance received through helpdesk tickets. diff --git a/helpdesk_mgmt_rating/views/helpdesk_ticket_menu.xml b/helpdesk_mgmt_rating/views/helpdesk_ticket_menu.xml new file mode 100644 index 0000000000..3412b72cce --- /dev/null +++ b/helpdesk_mgmt_rating/views/helpdesk_ticket_menu.xml @@ -0,0 +1,35 @@ + + + + + Customer Rating + ir.actions.act_window + rating.rating + kanban + form + [('res_model', '=', 'helpdesk.ticket'), ('consumed', '=', True)] + +

+ There are no rated tickets at this moment. +

+
+
+ + + + ir.actions.act_window + rating.rating + kanban + form + [('consumed','=',True), ('res_model','=','helpdesk.ticket'), ('res_id', '=', active_id)] + +

+ There are no ratings for this ticket at the moment. +

+
+
+ + +
+
diff --git a/helpdesk_mgmt_rating/views/helpdesk_ticket_stage_view.xml b/helpdesk_mgmt_rating/views/helpdesk_ticket_stage_view.xml new file mode 100644 index 0000000000..2ae328d289 --- /dev/null +++ b/helpdesk_mgmt_rating/views/helpdesk_ticket_stage_view.xml @@ -0,0 +1,24 @@ + + + + view.helpdesk.ticket.stage.form.inherit + helpdesk.ticket.stage + + + + + + + + + + view.helpdesk.ticket.stage.tree.inherit + helpdesk.ticket.stage + + + + + + + + diff --git a/helpdesk_mgmt_rating/views/helpdesk_ticket_view.xml b/helpdesk_mgmt_rating/views/helpdesk_ticket_view.xml new file mode 100644 index 0000000000..345e2bafd2 --- /dev/null +++ b/helpdesk_mgmt_rating/views/helpdesk_ticket_view.xml @@ -0,0 +1,49 @@ + + + + view.helpdesk.ticket.kanban.inherit + helpdesk.ticket + + + + + + + No rating yet + + + + % + + + + + +
  • Customer Rating
  • +
    +
    +
    + + + ticket.view.form.inherit + helpdesk.ticket + + + + +
    + +
    +
    + + + + + +
    +
    + +