Browse Source

[ADD] survey_partner_input module

12.0
Rémi FRANÇOIS 5 years ago
parent
commit
3ddd302326
  1. 1
      survey_partner_input/__init__.py
  2. 32
      survey_partner_input/__manifest__.py
  3. 55
      survey_partner_input/i18n/fr.po
  4. 56
      survey_partner_input/i18n/survey_partner_input.pot
  5. 1
      survey_partner_input/models/__init__.py
  6. 54
      survey_partner_input/models/res_partner.py
  7. 28
      survey_partner_input/views/res_partner.xml

1
survey_partner_input/__init__.py

@ -0,0 +1 @@
from . import models

32
survey_partner_input/__manifest__.py

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'Survey partner answers',
'version': '1.0.0',
'summary': """
This module displays a counter and a percent pie on partner survey answers statistics in form stat-buttons.
""",
'description': """ """,
'author': 'Sudokeys',
'website': 'http://www.sudokeys.com',
'license': 'AGPL-3',
'category': 'Marketing',
'depends': [
'survey',
],
'data': [
'views/res_partner.xml',
],
'demo': [],
'auto_install': False,
'external_dependencies': [],
'application': False,
'css': [],
'images': [],
'js': [],
'installable': True,
'maintainer': 'Sudokeys',
'pre_init_hook': '',
'post_init_hook': '',
'uninstall_hook': '',
}

55
survey_partner_input/i18n/fr.po

@ -0,0 +1,55 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * survey_partner_input
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-25 22:46+0000\n"
"PO-Revision-Date: 2020-03-25 22:46+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: survey_partner_input
#: model_terms:ir.ui.view,arch_db:survey_partner_input.res_partner_form
msgid "Answers"
msgstr "Réponses"
#. module: survey_partner_input
#: model_terms:ir.ui.view,arch_db:survey_partner_input.res_partner_form
msgid "Completed"
msgstr "Répondu"
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__tot_sent_comp_survey
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__tot_sent_comp_survey
msgid "Completed sent survey count"
msgstr "Réponses privées terminées"
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__sent_comp_ratio
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__sent_comp_ratio
msgid "Completed sent survey ratio"
msgstr "Ratio de réponses privées terminées"
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__tot_comp_survey
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__tot_comp_survey
msgid "Completed survey count"
msgstr "Réponses terminées"
#. module: survey_partner_input
#: model:ir.model,name:survey_partner_input.model_res_partner
msgid "Contact"
msgstr "Contact"
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__tot_sent_survey
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__tot_sent_survey
msgid "Sent survey count"
msgstr "Sondages envoyés en privé"

56
survey_partner_input/i18n/survey_partner_input.pot

@ -0,0 +1,56 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * survey_partner_input
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-25 22:42+0000\n"
"PO-Revision-Date: 2020-03-25 22:42+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: survey_partner_input
#: model_terms:ir.ui.view,arch_db:survey_partner_input.res_partner_form
msgid "Answers"
msgstr ""
#. module: survey_partner_input
#: model_terms:ir.ui.view,arch_db:survey_partner_input.res_partner_form
msgid "Completed"
msgstr ""
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__tot_sent_comp_survey
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__tot_sent_comp_survey
msgid "Completed sent survey count"
msgstr ""
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__sent_comp_ratio
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__sent_comp_ratio
msgid "Completed sent survey ratio"
msgstr ""
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__tot_comp_survey
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__tot_comp_survey
msgid "Completed survey count"
msgstr ""
#. module: survey_partner_input
#: model:ir.model,name:survey_partner_input.model_res_partner
msgid "Contact"
msgstr ""
#. module: survey_partner_input
#: model:ir.model.fields,field_description:survey_partner_input.field_res_partner__tot_sent_survey
#: model:ir.model.fields,field_description:survey_partner_input.field_res_users__tot_sent_survey
msgid "Sent survey count"
msgstr ""

1
survey_partner_input/models/__init__.py

@ -0,0 +1 @@
from . import res_partner

54
survey_partner_input/models/res_partner.py

@ -0,0 +1,54 @@
from odoo import models, fields, api
class ResPartner(models.Model):
_inherit = 'res.partner'
tot_sent_survey = fields.Integer("Sent survey count", compute="_count_survey_input")
tot_comp_survey = fields.Integer("Completed survey count", compute="_count_survey_input")
tot_sent_comp_survey = fields.Integer("Completed sent survey count", compute="_count_survey_input")
sent_comp_ratio = fields.Integer(string="Completed sent survey ratio", compute="_get_sent_comp_ratio")
# COMPUTES
@api.multi
def _count_survey_input(self):
UserInput = self.env['survey.user_input']
partners_survey = UserInput
in_onchange = self.env.in_onchange
origin = in_onchange and self._origin or False
if in_onchange:
domain = [
('partner_id', '=', self._origin.id),
'|', ('type', '=', 'link'),
('state', '=', 'dones'),
]
if self.email:
domain = ['|', ('email', '=', self.email)] + domain
partners_survey = UserInput.search(domain)
else:
partners_survey = UserInput.search([
'|', ('partner_id', 'in', self.ids),
('email', 'in', self.filtered('email').mapped('email')),
'|', ('type', '=', 'link'),
('state', '=', 'done'),
])
for partner in self:
done = partners_survey.filtered(lambda sui: (sui.partner_id == (origin or partner) or partner.email and sui.email == partner.email) and sui.state == 'done')
link = partners_survey.filtered(lambda sui: (sui.partner_id == (origin or partner) or partner.email and sui.email == partner.email) and sui.type == 'link')
partner.tot_sent_survey = len(link)
partner.tot_comp_survey = len(done)
partner.tot_sent_comp_survey = len(link & done)
@api.depends('tot_sent_comp_survey', 'tot_sent_survey')
def _get_sent_comp_ratio(self):
for survey in self:
if survey.tot_sent_survey == 0:
survey.sent_comp_ratio = 0
else:
survey.sent_comp_ratio = int(round(100 * survey.tot_sent_comp_survey / survey.tot_sent_survey, 0))
@api.onchange('email')
def onchange_email(self):
if isinstance(self._origin.id, int):
self._count_survey_input()

28
survey_partner_input/views/res_partner.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_partner_form" model="ir.ui.view">
<field name="name">survey_partner_input res.partner form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="priority">24</field>
<field name="arch" type="xml">
<xpath expr="//div[@name='button_box']/button[1]" position="before">
<button type="object" name="action_survey_user_input"
context="{'search_default_completed':1, 'link_only':1, 'search_default_partner_id': id}"
attrs="{'invisible':[('tot_sent_survey','=',0)]}" class="oe_stat_button">
<field string="Completed" name="sent_comp_ratio" widget="percentpie"/>
</button>
<button type="object" name="action_survey_user_input" class="oe_stat_button" icon="fa-pencil-square-o"
context="{'search_default_completed':1, 'link_only':1, 'search_default_partner_id': id}">
<field string="Answers" name="tot_comp_survey" widget="statinfo"/>
</button>
</xpath>
<xpath expr="//div[hasclass('oe_title')]" position="after">
<field name="tot_sent_survey" invisible="1"/>
<field name="tot_sent_comp_survey" invisible="1"/>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save