Browse Source

ajuste na query pois uma subquery utilizada como parametro estava trazendo mais de uma linha causando erro na consulta.

1.8.1-monitor
douglas.strappasson 1 year ago
parent
commit
2b6b40f248
  1. 347
      relatorios/callcenter/geral/relTransfer.php

347
relatorios/callcenter/geral/relTransfer.php

@ -108,10 +108,11 @@
$agente = $this->___agente; $agente = $this->___agente;
$status = $this->___status; $status = $this->___status;
$query = "select * from( $query = "select transferencia.fila, calldate, transferencia.src, transferencia.dst, apelido, billsec, duration, status
from(
select d.fila, a.calldate, a.src, select d.fila, a.calldate, a.src,
case when(d.evento in('COMPLETECALLER','COMPLETEAGENT')) case when(d.evento in('COMPLETECALLER','COMPLETEAGENT'))
then(select q.destino from pbx_bilhetes_complemento q where q.uniqueid2 = a.uniqueid and q.direcao = 'fila-ramal') then(select q.destino from pbx_bilhetes_complemento q where q.uniqueid2 = a.uniqueid and q.direcao = 'fila-ramal' limit 1)
else(select q.destino from pbx_bilhetes_complemento q where q.uniqueid2 = a.uniqueid order by data_registro limit 1) else(select q.destino from pbx_bilhetes_complemento q where q.uniqueid2 = a.uniqueid order by data_registro limit 1)
end as dst, end as dst,
c.apelido, a.billsec, a.duration, c.apelido, a.billsec, a.duration,
@ -153,9 +154,9 @@
$status ? $query .= " and a.disposition = '$status' " : ''; $status ? $query .= " and a.disposition = '$status' " : '';
$dac ? $query .= " and e.id = '$dac' " : ''; $dac ? $query .= " and e.id = '$dac' " : '';
$query .= ")as transferencia order by 2"; $query .= ")as transferencia
group by transferencia.fila, calldate, transferencia.src, transferencia.dst, apelido, billsec, duration, status
//echo $query; order by 2";
$result = $this->___GetQuery($query); $result = $this->___GetQuery($query);
$row = pg_fetch_all($result); $row = pg_fetch_all($result);
@ -507,338 +508,4 @@
$relTransfer = new RelTransfer($idProg, $dbcon, 1); $relTransfer = new RelTransfer($idProg, $dbcon, 1);
$relTransfer->ExecutaRelatorio(); $relTransfer->ExecutaRelatorio();
?>
/*
* Relatório mostra a produtividade de um agente
require_once("bd.php");
//variaveis para manter o estado
if ($_POST["btConsulta"]) {
$_SESSION["listaDacs"] = $_POST["listaDacs"];
$_SESSION["listaAgente"] = $_POST["listaAgente"];
$_SESSION["dataIni"] = $_POST["dataIni"];
$_SESSION["dataFim"] = $_POST["dataFim"];
$_SESSION["ramal"] = $_POST["ramal"];
$_SESSION["lstStatus"] = $_POST["lstStatus"];
} else {
$_SESSION["listaAgente"] = 0;
$_SESSION["listaDacs"] = !IsAjax() ? GetIdDacPadrao($dbcon, $_SESSION["SSidUser"]) : $_GET["listaDacs"];
$_SESSION["dataIni"] = !IsAjax() ? date('d/m/Y') . " 00:00" : $_GET["dataIni"];
$_SESSION["dataFim"] = !IsAjax() ? date('d/m/Y') . " 23:59" : $_GET["dataFim"];
$_SESSION["lstStatus"] = "";
}
//Verifica se <EFBFBD> o primeiro acesso a pagia
$isPostBack = isset($_GET["idProg"]) ? 0 : 1;
$codSel = $_SESSION["listaDacs"];
//carrega dacs
if (!IsAjax())
$dacs = GetDac($dbcon, $codSel, "", 0);
//carrega Atendente
if (!IsAjax())
$codSel = ((!$_SESSION["listaAgente"]) || ($trocaDac)) ? 0 : $_SESSION["listaAgente"];
else
$codSel = !empty($_GET["codAgt"]) ? $_GET["codAgt"] : 0;
$sel = !$codSel ? "selected" : "";
$agentes = "<select name=\"listaAgente\" id=\"listaAgente\" size=\"1\">";
$agentes .= "<option value=\"0\" $sel>Todos</option>";
$idDac = $_SESSION["listaDacs"];
$dtAgtIni = FormatDtMssql(substr($_SESSION["dataIni"], 0, 10));
$dtAgtFim = FormatDtMssql(substr($_SESSION["dataFim"], 0, 10));
$query = "select distinct c.matricula, c.apelido as nome
from pbx_bilhetes a, pbx_eventos_dacs b, pbx_usuarios c
where b.uid2 = a.uniqueid
and c.matricula = substring(b.agente, 7, 4)
and a.calldate::date >= '$dtAgtIni'
and a.calldate::date <= '$dtAgtFim'
and b.fila = case when($idDac = 0)then b.fila else (select nome from pbx_dacs where id = $idDac) end
order by 2 ";
//if(IsAdmin()) echo $query;
$result = pg_query($dbcon, $query);
$numAgt = 0;
while ($dados = @pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$agentes .= "<option value=\"$dados[0]\" $sel>$dados[1]</option>";
$numAgt++;
}
$agentes .= "</select>";
if (!$numAgt)
$agentes = str_replace('Todos', '------', $agentes);
//relatorio
if (IsAjax()) {
echo $agentes;
} else {
$imp = 0;
$linhas = "";
//valida data inicial
$hora = array();
$valDate = substr($_SESSION["dataIni"], 0, 10);
$hora = explode(":", substr($_SESSION["dataIni"], 11, 5));
$hora[0] = (int) $hora[0];
$hora[1] = (int) $hora[1];
$valIni = is_date($valDate);
if ($valIni)
$valIni = !$hora[0] && !$hora[1] ? true : (($hora[0] > 23) || ($hora[1] > 59) ? false : true);
//valida data final
$hora = array();
$valDate = substr($_SESSION["dataFim"], 0, 10);
$hora = explode(":", substr($_SESSION["dataFim"], 11, 5));
$hora[0] = (int) $hora[0];
$hora[1] = (int) $hora[1];
$valFim = is_date($valDate);
if ($valFim)
$valFim = (!$hora[0] && !$hora[1]) ? true : (($hora[0] > 23) || ($hora[1] > 59) ? false : true);
if (IsPostBack() && !$_SESSION["listaDacs"]) {
$jsStartup[] = "alert('Selecione um DAC!');";
$msg = "Selecione um DAC!";
} else if (!$valIni) {
$jsStartup[] = "alert('Data inicial inv<EFBFBD>lida!');";
$msg = "Data inicial inv<EFBFBD>lida!";
} else if (!$valFim) {
$jsStartup[] = "alert('Data final inv<EFBFBD>lida!');";
$msg = "Data final inv<EFBFBD>lida!";
} else {
if ($isPostBack) {
$setQuery = "";
$setQuery = utf8_encode(GetQuery($trocaDac));
$result = pg_query($dbcon, $setQuery);
$resumo = array();
$total = 0;
$buffDados = array();tempo_atende
$dacSel = "";
$totais = array();
while ($dados = @pg_fetch_array($result)) {
$dados["dac"] = $dados["fila"];
$dados["data"] = $dados["calldate"];
$dados["agente"] = $dados["apelido"];
$dados["destino"] = $dados["dst"];
$dados["fone"] = $dados["src"];
// fila, calldate, src, dst, apelido, disposition, billsec, duration
$buffDados[] = $dados;
$data = FormataDBDataHora($dados["data"]);
$fone = FormataFone($dados["fone"]);
$agente = $dados["agente"];
$destino = $dados["destino"]; // == 200 ? $dados["dac"] : $dados["destino"];
$status = $dados["status"];
$dacSel = $dados["dac"];
$tipo = SecondToStrTime($dados["billsec"]);
$totais[$dados["status"]] ++;
//Ramal, Origem, Data/Hora, Tipo, Status
if (!array_key_exists($dados["destino"], $resumo))
$resumo[$dados["destino"]] = 1;
else
$resumo[$dados["destino"]] ++;
$linhas .= "<tr>
<td align=\"left\" class=\"headColun\">$destino</td>
<td align=\"left\" class=\"headColun\">$fone</td>
<td align=\"left\" class=\"headColun\">$data</td>
<td align=\"left\" class=\"headColun\">$tipo</td>
<td align=\"center\" class=\"headColun\">$status</td>
</tr>";
$total++;
}
ksort($resumo);
$totalRes = 0;
$akey = array();
$totalResumo = 0;
foreach ($resumo as $key => $value) {
$akey[] = array($key, $value);
$linhaResumo .= "<tr> <td align=\"center\">$key</td><td align=\"right\">$value</td></tr>";
$totalRes += $value;
$totalResumo++;
}
}
//dados para relatorio
$_SESSION["dadosRelTrans"] = $buffDados;
$_SESSION["relTransTotal"] = $total;
$_SESSION["dacSel"] = $dacSel;
$_SESSION["dadosRelResumo"] = $akey;
$_SESSION["relTransResumoTotal"] = $totalResumo;
}
$jsJQuery[] = "\$('#listaDacs').change(function(){GetAgtFromTransfer();}) ";
$jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) ";
$jsJQuery[] = "\$('#dataIni').change(function(){GetAgtFromTransfer();}) ";
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) ";
$jsJQuery[] = "\$('#dataFim').change(function(){GetAgtFromTransfer();}) ";
//totalizacao
if ($total) {
$linhaTotal = "";
foreach ($totais as $key => $value)
$linhaTotal .= "<tr><th colspan=\"4\" align=\"left\">Total de $key</th><th align=\"right\">$value</th></tr>";
$linhaTotal .= "<tr><th colspan=\"4\" align=\"left\">Total Geral</th><th align=\"right\">$total</th></tr>";
}
if ($isPostBack) {
$erro = "";
if (pg_last_error($dbcon))
$erro = "Ocorreram erros durante a opera<EFBFBD><EFBFBD>o. Erro: " . pg_last_error($dbcon);
}
$smarty->assign('imp', $total);
$smarty->assign('dtIni', $_SESSION["dataIni"]);
$smarty->assign('dtFim', $_SESSION["dataFim"]);
$smarty->assign('ramal', $_SESSION["ramal"]);
$smarty->assign('dacs', $dacs);
$smarty->assign('agentes', $agentes);
$smarty->assign('status', GetStatus($_SESSION["lstStatus"]));
$smarty->assign('linhas', $linhas);
$smarty->assign('totais', $linhaTotal);
$smarty->assign('linhaResumo', $linhaResumo);
$smarty->assign('totalRes', $totalRes);
$smarty->assign('erro', $erro);
DispRel($smarty);
}
function DispRel($smarty) {
$smarty->display('transferenciaGrid.tpl');
}
function GetQuery($trocaDac) {
$dac = trim($_SESSION["listaDacs"]);
$agente = trim($_SESSION["agente"]);
$dt = trim($_SESSION["dataIni"]);
$dtFim = trim($_SESSION["dataFim"]);
$ramal = trim($_SESSION["ramal"]);
$status = trim($_SESSION["lstStatus"]);
$dataInicial = FormatDtMssql(substr($_SESSION["dataIni"], 0, 10));
$dataFinal = FormatDtMssql(substr($_SESSION["dataFim"], 0, 10));
$dt = soNumero($dt) <= 8 ? '' : FormatDtHoraBD($dt);
$dtFim = soNumero($dtFim) <= 8 ? '' : FormatDtHoraBD($dtFim);
$dataCorte = GetDataRelatorio();
$query = " select * from(
select d.fila, a.calldate, a.src,
case when(d.evento in('COMPLETECALLER','COMPLETEAGENT'))
then(select q.destino from pbx_bilhetes_complemento q where q.uniqueid2 = a.uniqueid and q.direcao = 'fila-ramal') -- entrada
else(select q.destino from pbx_bilhetes_complemento q where q.uniqueid2 = a.uniqueid order by data_registro limit 1) -- sa<EFBFBD>da
end as dst,
c.apelido, a.billsec, a.duration,
case when(a.disposition = 'ANSWERED')then 'ATENDIDA' else 'ABANDONADA' end as status
from pbx_bilhetes a,pbx_usuarios c, pbx_eventos_dacs d, pbx_dacs e
where c.matricula = substring(d.agente, 7, 4)
and d.uid2 = a.uniqueid
and e.nome = d.fila
and d.evento in('COMPLETEAGENT','COMPLETECALLER','COMPLETAAGENT','COMPLETACALLER')
and a.lastapp <> 'Transferred Call'
and a.data_bilhete >= '$dataCorte'
and a.data_bilhete >= '$dataInicial'
and a.data_bilhete <= '$dataFinal'
and exists(select '' from pbx_bilhetes where data_bilhete = a.data_bilhete and accountcode = a.uniqueid)\n";
if ($dt)
$query .= " and date_trunc('minute', a.calldate) >= '$dt'\n";
if ($dtFim)
$query .= " and date_trunc('minute', a.calldate) <= '$dtFim'\n";
if ($ramal)
$query .= " and a.dst = '$ramal'\n";
if ($agente)
$query .= " and c.matricula = '$agente'\n";
if ($status)
$query .= " and a.disposition = '$status'\n";
if ($dac)
$query .= " and e.id = '$dac' \n";
$query .= "union all
select d.fila, a.calldate, a.src, (select q.destino from pbx_bilhetes_complemento q where q.uniqueid2 = a.uniqueid order by data_registro desc limit 1)as dst, c.apelido, d.param4::bigint as billsec, a.duration,
case when(a.disposition = 'ANSWERED' or d.param4 > '0')then 'ATENDIDA' else 'ABANDONADA' end as status
from pbx_bilhetes a,pbx_usuarios c, pbx_eventos_dacs d, pbx_dacs e
where c.matricula = substring(d.agente, 7, 4)
and d.uid2 = a.uniqueid
and e.nome = d.fila
and d.param4 <> ''
and d.evento in('TRANSFER','TRANSFERORIG')
and a.lastapp <> 'Transferred Call'
and a.data_bilhete < '$dataCorte'
and a.data_bilhete >= '$dataInicial'
and a.data_bilhete <= '$dataFinal' \n";
if ($dt)
$query .= " and date_trunc('minute', a.calldate) >= '$dt'\n";
if ($dtFim)
$query .= " and date_trunc('minute', a.calldate) <= '$dtFim'\n";
if ($ramal)
$query .= " and a.dst = '$ramal'\n";
if ($agente)
$query .= " and c.matricula = '$agente'\n";
if ($status)
$query .= " and a.disposition = '$status'\n";
if ($dac)
$query .= " and e.id = '$dac' ";
$query .= ")as transferencia
order by 2 \n";
//if(IsAdmin()) echo $query;
return $query;
}
function HoraZero($h) {
$hora = explode(":", $h);
if (((int) $hora[0] == true) || ((int) $hora[1] == true))
return false;
else
return true;
}
function GetStatus($st) {
$status = "<select name=\"lstStatus\" id=\"lstStatus\">";
$status .= str_replace("{SEL}", (!$st ? "selected" : ""), "<option value=\"\" {SEL}>Todos</option>");
$status .= str_replace("{SEL}", ($st == "ANSWERED" ? "selected" : ""), "<option value=\"ANSWERED\" {SEL}>ATENDIDA</option>");
$status .= str_replace("{SEL}", ($st == "BUSY" ? "selected" : ""), "<option value=\"BUSY\" {SEL}>OCUPADO</option>");
$status .= str_replace("{SEL}", ($st == "ENQUIRY" ? "selected" : ""), "<option value=\"ENQUIRY\" {SEL}>CONSULTA</option>");
$status .= str_replace("{SEL}", ($st == "NO ANSWER" ? "selected" : ""), "<option value=\"NO ANSWER\" {SEL}>ABANDONADA</option>");
$status .= "</select>";
return $status;
}
*/
?>
Loading…
Cancel
Save