From 3cc2a168ec13ca1051c62a01647093f31c2f19eb Mon Sep 17 00:00:00 2001 From: "nel@tinyerp.com" <> Date: Sun, 6 Jun 2010 00:38:07 +0200 Subject: [PATCH] [IMP] phonecall,lead reports bzr revid: nel@tinyerp.com-20100605223807-xrgpp2hnofvv5qyo --- addons/crm/report/crm_lead_report.py | 18 +++- addons/crm/report/crm_lead_report_view.xml | 37 ++++--- addons/crm/report/crm_phonecall_report.py | 55 ++++++++--- .../crm/report/crm_phonecall_report_view.xml | 99 +++++++++---------- 4 files changed, 126 insertions(+), 83 deletions(-) diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index cf8097fee5b..17ddf5d3024 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -21,6 +21,7 @@ from osv import fields,osv import tools +from crm import crm AVAILABLE_STATES = [ ('draft','Draft'), @@ -91,7 +92,6 @@ class crm_lead_report(osv.osv): 'create_date': fields.datetime('Create Date', readonly=True), 'day': fields.char('Day', size=128, readonly=True), 'email': fields.integer('# of Emails', size=128, readonly=True), - 'expected_closing_days': fields.integer('Avg Expected Closing Days', size=128, readonly=True), 'delay_open': fields.float('Delay to open',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"), 'delay_close': fields.float('Delay to close',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"), 'categ_id': fields.many2one('crm.case.categ', 'Category',\ @@ -101,7 +101,12 @@ class crm_lead_report(osv.osv): domain="[('section_id','=',section_id),\ ('object_id.model', '=', 'crm.lead')]", readonly=True), 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True), + 'opening_date': fields.date('Opening Date', readonly=True), + 'creation_date': fields.date('Creation Date', readonly=True), + 'date_closed': fields.date('Close Date', readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), + 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), + 'type':fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), @@ -122,11 +127,15 @@ class crm_lead_report(osv.osv): to_char(c.create_date, 'YYYY') as name, to_char(c.create_date, 'MM') as month, to_char(c.create_date, 'YYYY-MM-DD') as day, + to_char(c.create_date, 'YYYY-MM-DD') as creation_date, + to_char(c.date_open, 'YYYY-MM-DD') as opening_date, + to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, c.state as state, c.user_id, c.stage_id, c.type as type, c.company_id, + c.priority, c.section_id, c.categ_id, c.partner_id, @@ -136,23 +145,24 @@ class crm_lead_report(osv.osv): 0.0 as perc_cancel, (select count(id) from mailgate_message where thread_id=c.id) as email, date_trunc('day',c.create_date) as create_date, - avg(cast(to_char(date_trunc('day',c.date_open) - date_trunc('day',c.date_deadline),'DD') as int)) as expected_closing_days, avg(extract('epoch' from (c.date_closed-c.create_date)))/(3600*24) as delay_close, avg(extract('epoch' from (c.date_open-c.create_date)))/(3600*24) as delay_open from crm_lead c - where c.type='lead' or c.type is null group by to_char(c.create_date, 'YYYY'), + to_char(c.date_open, 'YYYY-MM-DD'), + to_char(c.date_closed, 'YYYY-mm-dd'), to_char(c.create_date, 'MM'), c.state, c.user_id, c.id, c.section_id, c.stage_id, - categ_id, + c.categ_id, c.partner_id, c.company_id, + c.priority, c.type, c.create_date, to_char(c.create_date, 'YYYY-MM-DD') diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index 3419849165a..5dd32fe349d 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -15,6 +15,7 @@ + @@ -25,7 +26,6 @@ - @@ -105,16 +105,20 @@ - + + - - - - + + + + + + - - - - + + + + + + + + + @@ -155,13 +164,13 @@ + - @@ -176,7 +185,7 @@ form {"search_default_User":1,"search_default_This Month":1,'group_by_no_leaf':1,'group_by':[]} tree,graph - [('type', '=', 'lead')] + ['|',('type', '=', 'lead'),('type', '=', False)] diff --git a/addons/crm/report/crm_phonecall_report.py b/addons/crm/report/crm_phonecall_report.py index c1954f8607f..c0e666e4eaa 100644 --- a/addons/crm/report/crm_phonecall_report.py +++ b/addons/crm/report/crm_phonecall_report.py @@ -21,6 +21,7 @@ from osv import fields,osv import tools +from crm import crm AVAILABLE_STATES = [ ('draft','Draft'), @@ -78,6 +79,7 @@ class crm_phonecall_report(osv.osv): 'name': fields.char('Year', size=64, required=False, readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True), 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), + 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), 'nbr': fields.integer('# of Cases', readonly=True), 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True), 'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"), @@ -89,15 +91,22 @@ class crm_phonecall_report(osv.osv): ('07', 'July'), ('08', 'August'),\ ('09', 'September'), ('10', 'October'),\ ('11', 'November'), ('12', 'December')], 'Month', readonly=True), - 'company_id': fields.many2one('res.company', 'Company', readonly=True), 'create_date': fields.datetime('Create Date', readonly=True), 'day': fields.char('Day', size=128, readonly=True), 'delay_close': fields.float('Delay to close', digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"), + 'duration': fields.float('Duration', digits=(16,2),readonly=True, group_operator="avg"), + 'delay_open': fields.float('Delay to open',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"), 'categ_id': fields.many2one('crm.case.categ', 'Category', \ domain="[('section_id','=',section_id),\ ('object_id.model', '=', 'crm.phonecall')]"), 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True), + 'stage_id': fields.many2one ('crm.case.stage', 'Stage', \ + domain="[('section_id','=',section_id),\ + ('object_id.model', '=', 'crm.phonecall')]", readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), + 'opening_date': fields.date('Opening Date', readonly=True), + 'creation_date': fields.date('Creation Date', readonly=True), + 'date_closed': fields.date('Close Date', readonly=True), } def init(self, cr): @@ -114,23 +123,45 @@ class crm_phonecall_report(osv.osv): to_char(c.create_date, 'YYYY') as name, to_char(c.create_date, 'MM') as month, to_char(c.create_date, 'YYYY-MM-DD') as day, + to_char(c.create_date, 'YYYY-MM-DD') as creation_date, + to_char(c.date_open, 'YYYY-MM-DD') as opening_date, + to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, + c.state, + c.user_id, + c.section_id, + c.categ_id, + c.partner_id, + c.stage_id, + c.duration, + c.company_id, + c.priority, + (select 1) as nbr, + 0 as avg_answers, + 0.0 as perc_done, + 0.0 as perc_cancel, + date_trunc('day',c.create_date) as create_date, + avg(extract('epoch' from (c.date_closed-c.create_date)))/(3600*24) as delay_close, + avg(extract('epoch' from (c.date_open-c.create_date)))/(3600*24) as delay_open + + from + crm_phonecall c + where c.categ_id in (select res_id from ir_model_data where (name = 'categ_phone1' or name ='categ_phone2')) + group by + to_char(c.create_date, 'YYYY'), + to_char(c.create_date, 'MM'),\ c.state, c.user_id, c.section_id, c.categ_id, c.partner_id, c.company_id, - count(*) as nbr, - 0 as avg_answers, - 0.0 as perc_done, - 0.0 as perc_cancel, - date_trunc('day',c.create_date) as create_date, - avg(extract('epoch' from (c.date_closed-c.create_date)))/(3600*24) as delay_close - from - crm_phonecall c - group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),\ - c.state, c.user_id,c.section_id, c.categ_id,c.partner_id,c.company_id - ,to_char(c.create_date, 'YYYY-MM-DD'),c.create_date + c.duration, + c.priority, + to_char(c.date_open, 'YYYY-MM-DD'), + to_char(c.date_closed, 'YYYY-mm-dd'), + c.stage_id, + to_char(c.create_date, 'YYYY-MM-DD'), + c.create_date )""") crm_phonecall_report() diff --git a/addons/crm/report/crm_phonecall_report_view.xml b/addons/crm/report/crm_phonecall_report_view.xml index 4e57ba1d474..6202b0ab3ad 100644 --- a/addons/crm/report/crm_phonecall_report_view.xml +++ b/addons/crm/report/crm_phonecall_report_view.xml @@ -10,18 +10,22 @@ tree - - - + + + + + - - - + + + + + @@ -36,9 +40,9 @@ - + - + @@ -86,34 +90,25 @@ - - + + - + + - - - - - @@ -122,48 +117,46 @@ - + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + -