Purpose: For our internal project management, we would like to track the customer satisfaction on the open projects. We send them an email every one or 2 weeks allowing them to give a feedback by clicking on one of 3 smileys: Happy, Average, Angry. They can also put a additional explanation. We already have something similar which is working on livechat with a unusable reporting, and on issues but unusable. Our project are managed by tasks. Specification: - On the project : Selection fields : (Periodical Rating or Rating on Stage) + Fields to choose the period if periodical - On the stage : email_template_id field. - IF : ---> Periodical : Send an email to all the customers for the tasks on this stage periodically ---> On Stage : Send an email to the customer's tasks when the task reaches the stage - That way, it's impossible to send a satisfaction request both periodically and sequentially. FP request - Who is the customer : The customer on the task OR the customer on the related sales order OR the customer on the projet OR nobody - The last feedback is displayed on the task kanban card (Thumb up, down, or neutral) - On the project kanban card, the customer satisfaction is displayed. This is the simple mean of all the previous ratings.
17 lines
579 B
Python
17 lines
579 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import fields, models
|
|
|
|
|
|
class ResPartner(models.Model):
|
|
_inherit = 'res.partner'
|
|
|
|
issue_count = fields.Integer(compute='_compute_issue_count', string='# Issues')
|
|
|
|
def _compute_issue_count(self):
|
|
Issue = self.env['project.issue']
|
|
partners = {id: self.search([('id', 'child_of', self.ids)]).ids for id in self.ids}
|
|
for partner in self:
|
|
partner.issue_count = Issue.search_count([('partner_id', 'in', partners[partner.id])])
|