";
$HTML_text.=""._QXZ("$report_name")." $NWB#team_performance_detail$NWE\n";
$HTML_text.="\n\n";
$report_sale_array=array();
$dispo_sale_stmt="select status, campaign_id from vicidial_campaign_statuses where sale='Y' $group_SQL UNION select status, 'VICIDIAL_SALE' from vicidial_statuses where sale='Y'";
$dispo_sale_rslt=mysql_to_mysqli($dispo_sale_stmt, $link);
while ($dispo_sale_row=mysqli_fetch_row($dispo_sale_rslt))
{
$status=$dispo_sale_row[0];
$campaign=strtoupper($dispo_sale_row[1]);
if (!$report_sale_array["$campaign"]) {$report_sale_array["$campaign"]="|";}
$report_sale_array["$campaign"].="$status|";
}
# print_r($report_sale_array);
if ( ($SUBMIT=="SUBMIT") or ($SUBMIT==_QXZ("SUBMIT")) )
{
# Sale counts per rep
$stmt="select max(event_time), ".$vicidial_agent_log_table.".user, ".$vicidial_agent_log_table.".lead_id, ".$vicidial_list_table.".status as current_status, ".$vicidial_agent_log_table.".campaign_id, ".$vicidial_agent_log_table.".status from ".$vicidial_agent_log_table.", ".$vicidial_list_table." where event_time>='$query_date' and event_time<='$end_date' $group_SQL and ".$vicidial_agent_log_table.".status in (select status from vicidial_campaign_statuses where sale='Y' $group_SQL UNION select status from vicidial_statuses where sale='Y') and ".$vicidial_agent_log_table.".lead_id=".$vicidial_list_table.".lead_id group by ".$vicidial_agent_log_table.".user, ".$vicidial_agent_log_table.".lead_id";
if ($DB) {$ASCII_text.="$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
$cancel_array=array();
$incomplete_array=array();
$sale_array=array();
while ($row=mysqli_fetch_array($rslt))
{
$lead_id=$row["lead_id"];
$user=$row["user"];
$current_status=$row["current_status"];
$campaign_id=strtoupper($row["campaign_id"]);
$agent_status=$row["status"];
if (preg_match("/QCCANC/i", $current_status))
{
$cancel_array[$row["user"]]++;
}
else if (preg_match("/QCFAIL/i", $current_status))
{
$incomplete_array[$row["user"]]++;
}
else
{
if (preg_match("/\|$agent_status\|/i", $report_sale_array["$campaign_id"]) || preg_match("/\|$agent_status\|/i", $report_sale_array["VICIDIAL_SALE"]))
{
$sale_array[$row["user"]]++;
# Get actual talk time for all calls made by the user for this particular lead. If cancelled and incomplete sales are to have their times
# counted towards sales talk time, move the below lines OUTSIDE the curly bracket below, so the query runs regardless of what "type" of
# sale it is.
$sale_time_stmt="select sum(talk_sec)-sum(dead_sec) from ".$vicidial_agent_log_table." where user='$user' and lead_id='$lead_id' $group_SQL";
if ($DB) {$ASCII_text.="$sale_time_stmt\n";}
$sale_time_rslt=mysql_to_mysqli($sale_time_stmt, $link);
$sale_time_row=mysqli_fetch_row($sale_time_rslt);
$sales_talk_time_array[$row["user"]]+=$sale_time_row[0];
}
}
}
$HTML_text.="";
$total_average_sale_time=0;
$total_average_contact_time=0;
$total_talk_time=0;
$total_system_time=0;
$total_calls=0;
$total_leads=0;
$total_contacts=0;
$total_sales=0;
$total_inc_sales=0;
$total_cnc_sales=0;
$total_callbacks=0;
$total_stcall=0;
$call_status_totals_grand_total=array();
for ($q=0; $q".$call_status[$q]."";
}
$total_graph_stats=array();
$max_totalcalls=1;
$max_totalleads=1;
$max_totalcontacts=1;
$max_totalcontactratio=1;
$max_totalsystemtime=1;
$max_totaltalktime=1;
$max_totalsales=1;
$max_totalsalesleadsratio=1;
$max_totalsalescontactsratio=1;
$max_totalsalesperhour=1;
$max_totalincsales=1;
$max_totalcancelledsales=1;
$max_totalcallbacks=1;
$max_totalfirstcall=1;
$max_totalavgsaletime=1;
$max_totalavgcontacttime=1;
for($i=0; $i<$user_group_ct; $i++)
{
$group_average_sale_time=0;
$group_average_contact_time=0;
$group_talk_time=0;
$group_system_time=0;
$group_nonpause_time=0;
$group_calls=0;
$group_leads=0;
$group_contacts=0;
$group_sales=0;
$group_inc_sales=0;
$group_cnc_sales=0;
$group_callbacks=0;
$group_stcall=0;
$name_stmt="select group_name from vicidial_user_groups where user_group='$user_group[$i]'";
$name_rslt=mysql_to_mysqli($name_stmt, $link);
$name_row=mysqli_fetch_row($name_rslt);
$group_name=$name_row[0];
$call_status_group_totals=array();
for ($q=0; $q"._QXZ("TEAM").": $user_group[$i] - $group_name\n";
$CSV_text.="\"\",\""._QXZ("TEAM").": $user_group[$i] - $group_name\"\n";
$GRAPH_text.=""._QXZ("TEAM").": $user_group[$i] - $group_name";
#### USER COUNTS
if ($show_all_users)
{
$user_stmt="select full_name, user from vicidial_users where user_group='$user_group[$i]' order by full_name, user";
}
else
{
$user_stmt="select distinct vicidial_users.full_name, vicidial_users.user from vicidial_users, ".$vicidial_agent_log_table." where vicidial_users.user_group='$user_group[$i]' and vicidial_users.user=".$vicidial_agent_log_table.".user and ".$vicidial_agent_log_table.".user_group='$user_group[$i]' and ".$vicidial_agent_log_table.".event_time>='$query_date' and ".$vicidial_agent_log_table.".event_time<='$end_date' and ".$vicidial_agent_log_table.".campaign_id in ($group_SQL_str) order by full_name, user";
}
if ($DB) {$ASCII_text.="$user_stmt\n";}
$user_rslt=mysql_to_mysqli($user_stmt, $link);
if (mysqli_num_rows($user_rslt)>0)
{
$graph_stats=array();
$max_calls=1;
$max_leads=1;
$max_contacts=1;
$max_contactratio=1;
$max_systemtime=1;
$max_talktime=1;
$max_sales=1;
$max_salesleadsratio=1;
$max_salescontactsratio=1;
$max_salesperhour=1;
$max_incsales=1;
$max_cancelledsales=1;
$max_callbacks=1;
$max_firstcall=1;
$max_avgsaletime=1;
$max_avgcontacttime=1;
$GRAPH="
";
$STATGRAPH="";
for ($q=0; $q".$call_status[$q]."";
$max_varname="max_".$call_status[$q];
$$max_varname=1;
}
$j=0;
$ASCII_text.="+------------------------------------------+------------+-------+-------+----------+---------------+---------------+-------------+-----------+-------+------------------------+----------------------+-------------------------+----------------+------------------+-----------------+-----------+-----------------------+-------------------+----------------------+$HTMLborderheader\n";
$ASCII_text.="| "._QXZ("Agent Name",40)." | "._QXZ("Agent ID",10)." | "._QXZ("Calls",5)." | "._QXZ("Leads",5)." | "._QXZ("Contacts",8)." | "._QXZ("Contact Ratio",13)." | "._QXZ("Nonpause Time",13)." | "._QXZ("System Time",11)." | "._QXZ("Talk Time",9)." | "._QXZ("Sales",5)." | "._QXZ("Sales per Working Hour",22)." | "._QXZ("Sales to Leads Ratio",20)." | "._QXZ("Sales to Contacts Ratio",23)." | "._QXZ("Sales Per Hour",14)." | "._QXZ("Incomplete Sales",16)." | "._QXZ("Cancelled Sales",15)." | "._QXZ("Callbacks",9)." | "._QXZ("First Call Resolution",21)." | "._QXZ("Average Sale Time",17)." | "._QXZ("Average Contact Time",20)." |$HTMLstatusheader\n";
$ASCII_text.="+------------------------------------------+------------+-------+-------+----------+---------------+---------------+-------------+-----------+-------+------------------------+----------------------+-------------------------+----------------+------------------+-----------------+-----------+-----------------------+-------------------+----------------------+$HTMLborderheader\n";
$CSV_text.="\"\",\""._QXZ("Agent Name")."\",\""._QXZ("Agent ID")."\",\""._QXZ("Calls")."\",\""._QXZ("Leads")."\",\""._QXZ("Contacts")."\",\""._QXZ("Contact Ratio")."\",\""._QXZ("Nonpause Time")."\",\""._QXZ("System Time")."\",\""._QXZ("Talk Time")."\",\""._QXZ("Sales")."\",\""._QXZ("Sales per Working Hour")."\",\""._QXZ("Sales to Leads Ratio")."\",\""._QXZ("Sales to Contacts Ratio")."\",\""._QXZ("Sales Per Hour")."\",\""._QXZ("Incomplete Sales")."\",\""._QXZ("Cancelled Sales")."\",\""._QXZ("Callbacks")."\",\""._QXZ("First Call Resolution")."\",\""._QXZ("Average Sale Time")."\",\""._QXZ("Average Contact Time")."\"$CSVstatusheader\n";
while ($user_row=mysqli_fetch_array($user_rslt))
{
# For each user
$user=$user_row["user"];
$sale_array[$user]+=0; # For agents with no sales logged
$incomplete_array[$user]+=0; # For agents with no QCFAIL logged
$cancel_array[$user]+=0; # For agents with no QCCANC logged
$j++;
$contacts=0;
$callbacks=0;
$stcall=0;
$calls=0;
$leads=0;
$system_time=0;
$talk_time=0;
$nonpause_time=0;
# Leads
$lead_stmt="select count(distinct lead_id) from ".$vicidial_agent_log_table." where lead_id is not null and event_time>='$query_date' and event_time<='$end_date' $group_SQL and user='$user' and user_group='$user_group[$i]'";
if ($DB) {$ASCII_text.="$lead_stmt\n";}
$lead_rslt=mysql_to_mysqli($lead_stmt, $link);
$lead_row=mysqli_fetch_row($lead_rslt);
$leads=$lead_row[0];
# Callbacks
$callback_stmt="select count(*) from vicidial_callbacks where status in ('ACTIVE', 'LIVE') $group_SQL and user='$user' and user_group='$user_group[$i]'";
if ($DB) {$ASCII_text.="$callback_stmt\n";}
$callback_rslt=mysql_to_mysqli($callback_stmt, $link);
$callback_row=mysqli_fetch_row($callback_rslt);
$callbacks=$callback_row[0];
$stat_stmt="select val.status, val.sub_status, vs.customer_contact, sum(val.talk_sec), sum(val.pause_sec), sum(val.wait_sec), sum(val.dispo_sec), sum(val.dead_sec), count(*) from ".$vicidial_agent_log_table." val, vicidial_statuses vs where val.user='$user' and val.user_group='$user_group[$i]' and val.event_time>='$query_date' and val.event_time<='$end_date' and val.status=vs.status and vs.status in (select status from vicidial_statuses) and val.campaign_id in ($group_SQL_str) group by status, customer_contact UNION select val.status, val.sub_status, vs.customer_contact, sum(val.talk_sec), sum(val.pause_sec), sum(val.wait_sec), sum(val.dispo_sec), sum(val.dead_sec), count(*) from ".$vicidial_agent_log_table." val, vicidial_campaign_statuses vs where val.campaign_id in ($group_SQL_str) and val.user='$user' and val.user_group='$user_group[$i]' and val.event_time>='$query_date' and val.event_time<='$end_date' and val.status=vs.status and val.campaign_id=vs.campaign_id and vs.status in (select distinct status from vicidial_campaign_statuses where ".substr($group_SQL, 4).") group by status, customer_contact";
if ($DB) {$ASCII_text.="$stat_stmt\n";}
$stat_rslt=mysql_to_mysqli($stat_stmt, $link);
while ($stat_row=mysqli_fetch_row($stat_rslt))
{
if ($stat_row[2]=="Y")
{
$contacts+=$stat_row[8];
$contact_talk_time+=($stat_row[3]-$stat_row[7]);
$group_contact_talk_time+=($stat_row[3]-$stat_row[7]);
}
# if ($stat_row[2]=="Y") {$callbacks+=$stat_row[8];}
$calls+=$stat_row[8];
$talk_time+=($stat_row[3]-$stat_row[7]);
$system_time+=($stat_row[3]+$stat_row[5]+$stat_row[6]);
$nonpause_time+=($stat_row[3]+$stat_row[5]+$stat_row[6]);
if ($stat_row[1]=="PRECAL")
{
$nonpause_time+=$stat_row[4];
}
}
$user_talk_time = sec_convert($talk_time,'H');
$group_talk_time+=$talk_time;
$user_system_time = sec_convert($system_time,'H');
$talk_hours=MathZDC($talk_time, 3600);
$group_system_time+=$system_time;
$user_nonpause_time = sec_convert($nonpause_time,'H');
$group_nonpause_time+=$nonpause_time;
if ($sale_array[$user]>0) {$average_sale_time=sec_convert(round(MathZDC($sales_talk_time_array[$user], $sale_array[$user])), 'H');} else {$average_sale_time="00:00";}
$group_sales_talk_time+=$sales_talk_time_array[$user];
if ($contacts>0) {$average_contact_time=sec_convert(round(MathZDC($contact_talk_time, $contacts)), 'H');} else {$average_contact_time="00:00";}
$ASCII_text.="| ".sprintf("%-40s", $user_row["full_name"]);
$ASCII_text.=" | ".sprintf("%10s", substr("$user", 0, 10))."";
$ASCII_text.=" | ".sprintf("%5s", $calls); $group_calls+=$calls;
$ASCII_text.=" | ".sprintf("%5s", $leads); $group_leads+=$leads;
$ASCII_text.=" | ".sprintf("%8s", $contacts); $group_contacts+=$contacts;
$contact_ratio=sprintf("%.2f", MathZDC(100*$contacts,$leads));
$ASCII_text.=" | ".sprintf("%12s", $contact_ratio)."%";
$ASCII_text.=" | ".sprintf("%13s", $user_nonpause_time);
$ASCII_text.=" | ".sprintf("%11s", $user_system_time);
$ASCII_text.=" | ".sprintf("%9s", $user_talk_time);
$ASCII_text.=" | ".sprintf("%5s", $sale_array[$user]); $group_sales+=$sale_array[$user];
$sales_per_working_hours=sprintf("%.2f", (MathZDC($sale_array[$user], MathZDC($nonpause_time, 3600))));
$ASCII_text.=" | ".sprintf("%22s", $sales_per_working_hours);
$sales_ratio=sprintf("%.2f", MathZDC(100*$sale_array[$user], $leads));
$ASCII_text.=" | ".sprintf("%19s", $sales_ratio)."%";
$sale_contact_ratio=sprintf("%.2f", MathZDC(100*$sale_array[$user], $contacts));
$ASCII_text.=" | ".sprintf("%22s", $sale_contact_ratio)."%";
$sales_per_hour=sprintf("%.2f", MathZDC($sale_array[$user], $talk_hours));
$stcall=sprintf("%.2f", MathZDC($calls, $leads));
$avg_sale_time=round(MathZDC($sales_talk_time_array[$user], $sale_array[$user]));
$avg_contact_time=round(MathZDC($contact_talk_time, $contacts));
$graph_stats[$j][0]=$user_row["full_name"]." - $user";
$graph_stats[$j][1]=trim($calls);
$graph_stats[$j][2]=trim($leads);
$graph_stats[$j][3]=trim($contacts);
$graph_stats[$j][4]=trim($contact_ratio);
$graph_stats[$j][5]=trim($system_time);
$graph_stats[$j][6]=trim($talk_time);
$graph_stats[$j][7]=trim($sale_array[$user]);
$graph_stats[$j][8]=trim($sales_ratio);
$graph_stats[$j][9]=trim($sale_contact_ratio);
$graph_stats[$j][10]=trim($sales_per_hour);
$graph_stats[$j][11]=trim($incomplete_array[$user]);
$graph_stats[$j][12]=trim($cancel_array[$user]);
$graph_stats[$j][13]=trim($callbacks);
$graph_stats[$j][14]=trim($stcall);
$graph_stats[$j][15]=trim($avg_sale_time);
$graph_stats[$j][16]=trim($avg_contact_time);
if (trim($calls)>$max_calls) {$max_calls=trim($calls);}
if (trim($leads)>$max_leads) {$max_leads=trim($leads);}
if (trim($contacts)>$max_contacts) {$max_contacts=trim($contacts);}
if (trim($contact_ratio)>$max_contactratio) {$max_contactratio=trim($contact_ratio);}
if (trim($system_time)>$max_systemtime) {$max_systemtime=trim($system_time);}
if (trim($talk_time)>$max_talktime) {$max_talktime=trim($talk_time);}
if (trim($sale_array[$user])>$max_sales) {$max_sales=trim($sale_array[$user]);}
if (trim($sales_ratio)>$max_salesleadsratio) {$max_salesleadsratio=trim($sales_ratio);}
if (trim($sale_contact_ratio)>$max_salescontactsratio) {$max_salescontactsratio=trim($sale_contact_ratio);}
if (trim($sales_per_hour)>$max_salesperhour) {$max_salesperhour=trim($sales_per_hour);}
if (trim($incomplete_array[$user])>$max_incsales) {$max_incsales=trim($incomplete_array[$user]);}
if (trim($cancel_array[$user])>$max_cancelledsales) {$max_cancelledsales=trim($cancel_array[$user]);}
if (trim($callbacks)>$max_callbacks) {$max_callbacks=trim($callbacks);}
if (trim($stcall)>$max_firstcall) {$max_firstcall=trim($stcall);}
if (trim($avg_sale_time)>$max_avgsaletime) {$max_avgsaletime=trim($avg_sale_time);}
if (trim($avg_contact_time)>$max_avgcontacttime) {$max_avgcontacttime=trim($avg_contact_time);}
$ASCII_text.=" | ".sprintf("%14s", $sales_per_hour);
$ASCII_text.=" | ".sprintf("%16s", $incomplete_array[$user]); $group_inc_sales+=$incomplete_array[$user];
$ASCII_text.=" | ".sprintf("%15s", $cancel_array[$user]); $group_cnc_sales+=$cancel_array[$user];
$ASCII_text.=" | ".sprintf("%9s", $callbacks); $group_callbacks+=$callbacks;
$ASCII_text.=" | ".sprintf("%21s", $stcall); # first call resolution
$ASCII_text.=" | ".sprintf("%17s", $average_sale_time);
$ASCII_text.=" | ".sprintf("%20s", $average_contact_time)." |";
$CSV_status_text="";
for ($q=0; $q='$query_date' and val.event_time<='$end_date' and val.status=vs.status and vs.status='$call_status[$q]' and val.campaign_id in ($group_SQL_str) UNION select count(distinct uniqueid) as stat_ct From ".$vicidial_agent_log_table." val, vicidial_campaign_statuses vs where val.user='$user' and val.user_group='$user_group[$i]' and val.event_time>='$query_date' and val.event_time<='$end_date' and val.status=vs.status and vs.status='$call_status[$q]' and val.campaign_id in ($group_SQL_str)) as counts";
$stat_rslt=mysql_to_mysqli($stat_stmt, $link);
$stat_row=mysqli_fetch_row($stat_rslt);
$ASCII_text.=" ".sprintf("%6s", $stat_row[0])." |";
$CSV_status_text.=",\"$stat_row[0]\"";
$call_status_group_totals[$q]+=$stat_row[0];
$graph_stats[$j][(17+$q)]=$stat_row[0];
$varname=$Sstatus."_graph";
$$varname=$graph_header."| $Sstatus | ";
$max_varname="max_".$call_status[$q];
if ($stat_row[0]>$$max_varname) {$$max_varname=$stat_row[0];}
}
$ASCII_text.="\n";
$CSV_text.="\"$j\",\"$user_row[full_name]\",\"$user\",\"$calls\",\"$leads\",\"$contacts\",\"$contact_ratio %\",\"$user_nonpause_time\",\"$user_system_time\",\"$user_talk_time\",\"$sale_array[$user]\",\"$sales_per_working_hours\",\"$sales_ratio\",\"$sale_contact_ratio\",\"$sales_per_hour\",\"$incomplete_array[$user]\",\"$cancel_array[$user]\",\"$callbacks\",\"$stcall\",\"$average_sale_time\",\"$average_contact_time\"$CSV_status_text\n";
}
##### GROUP TOTALS #############
$group_average_sale_time=sec_convert(round(MathZDC($group_sales_talk_time, $group_sales)), 'H');
$group_average_contact_time=sec_convert(round(MathZDC($group_contact_talk_time, $group_contacts)), 'H');
$group_talk_hours=MathZDC($group_talk_time, 3600);
$GROUP_text.="| ".sprintf("%40s", "$group_name");
$GROUP_text.=" | ".sprintf("%20s", "$user_group[$i]");
$total_graph_stats[$i][0]="$user_group[$i] - $group_name";
$ASCII_text.="+------------------------------------------+------------+-------+-------+----------+---------------+---------------+-------------+-----------+-------+------------------------+----------------------+-------------------------+----------------+------------------+-----------------+-----------+-----------------------+-------------------+----------------------+$HTMLborderheader\n";
$ASCII_text.="| ".sprintf("%40s", "");
$ASCII_text.=" | ".sprintf("%10s", _QXZ("TOTALS:",10));
$TOTAL_text=" | ".sprintf("%5s", $group_calls);
$TOTAL_text.=" | ".sprintf("%5s", $group_leads);
$TOTAL_text.=" | ".sprintf("%8s", $group_contacts);
$group_contact_ratio=sprintf("%.2f", MathZDC(100*$group_contacts, $group_leads));
$TOTAL_text.=" | ".sprintf("%12s", $group_contact_ratio)."%";
$TOTAL_text.=" | ".sprintf("%13s", sec_convert($group_nonpause_time,'H'));
$TOTAL_text.=" | ".sprintf("%11s", sec_convert($group_system_time,'H'));
$TOTAL_text.=" | ".sprintf("%9s", sec_convert($group_talk_time,'H'));
$TOTAL_text.=" | ".sprintf("%5s", $group_sales);
$sales_per_working_hours=sprintf("%.2f", (MathZDC($group_sales, MathZDC($group_nonpause_time, 3600))));
$TOTAL_text.=" | ".sprintf("%22s", $sales_per_working_hours);
$group_sales_ratio=sprintf("%.2f", MathZDC(100*$group_sales, $group_leads));
$TOTAL_text.=" | ".sprintf("%19s", $group_sales_ratio)."%";
$group_sale_contact_ratio=sprintf("%.2f", MathZDC(100*$group_sales, $group_contacts));
$TOTAL_text.=" | ".sprintf("%22s", $group_sale_contact_ratio)."%";
$group_sales_per_hour=sprintf("%.2f", MathZDC($group_sales, $group_talk_hours));
$group_stcall=sprintf("%.2f", MathZDC($group_calls, $group_leads));
$TOTAL_text.=" | ".sprintf("%14s", $group_sales_per_hour);
$TOTAL_text.=" | ".sprintf("%16s", $group_inc_sales);
$TOTAL_text.=" | ".sprintf("%15s", $group_cnc_sales);
$TOTAL_text.=" | ".sprintf("%9s", $group_callbacks);
$TOTAL_text.=" | ".sprintf("%21s", $group_stcall); # first call resolution
$TOTAL_text.=" | ".sprintf("%17s", $group_average_sale_time);
$TOTAL_text.=" | ".sprintf("%20s", $group_average_contact_time)." |";
$CSV_status_text="";
for ($q=0; $q$$max_varname) {$$max_varname=$call_status_group_totals[$q];}
}
$TOTAL_text.="\n";
if (trim($group_calls)>$max_totalcalls) {$max_totalcalls=trim($group_calls);}
if (trim($group_leads)>$max_totalleads) {$max_totalleads=trim($group_leads);}
if (trim($group_contacts)>$max_totalcontacts) {$max_totalcontacts=trim($group_contacts);}
if (trim($group_contact_ratio)>$max_totalcontactratio) {$max_totalcontactratio=trim($group_contact_ratio);}
if (trim($group_system_time)>$max_totalsystemtime) {$max_totalsystemtime=trim($group_system_time);}
if (trim($group_talk_time)>$max_totaltalktime) {$max_totaltalktime=trim($group_talk_time);}
if (trim($group_sales)>$max_totalsales) {$max_totalsales=trim($group_sales);}
if (trim($group_sales_ratio)>$max_totalsalesleadsratio) {$max_totalsalesleadsratio=trim($group_sales_ratio);}
if (trim($group_sale_contact_ratio)>$max_totalsalescontactsratio) {$max_totalsalescontactsratio=trim($group_sale_contact_ratio);}
if (trim($group_sales_per_hour)>$max_totalsalesperhour) {$max_totalsalesperhour=trim($group_sales_per_hour);}
if (trim($group_inc_sales)>$max_totalincsales) {$max_totalincsales=trim($group_inc_sales);}
if (trim($group_cnc_sales)>$max_totalcancelledsales) {$max_totalcancelledsales=trim($group_cnc_sales);}
if (trim($group_callbacks)>$max_totalcallbacks) {$max_totalcallbacks=trim($group_callbacks);}
if (trim($group_stcall)>$max_totalfirstcall) {$max_totalfirstcall=trim($group_stcall);}
if (trim($group_avg_sale_time)>$max_totalavgsaletime) {$max_totalavgsaletime=trim($group_avg_sale_time);}
if (trim($group_avg_contact_time)>$max_totalavgcontacttime) {$max_totalavgcontacttime=trim($group_avg_contact_time);}
$total_graph_stats[$i][1]=$group_calls;
$total_graph_stats[$i][2]=$group_leads;
$total_graph_stats[$i][3]=$group_contacts;
$total_graph_stats[$i][4]=$group_contact_ratio;
$total_graph_stats[$i][5]=$group_system_time;
$total_graph_stats[$i][6]=$group_talk_time;
$total_graph_stats[$i][7]=$group_sales;
$total_graph_stats[$i][8]=$group_sales_ratio;
$total_graph_stats[$i][9]=$group_sale_contact_ratio;
$total_graph_stats[$i][10]=$group_sales_per_hour;
$total_graph_stats[$i][11]=$group_inc_sales;
$total_graph_stats[$i][12]=$group_cnc_sales;
$total_graph_stats[$i][13]=$group_callbacks;
$total_graph_stats[$i][14]=$group_stcall;
$total_graph_stats[$i][15]=$group_avg_sale_time;
$total_graph_stats[$i][16]=$group_avg_contact_time;
$ASCII_text.=$TOTAL_text;
$GROUP_text.=$TOTAL_text;
$ASCII_text.="+------------------------------------------+------------+-------+-------+----------+---------------+---------------+-------------+-----------+-------+------------------------+----------------------+-------------------------+----------------+------------------+-----------------+-----------+-----------------------+-------------------+----------------------+$HTMLborderheader\n";
$ASCII_text.="\n\n";
$CSV_text.="\"\",\"\",\""._QXZ("TOTALS").":\",\"$group_calls\",\"$group_leads\",\"$group_contacts\",\"$group_contact_ratio %\",\"".sec_convert($group_nonpause_time,'H')."\",\"".sec_convert($group_system_time,'H')."\",\"".sec_convert($group_talk_time,'H')."\",\"$group_sales\",\"$sales_per_working_hours\",\"$group_sales_ratio\",\"$group_sale_contact_ratio\",\"$group_sales_per_hour\",\"$group_inc_sales\",\"$group_cnc_sales\",\"$group_callbacks\",\"$group_stcall\",\"$group_average_sale_time\",\"$group_average_contact_time\"$CSV_status_text\n";
$GROUP_CSV_text.="\"$i\",\"$group_name\",\"$user_group[$i]\",\"$group_calls\",\"$group_leads\",\"$group_contacts\",\"$group_contact_ratio %\",\"".sec_convert($group_nonpause_time,'H')."\",\"".sec_convert($group_system_time,'H')."\",\"".sec_convert($group_talk_time,'H')."\",\"$group_sales\",\"$sales_per_working_hours\",\"$group_sales_ratio\",\"$group_sale_contact_ratio\",\"$group_sales_per_hour\",\"$group_inc_sales\",\"$group_cnc_sales\",\"$group_callbacks\",\"$group_stcall\",\"$group_average_sale_time\",\"$group_average_contact_time\"$CSV_status_text\n";
$CSV_text.="\n\n";
$total_calls+=$group_calls;
$total_leads+=$group_leads;
$total_contacts+=$group_contacts;
$total_system_time+=$group_system_time;
$total_nonpause_time+=$group_nonpause_time;
$total_talk_time+=$group_talk_time;
$total_sales+=$group_sales;
$total_inc_sales+=$group_inc_sales;
$total_cnc_sales+=$group_cnc_sales;
$total_callbacks+=$group_callbacks;
$total_stcall+=$group_stcall; # first call resolution
$total_sales_talk_time+=$group_sales_talk_time;
$total_contact_talk_time+=$group_contact_talk_time;
# USE THIS FOR COMBINED graphs, use pipe-delimited array elements, dataset_name|index|link_name|graph_override
# You have to hard code the graph name in where it is overridden and mind the data indices. No other way to do it.
$multigraph_text="";
$graph_id++;
$dataset_ID="_".$user_group[$i]; # VERY IMPORTANT
$graph_array=array("ATPD_CALLSdata$dataset_ID|1|CALLS|integer|", "ATPD_LEADSdata$dataset_ID|2|LEADS|integer|", "ATPD_CONTACTSdata$dataset_ID|3|CONTACTS|integer|", "ATPD_CONTACTRATIOdata$dataset_ID|4|CONTACT RATIO|percent|", "ATPD_SYSTEMTIMEdata$dataset_ID|5|SYSTEM TIME|time|", "ATPD_TALKTIMEdata$dataset_ID|6|TALK TIME|time|", "ATPD_SALESdata$dataset_ID|7|SALES|integer|", "ATPD_SALESTOLEADSdata$dataset_ID|8|SALES TO LEADS RATIO|decimal|", "ATPD_SALESTOCONTACTSdata$dataset_ID|9|SALES TO CONTACTS RATIO|decimal|", "ATPD_SALESPERHOURdata$dataset_ID|10|SALES PER HOUR|decimal|", "ATPD_INCOMPLETESALESSdata$dataset_ID|11|INCOMPLETE SALES|integer|", "ATPD_CANCELLEDSALESdata$dataset_ID|12|CANCELLED SALES|integer|", "ATPD_CALLBACKSdata$dataset_ID|13|CALLBACKS|integer|", "ATPD_FIRSTCALLSdata$dataset_ID|14|FIRST CALLS|decimal|", "ATPD_AVGSALETIMEdata$dataset_ID|15|AVG SALE TIME|time|", "ATPD_AVGCONTACTTIMEdata$dataset_ID|16|AVG CONTACT TIME|time|");
for ($e=0; $e"._QXZ("TOTAL")." - ".sec_convert($current_graph_total, 'H')." \n";
$chart_options="options: {tooltips: {callbacks: {label: function(tooltipItem, data) {var value = Math.round(data.datasets[0].data[tooltipItem.index]); return value.toHHMMSS();}}}, legend: { display: false }},";
break;
case "percent":
$graph_totals_array[$q]="";
$chart_options="options: {tooltips: {callbacks: {label: function(tooltipItem, data) {var value = data.datasets[0].data[tooltipItem.index]; return value + '%';}}}, legend: { display: false }},";
break;
default:
$graph_totals_array[$q]=" "._QXZ("TOTAL").": $current_graph_total\n";
$chart_options="options: { legend: { display: false }},";
break;
}
$datasets.=$data;
$datasets.=$graphConstantsA.$graphConstantsB.$graphConstantsC.$graphConstants; # SEE TOP OF SCRIPT
$datasets.="\t\t\t}\n";
$datasets.="\t\t]\n";
$datasets.="\t}\n";
$JS_text.=$labels.$datasets;
# $JS_text.="}\n";
# $JS_text.="prepChart('$default_graph', $graph_id, $q, $dataset_name);\n";
$JS_text.="var main_ctx = document.getElementById(\"CanvasID".$graph_id."_".$q."\");\n";
$JS_text.="var GraphID".$graph_id."_".$q." = new Chart(main_ctx, {type: '$default_graph', $chart_options data: $dataset_name});\n";
}
$graph_count=count($graph_array);
$graph_title="$user_group[$i] - $group_name";
include("graphcanvas.inc");
$HTML_head.=$HTML_graph_head;
$GRAPH.=$graphCanvas;
$GRAPH_text.=$GRAPH;
#flush();
}
else
{
if ($show_all_users) {$msg="NO AGENTS CURRENTLY IN THIS USER GROUP";} else {$msg="NO AGENTS FOUND UNDER THESE REPORT PARAMETERS";}
$ASCII_text.=" **** "._QXZ("$msg")." ****\n\n";
$CSV_text.="\"\",\"**** "._QXZ("$msg")." ****\"\n\n";
$GRAPH_text.=" **** "._QXZ("$msg")." ****
\n\n";
$total_graph_stats[$i][0]="$user_group[$i] - $group_name";
}
}
$ASCII_text.="--- CALL CENTER TOTAL\n";
$ASCII_text.="+------------------------------------------+----------------------+-------+-------+----------+---------------+---------------+-------------+-----------+-------+------------------------+----------------------+-------------------------+----------------+------------------+-----------------+-----------+-----------------------+-------------------+----------------------+$HTMLborderheader\n";
$ASCII_text.="| "._QXZ("Team Name",40)." | "._QXZ("Team ID",20)." | "._QXZ("Calls",5)." | "._QXZ("Leads",5)." | "._QXZ("Contacts",8)." | "._QXZ("Contact Ratio",13)." | "._QXZ("Nonpause Time",13)." | "._QXZ("System Time",11)." | "._QXZ("Talk Time",9)." | "._QXZ("Sales",5)." | "._QXZ("Sales per Working Hour",22)." | "._QXZ("Sales to Leads Ratio",20)." | "._QXZ("Sales to Contacts Ratio",23)." | "._QXZ("Sales Per Hour",14)." | "._QXZ("Incomplete Sales",16)." | "._QXZ("Cancelled Sales",15)." | "._QXZ("Callbacks",9)." | "._QXZ("First Call Resolution",21)." | "._QXZ("Average Sale Time",17)." | "._QXZ("Average Contact Time",20)." |$HTMLstatusheader\n";
$ASCII_text.="+------------------------------------------+----------------------+-------+-------+----------+---------------+---------------+-------------+-----------+-------+------------------------+----------------------+-------------------------+----------------+------------------+-----------------+-----------+-----------------------+-------------------+----------------------+$HTMLborderheader\n";
$ASCII_text.=$GROUP_text;
$ASCII_text.="+------------------------------------------+----------------------+-------+-------+----------+---------------+---------------+-------------+-----------+-------+------------------------+----------------------+-------------------------+----------------+------------------+-----------------+-----------+-----------------------+-------------------+----------------------+$HTMLborderheader\n";
$total_average_sale_time=sec_convert(round(MathZDC($total_sales_talk_time,$total_sales)), 'H');
$total_average_contact_time=sec_convert(round(MathZDC($total_contact_talk_time,$total_contacts)), 'H');
$total_talk_hours=MathZDC($total_talk_time, 3600);
$ASCII_text.="| ".sprintf("%40s", "");
$ASCII_text.=" | ".sprintf("%20s", _QXZ("TOTALS:"));
$ASCII_text.=" | ".sprintf("%5s", $total_calls);
$ASCII_text.=" | ".sprintf("%5s", $total_leads);
$ASCII_text.=" | ".sprintf("%8s", $total_contacts);
$total_contact_ratio=sprintf("%.2f", MathZDC(100*$total_contacts, $total_leads));
$ASCII_text.=" | ".sprintf("%12s", $total_contact_ratio)."%";
$ASCII_text.=" | ".sprintf("%13s", sec_convert($total_nonpause_time,'H'));
$ASCII_text.=" | ".sprintf("%11s", sec_convert($total_system_time,'H'));
$ASCII_text.=" | ".sprintf("%9s", sec_convert($total_talk_time,'H'));
$ASCII_text.=" | ".sprintf("%5s", $total_sales);
$sales_per_working_hours=sprintf("%.2f", MathZDC($total_sales, MathZDC($total_nonpause_time, 3600)));
$ASCII_text.=" | ".sprintf("%22s", $sales_per_working_hours);
$total_sales_ratio=sprintf("%.2f", MathZDC(100*$total_sales, $total_leads));
$ASCII_text.=" | ".sprintf("%19s", $total_sales_ratio)."%";
$total_sale_contact_ratio=sprintf("%.2f", MathZDC(100*$total_sales, $total_contacts));
$ASCII_text.=" | ".sprintf("%22s", $total_sale_contact_ratio)."%";
$total_sales_per_hour=sprintf("%.2f", MathZDC($total_sales, $total_talk_hours));
$total_stcall=sprintf("%.2f", MathZDC($total_calls, $total_leads));
$ASCII_text.=" | ".sprintf("%14s", $total_sales_per_hour);
$ASCII_text.=" | ".sprintf("%16s", $total_inc_sales);
$ASCII_text.=" | ".sprintf("%15s", $total_cnc_sales);
$ASCII_text.=" | ".sprintf("%9s", $total_callbacks);
$ASCII_text.=" | ".sprintf("%21s", $total_stcall); # first call resolution
$ASCII_text.=" | ".sprintf("%17s", $total_average_sale_time);
$ASCII_text.=" | ".sprintf("%20s", $total_average_contact_time)." |";
$CSV_status_text="";
for ($q=0; $q";
$ASCII_text.="\n";
$ASCII_text.=" |