diff --git a/addons/crm_partner_assign/__openerp__.py b/addons/crm_partner_assign/__openerp__.py index b6f91cffda2..646467c5295 100644 --- a/addons/crm_partner_assign/__openerp__.py +++ b/addons/crm_partner_assign/__openerp__.py @@ -36,6 +36,7 @@ based on geolocalization. 'wizard/crm_forward_to_partner_view.xml', 'crm_lead_view.xml', 'report/crm_lead_report_view.xml', + 'report/crm_partner_report_view.xml', ], 'test': ['test/test_crm_partner_assign.yml'], 'installable': True, diff --git a/addons/crm_partner_assign/partner_geo_assign.py b/addons/crm_partner_assign/partner_geo_assign.py index 3d524e32c42..50eae5825cb 100644 --- a/addons/crm_partner_assign/partner_geo_assign.py +++ b/addons/crm_partner_assign/partner_geo_assign.py @@ -142,21 +142,6 @@ class crm_lead(osv.osv): ('country', '=', part.country_id.id), ], context=context) - # 3. third way: other countries, small area - if not part_ids: - part_ids = self.pool.get('res.partner').search(cr, uid, [ - ('partner_weight','>',0), - ('partner_latitude','>',result[0]-2), ('partner_latitude','<',result[0]+2), - ('partner_longitude','>',result[1]-1.5), ('partner_longitude','<',result[1]+1.5) - ], context=context) - - # 4. fourth way: other countries, big area - if not part_ids: - part_ids = self.pool.get('res.partner').search(cr, uid, [ - ('partner_weight','>',0), - ('partner_latitude','>',result[0]-4), ('partner_latitude','<',result[0]+4), - ('partner_longitude','>',result[1]-3), ('partner_longitude','<',result[1]+3) - ], context=context) # 5. fifth way: anywhere in same country if not part_ids: diff --git a/addons/crm_partner_assign/report/__init__.py b/addons/crm_partner_assign/report/__init__.py index 9b7860b8de4..a211aeede1e 100644 --- a/addons/crm_partner_assign/report/__init__.py +++ b/addons/crm_partner_assign/report/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2010 Tiny SPRL (). # @@ -15,9 +15,10 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## import crm_lead_report +import crm_partner_report diff --git a/addons/crm_partner_assign/report/crm_partner_report.py b/addons/crm_partner_assign/report/crm_partner_report.py new file mode 100644 index 00000000000..0fbd9e40694 --- /dev/null +++ b/addons/crm_partner_assign/report/crm_partner_report.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from osv import fields,osv +import tools + + +class crm_partner_report_assign(osv.osv): + """ CRM Lead Report """ + _name = "crm.partner.report.assign" + _auto = False + _description = "CRM Partner Report" + _columns = { + 'name': fields.char('Partner name', size=64, required=False, readonly=True), + 'grade_id':fields.many2one('res.partner.grade', 'Grade', readonly=True), + 'user_id':fields.many2one('res.users', 'User', readonly=True), + 'country_id':fields.many2one('res.country', 'Country', readonly=True), + 'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True), + 'nbr': fields.integer('# of Partner', readonly=True), + 'opp': fields.integer('# of Opportunity', readonly=True), + } + + def init(self, cr): + + """ + CRM Lead Report + @param cr: the current row, from the database cursor + """ + tools.drop_view_if_exists(cr, 'crm_partner_report_assign') + cr.execute(""" + CREATE OR REPLACE VIEW crm_partner_report_assign AS ( + SELECT + p.id, + p.name, + a.country_id, + p.grade_id, + p.user_id, + p.section_id, + 1 as nbr, + (SELECT count(id) FROM crm_lead WHERE partner_assigned_id=p.id) AS opp + FROM + res_partner p + left join res_partner_address a on (p.id=a.partner_id) + )""") + +crm_partner_report_assign() diff --git a/addons/crm_partner_assign/report/crm_partner_report_view.xml b/addons/crm_partner_assign/report/crm_partner_report_view.xml new file mode 100644 index 00000000000..576019604fc --- /dev/null +++ b/addons/crm_partner_assign/report/crm_partner_report_view.xml @@ -0,0 +1,69 @@ + + + + + + + crm.partner.report.assign.select + crm.partner.report.assign + search + + + + + + + + + + + + + + + + + + + + + + + + + crm.partner.assign.report.tree + crm.partner.report.assign + tree + + + + + + + + + + + + + + + + + Partner Assignment Analysis + crm.partner.report.assign + {'search_default_group_country': 1, 'search_default_group_grade': 1, 'group_by_no_leaf':1,'group_by':[]} + tree + [('grade_id', '!=', False)] + + + + + +