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;
}
//
$isMobile = false;
?>
Workflow Diário
|
WORKFLOW DIÁRIO |
|
Dac: |
Ligações |
Performace |
Total de Chamadas |
Tempo Médio |
Atendidas
URA |
Abandonadas |
Atendidas
|
Atendidas
até 30'' |
Transferidas |
Espera |
Originadas
|
Espera |
Atendimento
|
Originando |
Abandono |
NS |
$atdUra |
$abd |
$atdPa |
$atd30 |
$transfer |
$espera |
$originadas |
$tmpEspera |
$tmpAtd |
$tmpOrig |
$tmpAbd |
$ns |
";
?>
|
Resumo da Operação por Agente |
|
Número de Pausas |
Número de Chamadas |
Tempo |
Agente |
P |
PP |
CA |
CO |
Logado |
P |
PP |
CA |
CO |
Livre |
TMA |
TMO |
$agt |
$pausa |
$pausaP |
$ca |
$co |
" . SecondToStrTime($tmpLgd) . " |
" . SecondToStrTime($tmpP) . " |
" . SecondToStrTime($tmpPP) . " |
" . SecondToStrTime($tmpCa) . " |
" . SecondToStrTime($tmpCo) . " |
" . SecondToStrTime($tmpLivre) . " |
" . SecondToStrTime($tma) . " |
" . SecondToStrTime($tmo) . " |
";
}
//$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 "
Média |
$pausa_M |
$pausaP_M |
$ca_M |
$co_M |
$tmpLgd_M |
$tmpP_M |
$tmpPP_M |
$tmpCa_M |
$tmpCo_M |
$tmpLivre_M |
$tma_M |
$tmo_M |
";
/* $somaAgt;
$somaPausa;
$somaPausaP;
$somaCa;
$somaCo; */
$somatmpLgd = SecondToStrTime($somatmpLgd);
$somaTmpP = SecondToStrTime($somaTmpP);
$somaTmpPP = SecondToStrTime($somaTmpPP);
$somaTmpCa = SecondToStrTime($somaTmpCa);
$somaTmpCo = SecondToStrTime($somaTmpCo);
$somaTmpLivre = SecondToStrTime($somaTmpLivre);
echo "
Total |
$somaPausa |
$somaPausaP |
$somaCa |
$somaCo |
$somatmpLgd |
$somaTmpP |
$somaTmpPP |
$somaTmpCa |
$somaTmpCo |
$somaTmpLivre |
- |
- |
";
?>
|
|
Legenda |
P |
Pausa |
PP |
Pausa Produtiva |
CA |
Chamadas Atendidas |
CO |
Chamadas Originadas |
TMA |
Tempo Médio de Atendimento |
TMO |
Tempo Médio de Atendimento Originando |
|
|
%s |
Classificação |
Serviço |
%% |
Qtde |
%s
';
$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 .= "
$clas |
$item |
$perc% |
$qtde |
";
}
$linhas .= "Total | $somaQtde |
";
$relClas .= sprintf($table, $dacNome, $linhas);
}
echo "
Classificação de Atendimento |
$relClas |
";
?>
'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";
}
?>