1
1
from osv import fields,osv
4
class report_crm_lead_user(osv.osv):
5
_name = "report.crm.lead.user"
6
_description = "Leads by user and section"
4
class crm_lead_report(osv.osv):
5
_name = "crm.lead.report"
8
_inherit = "report.crm.case.user"
7
_inherit = "crm.case.report"
10
'probability': fields.float('Avg. Probability', readonly=True),
11
'amount_revenue': fields.float('Est.Revenue', readonly=True),
12
'amount_costs': fields.float('Est.Cost', readonly=True),
13
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
14
9
'delay_close': fields.char('Delay to close', size=20, readonly=True),
10
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]" ,readonly=True),
11
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
12
'partner_id': fields.many2one('res.partner', 'Partner' ,readonly=True),
13
'company_id': fields.many2one('res.company','Company',readonly=True),
16
15
def init(self, cr):
17
tools.drop_view_if_exists(cr, 'report_crm_lead_user')
16
tools.drop_view_if_exists(cr, 'crm_lead_report')
19
create or replace view report_crm_lead_user as (
18
create or replace view crm_lead_report as (
22
21
to_char(c.create_date, 'YYYY') as name,
23
22
to_char(c.create_date, 'MM') as month,
28
sum(planned_revenue) as amount_revenue,
29
sum(planned_cost) as amount_costs,
30
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
31
avg(probability)::decimal(16,2) as probability,
32
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
35
group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id
37
report_crm_lead_user()
39
class report_crm_lead_categ(osv.osv):
40
_name = "report.crm.lead.categ"
41
_description = "Leads by section and category"
43
_inherit = "report.crm.case.categ"
45
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
46
'amount_revenue': fields.float('Est.Revenue', readonly=True),
47
'amount_costs': fields.float('Est.Cost', readonly=True),
48
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
49
'probability': fields.float('Avg. Probability', readonly=True),
50
'delay_close': fields.char('Delay Close', size=20, readonly=True),
54
tools.drop_view_if_exists(cr, 'report_crm_lead_categ')
56
create or replace view report_crm_lead_categ as (
59
to_char(c.create_date, 'YYYY') as name,
60
to_char(c.create_date, 'MM') as month,
65
sum(planned_revenue) as amount_revenue,
66
sum(planned_cost) as amount_costs,
67
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
68
avg(probability)::decimal(16,2) as probability,
69
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
72
group by c.categ_id,to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state,c.section_id
74
report_crm_lead_categ()
76
class report_crm_lead_section(osv.osv):
77
_name = "report.crm.lead.section"
78
_description = "Leads by Section"
80
_inherit = "report.crm.case.section"
82
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
87
for case in self.browse(cr, uid, ids, context):
88
if field_name != 'avg_answers':
89
state = field_name[5:]
90
cr.execute("select count(*) from crm_lead where section_id =%s and state='%s'"%(case.section_id.id,state))
91
state_cases = cr.fetchone()[0]
92
perc_state = (state_cases / float(case.nbr_cases) ) * 100
94
res[case.id] = perc_state
96
cr.execute('select count(*) from crm_case_log l where l.section_id=%s'%(case.section_id.id))
97
logs = cr.fetchone()[0]
99
avg_ans = logs / case.nbr_cases
100
res[case.id] = avg_ans
105
'avg_answers': fields.function(_get_data,string='Avg. Answers', method=True,type="integer"),
106
'perc_done': fields.function(_get_data,string='%Done', method=True,type="float"),
107
'perc_cancel': fields.function(_get_data,string='%Cancel', method=True,type="float"),
108
'delay_close': fields.char('Delay to close', size=20, readonly=True),
110
_order = 'name desc, section_id'
112
tools.drop_view_if_exists(cr, 'report_crm_lead_section')
114
create or replace view report_crm_lead_section as (
117
to_char(c.create_date, 'YYYY') as name,
118
to_char(c.create_date, 'MM') as month,
119
count(*) as nbr_cases,
120
c.section_id as section_id,
123
33
0.0 as perc_cancel,
124
34
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
127
group by to_char(c.create_date, 'YYYY'),to_char(c.create_date, 'MM'),c.section_id
37
group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id,c.stage_id,categ_id,c.partner_id,c.company_id
129
report_crm_lead_section()
131
class report_crm_lead_section_stage(osv.osv):
132
_name = "report.crm.lead.section.stage"
133
_description = "Leads by section and stage"
135
_inherit = "report.crm.case.section.stage"
137
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
138
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
139
'amount_revenue': fields.float('Est.Revenue', readonly=True),
140
'delay_close': fields.char('Delay Close', size=20, readonly=True),
142
_order = 'stage_id, section_id'
145
tools.sql.drop_view_if_exists(cr, "report_crm_lead_section_stage")
147
create view report_crm_lead_section_stage as (
150
to_char(c.create_date,'YYYY') as name,
151
to_char(c.create_date, 'MM') as month,
158
sum(planned_revenue) as amount_revenue,
159
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
162
where c.stage_id is not null
163
group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.user_id, c.state, c.stage_id, c.categ_id, c.section_id)""")
165
report_crm_lead_section_stage()
167
class report_crm_lead_section_type(osv.osv):
168
_name = "report.crm.lead.section.type"
169
_inherit = "report.crm.case.section.type"
170
_description = "Leads by section and type"
173
'type_id': fields.many2one('crm.case.resource.type', 'Lead Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
174
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
175
'amount_revenue': fields.float('Est.Revenue', readonly=True),
176
'delay_close': fields.char('Delay Close', size=20, readonly=True),
181
tools.sql.drop_view_if_exists(cr, "report_crm_lead_section_type")
183
create view report_crm_lead_section_type as (
186
to_char(c.create_date,'YYYY') as name,
187
to_char(c.create_date, 'MM') as month,
194
sum(planned_revenue) as amount_revenue,
195
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
198
where c.type_id is not null
199
group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.user_id, c.state, c.stage_id, c.type_id, c.section_id)""")
201
report_crm_lead_section_type()
203
class report_crm_lead_section_categ_stage(osv.osv):
204
_name = "report.crm.lead.section.categ.stage"
205
_inherit = "report.crm.case.section.categ.stage"
206
_description = "Leads by Section, Category and Stage"
209
'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
210
'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
211
'delay_close': fields.char('Delay Close', size=20, readonly=True),
213
_order = 'stage_id, categ_id'
216
tools.sql.drop_view_if_exists(cr, "report_crm_lead_section_categ_stage")
218
create view report_crm_lead_section_categ_stage as (
221
to_char(c.create_date,'YYYY') as name,
222
to_char(c.create_date, 'MM') as month,
229
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
232
where c.categ_id is not null AND c.stage_id is not null
233
group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.state, c.stage_id, c.section_id)""")
235
report_crm_lead_section_categ_stage()
237
class report_crm_lead_section_categ_type(osv.osv):
238
_name = "report.crm.lead.section.categ.type"
239
_inherit = "report.crm.case.section.categ.type"
240
_description = "Leads by Section, Category and Type"
243
'categ_id':fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
244
'type_id': fields.many2one('crm.case.resource.type', 'Lead Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
245
'stage_id':fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]", readonly=True),
246
'delay_close': fields.char('Delay Close', size=20, readonly=True),
248
_order = 'categ_id, type_id'
251
tools.sql.drop_view_if_exists(cr, "report_crm_lead_section_categ_type")
253
create view report_crm_lead_section_categ_type as (
256
to_char(c.create_date, 'YYYY') as name,
257
to_char(c.create_date, 'MM') as month,
265
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
268
where c.categ_id is not null AND c.type_id is not null
269
group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),c.user_id, c.categ_id, c.type_id, c.state, c.stage_id, c.section_id)""")
271
report_crm_lead_section_categ_type()
273
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
b'\\ No newline at end of file'
40
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: