___dac = isset($_POST['listaDacs']) ? $_POST['listaDacs'] : 0; $this->___mes = isset($_POST['listaMes']) ? $_POST['listaMes'] : date('m'); $this->___ano = isset($_POST['listaAno']) ? $_POST['listaAno'] : date('Y'); } public function ___ValidaForm() { if (!IsPostBack()) return; if ($this->GetIncDac() && !StrToIntDef($this->___dac)) { GeraExcept('Informe uma Fila!'); } } function ___FiltrosRelatorio() { if ($this->___media != MEDIA_PRINT_GRID) { /* * Recupera os filtros da sessão do usuário. */ list($this->___dac, $this->___ano, $this->___mes, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; if ($this->___media == MEDIA_PRINT_HTML) { $fila = $this->GetIncDac() ? 'Fila: ' . GetDacDesc($this->GetDbCon(), $this->GetIdProg() . ' ') : ''; return sprintf("%sData Inicial: %s Data Final: %s Tipo: %s", $fila, $this->___ano, $this->___mes, ($this->___tipoRelatorio ? 'Analítico' : 'Sintético')); } $fltCsv = array(); if ($this->GetIncDac()) { $fltCsv[] = 'Fila:' . GetDacDesc($this->GetDbCon(), $this->___dac); } // $fltCsv[] = "Ano:" . $this->___ano; //$fltCsv[] = "Mês:" . $this->___mes; $fltCsv[] = "Data Emissao:" . date('d/m/Y H:i:s'); $fltCsv[] = "Emitido Por:" . GetLogin(); return $fltCsv; } if ($this->GetIncDac()) { $dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); } $lkPrint = ""; if ($this->___dataCount) { $prt = 'Clique aqui para imprimir!'; $prtHtml = "\"Clique"; $lkPrint .= sprintf($prtHtml, $this->GetidProg(), MEDIA_PRINT_HTML, $this->___tipoRelatorio, substr(LimpaString(GetDispProgSel($this->GetIdProg())), 0, 20), 'print.gif'); $lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_EXCEL, $this->___tipoRelatorio, 'prt-xls.png'); $lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_PDF, $this->___tipoRelatorio, 'prt-pdf.png'); $lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_CSV, $this->___tipoRelatorio, 'prt-csv.png'); } $tipoRel = !$this->___tipoRelatorio ? '' : 'checked="checked"'; /* * Personalise esta função se necessitar de outras operações de filtro. */ $filtro = ''; /* * Rotulos. */ $filtro .= ''; $this->GetIncDac() ? $filtro .= '' : ''; $filtro .= ''; $filtro .= ''; $filtro .= ''; $filtro .= ''; /* * Valores. */ $filtro .= ''; $this->GetIncDac() ? $filtro .= sprintf('', $dacs) : ''; $filtro .= sprintf('', GetMes($this->___mes, '', 1)); $filtro .= sprintf('', GetAno($this->___ano, 1)); $filtro .= ''; $filtro .= ''; $filtro .= ''; $filtro .= '
FilaMêsAno 
%s%s%s%s
'; /* * Guarda os filtros passados para recuperar na emissão dos relatórios para impressão. */ $_SESSION["SSstorageFiltros"] = array($this->___dac, $this->___ano, $this->___mes, $this->___tipoRelatorio); return sprintf($filtro, $lkPrint); } protected function ___GetDadosDb() { $ano = $this->___ano; $mes = $this->___mes; $iniMes = "$ano-$mes-01"; $fimMes = "$ano-$mes-" . GetLastDayofMonth($ano, $mes); $dac = $this->___dac; $query = "SELECT FILA, date_part('day',DATA) AS DATA ,OFERECIDAS ,ATENDIDAS_URA ,ABANDONADAS ,ATENDIDAS_FILA ,ATENDIDAS_PA ,ORIGINADAS_PA ,ATENDIDAS_30 ,TRANSFERIDAS ,ESPERA ,round( CASE WHEN(ESPERA = 0)THEN 0 ELSE (TEMPO_ESPERA / ESPERA) END ) * INTERVAL '1 SECOND' AS TME ,round( CASE WHEN(ATENDIDAS_PA = 0)THEN 0 ELSE (TEMPO_ATENDIMENTO / ATENDIDAS_PA)END) * INTERVAL '1 SECOND' AS TMA ,round(CASE WHEN(ABANDONADAS = 0)THEN 0 ELSE (TEMPO_ABANDONO / ABANDONADAS) END) * INTERVAL '1 SECOND' AS TMAB ,(CASE WHEN((ATENDIDAS_PA::FLOAT + ABANDONADAS::FLOAT ) = 0)THEN 0 ELSE ATENDIDAS_30::FLOAT / (ATENDIDAS_PA::FLOAT + ABANDONADAS::FLOAT ) END * 100)::numeric(5,2) as INB ,(CASE WHEN(OFERECIDAS::FLOAT = 0)THEN 0 ELSE (ABANDONADAS::FLOAT / OFERECIDAS::FLOAT) END * 100)::numeric(5,2) as IAB ,TEMPO_ESPERA ,TEMPO_ATENDIMENTO ,TEMPO_ORIGINADAS ,TEMPO_ABANDONO ,TRANSBORDADA ,TRANSBORDANDO FROM ( SELECT FILA ,DATA ,SUM (CASE WHEN EVENTO in('ABANDON', 'COMPLETEAGENT','COMPLETECALLER','TRANSFER','TRANSBORDANDO') THEN 1 ELSE 0 END) AS OFERECIDAS ,SUM (CASE WHEN (EVENTO = 'ENTERQUEUE') AND (URA > 0) 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') AND SUBSTRING(AGENTE,1,5) <> 'Agent' THEN 1 ELSE 0 END) AS ATENDIDAS_FILA ,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER','TRANSFER') AND SUBSTRING(AGENTE,1,5) = 'Agent' THEN 1 ELSE 0 END) AS ATENDIDAS_PA ,SUM (CASE WHEN EVENTO IN ('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS') THEN 1 ELSE 0 END) AS ORIGINADAS_PA ,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER','TRANSFER') AND strtoint(param1) <= '30' AND SUBSTRING(AGENTE,1,5) = 'Agent' THEN 1 ELSE 0 END) AS ATENDIDAS_30 ,SUM (CASE WHEN((EVENTO = 'TRANSFER') or (exists(select '' from pbx_bilhetes where data_bilhete = dados.data_bilhete and accountcode = dados.uniqueid and evento in('COMPLETEAGENT','COMPLETECALLER')))) THEN 1 ELSE 0 END) AS TRANSFERIDAS ,SUM (CASE WHEN EVENTO IN ('CONNECT') AND strtoint(param1) > '3' THEN 1 ELSE 0 END) AS ESPERA ,SUM (CASE WHEN EVENTO IN ('CONNECT') AND strtoint(param1) > '3' THEN strtoint(param1) ELSE 0 END) AS TEMPO_ESPERA ,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER') AND strtoint(( case when(coalesce(param2, '') = '')then '0' else param2 end )) > '1' THEN strtoint(param2) ELSE 0 END) AS TEMPO_ATENDIMENTO ,SUM (CASE WHEN EVENTO IN ('COMPLETAAGENT','COMPLETACALLER') AND strtoint(( case when(coalesce(param2, '') = '')then '0' else param2 end )) > '1' THEN strtoint(param2) ELSE 0 END) AS TEMPO_ORIGINADAS ,SUM (CASE WHEN EVENTO = 'ABANDON' THEN (CASE WHEN(coalesce(param3, '') = '')THEN 0 ELSE param3::int END) ELSE 0 END) AS TEMPO_ABANDONO ,SUM (CASE WHEN EVENTO IN('EXITWITHTIMEOUT', 'TRANSBORDANDO') THEN 1 ELSE 0 END) AS TRANSBORDANDO ,SUM (transbordada) AS TRANSBORDADA FROM ( SELECT a.data_bilhete AS DATA, a.data_bilhete,b.fila, case when(exists(select '' from pbx_bilhetes where data_bilhete = a.data_bilhete and accountcode = a.uniqueid and evento in('COMPLETEAGENT','COMPLETECALLER','COMPLETAAGENT','COMPLETACALLER')))then ( case when(b.evento in('COMPLETEAGENT','COMPLETECALLER'))then 'TRANSFER' else 'TRANSFERORIG' end) else b.evento end as evento, case when((evento = 'TRANSBORDADO') OR ((evento = 'ENTERQUEUE') and exists(select '' from ast_eventos_dacs where uid2 = b.uid2 and fila <> b.fila and evento = 'EXITWITHTIMEOUT' and b.id > id)))then 1 else 0 end as transbordada ,b.param1,b.param2,b.param3,b.param4,b.agente, (select count(*) from pbx_bilhetes_complemento where uniqueid2 = a.uniqueid and direcao = 'ura') as ura, a.uniqueid 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', 'EXITWITHTIMEOUT', 'TRANSBORDANDO', 'TRANSBORDADO','BUSYS','NOANSWERS') AND a.data_bilhete >= '$iniMes' AND a.data_bilhete <= '$fimMes' AND d.id = '$dac' AND 1 = CASE WHEN(b.evento = 'ABANDON')then (case when(not exists(select '' from ast_eventos_dacs where uid2 = b.uid2 and evento = 'TRANSBORDANDO' and fila = b.fila)) then 1 else 0 end) else 1 end ) AS DADOS GROUP BY FILA, DATA ) AS DADOS ORDER BY 2"; $subQuery = "SELECT date_part('day', COALESCE(entrada_pausa, login)::DATE) AS data, COUNT(entrada_pausa) AS numPausa, MIN(a.login) AS login, SUM(CASE WHEN(b.motivo = 'acw')THEN EXTRACT(epoch FROM (saida_pausa - entrada_pausa)) ELSE 0 END) AS pos_atendimento, SUM(CASE WHEN(b.motivo <> 'acw')THEN EXTRACT(epoch FROM (saida_pausa - entrada_pausa)) ELSE 0 END) AS tempo_pausa, SUM(EXTRACT(epoch FROM (logoff - login))) AS tempo_login, SUM((a.logoff) - (a.\"login\")) AS agt_duracao, COUNT(DISTINCT a.matricula) AS conexoes FROM pbx_eventos_agentes a LEFT OUTER JOIN pbx_motivos_pausas b ON b.id = a.id_motivo_pausa WHERE COALESCE(entrada_pausa::DATE,login::DATE) >= '$iniMes' AND COALESCE(entrada_pausa::DATE,login::DATE) <= '$fimMes' AND id_dac = $dac GROUP BY COALESCE(entrada_pausa, login)::DATE ORDER BY 1"; //echo $query; $result = $this->___GetQuery($query); $row = pg_fetch_all($result); $this->SetData($row ? $row : array()); $subResult = $this->___GetQuery($subQuery); $subRow = pg_fetch_all($subResult); $this->SetData($subRow ? $subRow : array()); } protected function ___PreparaCsv() { $dataRel = array(); $filtro = $this->___FiltrosRelatorio(); /* * Inicia o relatório. */ $dataRel[] = GenerateCsvFromArray($filtro); $dadosCabecalio = array( 'Dia', 'Fila', 'Conexoes', 'Transbordo Entrada', 'Transbordo Saida', 'Abandonadas', 'Ramal Estático', 'Atendidas PA', 'Atendidas Ate 30', 'Transferidas', 'Espera', 'Originadas PA', 'TME', 'PA', 'Abandono', 'NS', 'Atend.', 'Livre', 'Pausa' ); $dadosField = array( 'data', 'oferecidas','conexoes', 'transbordada', 'transbordando', 'abandonadas', 'atendidas_fila', 'atendidas_pa', 'atendidas_30', 'transferidas', 'espera', 'originadas_pa', 'tme', 'tma', 'tmab', 'inb', 'agtAtend', 'agtLivre', 'agtPausa' ); /* * Monta a linha de cabecalio. */ $dataRel[] = GenerateCsvFromArray($dadosCabecalio); $somaReg = 0; $somaFila = 0; $somaTransbordada = 0; $somaTransbordando = 0; $somaAbandonadas = 0; $somaAtendRamal = 0; $somaAtendPA = 0; $somaAtend30 = 0; $somaTransferidas = 0; $somaEspera = 0; $somaOriginadasPA = 0; $x = 0; $data = []; foreach($this->GetData()[1] as $rel){ $data[$rel['data']] = $rel; } /* * Linhas de dados. */ foreach ($this->GetData()[0] as $row) { $somaReg ++; $somaFila += $row['oferecidas']; $somaTransbordada += $row['transbordada']; $somaTransbordando += $row['transbordando']; $somaAbandonadas += $row['abandonadas']; $somaAtendRamal += $row['atendidas_fila']; $somaAtendPA += $row['atendidas_pa']; $somaAtend30 += $row['atendidas_30']; $somaTransferidas += $row['transferidas']; $somaEspera += $row['espera']; $somaOriginadasPA += $row['originadas_pa']; $somaConexoes += $data[$row['data']]['conexoes']; $tempo_calc = $row['tempo_atendimento'] + $row['tempo_originadas']; $agt_duracaoseg = $data[$row['data']]['tempo_login']; $agt_pausa = $data[$row['data']]['tempo_pausa']; $livre = $agt_duracaoseg - ($agt_pausa + $tempo_calc); $row['conexoes'] = ($data[$row['data']]['conexoes'] ? $data[$row['data']]['conexoes'] : 0); $row['agtAtend'] = $agt_duracaoseg ? round($tempo_calc / ($agt_duracaoseg / 100), 2) : 0; $row['agtLivre'] = $agt_duracaoseg ? round($livre / ($agt_duracaoseg / 100), 2) : 0; $row['agtPausa'] = $agt_duracaoseg ? round($agt_pausa / ($agt_duracaoseg / 100), 2) : 0; $x++; $linha = array(); foreach ($dadosField as $key) { $linha[] = $row["$key"]; } $dataRel[] = GenerateCsvFromArray($linha); } $dataRel[] = GenerateCsvFromArray(array('')); $dataRel[] = GenerateCsvFromArray(array('Media', round($somaFila / $somaReg),round($somaConexoes / $somaReg) ,round($somaTransbordada / $somaReg), round($somaTransbordando / $somaReg), round($somaAbandonadas / $somaReg), round($somaAtendRamal / $somaReg), round($somaAtendPA / $somaReg), round($somaAtend30 / $somaReg), round($somaTransferidas / $somaReg), round($somaEspera / $somaReg), round($somaOriginadasPA / $somaReg), ' - ', ' - ', ' - ', ' - ', ' - ', ' - ', ' - ')); $dataRel[] = GenerateCsvFromArray(array('Total', $somaFila,$somaConexoes ,$somaTransbordada, $somaTransbordando, $somaAbandonadas, $somaAtendRamal, $somaAtendPA, $somaAtend30, $somaTransferidas, $somaEspera, $somaOriginadasPA, ' - ', ' - ', ' - ', ' - ', ' - ', ' - ', ' - ')); $this->___dataRel[] = $dataRel; } protected function ___PreparaExcel() { $dataRel = array(); $filtro = $this->___FiltrosRelatorio(); $linha = array('LABEL'); foreach ($filtro as $values) { $values = RemoveAcentos($values); list($label, $value) = explode(":", $values); $linha[] = $label; } $dataRel[] = $linha; $linha = array('DADOS'); foreach ($filtro as $values) { list($label, $value) = explode(":", $values); $linha[] = $value; } $dataRel[] = $linha; $dadosCabecalio = array( 'Dia', 'Fila', 'Conexoes','Transbordo Entrada', 'Transbordo Saida', 'Abandonadas', 'Ramal Estático', 'Atendidas PA', 'Atendidas Ate 30', 'Transferidas', 'Espera', 'Originadas PA', 'TME', 'PA', 'Abandono', 'NS', 'Atend.', 'Livre', 'Pausa' ); $dadosField = array( 'data', 'oferecidas', 'conexoes','transbordada', 'transbordando', 'abandonadas', 'atendidas_fila', 'atendidas_pa', 'atendidas_30', 'transferidas', 'espera', 'originadas_pa', 'tme', 'tma', 'tmab', 'inb', 'agtAtend', 'agtLivre', 'agtPausa' ); $linha = array('LABEL'); foreach ($dadosCabecalio as $value) { $linha[] = $value; } $dataRel[] = $linha; $somaReg = 0; $somaFila = 0; $somaTransbordada = 0; $somaTransbordando = 0; $somaAbandonadas = 0; $somaAtendRamal = 0; $somaAtendPA = 0; $somaAtend30 = 0; $somaTransferidas = 0; $somaEspera = 0; $somaOriginadasPA = 0; $x = 0; $data = []; foreach($this->GetData()[1] as $rel){ $data[$rel['data']] = $rel; } /* * Linhas de dados. */ foreach ($this->GetData()[0] as $row) { $somaReg ++; $somaFila += $row['oferecidas']; $somaTransbordada += $row['transbordada']; $somaTransbordando += $row['transbordando']; $somaAbandonadas += $row['abandonadas']; $somaAtendRamal += $row['atendidas_fila']; $somaAtendPA += $row['atendidas_pa']; $somaAtend30 += $row['atendidas_30']; $somaTransferidas += $row['transferidas']; $somaEspera += $row['espera']; $somaOriginadasPA += $row['originadas_pa']; $somaConexoes += $data[$row['data']]['conexoes']; $tempo_calc = $row['tempo_atendimento'] + $row['tempo_originadas']; $agt_duracaoseg = $data[$row['data']]['tempo_login']; $agt_pausa = $data[$row['data']]['tempo_pausa']; $livre = $agt_duracaoseg - ($agt_pausa + $tempo_calc); $row['conexoes'] = $data[$row['data']]['conexoes']; $row['agtAtend'] = $agt_duracaoseg ? round($tempo_calc / ($agt_duracaoseg / 100), 2) : 0; $row['agtLivre'] = $agt_duracaoseg ? round($livre / ($agt_duracaoseg / 100), 2) : 0; $row['agtPausa'] = $agt_duracaoseg ? round($agt_pausa / ($agt_duracaoseg / 100), 2) : 0; // Formata linha de dados. $linha = array('DADOS'); foreach ($dadosField as $key) { $linha[] = $row["$key"]; } $dataRel[] = $linha; } /* * Linha de totalizacao. */ $dataRel[] = array('LABEL', 'Media', round($somaFila / $somaReg), round($somaConexoes / $somaReg),round($somaTransbordada / $somaReg), round($somaTransbordando / $somaReg), round($somaAbandonadas / $somaReg), round($somaAtendRamal / $somaReg), round($somaAtendPA / $somaReg), round($somaAtend30 / $somaReg), round($somaTransferidas / $somaReg), round($somaEspera / $somaReg), round($somaOriginadasPA / $somaReg), ' - ', ' - ', ' - ', ' - ', ' - ', ' - ', ' - '); $dataRel[] = array('LABEL', 'Total', $somaFila, $somaConexoes ,$somaTransbordada, $somaTransbordando, $somaAbandonadas, $somaAtendRamal, $somaAtendPA, $somaAtend30, $somaTransferidas, $somaEspera, $somaOriginadasPA, ' - ', ' - ', ' - ', ' - ', ' - ', ' - ', ' - '); /* * Fecha relatorio. */ $dataRel[] = ''; $this->___dataRel[] = $dataRel; } protected function ___PreparaGrid() { $dataRel = array(); $dadosCabecalio = array( 'Dia' => 'align="center"', 'Fila' => 'align="center"', 'Conexões' => 'align="center"', 'Transbordo Entrada' => 'align="center"', 'Transbordo Saída' => 'align="center"', 'Abandonadas' => 'align="center"', 'Ramal Estático' => 'align="center"', 'Atendidas PA' => 'align="center"', 'Atendidas Até 30' => 'align="center"', 'Transferidas' => 'align="center"', 'Espera' => 'align="center"', 'Originadas PA' => 'align="center"', 'TME' => 'align="center"', 'PA' => 'align="center"', 'Abandono' => 'align="center"', 'NS' => 'align="center"', 'Atend.' => 'align="center"', 'Livre' => 'align="center"', 'Pausa' => 'align="center"' ); $dadosField = array( 'data' => 'align="center"', 'oferecidas' => 'align="center"', 'conexoes' => 'align="center"', 'transbordada' => 'align="center"', 'transbordando' => 'align="center"', 'abandonadas' => 'align="center"', 'atendidas_fila' => 'align="center"', 'atendidas_pa' => 'align="center"', 'atendidas_30' => 'align="center"', 'transferidas' => 'align="center"', 'espera' => 'align="center"', 'originadas_pa' => 'align="center"', 'tme' => 'align="center"', 'tma' => 'align="center"', 'tmab' => 'align="center"', 'inb' => 'align="center"', 'agtAtend' => 'align="center"', 'agtLivre' => 'align="center"', 'agtPausa' => 'align="center"' ); /* * Inicia o relatório. */ $dataRel[] = ''; /* * Monta a linha de cabecalio. */ $linha = ''; $linha .= sprintf( "" . "" . "" . "", $this->___ano); $linha .= ""; $dataRel[] = $linha; $linha2 .= ""; $linha2 .= sprintf( "" . "" . "" . "", $this->___mes); $linha2 .= ""; $dataRel[] = $linha2; /* * Verifica se retornou dados */ if (!IsPostBack() || !count($this->GetData()[0])) { $dataRel[] = sprintf("
%sLigaçõesPerformaceProdutividade
%sTotal de ChamadasTempo Médio(Segundos)Tempo(%%)
%s
", count($dadosCabecalio) - 1, (!IsPostBack() ? 'Informe os parametros e clique em consultar!' : 'Nenhum registro encontado!')); $this->___dataRel[] = $dataRel; return; } $linhaC = ""; foreach ($dadosCabecalio as $key => $value) { $linhaC .= sprintf("%s", $value, $key); } $linhaC .= ""; $dataRel[] = $linhaC; $somaReg = 0; $somaFila = 0; $somaTransbordada = 0; $somaTransbordando = 0; $somaAbandonadas = 0; $somaAtendRamal = 0; $somaAtendPA = 0; $somaAtend30 = 0; $somaTransferidas = 0; $somaEspera = 0; $somaOriginadasPA = 0; $x = 0; $data = []; foreach($this->GetData()[1] as $rel){ $data[$rel['data']] = $rel; } /* * Linhas de dados. */ foreach ($this->GetData()[0] as $row) { $somaReg ++; $somaFila += $row['oferecidas']; $somaTransbordada += $row['transbordada']; $somaTransbordando += $row['transbordando']; $somaAbandonadas += $row['abandonadas']; $somaAtendRamal += $row['atendidas_fila']; $somaAtendPA += $row['atendidas_pa']; $somaAtend30 += $row['atendidas_30']; $somaTransferidas += $row['transferidas']; $somaEspera += $row['espera']; $somaOriginadasPA += $row['originadas_pa']; $somaConexoes += $data[$row['data']]['conexoes']; $tempo_calc = $row['tempo_atendimento'] + $row['tempo_originadas']; $agt_duracaoseg = $data[$row['data']]['tempo_login']; $agt_pausa = $data[$row['data']]['tempo_pausa']; $livre = $agt_duracaoseg - ($agt_pausa + $tempo_calc); $row['conexoes'] = ($data[$row['data']]['conexoes'] ? $data[$row['data']]['conexoes'] : 0); $row['agtAtend'] = $agt_duracaoseg ? round($tempo_calc / ($agt_duracaoseg / 100), 2) : 0; $row['agtLivre'] = $agt_duracaoseg ? round($livre / ($agt_duracaoseg / 100), 2) : 0; $row['agtPausa'] = $agt_duracaoseg ? round($agt_pausa / ($agt_duracaoseg / 100), 2) : 0; $linha = ""; foreach ($dadosField as $key => $value) { $linha .= sprintf("%s", $value, $row["$key"]); } $linha .= ""; $dataRel[] = $linha; $x++; } $linhaTotal = 'Média%s%s%s%s%s%s%s%s%s%s%s - - - - - - - '; $dataRel[] = sprintf($linhaTotal, round($somaFila / $somaReg), round($somaConexoes / $somaReg),round($somaTransbordada / $somaReg), round($somaTransbordando / $somaReg), round($somaAbandonadas / $somaReg), round($somaAtendRamal / $somaReg), round($somaAtendPA / $somaReg), round($somaAtend30 / $somaReg), round($somaTransferidas / $somaReg), round($somaEspera / $somaReg), round($somaOriginadasPA / $somaReg)); $linhaGeral = 'Total%s%s%s%s%s%s%s%s%s%s%s - - - - - - - '; $dataRel[] = sprintf($linhaGeral, $somaFila, $somaConexoes,$somaTransbordada, $somaTransbordando, $somaAbandonadas, $somaAtendRamal, $somaAtendPA, $somaAtend30, $somaTransferidas, $somaEspera, $somaOriginadasPA); /* * Fecha relatorio. */ $dataRel[] = ''; $this->___dataRel[] = $dataRel; } protected function ___PreparaHtml() { } protected function ___PreparaPdf() { list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; /** * TABELA DADOS PRINCIPAIS */ $somaReg = 0; $somaFila = 0; $somaTransbordada = 0; $somaTransbordando = 0; $somaAbandonadas = 0; $somaAtendRamal = 0; $somaAtendPA = 0; $somaAtend30 = 0; $somaTransferidas = 0; $somaEspera = 0; $somaOriginadasPA = 0; $dados = array(); $x = 0; $data = []; foreach($this->GetData()[1] as $rel){ $data[$rel['data']] = $rel; } foreach ($this->GetData()[0] as $row) { $somaReg ++; $somaFila += $row['oferecidas']; $somaTransbordada += $row['transbordada']; $somaTransbordando += $row['transbordando']; $somaAbandonadas += $row['abandonadas']; $somaAtendRamal += $row['atendidas_fila']; $somaAtendPA += $row['atendidas_pa']; $somaAtend30 += $row['atendidas_30']; $somaTransferidas += $row['transferidas']; $somaEspera += $row['espera']; $somaOriginadasPA += $row['originadas_pa']; $somaConexao += $data[$row['data']]['conexoes']; $tempo_calc = $row['tempo_atendimento'] + $row['tempo_originadas']; $agt_duracaoseg = $data[$row['data']]['tempo_login']; $agt_pausa = $data[$row['data']]['tempo_pausa']; $livre = $agt_duracaoseg - ($agt_pausa + $tempo_calc); $row['conexoes'] = $data[$row['data']]['conexoes']; $dados[$x]['agtAtend'] = $agt_duracaoseg ? round($tempo_calc / ($agt_duracaoseg / 100), 2) : 0; $dados[$x]['agtLivre'] = $agt_duracaoseg ? round($livre / ($agt_duracaoseg / 100), 2) : 0; $dados[$x]['agtPausa'] = $agt_duracaoseg ? round($agt_pausa / ($agt_duracaoseg / 100), 2) : 0; $dados[$x]["data"] = $row["data"]; $dados[$x]["conexoes"] = $row["conexoes"]; $dados[$x]["oferecidas"] = $row["oferecidas"]; $dados[$x]["transbordada"] = $row["transbordada"]; $dados[$x]["transbordando"] = $row["transbordando"]; $dados[$x]["abandonadas"] = $row["abandonadas"]; $dados[$x]["atendidas_fila"] = $row["atendidas_fila"]; $dados[$x]["atendidas_pa"] = $row["atendidas_pa"]; $dados[$x]["atendidas_30"] = $row["atendidas_30"]; $dados[$x]["transferidas"] = $row["transferidas"]; $dados[$x]["originadas_pa"] = $row['originadas_pa']; $dados[$x]["espera"] = $row["espera"]; $dados[$x]["tme"] = $row["tme"]; $dados[$x]["tma"] = $row["tma"]; $dados[$x]["tmab"] = $row["tmab"]; $dados[$x]["inb"] = $row["inb"]; $x++; } //HEADER DA TABELA DO PDF -> DADOS EM ARRAY $dadosCabecalio = array( 'Dia' => 'C', 'Fila' => 'C', 'Conexões' => 'C', 'Trans. E.' => 'C', 'Trans. S.' => 'C', 'Aband.' => 'C', 'Atend. Ramal' => 'C', 'Atend. PA' => 'C', 'Atend. 30' => 'C', 'Transf.' => 'C', 'Espera' => 'C', 'Orig. PA' => 'C', 'TME' => 'C', 'PA' => 'C', 'Abandono' => 'C', 'NS' => 'C', 'Atend.' => 'C', 'Livre' => 'C', 'Pausa' => 'C' ); $dadosField = array( 'data' => 'C', 'oferecidas' => 'C', 'conexoes' => 'C', 'transbordada' => 'C', 'transbordando' => 'C', 'abandonadas' => 'C', 'atendidas_fila' => 'C', 'atendidas_pa' => 'C', 'atendidas_30' => 'C', 'transferidas' => 'C', 'espera' => 'C', 'originadas_pa' => 'C', 'tme' => 'C', 'tma' => 'C', 'tmab' => 'C', 'inb' => 'C', 'agtAtend' => 'C', 'agtLivre' => 'C', 'agtPausa' => 'C' ); $this->setType("L"); $widthHeader = array(11, 11, 15, 11, 11, 11, 16, 11, 13, 10, 10, 12, 20, 20, 20, 20, 20, 20, 20); $totaliza = array( 'Média', round($somaFila / $somaReg), round($somaConexao/$somaReg), round($somaTransbordada / $somaReg), round($somaTransbordando / $somaReg), round($somaAbandonadas / $somaReg), round($somaAtendRamal / $somaReg), round($somaAtendPA / $somaReg), round($somaAtend30 / $somaReg), round($somaTransferidas / $somaReg), round($somaEspera / $somaReg), round($somaOriginadasPA / $somaReg), ' - ', ' - ', ' - ', ' - ', ' - ', ' - ', ' - '); //Monta o array para passar para o prepara; Necessário passar 6 parametros $table1 = array($dadosCabecalio, $dadosField, $dados, $widthHeader, $totaliza, 0); $totaliza1 = array('Total', $somaFila, $somaConexao, $somaTransbordada, $somaTransbordando, $somaAbandonadas, $somaAtendRamal, $somaAtendPA, $somaAtend30, $somaTransferidas, $somaEspera, $somaOriginadasPA, ' - ', ' - ', ' - ', ' - ', ' - ', ' - ', ' - '); $widthHeader1 = array(11, 11, 15, 11, 11, 11, 16, 11, 13, 10, 10, 12, 20, 20, 20, 20, 20, 20, 20); $table2 = array('', '', '', $widthHeader1, $totaliza1, 0); $this->___dataRel = array($table1, $table2); } public function ExecutaRelatorio() { global $jsStartup, $jsJQuery, $smarty; try { /* * Use esta função para validar dados do formulário. */ $this->___ValidaForm(); /* * Recupera os dados do banco. */ $this->___ConteudoRelatorio(); /* * Imprime relatório de acordo com a media passada. */ $conteudoRelatorio = $this->___ImprimeRelatorio(); } catch (Exception $exc) { $this->SetMsg($exc->getMessage()); $jsStartup[] = sprintf("alert('%s');", $this->GetMsg()); $this->___GravaLog(); } /* * Inclua os scripts necessários aqui. */ $jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) "; $jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) "; $smarty->assign('filtros', $this->___FiltrosRelatorio()); $smarty->assign('conteudo', $conteudoRelatorio); $smarty->assign('msg', $this->GetMsg()); GetTemplate($smarty, 'relatoriosGrid.tpl'); } } $relDesempenhoOp = new RelDesempenhoOperacao($idProg, $dbcon, 1); $relDesempenhoOp->ExecutaRelatorio(); ?>