summaryrefslogtreecommitdiff
path: root/addons/website_crm_partner_assign/report
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_crm_partner_assign/report
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_crm_partner_assign/report')
-rw-r--r--addons/website_crm_partner_assign/report/__init__.py4
-rw-r--r--addons/website_crm_partner_assign/report/crm_partner_report.py58
-rw-r--r--addons/website_crm_partner_assign/report/crm_partner_report_view.xml63
3 files changed, 125 insertions, 0 deletions
diff --git a/addons/website_crm_partner_assign/report/__init__.py b/addons/website_crm_partner_assign/report/__init__.py
new file mode 100644
index 00000000..98897a64
--- /dev/null
+++ b/addons/website_crm_partner_assign/report/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import crm_partner_report
diff --git a/addons/website_crm_partner_assign/report/crm_partner_report.py b/addons/website_crm_partner_assign/report/crm_partner_report.py
new file mode 100644
index 00000000..5483e372
--- /dev/null
+++ b/addons/website_crm_partner_assign/report/crm_partner_report.py
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class CrmPartnerReportAssign(models.Model):
+ """ CRM Lead Report """
+ _name = "crm.partner.report.assign"
+ _auto = False
+ _description = "CRM Partnership Analysis"
+
+ partner_id = fields.Many2one('res.partner', 'Partner', required=False, readonly=True)
+ grade_id = fields.Many2one('res.partner.grade', 'Grade', readonly=True)
+ activation = fields.Many2one('res.partner.activation', 'Activation', index=True)
+ user_id = fields.Many2one('res.users', 'User', readonly=True)
+ date_review = fields.Date('Latest Partner Review')
+ date_partnership = fields.Date('Partnership Date')
+ country_id = fields.Many2one('res.country', 'Country', readonly=True)
+ team_id = fields.Many2one('crm.team', 'Sales Team', readonly=True)
+ nbr_opportunities = fields.Integer('# of Opportunity', readonly=True)
+ turnover = fields.Float('Turnover', readonly=True)
+ date = fields.Date('Invoice Account Date', readonly=True)
+
+ _depends = {
+ 'account.invoice.report': ['invoice_date', 'partner_id', 'price_subtotal', 'state', 'move_type'],
+ 'crm.lead': ['partner_assigned_id'],
+ 'res.partner': ['activation', 'country_id', 'date_partnership', 'date_review',
+ 'grade_id', 'parent_id', 'team_id', 'user_id'],
+ }
+
+ @property
+ def _table_query(self):
+ """
+ CRM Lead Report
+ @param cr: the current row, from the database cursor
+ """
+ return """
+ SELECT
+ coalesce(i.id, p.id - 1000000000) as id,
+ p.id as partner_id,
+ (SELECT country_id FROM res_partner a WHERE a.parent_id=p.id AND country_id is not null limit 1) as country_id,
+ p.grade_id,
+ p.activation,
+ p.date_review,
+ p.date_partnership,
+ p.user_id,
+ p.team_id,
+ (SELECT count(id) FROM crm_lead WHERE partner_assigned_id=p.id) AS nbr_opportunities,
+ i.price_subtotal as turnover,
+ i.invoice_date as date
+ FROM
+ res_partner p
+ left join ({account_invoice_report}) i
+ on (i.partner_id=p.id and i.move_type in ('out_invoice','out_refund') and i.state='open')
+ """.format(
+ account_invoice_report=self.env['account.invoice.report']._table_query
+ )
diff --git a/addons/website_crm_partner_assign/report/crm_partner_report_view.xml b/addons/website_crm_partner_assign/report/crm_partner_report_view.xml
new file mode 100644
index 00000000..0fd75ae4
--- /dev/null
+++ b/addons/website_crm_partner_assign/report/crm_partner_report_view.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+ <!-- Opportunity tree view -->
+ <record id="view_report_crm_partner_assign_filter" model="ir.ui.view">
+ <field name="name">crm.partner.report.assign.select</field>
+ <field name="model">crm.partner.report.assign</field>
+ <field name="arch" type="xml">
+ <search string="Partner assigned Analysis">
+ <field name="team_id"/>
+ <field name="user_id"/>
+ <field name="grade_id"/>
+ <field name="activation"/>
+ <filter name="filter_date_partnership" date="date_partnership"/>
+ <filter name="filter_date_review" date="date_review"/>
+ <group expand="1" string="Group By">
+ <filter string="Salesperson" name="user"
+ context="{'group_by':'user_id'}" />
+ <filter string="Sales Team" name="sales_team"
+ context="{'group_by':'team_id'}"/>
+ <filter string="Partner" name="partner"
+ context="{'group_by':'partner_id'}" />
+ <separator/>
+ <filter string="Date Partnership" name="group_date_partnership"
+ context="{'group_by':'date_partnership'}" />
+ <filter string="Date Review" name="group_date_review"
+ context="{'group_by':'date_review'}" />
+ </group>
+ </search>
+ </field>
+ </record>
+
+ <record id="view_report_crm_partner_assign_graph" model="ir.ui.view">
+ <field name="name">crm.partner.assign.report.graph</field>
+ <field name="model">crm.partner.report.assign</field>
+ <field name="arch" type="xml">
+ <graph string="Opportunities Assignment Analysis" stacked="True" sample="1">
+ <field name="grade_id" type="row"/>
+ <field name="nbr_opportunities" type="measure"/>
+ <field name="turnover" type="measure"/>
+ </graph>
+ </field>
+ </record>
+
+ <!-- Leads by user and team Action -->
+
+ <record id="action_report_crm_partner_assign" model="ir.actions.act_window">
+ <field name="name">Partnership Analysis</field>
+ <field name="res_model">crm.partner.report.assign</field>
+ <field name="context">{'group_by_no_leaf':1,'group_by':[]}</field>
+ <field name="view_mode">graph</field>
+ <field name="domain">[('grade_id', '!=', False)]</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ No data yet!
+ </p>
+ </field>
+ </record>
+
+ <menuitem name="Partnerships" id="menu_report_crm_partner_assign_tree"
+ parent="crm.crm_menu_report" action="action_report_crm_partner_assign" sequence="5"/>
+
+</odoo>