|
|
<?php |
|
|
/* |
|
|
* Pega data do dia anterior para consulta |
|
|
*/ |
|
|
$data = new CalcDataHora(); |
|
|
$data->somaDia(-1); |
|
|
$dataDisplay = $data->getData(); |
|
|
$data = FormatDtMssql($data->getData()); |
|
|
$data = '2013-04-22'; |
|
|
|
|
|
|
|
|
$queryAgt = "CREATE TEMPORARY TABLE agente_operacao (id_dac int, fila varchar(50) not null, apelido varchar(30), matricula varchar(4) not null, data date not null, |
|
|
login timestamp, logoff timestamp, tempoLogin int, chamadas_atendidas int, num_pausa int, tempo_espera int, tempo_entrada int, chamadas_realizadas int, |
|
|
tempo_saida int, tempo_pausa int, num_pausa_prod int, tempo_pausa_prod int, CONSTRAINT \"pkAgtOpera\" PRIMARY KEY( fila, matricula, data )); |
|
|
insert into agente_operacao |
|
|
select c.id as id_dac, c.nome as fila, b.apelido, a.matricula, cast(a.login as date) as data, min(login) as login, max(logoff) as logoff, sum(EXTRACT(epoch from ((logoff) - (login)))) as tempoLogin, |
|
|
0 as chamadas_atendidas, 0 as num_pausa, 0 as tempo_espera, 0 as tempo_entrada, 0 as chamadas_realizadas, 0 as tempo_saida, 0 as tempo_pausa, 0 as num_pausa_prod, 0 as tempo_pausa_prod |
|
|
from pbx_eventos_agentes a, pbx_usuarios b, pbx_dacs c |
|
|
where b.matricula = a.matricula |
|
|
and c.id = a.id_dac |
|
|
and a.id_dac = coalesce('{ID_DAC}', a.id_dac) |
|
|
and cast(a.login as date) = '{DATA}' |
|
|
and b.matricula = coalesce(null, b.matricula) |
|
|
group by 1, 2, 3, 4, 5; |
|
|
|
|
|
CREATE TEMPORARY TABLE agente_pausa AS |
|
|
select a.id_dac, b.apelido, cast(a.entrada_pausa as date) as data, |
|
|
sum(case when(a.pausa_produtiva = 0)then 1 else 0 end) as num_pausa, |
|
|
sum(case when(a.pausa_produtiva = 1)then 1 else 0 end) as num_pausa_prod, |
|
|
sum(EXTRACT(epoch from ( case when(a.pausa_produtiva = 0)then saida_pausa - entrada_pausa else '00:00:00' end ))) as tempo_pausa, |
|
|
sum(EXTRACT(epoch from ( case when(a.pausa_produtiva = 1)then saida_pausa - entrada_pausa else '00:00:00' end ))) as tempo_pausa_prod |
|
|
from pbx_eventos_agentes a, pbx_usuarios b |
|
|
where b.matricula = a.matricula |
|
|
and a.id_dac = coalesce('{ID_DAC}', a.id_dac) |
|
|
and cast(a.entrada_pausa as date) = '{DATA}' |
|
|
and b.matricula = coalesce(null, b.matricula) |
|
|
group by a.id_dac, b.apelido, cast(a.entrada_pausa as date); |
|
|
|
|
|
update agente_operacao |
|
|
set num_pausa = b.num_pausa, |
|
|
tempo_pausa = b.tempo_pausa, |
|
|
num_pausa_prod = b.num_pausa_prod, |
|
|
tempo_pausa_prod = b.tempo_pausa_prod |
|
|
from agente_pausa as b |
|
|
where agente_operacao.apelido = b.apelido |
|
|
and agente_operacao.data = b.data |
|
|
and agente_operacao.id_dac = b.id_dac; |
|
|
|
|
|
update agente_operacao |
|
|
set chamadas_atendidas = a.chamadas_atendidas, |
|
|
tempo_espera = a.tempo_espera, |
|
|
tempo_entrada = a.tempo_entrada, |
|
|
chamadas_realizadas = a.chamadas_realizadas, |
|
|
tempo_saida = a.tempo_saida |
|
|
from (select |
|
|
substring(dac.agente, 7,4) as matricula, bil.calldate::date as data, dac.fila, |
|
|
sum(case when(dac.evento in('COMPLETECALLER', 'COMPLETEAGENT', 'TRANSFER'))then 1 else 0 end) as chamadas_atendidas, |
|
|
sum(case when((dac.evento = 'CONNECT') and (coalesce(dac.param1, '0')::integer > 3) )then dac.param1::integer else 0 end) as tempo_espera, |
|
|
sum(case when(dac.evento in('COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG'))then 1 else 0 end) as chamadas_realizadas, |
|
|
sum(case when(dac.evento in('COMPLETECALLER', 'COMPLETEAGENT', 'TRANSFER'))then case when(dac.evento = 'TRANSFER')then( case when(coalesce(param4,'') <> '')then coalesce(param4,'0')::integer else 0 end )else( case when(coalesce(param2,'') <> '')then coalesce(param2,'0')::integer else 0 end )end else 0 end) as tempo_entrada, |
|
|
sum(case when(dac.evento in('COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG') )then case when(dac.evento = 'TRANSFERORIG')then( case when(coalesce(param4,'') <> '')then coalesce(param4,'0')::integer else 0 end )else( case when(coalesce(param2,'') <> '')then coalesce(param2,'0')::integer else 0 end )end else 0 end) as tempo_saida |
|
|
from pbx_bilhetes bil, pbx_eventos_dacs dac, agente_operacao |
|
|
where dac.uid2 = bil.uniqueid |
|
|
and agente_operacao.fila = dac.fila |
|
|
and agente_operacao.matricula = substring(dac.agente, 7,4) |
|
|
and agente_operacao.data = bil.calldate::date |
|
|
and bil.calldate::date = '{DATA}' |
|
|
and bil.lastapp <> 'Transferred Call' |
|
|
group by 1,2,3 |
|
|
) a where agente_operacao.data = a.data |
|
|
and agente_operacao.matricula = a.matricula |
|
|
and agente_operacao.matricula = a.matricula |
|
|
and agente_operacao.fila = a.fila; |
|
|
|
|
|
|
|
|
select id_dac, fila, apelido, matricula, data, login, logoff, tempologin, chamadas_atendidas, |
|
|
num_pausa, tempo_espera, tempo_entrada, chamadas_realizadas, tempo_saida, tempo_pausa, |
|
|
num_pausa_prod, tempo_pausa_prod |
|
|
from agente_operacao order by data, apelido"; |
|
|
|
|
|
$query = "SELECT |
|
|
ID_FILA |
|
|
,FILA |
|
|
,DATA |
|
|
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS OFERECIDAS |
|
|
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS ATENDIDAS_URA |
|
|
,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS |
|
|
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER','TRANSFER') THEN 1 ELSE 0 END) AS ATENDIDAS_PA |
|
|
,SUM (CASE WHEN EVENTO IN ('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG') THEN 1 ELSE 0 END) AS ORIGINADAS_PA |
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND (param1 <= 30) THEN 1 ELSE 0 END) AS ATENDIDAS_30 |
|
|
,SUM (CASE WHEN EVENTO IN ('TRANSFER') THEN 1 ELSE 0 END) AS TRANSFERIDAS |
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND (param1 > 3) THEN 1 ELSE 0 END) AS ESPERA |
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND param1 > 1 THEN param1 ELSE 0 END) AS TEMPO_ESPERA |
|
|
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER') AND param2 > 1 THEN param2 ELSE 0 END) AS TEMPO_ATENDIMENTO |
|
|
,SUM (CASE WHEN EVENTO IN ('COMPLETAAGENT','COMPLETACALLER') AND param2 > 1 THEN param2 ELSE 0 END) AS TEMPO_ORIGINADAS |
|
|
,SUM (CASE WHEN EVENTO = 'ABANDON' THEN param3 ELSE 0 END) AS TEMPO_ABANDONO |
|
|
FROM ( |
|
|
SELECT |
|
|
a.calldate::date AS DATA, a.calldate,d.id as id_fila, b.fila,b.evento,strtoint(b.param1, 0) as param1,strtoint(b.param2, 0) as param2, strtoint(b.param3, 0) as param3, strtoint(b.param4, 0) as param4 |
|
|
FROM pbx_eventos_dacs b INNER JOIN pbx_bilhetes a on a.uniqueid = b.uid2 and a.lastapp <> 'Transferred Call' |
|
|
INNER JOIN pbx_dacs d on d.nome = b.fila |
|
|
WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER','COMPLETAAGENT','COMPLETACALLER','CONNECT','ENTERQUEUE','TRANSFER','TRANSFERORIG') |
|
|
AND a.calldate::date = '$data' |
|
|
) AS DADOS |
|
|
GROUP BY ID_FILA, FILA, DATA order by FILA"; |
|
|
|
|
|
$dadosDac = array(); |
|
|
$result = pg_query($dbcon, $query); |
|
|
while ($dados = pg_fetch_array($result)) { |
|
|
$dadosDac[] = $dados; |
|
|
} |
|
|
//<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
|
|
$isMobile = false; |
|
|
?> |
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
|
|
<html xmlns="http://www.w3.org/1999/xhtml"> |
|
|
<head> |
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
|
|
<title>Workflow Diário</title> |
|
|
<style type="text/css"> |
|
|
body |
|
|
{ |
|
|
font-family: Tahoma,Verdana,Helvetica,Helvetica-Narrow,sans-serif; |
|
|
margin: 0px; |
|
|
padding:0px; |
|
|
/*background: #D8D5C2 url(img/background_main.jpg) repeat-x top;*/ |
|
|
} |
|
|
|
|
|
|
|
|
.grid |
|
|
{ |
|
|
<?php echo $isMobile ? "width: 100%;\n" : "width: 100%;\nmax-width:760px;\n"; ?> |
|
|
border-collapse: collapse; |
|
|
border: 1px solid #CCCCCC; |
|
|
background-color:#FFF; |
|
|
font-size:<?php echo $isMobile ? "xx-large" : "11px"; ?>; |
|
|
font-family:Arial, Helvetica, sans-serif; |
|
|
|
|
|
} |
|
|
|
|
|
.grid th |
|
|
{ |
|
|
background-color:#FFA700; |
|
|
border: 1px solid #CCCCCC; |
|
|
color:#FFFFFF; |
|
|
} |
|
|
|
|
|
.media |
|
|
{ |
|
|
background-color:#FFD673; |
|
|
border: 1px solid #CCCCCC; |
|
|
color:#A67500; |
|
|
padding:2px; |
|
|
} |
|
|
|
|
|
.total |
|
|
{ |
|
|
background-color:#A67500; |
|
|
border: 1px solid #CCCCCC; |
|
|
color:#FFA700; |
|
|
padding:2px; |
|
|
} |
|
|
|
|
|
.grid td |
|
|
{ |
|
|
font-size:<?php echo $isMobile ? "xx-large" : "10px"; ?>; |
|
|
border: 1px solid #CCCCCC; |
|
|
} |
|
|
|
|
|
.cabecalio |
|
|
{ |
|
|
background-color:#FFFFFF; |
|
|
font:Arial, Helvetica, sans-serif; |
|
|
font-size:<?php echo $isMobile ? "48px" : "18px"; ?>;; |
|
|
font-weight:bold; |
|
|
color:#BF9530; |
|
|
} |
|
|
|
|
|
.dac |
|
|
{ |
|
|
background-color:#BF9530; |
|
|
font-size:14px; |
|
|
color:#fff; |
|
|
font-weight:bold; |
|
|
} |
|
|
|
|
|
|
|
|
</style> |
|
|
</head> |
|
|
|
|
|
<body> |
|
|
<table align="center" border="0" cellspacing="0" cellpadding="2" class="grid"> |
|
|
<tr> |
|
|
<td> |
|
|
<table border="0" cellpadding="2" cellspacing="0" style="width:100%; border:0"> |
|
|
<tr> |
|
|
<td style="border:0" width="192"><img src="http://177.67.197.51/img//logoPrincipal.gif" width="191" height="48" /></td> |
|
|
<td style="border:0" align="center" valign="middle" ><span class="cabecalio">WORKFLOW DIÁRIO <?php echo $dataDisplay; ?></span></td> |
|
|
</tr> |
|
|
</table></td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
|
|
|
<?php |
|
|
foreach ($dadosDac as $dados) { |
|
|
//OFERECIDAS ATENDIDAS_URA ABANDONADAS ATENDIDAS_PA ORIGINADAS_PA ATENDIDAS_30 |
|
|
//TRANSFERIDAS ESPERA TEMPO_ESPERA TEMPO_ATENDIMENTO TEMPO_ORIGINADAS TEMPO_ABANDONO |
|
|
$dac = $dados["fila"]; |
|
|
$data = $dados["data"]; |
|
|
$atdUra = $dados["atendidas_ura"]; |
|
|
$abd = $dados["abandonadas"]; |
|
|
$atdPa = $dados["atendidas_pa"]; |
|
|
$atd30 = $dados["atendidas_30"]; |
|
|
$transfer = $dados["transferidas"]; |
|
|
$espera = $dados["espera"]; |
|
|
$originadas = $dados["originadas_pa"]; |
|
|
$tmpEspera = $dados["tempo_espera"]; |
|
|
$tmpAtd = $dados["tempo_atendimento"]; |
|
|
$tmpAbd = $dados["tempo_abandono"]; |
|
|
$tmpOrig = $dados["tempo_originadas"]; |
|
|
$ca = $atdPa + $abd; |
|
|
$ns = FormataValor($ca ? round(($atd30 / $ca) * 100.0, 1) : 0, 1) . "%"; |
|
|
$tmpEspera = SecondToStrTime($espera ? round($tmpEspera / $espera, 0) : 0); |
|
|
$tmpAtd = SecondToStrTime($atdPa ? round($tmpAtd / $atdPa, 0) : 0); |
|
|
$tmpOrig = SecondToStrTime($originadas ? round($tmpOrig / $originadas, 0) : 0); |
|
|
$tmpAbd = SecondToStrTime($abd ? round($tmpAbd / $abd, 0) : 0); |
|
|
?> |
|
|
|
|
|
|
|
|
<table border="0" cellspacing="0" cellpadding="2" class="grid"> |
|
|
|
|
|
<tr> |
|
|
<td class="dac"><span class="dac"><strong>Dac: </strong><?php echo $dac; ?><span></td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
<table class="grid" width="100%" border="1" cellpadding="2" cellspacing="0"> |
|
|
<tr> |
|
|
<th colspan="7" align="center">Ligações</th> |
|
|
<th colspan="5" align="center">Performace</th> |
|
|
</tr> |
|
|
<tr> |
|
|
<th colspan="7" align="center">Total de Chamadas </th> |
|
|
<th colspan="5" align="center"><strong >Tempo Médio</strong></th> |
|
|
</tr> |
|
|
<tr align="center" bgcolor="#FFFFFF"> |
|
|
<th>Atendidas<br /> |
|
|
URA </th> |
|
|
<th>Abandonadas</th> |
|
|
<th>Atendidas <br /></th> |
|
|
<th>Atendidas <br /> |
|
|
até 30'' </th> |
|
|
<th>Transferidas</th> |
|
|
<th>Espera </th> |
|
|
<th>Originadas<br /></th> |
|
|
<th align="center">Espera</th> |
|
|
<th align="center">Atendimento<br /></th> |
|
|
<th align="center">Originando</th> |
|
|
<th align="center">Abandono</th> |
|
|
<th>NS</th> |
|
|
</tr> |
|
|
<?php |
|
|
echo "<tr align=\"center\" bgcolor=\"#FFFFFF\"> |
|
|
<td>$atdUra</td> |
|
|
<td>$abd</td> |
|
|
<td>$atdPa</td> |
|
|
<td>$atd30</td> |
|
|
<td>$transfer</td> |
|
|
<td>$espera</td> |
|
|
<td>$originadas</td> |
|
|
<td align=\"center\">$tmpEspera</td> |
|
|
<td align=\"center\">$tmpAtd</td> |
|
|
<td align=\"center\">$tmpOrig</td> |
|
|
<td align=\"center\">$tmpAbd</td> |
|
|
<td>$ns</td> |
|
|
</tr>"; |
|
|
?> |
|
|
</table></td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>Resumo da Operação por Agente</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td><table width="100%" border="0" cellpadding="2" cellspacing="0" class="grid"> |
|
|
<tr> |
|
|
<th align="left" class="headColun"> </th> |
|
|
<th colspan="2" align="center" class="headColun">Número de Pausas </th> |
|
|
<th colspan="2" align="center" class="headColun">Número de Chamadas</th> |
|
|
<th colspan="8" align="center" class="headColun">Tempo</th> |
|
|
</tr> |
|
|
<tr> |
|
|
<th align="left" class="headColun">Agente</th> |
|
|
<th align="right" class="headColun">P</th> |
|
|
<th align="right" class="headColun">PP</th> |
|
|
<th align="right" class="headColun">CA</th> |
|
|
<th align="right" class="headColun">CO</th> |
|
|
<th align="center" class="headColun">Logado</th> |
|
|
<th align="center" class="headColun">P</th> |
|
|
<th align="center" class="headColun">PP</th> |
|
|
<th align="center" class="headColun">CA</th> |
|
|
<th align="center" class="headColun">CO</th> |
|
|
<th align="center" class="headColun">Livre</th> |
|
|
<th align="center" class="headColun">TMA</th> |
|
|
<th align="center" class="headColun">TMO</th> |
|
|
</tr> |
|
|
<?php |
|
|
/* |
|
|
* Esta funcao verifica se uma determinada tabela temporaria existe na sessao corrente |
|
|
*/ |
|
|
dropTemporaryTable($dbcon, 'agente_operacao'); |
|
|
dropTemporaryTable($dbcon, 'agente_pausa'); |
|
|
|
|
|
$query = str_replace("{ID_DAC}", $dados["id_fila"], $queryAgt); |
|
|
$query = str_replace("{DATA}", $data, $query); |
|
|
|
|
|
$result = pg_query($dbcon, $query); |
|
|
$somaAgt = 0; |
|
|
$somaPausa = 0; |
|
|
$somaPausaP = 0; |
|
|
$somaCa = 0; |
|
|
$somaCo = 0; |
|
|
$somatmpLgd = 0; |
|
|
$somaTmpP = 0; |
|
|
$somaTmpPP = 0; |
|
|
$somaTmpCa = 0; |
|
|
$somaTmpCo = 0; |
|
|
$somaTmpLivre = 0; |
|
|
while ($dadosAgt = pg_fetch_array($result)) { |
|
|
/* |
|
|
* select id_dac, fila, apelido, matricula, data, login, logoff, tempologin, chamadas_atendidas, |
|
|
* num_pausa, tempo_espera, tempo_entrada, chamadas_realizadas, tempo_saida, tempo_pausa, |
|
|
* num_pausa_prod, tempo_pausa_prod |
|
|
* |
|
|
*/ |
|
|
|
|
|
$agt = $dadosAgt["apelido"]; |
|
|
$pausa = $dadosAgt["num_pausa"]; |
|
|
$pausaP = $dadosAgt["num_pausa_prod"]; |
|
|
$ca = $dadosAgt["chamadas_atendidas"]; |
|
|
$co = $dadosAgt["chamadas_realizadas"]; |
|
|
$tmpLgd = $dadosAgt["tempologin"]; |
|
|
$tmpP = $dadosAgt["tempo_pausa"]; |
|
|
$tmpPP = $dadosAgt["tempo_pausa_prod"]; |
|
|
$tmpCa = $dadosAgt["tempo_entrada"]; |
|
|
$tmpCo = $dadosAgt["tempo_saida"]; |
|
|
$tmpLivre = $tmpLgd - ($tmpP + $tmpPP + $tmpCa + $tmpCo); |
|
|
$tma = $ca ? round($tmpCa / $ca, 0) : 0; |
|
|
$tmo = $co ? round($tmpCo / $co, 0) : 0; |
|
|
|
|
|
$somaAgt++; |
|
|
$somaPausa += $pausa; |
|
|
$somaPausaP += $pausaP; |
|
|
$somaCa += $ca; |
|
|
$somaCo += $co; |
|
|
$somatmpLgd += $tmpLgd; |
|
|
$somaTmpP += $tmpP; |
|
|
$somaTmpPP += $tmpPP; |
|
|
$somaTmpCa += $tmpCa; |
|
|
$somaTmpCo += $tmpCo; |
|
|
$somaTmpLivre += $tmpLivre; |
|
|
|
|
|
echo "<tr> |
|
|
<td align=\"right\" >$agt</td> |
|
|
<td align=\"right\" >$pausa</td> |
|
|
<td align=\"right\" >$pausaP</td> |
|
|
<td align=\"right\" >$ca</td> |
|
|
<td align=\"right\" >$co</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tmpLgd) . "</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tmpP) . "</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tmpPP) . "</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tmpCa) . "</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tmpCo) . "</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tmpLivre) . "</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tma) . "</td> |
|
|
<td align=\"center\" >" . SecondToStrTime($tmo) . "</td> |
|
|
</tr>"; |
|
|
} |
|
|
//$somaAgt; $somaPausa; $somaPausaP; $somaCa; $somaCo; |
|
|
//$somatmpLgd; $somaTmpP; $somaTmpPP;$somaTmpCa; $somaTmpCo; $somaTmpLivre; |
|
|
|
|
|
$pausa_M = FormataValor(!$somaAgt ? 0 : round($somaPausa / $somaAgt, 1), 1); |
|
|
$pausaP_M = FormataValor(!$somaAgt ? 0 : round($somaPausaP / $somaAgt, 1), 1); |
|
|
$ca_M = FormataValor(!$somaAgt ? 0 : round($somaCa / $somaAgt, 1), 1); |
|
|
$co_M = FormataValor(!$somaAgt ? 0 : round($somaCo / $somaAgt, 1), 1); |
|
|
$tmpLgd_M = SecondToStrTime(!$somaAgt ? 0 : round($somatmpLgd / $somaAgt, 0)); |
|
|
$tmpP_M = SecondToStrTime(!$somaAgt ? 0 : round($somaTmpP / $somaAgt, 0)); |
|
|
$tmpPP_M = SecondToStrTime(!$somaAgt ? 0 : round($somaTmpPP / $somaAgt, 0)); |
|
|
$tmpCa_M = SecondToStrTime(!$somaAgt ? 0 : round($somaTmpCa / $somaAgt, 0)); |
|
|
$tmpCo_M = SecondToStrTime(!$somaAgt ? 0 : round($somaTmpCo / $somaAgt, 0)); |
|
|
$tmpLivre_M = SecondToStrTime(!$somaAgt ? 0 : round($somaTmpLivre / $somaAgt, 0)); |
|
|
$tma_M = SecondToStrTime(!$somaCa ? 0 : round($somaTmpCa / $somaCa, 0)); |
|
|
$tmo_M = SecondToStrTime(!$somaCo ? 0 : round($somaTmpCo / $somaCo, 0)); |
|
|
echo "<tr class=\"media\"> |
|
|
<td align=\"left\">Média</td> |
|
|
<td align=\"right\">$pausa_M</td> |
|
|
<td align=\"right\">$pausaP_M</td> |
|
|
<td align=\"right\">$ca_M</td> |
|
|
<td align=\"right\">$co_M</td> |
|
|
<td align=\"center\">$tmpLgd_M</td> |
|
|
<td align=\"center\">$tmpP_M</td> |
|
|
<td align=\"center\">$tmpPP_M</td> |
|
|
<td align=\"center\">$tmpCa_M</td> |
|
|
<td align=\"center\">$tmpCo_M</td> |
|
|
<td align=\"center\">$tmpLivre_M</td> |
|
|
<td align=\"center\">$tma_M</td> |
|
|
<td align=\"center\">$tmo_M</td> |
|
|
</tr>"; |
|
|
|
|
|
/* $somaAgt; |
|
|
$somaPausa; |
|
|
$somaPausaP; |
|
|
$somaCa; |
|
|
$somaCo; */ |
|
|
$somatmpLgd = SecondToStrTime($somatmpLgd); |
|
|
$somaTmpP = SecondToStrTime($somaTmpP); |
|
|
$somaTmpPP = SecondToStrTime($somaTmpPP); |
|
|
$somaTmpCa = SecondToStrTime($somaTmpCa); |
|
|
$somaTmpCo = SecondToStrTime($somaTmpCo); |
|
|
$somaTmpLivre = SecondToStrTime($somaTmpLivre); |
|
|
echo "<tr class=\"total\"> |
|
|
<td align=\"left\" >Total</td> |
|
|
<td align=\"right\" >$somaPausa</td> |
|
|
<td align=\"right\" >$somaPausaP</td> |
|
|
<td align=\"right\" >$somaCa</td> |
|
|
<td align=\"right\" >$somaCo</td> |
|
|
<td align=\"center\" >$somatmpLgd</td> |
|
|
<td align=\"center\" >$somaTmpP</td> |
|
|
<td align=\"center\" >$somaTmpPP</td> |
|
|
<td align=\"center\" >$somaTmpCa</td> |
|
|
<td align=\"center\" >$somaTmpCo</td> |
|
|
<td align=\"center\" >$somaTmpLivre</td> |
|
|
<td align=\"center\" >-</td> |
|
|
<td align=\"center\" >-</td> |
|
|
</tr>"; |
|
|
?> |
|
|
</table></td> |
|
|
</tr> |
|
|
</table> |
|
|
<?php |
|
|
/* fim da area dac */ |
|
|
} |
|
|
?> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td><table border="0" cellspacing="0" cellpadding="2" > |
|
|
<tr> |
|
|
<th colspan="2" align="center">Legenda</th> |
|
|
</tr> |
|
|
<tr> |
|
|
<th align="left">P</th> |
|
|
<td align="left">Pausa</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<th align="left">PP</th> |
|
|
<td align="left">Pausa Produtiva</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<th align="left">CA</th> |
|
|
<td align="left">Chamadas Atendidas</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<th align="left">CO</th> |
|
|
<td align="left">Chamadas Originadas</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<th align="left">TMA</th> |
|
|
<td align="left">Tempo Médio de Atendimento</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<th align="left">TMO</th> |
|
|
<td align="left">Tempo Médio de Atendimento Originando</td> |
|
|
</tr> |
|
|
</table></td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
|
|
|
<?php |
|
|
$relClas = ""; |
|
|
$table = '<table cellpadding="2" class="grid"> |
|
|
<tr > |
|
|
<th colspan="4" align="center">%s</th> |
|
|
</tr> |
|
|
<tr align="center"> |
|
|
<th align="left" nowrap class="headColun">Classificação</th> |
|
|
<th align="left" nowrap class="headColun">Serviço</th> |
|
|
<th nowrap class="headColun">%%</th> |
|
|
<th align="right" nowrap class="headColun">Qtde</th> |
|
|
</tr> |
|
|
%s |
|
|
</table>'; |
|
|
|
|
|
$query = "select distinct a.id, a.nome |
|
|
from pbx_dacs a, pbx_classifica_reg b, pbx_bilhetes d |
|
|
where d.uniqueid = b.id_bilhetes |
|
|
and a.id = b.id_dac |
|
|
and d.calldate::date = '$data' |
|
|
order by 2"; |
|
|
|
|
|
$resultDac = pg_query($dbcon, $query); |
|
|
while ($dadosDac = pg_fetch_array($resultDac)) { |
|
|
$somaQtde = 0; |
|
|
$dac = $dadosDac["id"]; |
|
|
$dacNome = $dadosDac["nome"]; |
|
|
$query = GetQueryClassificaWkf($data, $dac); |
|
|
$result = pg_query($dbcon, $query); |
|
|
$dadosBuff = array(); |
|
|
while ($dados = pg_fetch_array($result)) { |
|
|
$dadosBuff[] = $dados; |
|
|
$somaQtde += $dados["qtde"]; |
|
|
} |
|
|
$dados = array(); |
|
|
$linhas = ""; |
|
|
foreach ($dadosBuff as $dados) { |
|
|
$clas = $dados["clas_descricao"]; |
|
|
$item = $dados["clit_descricao"]; |
|
|
$qtde = $dados["qtde"]; |
|
|
$perc = round(!$somaQtde ? 0 : ($qtde * 100.0) / $somaQtde, 0); |
|
|
|
|
|
$linhas .= "<tr> |
|
|
<td align=\"left\" class=\"headColun\" nowrap>$clas</td> |
|
|
<td align=\"left\" class=\"headColun\">$item</td> |
|
|
<td align=\"center\" class=\"headColun\">$perc%</td> |
|
|
<td align=\"right\" class=\"headColun\">$qtde</td> |
|
|
</tr>"; |
|
|
} |
|
|
$linhas .= "<tr><th align=\"center\" colspan=\"3\" class=\"headColun\">Total</th><th align=\"right\" >$somaQtde</th></tr>"; |
|
|
$relClas .= sprintf($table, $dacNome, $linhas); |
|
|
} |
|
|
|
|
|
echo "<table cellpadding=\"2\" class=\"grid\"> |
|
|
<tr><td align=\"center\"><span style=\"font-size:12px; font-weight:bold;\">Classifica<EFBFBD><EFBFBD>o de Atendimento<span></td></tr><tr><td>$relClas</td></tr> |
|
|
</table>"; |
|
|
?> |
|
|
|
|
|
</td> |
|
|
</tr> |
|
|
|
|
|
</table> |
|
|
</body> |
|
|
</html> |
|
|
|
|
|
<?php |
|
|
|
|
|
function GetQueryClassificaWkf($data, $dac) { |
|
|
return "select a.id_dac, e.nome, clas_descricao, clit_descricao, count(*) as qtde |
|
|
from pbx_classifica_reg a, pbx_classifica_atendimento b, pbx_classifica_item c, |
|
|
pbx_bilhetes d, pbx_dacs e |
|
|
where b.clas_id = a.clas_id |
|
|
and c.clit_id = a.clit_id |
|
|
and d.uniqueid = a.id_bilhetes |
|
|
and e.id = a.id_dac |
|
|
and d.lastapp <> 'Transferred Call' |
|
|
and a.id_dac = '$dac' |
|
|
and d.calldate::date = '$data' |
|
|
group by a.id_dac, e.nome, clas_descricao, clit_descricao |
|
|
order by 5 desc"; |
|
|
} |
|
|
?>
|