diff --git a/__init__.py b/__init__.py index c120b318c3a0fd2ebf26eb9ca2bb7f5d8f396cb4..7a6c1b0355ba8d583a289044249bdb04169be2ea 100644 --- a/__init__.py +++ b/__init__.py @@ -1,4 +1,4 @@ # -*- coding: utf-8 -*- -import models -import report \ No newline at end of file +from . import models +from . import report diff --git a/__manifest__.py b/__manifest__.py index e9306ca124563579f31e56b40be4d76edb39c7e1..f8a8c87379c47b6ae144a3521d91ca193d2cf7db 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -4,33 +4,32 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { - 'name': 'Le Filament - CRM', + 'name': 'Le Filament - CRM', - 'summary': """ + 'summary': """ CRM Le Filament - Ajoute un rapport sur le temps de conversion """, - 'version': '10.0.1.0', - 'license': 'AGPL-3', - 'description': """ + 'version': '10.0.1.0', + 'license': 'AGPL-3', + 'description': """ - """, - - 'author': 'LE FILAMENT', - 'category': 'Project', - 'depends': ['sale'], - 'contributors': [ + """, + 'author': 'LE FILAMENT', + 'category': 'Project', + 'depends': ['sale'], + 'contributors': [ 'Benjamin Rivier <benjamin@le-filament.com>', ], - 'website': 'http://www.le-filament.com', - 'data': [ - # 'views/assets.xml', - 'views/crm_lead_view.xml', - 'report/crm_conversion_report_view.xml', - ], - 'qweb': [ + 'website': 'http://www.le-filament.com', + 'data': [ + # 'views/assets.xml', + 'views/crm_lead_view.xml', + 'report/crm_conversion_report_view.xml', + ], + 'qweb': [ 'static/src/xml/*.xml', ], -} \ No newline at end of file +} diff --git a/models/__init__.py b/models/__init__.py index 92f72446abdc0a09823b41033c607db36699f38a..3dce6aff337cc05af470203592430f570f320011 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -import crm_lead \ No newline at end of file +from . import crm_lead diff --git a/models/crm_lead.py b/models/crm_lead.py index ec8497beb9d39d57aded1e7da4170756b0b23cba..63f11633c05db2813e49ba78c90011a40d69a50e 100644 --- a/models/crm_lead.py +++ b/models/crm_lead.py @@ -5,8 +5,14 @@ from odoo import fields, models + 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") - apporteur = fields.Many2one('res.partner', string="Apporteur") \ No newline at end of file + 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") diff --git a/report/__init__.py b/report/__init__.py index e746a9642e05b3141e81fb4abc82e6bca2d128d8..2e3835ec10c6e4b2f3b0d1cd4218bb11fc917871 100644 --- a/report/__init__.py +++ b/report/__init__.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -import crm_report +from . import crm_report diff --git a/report/crm_conversion_report_view.xml b/report/crm_conversion_report_view.xml index 7cde36fc7dcc642214ab9627423aeeaaad57bdcd..f5620fbb09911068e651afcc32e1d0ef6c73c5ee 100644 --- a/report/crm_conversion_report_view.xml +++ b/report/crm_conversion_report_view.xml @@ -1,6 +1,5 @@ <?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> @@ -13,7 +12,6 @@ </field> </record> - <!-- Search View --> <record id="crm_conversion_report_view_search" model="ir.ui.view"> <field name="name">crm.conversion.report.select</field> @@ -52,5 +50,4 @@ <menuitem id="crm_conversion_report_menu" name="Conversion" parent="sales_team.menu_sale_report" action="crm_conversion_report_action" sequence="50"/> - </odoo> diff --git a/report/crm_report.py b/report/crm_report.py index daab695f9f7d6de7df0a1432bd7c16515b251b46..bf25c6ff674ced0352afc9f9ff19b8eccc98fd47 100644 --- a/report/crm_report.py +++ b/report/crm_report.py @@ -4,64 +4,65 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import tools -from odoo import api, fields, models +from odoo import fields, models class CrmReport(models.Model): - _name = "crm.conversion.report" - _description = "Time Conversion Statistics" - _auto = False - _order = 'date_closed desc' + _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) + name = fields.Char('Affaire', readonly=True) - referred = fields.Char('Apporteur') + 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) - 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) + referred = fields.Char('Apporteur') - 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 + 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 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(),) ) - + 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(),)) diff --git a/views/crm_lead_view.xml b/views/crm_lead_view.xml index 7b627de86d95cbd05a8cb31a3fb119a346707bd2..2eeaa6d7fa41036600a7d93ff051fc8c4e67baa3 100644 --- a/views/crm_lead_view.xml +++ b/views/crm_lead_view.xml @@ -1,15 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> - - <record model="ir.ui.view" id="view_crm_lead_oppor_lefilament"> - <field name="name">crm.lead.form.inherit</field> - <field name="model">crm.lead</field> - <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/> - <field name="arch" type="xml"> - <xpath expr="//field[@name='referred']" position="before"> - <field name="type_apporteur" /> - <field name="apporteur" /> - </xpath> - </field> - </record> + <record model="ir.ui.view" id="view_crm_lead_oppor_lefilament"> + <field name="name">crm.lead.form.inherit</field> + <field name="model">crm.lead</field> + <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='referred']" position="before"> + <field name="type_apporteur" /> + <field name="apporteur" /> + </xpath> + </field> + </record> </odoo>