From b5d85ed4d8de023cd0a273f4bba3d51e78c2ee67 Mon Sep 17 00:00:00 2001 From: mtr Date: Wed, 22 Sep 2010 19:13:27 +0530 Subject: [PATCH] [IMP] crm_helpdesk:-useability improvements in Reporting/Helpdesk Analysis bzr revid: mtr@mtr-20100922134327-may3coayri4ppktb --- .../report/crm_helpdesk_report.py | 31 ++++-- .../report/crm_helpdesk_report_view.xml | 96 +++++++++++-------- 2 files changed, 80 insertions(+), 47 deletions(-) diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report.py b/addons/crm_helpdesk/report/crm_helpdesk_report.py index 70a3adc369e..27fc1ab3a78 100644 --- a/addons/crm_helpdesk/report/crm_helpdesk_report.py +++ b/addons/crm_helpdesk/report/crm_helpdesk_report.py @@ -50,12 +50,22 @@ class crm_helpdesk_report(osv.osv): ('07', 'July'), ('08', 'August'),\ ('09', 'September'), ('10', 'October'),\ ('11', 'November'), ('12', 'December')], 'Month', readonly=True), - 'delay_close': fields.char('Delay to close', size=20, readonly=True), + 'delay_close': fields.float('Delay to Close',digits=(16,2),readonly=True, group_operator="avg"), 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), 'date_deadline': fields.date('Deadline'), 'priority': fields.selection([('5', 'Lowest'), ('4', 'Low'), \ ('3', 'Normal'), ('2', 'High'), ('1', 'Highest')], 'Priority'), + 'canal_id': fields.many2one('res.partner.canal', 'Channel'), + 'categ_id': fields.many2one('crm.case.categ', 'Category', \ + domain="[('section_id','=',section_id),\ + ('object_id.model', '=', 'crm.helpdesk')]"), + 'planned_cost': fields.float('Planned Costs'), + 'create_date': fields.date('Creation Date' , readonly=True), + 'date_closed': fields.date('Close Date', readonly=True), + 'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"), + 'day': fields.char('Day', size=128, readonly=True), + 'email': fields.integer('# Emails', size=128, readonly=True), } def init(self, cr): @@ -70,8 +80,11 @@ class crm_helpdesk_report(osv.osv): create or replace view crm_helpdesk_report as ( select min(c.id) as id, - to_char(c.create_date, 'YYYY') as name, - to_char(c.create_date, 'MM') as month, + to_char(c.date, 'YYYY') as name, + to_char(c.date, 'MM') as month, + to_char(c.date, 'YYYY-MM-DD') as day, + to_char(c.create_date, 'YYYY-MM-DD') as create_date, + to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, c.state, c.user_id, c.section_id, @@ -79,13 +92,19 @@ class crm_helpdesk_report(osv.osv): c.company_id, c.priority, c.date_deadline, + c.categ_id, + c.canal_id, + c.planned_cost, count(*) as nbr, - to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close + extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as delay_close, + (SELECT count(id) FROM mailgate_message WHERE model='crm.helpdesk' AND res_id=c.id AND history=True) AS email, + abs(avg(extract('epoch' from (c.date_deadline - c.date_closed)))/(3600*24)) as delay_expected from crm_helpdesk c - group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'),\ + group by to_char(c.date, 'YYYY'), to_char(c.date, 'MM'),to_char(c.date, 'YYYY-MM-DD'),\ c.state, c.user_id,c.section_id,c.priority,\ - c.partner_id,c.company_id,c.date_deadline + c.partner_id,c.company_id,c.date_deadline,c.create_date,c.date,c.date_closed,\ + c.categ_id,c.canal_id,c.planned_cost,c.id )""") crm_helpdesk_report() diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml index 2544a506fd5..b1d913d1423 100644 --- a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml +++ b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml @@ -10,17 +10,22 @@ tree - - - - - - + + + + + + - + + + + + + @@ -71,13 +76,15 @@ - - - + + + - - - - + - - + + + - - - - - - - - - - + + + + + + + + + + + - + domain="[]" context="{'group_by':'month'}" help="Month of helpdesk requests"/> + domain="[]" context="{'group_by':'name'}" help="Year of helpdesk requests" /> - + + + + + + @@ -157,10 +170,11 @@ - Helpdesk + Helpdesk Analysis crm.helpdesk.report form tree,graph + {"search_default_User":1,"search_default_This Month":1,'group_by_no_leaf':1,'group_by':[]} Helpdesk allows you to consult different informations relative to support demands. Check for treatments delays, number of responses given and emails send and costs. You can sort out your analysis on different groups to get fine grained analysis.