From 39a4770296242e6b2ee87206a76c8133891a2928 Mon Sep 17 00:00:00 2001 From: Peter Rotich <peter@osticket.com> Date: Wed, 24 Jun 2015 16:07:08 +0000 Subject: [PATCH] bug: Fix reports bugs --- include/ajax.reports.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/include/ajax.reports.php b/include/ajax.reports.php index 7b2e4f450..ba6b3005d 100644 --- a/include/ajax.reports.php +++ b/include/ajax.reports.php @@ -44,6 +44,7 @@ class OverviewReportAjaxAPI extends AjaxController { "dept" => array( "table" => DEPT_TABLE, "pk" => "id", + "fpk" => "dept_id", "sort" => 'T1.name', "fields" => 'T1.name', "headers" => array(__('Department')), @@ -81,7 +82,7 @@ class OverviewReportAjaxAPI extends AjaxController { $info = isset($groups[$group])?$groups[$group]:$groups['dept']; # XXX: Die if $group not in $groups - + $info['fpk'] = $info['fpk'] ?: $info['pk']; $queries=array( array(5, 'SELECT '.$info['fields'].', COUNT(*)-COUNT(NULLIF(A1.state, "created")) AS Opened, @@ -91,7 +92,7 @@ class OverviewReportAjaxAPI extends AjaxController { COUNT(*)-COUNT(NULLIF(A1.state, "reopened")) AS Reopened FROM '.$info['table'].' T1 LEFT JOIN '.THREAD_EVENT_TABLE.' A1 - ON (A1.'.$info['pk'].'=T1.'.$info['pk'].' + ON (A1.'.$info['fpk'].'=T1.'.$info['pk'].' AND NOT annulled AND (A1.timestamp BETWEEN '.$start.' AND '.$stop.')) LEFT JOIN '.STAFF_TABLE.' S1 ON (S1.staff_id=A1.staff_id) @@ -102,7 +103,7 @@ class OverviewReportAjaxAPI extends AjaxController { array(1, 'SELECT '.$info['fields'].', FORMAT(AVG(DATEDIFF(T2.closed, T2.created)),1) AS ServiceTime FROM '.$info['table'].' T1 - LEFT JOIN '.TICKET_TABLE.' T2 ON (T2.'.$info['pk'].'=T1.'.$info['pk'].') + LEFT JOIN '.TICKET_TABLE.' T2 ON (T2.'.$info['fpk'].'=T1.'.$info['pk'].') LEFT JOIN '.STAFF_TABLE.' S1 ON (S1.staff_id=T2.staff_id) WHERE '.$info['filter'].' AND T2.closed BETWEEN '.$start.' AND '.$stop.' GROUP BY T1.'.$info['pk'].' @@ -111,7 +112,7 @@ class OverviewReportAjaxAPI extends AjaxController { array(1, 'SELECT '.$info['fields'].', FORMAT(AVG(DATEDIFF(B2.created, B1.created)),1) AS ResponseTime FROM '.$info['table'].' T1 - LEFT JOIN '.TICKET_TABLE.' T2 ON (T2.'.$info['pk'].'=T1.'.$info['pk'].') + LEFT JOIN '.TICKET_TABLE.' T2 ON (T2.'.$info['fpk'].'=T1.'.$info['pk'].') LEFT JOIN '.THREAD_TABLE.' B0 ON (B0.object_id=T2.ticket_id AND B0.object_type="T") LEFT JOIN '.THREAD_ENTRY_TABLE.' B2 ON (B2.thread_id = B0.id @@ -199,11 +200,13 @@ class OverviewReportAjaxAPI extends AjaxController { # TODO: Handle user => db timezone offset # XXX: Implement annulled column from the %ticket_event table $res = db_query('SELECT state, DATE_FORMAT(timestamp, \'%Y-%m-%d\'), ' - .'COUNT(ticket_id)' - .' FROM '.THREAD_EVENT_TABLE - .' WHERE timestamp BETWEEN '.$start.' AND '.$stop + .'COUNT(DISTINCT T.id)' + .' FROM '.THREAD_EVENT_TABLE. ' E ' + .' JOIN '.THREAD_TABLE. ' T + ON (T.id = E.thread_id AND T.object_type = "T") ' + .' WHERE E.timestamp BETWEEN '.$start.' AND '.$stop .' AND NOT annulled' - .' GROUP BY state, DATE_FORMAT(timestamp, \'%Y-%m-%d\')' + .' GROUP BY E.state, DATE_FORMAT(E.timestamp, \'%Y-%m-%d\')' .' ORDER BY 2, 1'); # Initialize array of plot values $plots = array(); -- GitLab