From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- .../website_crm_partner_assign/report/__init__.py | 4 ++ .../report/crm_partner_report.py | 58 ++++++++++++++++++++ .../report/crm_partner_report_view.xml | 63 ++++++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 addons/website_crm_partner_assign/report/__init__.py create mode 100644 addons/website_crm_partner_assign/report/crm_partner_report.py create mode 100644 addons/website_crm_partner_assign/report/crm_partner_report_view.xml (limited to 'addons/website_crm_partner_assign/report') 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 @@ + + + + + + crm.partner.report.assign.select + crm.partner.report.assign + + + + + + + + + + + + + + + + + + + + + + crm.partner.assign.report.graph + crm.partner.report.assign + + + + + + + + + + + + + Partnership Analysis + crm.partner.report.assign + {'group_by_no_leaf':1,'group_by':[]} + graph + [('grade_id', '!=', False)] + +

+ No data yet! +

+
+
+ + + +
-- cgit v1.2.3