diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_crm_partner_assign/report | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_crm_partner_assign/report')
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> |
