From 4d9160b1cd82b44d33e05dda476060af0d5bd846 Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Thu, 22 Feb 2024 21:04:14 -0700 Subject: [PATCH] Extension summary add voicemail column and use the CDR status --- app/xml_cdr/resources/classes/xml_cdr.php | 34 ++++++++++------------- app/xml_cdr/xml_cdr_extension_summary.php | 3 ++ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/app/xml_cdr/resources/classes/xml_cdr.php b/app/xml_cdr/resources/classes/xml_cdr.php index a734783888..8ad5f6f290 100644 --- a/app/xml_cdr/resources/classes/xml_cdr.php +++ b/app/xml_cdr/resources/classes/xml_cdr.php @@ -1588,20 +1588,7 @@ if (!class_exists('xml_cdr')) { $sql .= "count(*) \n"; $sql .= "filter ( \n"; $sql .= " where c.extension_uuid = e.extension_uuid \n"; - $sql .= " and missed_call = false\n"; - if (!permission_exists('xml_cdr_enterprise_leg')) { - $sql .= " and originating_leg_uuid is null \n"; - } - elseif (!permission_exists('xml_cdr_lose_race')) { - $sql .= " and hangup_cause <> 'LOSE_RACE' \n"; - } - $sql .= " and (cc_side IS NULL or cc_side !='agent')"; - if ($this->include_internal) { - $sql .= " and (direction = 'inbound' or direction = 'local') \n"; - } - else { - $sql .= "and direction = 'inbound' \n"; - } + $sql .= " and status = 'answered' \n"; $sql .= ") \n"; $sql .= "as answered, \n"; @@ -1609,16 +1596,24 @@ if (!class_exists('xml_cdr')) { $sql .= "count(*) \n"; $sql .= "filter ( \n"; $sql .= " where c.extension_uuid = e.extension_uuid \n"; - $sql .= " and missed_call = true\n"; + $sql .= " and status = 'missed' \n"; $sql .= " and (cc_side is null or cc_side != 'agent') \n"; $sql .= ") \n"; $sql .= "as missed, \n"; - //cc missed + //voicemail $sql .= "count(*) \n"; $sql .= "filter ( \n"; $sql .= " where c.extension_uuid = e.extension_uuid \n"; - $sql .= " and c.hangup_cause = 'NO_ANSWER' \n"; + $sql .= " and status = 'voicemail'\n"; + $sql .= ") \n"; + $sql .= "as voicemail, \n"; + + //no answer + $sql .= "count(*) \n"; + $sql .= "filter ( \n"; + $sql .= " where c.extension_uuid = e.extension_uuid \n"; + $sql .= " and status = 'no_answer'\n"; $sql .= " and (cc_side IS NOT NULL or cc_side ='agent')"; if ($this->include_internal) { $sql .= " and (direction = 'inbound' or direction = 'local') \n"; @@ -1633,7 +1628,7 @@ if (!class_exists('xml_cdr')) { $sql .= "count(*) \n"; $sql .= "filter ( \n"; $sql .= " where c.extension_uuid = e.extension_uuid \n"; - $sql .= " and c.hangup_cause = 'USER_BUSY' \n"; + $sql .= " and status = 'busy'\n"; if ($this->include_internal) { $sql .= " and (direction = 'inbound' or direction = 'local') \n"; } @@ -1725,7 +1720,8 @@ if (!class_exists('xml_cdr')) { $sql .= " billsec, \n"; $sql .= " cc_side, \n"; $sql .= " sip_hangup_disposition, \n"; - $sql .= " voicemail_message \n"; + $sql .= " voicemail_message, \n"; + $sql .= " status \n"; $sql .= " from v_xml_cdr \n"; if (!(!empty($_GET['show']) && $_GET['show'] === 'all' && permission_exists('xml_cdr_extension_summary_all'))) { $sql .= " where domain_uuid = :domain_uuid \n"; diff --git a/app/xml_cdr/xml_cdr_extension_summary.php b/app/xml_cdr/xml_cdr_extension_summary.php index 3268a693c9..3c1a7eda69 100644 --- a/app/xml_cdr/xml_cdr_extension_summary.php +++ b/app/xml_cdr/xml_cdr_extension_summary.php @@ -200,6 +200,7 @@ } echo " ".$text['label-answered']."\n"; echo " ".$text['label-missed']."\n"; + echo " ".$text['label-voicemail']."\n"; echo " ".$text['label-no_answer']."\n"; echo " ".$text['label-busy']."\n"; echo " ".$text['label-aloc']."\n"; @@ -222,6 +223,7 @@ } echo " ".escape($row['answered'])." \n"; echo " ".escape($row['missed'])." \n"; + echo " ".escape($row['voicemail'])." \n"; echo " ".escape($row['no_answer'])." \n"; echo " ".escape($row['busy'])." \n"; echo " ".format_hours($row['aloc'])." \n"; @@ -241,3 +243,4 @@ require_once "resources/footer.php"; ?> +