Browse Source

Foi modificado o filtro de Filas para que seja possivel selecionar todas as filas para geracao do relatorio

1.8.1-monitor
douglas.strappasson 1 year ago
parent
commit
c88666a8cb
  1. 2
      contacteFunc.php
  2. 88
      relatorios/callcenter/geral/relAgenteProducao.php

2
contacteFunc.php

@ -88,7 +88,7 @@ function GetDacs($dbcon, $codDac, $disableb = "", $incTodos = 1, $soAtivo = 1) {
$codSel = $codDac;
$dacs = "<select name=\"listaDacs\" id=\"listaDacs\" size=\"1\" $disableb>";
$sel = $codSel == '0' ? "selected" : "";
$dacs .= "<option value=\"0\" $sel>" . ($incTodos ? "Todos" : '------------') . "</option>";
$dacs .= "<option value=\"0\" $sel>" . ($incTodos ? "TODOS" : '------------') . "</option>";
while ($dados = pg_fetch_row($result)) {
$sel = "";

88
relatorios/callcenter/geral/relAgenteProducao.php

@ -63,13 +63,24 @@
}
public function ___ValidaForm() {
parent::___ValidaForm();
if (!IsPostBack()) {
return;
}
if ($this->___agente < 0) {
GeraExcept('Informe um agente!');
}
if (!is_date($this->___dataIni)) {
GeraExcept('A "Data Inicial" informada é inválida!');
}
if (!is_date($this->___dataFim)) {
GeraExcept('A "Data Final" informada é inválida!');
}
if (strtotime(FormatDateHour($this->___dataIni)) > strtotime(FormatDateHour($this->___dataFim))) {
GeraExcept('A "Data Inicial" não pode ser maior que a "Data Final"!');
}
}
function ___FiltrosRelatorio() {
@ -98,7 +109,7 @@
}
if ($this->GetIncDac()) {
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1);
$dacs = GetDacs($this->GetDbCon(), $this->___dac, "", 1, 1);
}
$lkPrint = "";
@ -164,40 +175,40 @@
vendidas int not null default 0, chamadas_realizadas_atendidas int not null default 0,
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_indisponivel , null as tempo_indisponivel, 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('$dac', a.id_dac)
and cast(a.login as date) >= '$dataIni'
and cast(a.login as date) <= '$dataFim'
and b.matricula = coalesce($agente, b.matricula) group by 1, 2, 3, 4, 5;
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_indisponivel , null as tempo_indisponivel, 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 " ;
$query .= $dac ? "and a.id_dac = '$dac'" : '';
$query .= "and cast(a.login as date) >= '$dataIni'
and cast(a.login as date) <= '$dataFim'
and b.matricula = coalesce($agente, 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('$dac', a.id_dac)
and cast(a.entrada_pausa as date) >= '$dataIni'
and cast(a.entrada_pausa as date) <= '$dataFim'
and b.matricula = coalesce($agente, b.matricula)
group by a.id_dac, b.apelido, cast(a.entrada_pausa as date);
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 ";
$query .= $dac ? "and a.id_dac = '$dac'" : '';
$query .= "and cast(a.entrada_pausa as date) >= '$dataIni'
and cast(a.entrada_pausa as date) <= '$dataFim'
and b.matricula = coalesce($agente, b.matricula)
group by a.id_dac, b.apelido, cast(a.entrada_pausa as date);
CREATE TEMPORARY TABLE agente_indisponivel AS
select idf_entrada::date as data,id_dac, matricula, sum(case when(idf_saida is not null)then idf_saida - idf_entrada else
(select logoff from pbx_eventos_agentes where matricula = matricula and logoff > idf_entrada limit 1) - idf_entrada::timestamp end) as tempo_indisponivel,
count(idf_entrada) as numero_indisponivel from pbx_indisponivel_fila
where idf_entrada::date >= '$dataIni'
and idf_saida::date <= '$dataFim'
group by 1,2,3;
select idf_entrada::date as data,id_dac, matricula, sum(case when(idf_saida is not null)then idf_saida - idf_entrada else
(select logoff from pbx_eventos_agentes where matricula = matricula and logoff > idf_entrada limit 1) - idf_entrada::timestamp end) as tempo_indisponivel,
count(idf_entrada) as numero_indisponivel from pbx_indisponivel_fila
where idf_entrada::date >= '$dataIni'
and idf_saida::date <= '$dataFim'
group by 1,2,3;
update agente_operacao set num_indisponivel = b.numero_indisponivel, tempo_indisponivel = b.tempo_indisponivel
from agente_indisponivel as b
where agente_operacao.matricula = b.matricula
@ -233,8 +244,6 @@
chamadas_realizadas as chamadas_realizadas_vendas,chamadas_realizadas, tempo_saida, tempo_pausa, num_pausa_prod, tempo_pausa_prod,
vendidas, chamadas_realizadas_atendidas from agente_operacao order by apelido,data";
//echo $query;
$result = $this->___GetQuery($query);
$row = pg_fetch_all($result);
$this->SetData($row ? $row : array());
@ -1450,15 +1459,16 @@
protected function ___GetAgente() {
global $dbcon;
$dac = $this->___dac;
$query = sprintf("SELECT DISTINCT c.matricula, c.apelido
$query = "SELECT DISTINCT c.matricula, c.apelido
FROM pbx_eventos_dacs b
INNER JOIN pbx_eventos_agentes d ON d.matricula = substring(b.agente,7 ,4)
INNER JOIN pbx_usuarios c ON c.matricula = d.matricula
INNER JOIN pbx_dacs e ON e.nome = b.fila
WHERE d.login::date >= '%s' AND d.login::date <= '%s'
AND e.id = %s", FormatDtMssql($this->___dataIni), FormatDtMssql($this->___dataFim), $this->___dac);
WHERE d.login::date >= '%s' AND d.login::date <= '%s'";
$query .= $dac ? "AND e.id = '$dac'" : '';
$query = sprintf($query ,FormatDtMssql($this->___dataIni), FormatDtMssql($this->___dataFim));
$resp = pg_query($dbcon, $query);
if(!$resp) {

Loading…
Cancel
Save