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 @@
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-