Skip to content
Extraits de code Groupes Projets
Valider 2080b6fb rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[MIG] Make module installable in v12

parent 73d865df
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -3,23 +3,25 @@ ...@@ -3,23 +3,25 @@
:alt: License: AGPL-3 :alt: License: AGPL-3
====================== =================
Le Filament - CRM Le Filament - CRM
====================== =================
Hérite du module CRM Hérite du module CRM
- Ajoute un rapport sur le temps de conversion
- Ajoute un champ sur le type d'apporteur d'affaire et le partner associé * Ajoute un champ sur le type d'apporteur d'affaire et le partner associé
Credits Credits
======= =======
Contributors ------------ Contributors
------------
* Benjamin Rivier <benjamin@le-filament.com> * Benjamin Rivier <benjamin@le-filament.com>
Maintainer ---------- Maintainer
----------
.. image:: https://le-filament.com/images/logo-lefilament.png .. image:: https://le-filament.com/images/logo-lefilament.png
:alt: Le Filament :alt: Le Filament
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import models from . import models
import report
\ No newline at end of file
...@@ -5,30 +5,18 @@ ...@@ -5,30 +5,18 @@
{ {
'name': 'Le Filament - CRM', 'name': 'Le Filament - CRM',
'summary': "CRM Le Filament",
'summary': """
CRM Le Filament
- Ajoute un rapport sur le temps de conversion
""",
'version': '10.0.1.0', 'version': '10.0.1.0',
'license': 'AGPL-3', 'license': 'AGPL-3',
'description': """
""",
'author': 'LE FILAMENT', 'author': 'LE FILAMENT',
'category': 'Project', 'category': 'Project',
'depends': ['sale'], 'depends': ['crm', 'sale'],
'contributors': [ 'contributors': [
'Benjamin Rivier <benjamin@le-filament.com>', 'Benjamin Rivier <benjamin@le-filament.com>',
], ],
'website': 'http://www.le-filament.com', 'website': 'http://www.le-filament.com',
'data': [ 'data': [
# 'views/assets.xml',
'views/crm_lead_view.xml', 'views/crm_lead_view.xml',
'report/crm_conversion_report_view.xml',
], ],
'qweb': [ 'qweb': [
'static/src/xml/*.xml', 'static/src/xml/*.xml',
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import crm_lead from . import crm_lead
\ No newline at end of file
...@@ -5,8 +5,14 @@ ...@@ -5,8 +5,14 @@
from odoo import fields, models from odoo import fields, models
class LeFilamentLead(models.Model): class LeFilamentLead(models.Model):
_inherit = 'crm.lead' _inherit = 'crm.lead'
type_apporteur = fields.Selection([('reseau','Réseau'),('partenaire','Partenaire'),('client','Client'),('perso','Personnel'),('projet','Suite Projet')], string="Type Apporteur") type_apporteur = fields.Selection([
('reseau', 'Réseau'),
('partenaire', 'Partenaire'),
('client', 'Client'),
('perso', 'Personnel'),
('projet', 'Suite Projet')], string="Type Apporteur")
apporteur = fields.Many2one('res.partner', string="Apporteur") apporteur = fields.Many2one('res.partner', string="Apporteur")
# -*- coding: utf-8 -*-
import crm_report
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Conversion Time by Partner pivot View -->
<record id="crm_conversion_report_view_pivot" model="ir.ui.view">
<field name="name">crm.conversion.report.pivot</field>
<field name="model">crm.conversion.report</field>
<field name="arch" type="xml">
<pivot string="Analyse Temps de Converstion" disable_linking="True">
<field name="partner_id" type="row"/>
<field name="days" type="measure" />
</pivot>
</field>
</record>
<!-- Search View -->
<record id="crm_conversion_report_view_search" model="ir.ui.view">
<field name="name">crm.conversion.report.select</field>
<field name="model">crm.conversion.report</field>
<field name="arch" type="xml">
<search string="Conversion Analysis">
<filter string="Mes Opportunitées" name="my" domain="[('user_id', '=', uid)]"/>
<separator/>
<filter string="Gagnées" name="won" domain="['&amp;',('current', '=', False),('probability', '=', 100)]"/>
<filter string="En Cours" name="current" domain="[('current', '=', True)]"/>
<group expand="1" string="Group By">
<filter string="Vendeur" context="{'group_by':'user_id'}" />
<filter string="Client" context="{'group_by':'partner_id'}" groups="base.group_multi_company"/>
<filter string="Etape" context="{'group_by':'team_id'}"/>
<filter string="DAS" context="{'group_by':'referred'}"/>
<filter string="Apporteur" context="{'group_by':'referred'}"/>
<separator orientation="vertical" />
<filter string="Mois Création" context="{'group_by':'date_open:month'}" name="month"/>
<filter string="Date Fermeture" context="{'group_by':'date_closed:month'}" name="date_closed"/>
<filter string="Date Conversion" context="{'group_by':'date_conversion:month'}" name="conversion_date"/>
</group>
</search>
</field>
</record>
<record id="crm_conversion_report_action" model="ir.actions.act_window">
<field name="name">Temps de conversion</field>
<field name="res_model">crm.conversion.report</field>
<field name="view_type">form</field>
<field name="view_mode">pivot,graph</field>
<field name="context">{'search_default_won': True,}</field>
<field name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'pivot', 'view_id': ref('crm_conversion_report_view_pivot')})]"/>
</record>
<menuitem id="crm_conversion_report_menu" name="Conversion"
parent="sales_team.menu_sale_report" action="crm_conversion_report_action" sequence="50"/>
</odoo>
# -*- coding: utf-8 -*-
# © 2017 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import tools
from odoo import api, fields, models
class CrmReport(models.Model):
_name = "crm.conversion.report"
_description = "Time Conversion Statistics"
_auto = False
_order = 'date_closed desc'
name = fields.Char('Affaire', readonly=True)
date_open = fields.Datetime('Date Création', readonly=True)
date_conversion = fields.Datetime('Date Converstion', readonly=True)
date_closed = fields.Datetime('Date Fermeture', readonly=True)
days = fields.Integer('Durée', group_operator = 'avg', readonly=True)
referred = fields.Char('Apporteur')
partner_id = fields.Many2one('res.partner', 'Client', readonly=True)
user_id = fields.Many2one('res.users', 'Vendeur', readonly=True)
team_id = fields.Many2one('crm.team', 'DAS', readonly=True)
stage_id = fields.Many2one('crm.stage', string='Stage', readonly=True)
current = fields.Boolean('En Cours', readonly=True)
probability = fields.Float('Probabilité', group_operator="avg", readonly=True)
planned_revenue = fields.Float('Revenu Total', readonly=True)
expected_revenue = fields.Float('Revenu Pondéré', readonly=True)
def _select(self):
select_str = """
SELECT
id,
name,
date_open,
date_closed,
date_conversion,
extract(day from
(case when date_closed is not null then date_closed else current_date end) -
(case when date_open is not null then date_open else create_date end)) as days,
referred,
partner_id,
user_id,
team_id,
stage_id,
active as current,
probability,
planned_revenue,
planned_revenue*(probability/100) as expected_revenue
FROM
crm_lead
WHERE
type = 'opportunity'
"""
return select_str
def init(self):
tools.drop_view_if_exists(self.env.cr, self._table)
self.env.cr.execute("CREATE or REPLACE VIEW crm_conversion_report as (%s)" % (self._select(),) )
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter