forked from SimplesIP/pabx-app
AMARILDO PEREIRA
2 years ago
29 changed files with 6200 additions and 5081 deletions
After Width: | Height: | Size: 47 KiB |
@ -1,187 +1,199 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/***************************************************************************************** |
/* * *************************************************************************************** |
||||||
* |
* |
||||||
* GERA PDF |
* GERA PDF |
||||||
* Autor |
* Autor |
||||||
* Lucas Awade |
* Lucas Awade |
||||||
* |
* |
||||||
* *************************************************************************************** |
* *************************************************************************************** |
||||||
* Definições do Projeto |
* Definições do Projeto |
||||||
* Nome: GerarPDF |
* Nome: GerarPDF |
||||||
* Data início: 02/08/2018 |
* Data início: 02/08/2018 |
||||||
* Equipe: Amarildo Pereira |
* Equipe: Amarildo Pereira |
||||||
* Descrição: |
* Descrição: |
||||||
* O objetivo desta Classe é processar e retornar arquivos em PDF, para isso é necessário |
* O objetivo desta Classe é processar e retornar arquivos em PDF, para isso é necessário |
||||||
* instanciar o Objeto da classe com os seus atributos. Após o preenchimendo dos atributos |
* instanciar o Objeto da classe com os seus atributos. Após o preenchimendo dos atributos |
||||||
* é importante formatar a fonte e criar uma página inicial para o preenchimento dos dados. |
* é importante formatar a fonte e criar uma página inicial para o preenchimento dos dados. |
||||||
* |
* |
||||||
* Exemplo formatação: |
* Exemplo formatação: |
||||||
* $pdf->SetFont('Arial', '', 6); Parametros ('FONTE', '(B | I | '')','TAMANHO') |
* $pdf->SetFont('Arial', '', 6); Parametros ('FONTE', '(B | I | '')','TAMANHO') |
||||||
* $pdf->AddPage(); Adiciona a primeira página |
* $pdf->AddPage(); Adiciona a primeira página |
||||||
* $pdf->Ln(5); Pula linhas |
* $pdf->Ln(5); Pula linhas |
||||||
* |
* |
||||||
* Para gerar a tabela no PDF é necessário a população de dados é feita apartir de um array |
* Para gerar a tabela no PDF é necessário a população de dados é feita apartir de um array |
||||||
* que engloba 4 arrays multidimensionais um Array comun e uma variavel boolean. |
* que engloba 4 arrays multidimensionais um Array comun e uma variavel boolean. |
||||||
* |
* |
||||||
* Exemplo de geração: |
* Exemplo de geração: |
||||||
* $pdf->Table(Array 1, Array 2, Array 3, Array 4, Array 5, boolean); |
* $pdf->Table(Array 1, Array 2, Array 3, Array 4, Array 5, boolean); |
||||||
* |
* |
||||||
* Array 1 = Array para o cabeçalho(Header) [MULTIDIMENSIONAL]; |
* Array 1 = Array para o cabeçalho(Header) [MULTIDIMENSIONAL]; |
||||||
* Array 2 = Array para os dados do cabeçalho [MULTIDIMENSIONAL]; |
* Array 2 = Array para os dados do cabeçalho [MULTIDIMENSIONAL]; |
||||||
* Array 3 = Array de dados para o preencimento das linhas [MULTIDIMENSIONAL] |
* Array 3 = Array de dados para o preencimento das linhas [MULTIDIMENSIONAL] |
||||||
* Array 4 = Array para o tamanho dos cabeçalhos [COMUM] |
* Array 4 = Array para o tamanho dos cabeçalhos [COMUM] |
||||||
* boolean = 0 sem grid | 1 com grid |
* boolean = 0 sem grid | 1 com grid |
||||||
* |
* |
||||||
* Por fim para gerar o PDF em arquivo para download ou via browser adicione a linha Output |
* Por fim para gerar o PDF em arquivo para download ou via browser adicione a linha Output |
||||||
* com uma target de arquivo. |
* com uma target de arquivo. |
||||||
* |
* |
||||||
* Exemplo: |
* Exemplo: |
||||||
* $pdf->Output(NOMEPDF .".pdf", 'target'); |
* $pdf->Output(NOMEPDF .".pdf", 'target'); |
||||||
* |
* |
||||||
* Targets = 'D' para Download | 'I' via browser | 'F' Salva local | 'S' Retorna String |
* Targets = 'D' para Download | 'I' via browser | 'F' Salva local | 'S' Retorna String |
||||||
* |
* |
||||||
* Para saber e adicionar mais recursos na classe e importante verificar a classe FPDF. |
* Para saber e adicionar mais recursos na classe e importante verificar a classe FPDF. |
||||||
* |
* |
||||||
* ************************************************************************************** |
* ************************************************************************************** |
||||||
* Copyright (c) 2018, Simples IP |
* Copyright (c) 2018, Simples IP |
||||||
* ************************************************************************************* */ |
* ************************************************************************************* */ |
||||||
|
|
||||||
require('fpdf.php'); |
require('fpdf.php'); |
||||||
|
|
||||||
class GerarPDF extends FPDF { |
class GerarPDF extends FPDF { |
||||||
|
|
||||||
private $nomeRel; |
private $nomeRel; |
||||||
private $dataRel; |
private $dataRel; |
||||||
private $userRel; |
private $userRel; |
||||||
private $logoRel; |
private $logoRel; |
||||||
private $filtroRelIni; |
private $filtroRelIni; |
||||||
private $filtroRelFim; |
private $filtroRelFim; |
||||||
private $filtroRelDac; |
private $filtroRelDac; |
||||||
private $type; |
private $type; |
||||||
|
|
||||||
function getLogoRel() { |
function getLogoRel() { |
||||||
return $this->logoRel; |
return $this->logoRel; |
||||||
} |
} |
||||||
|
|
||||||
function setLogoRel($logoRel) { |
function setLogoRel($logoRel) { |
||||||
$this->logoRel = $logoRel; |
$this->logoRel = $logoRel; |
||||||
} |
} |
||||||
|
|
||||||
function getNomeRel() { |
|
||||||
return $this->nomeRel; |
|
||||||
} |
|
||||||
|
|
||||||
function setNomeRel($nomeRel) { |
function getNomeRel() { |
||||||
$this->nomeRel = $nomeRel; |
return $this->nomeRel; |
||||||
} |
} |
||||||
|
|
||||||
function getDataRel() { |
function setNomeRel($nomeRel) { |
||||||
return $this->dataRel; |
$this->nomeRel = $nomeRel; |
||||||
} |
} |
||||||
|
|
||||||
function getUserRel() { |
|
||||||
return $this->userRel; |
|
||||||
} |
|
||||||
|
|
||||||
function setDataRel($dataRel) { |
function getDataRel() { |
||||||
$this->dataRel = $dataRel; |
return $this->dataRel; |
||||||
} |
} |
||||||
|
|
||||||
function setUserRel($userRel) { |
function getUserRel() { |
||||||
$this->userRel = $userRel; |
return $this->userRel; |
||||||
} |
} |
||||||
|
|
||||||
function getFiltroRelIni() { |
function setDataRel($dataRel) { |
||||||
return $this->filtroRelIni; |
$this->dataRel = $dataRel; |
||||||
} |
} |
||||||
|
|
||||||
function getFiltroRelFim() { |
function setUserRel($userRel) { |
||||||
return $this->filtroRelFim; |
$this->userRel = $userRel; |
||||||
} |
} |
||||||
|
|
||||||
function setFiltroRelIni($filtroRelIni) { |
function getFiltroRelIni() { |
||||||
$this->filtroRelIni = $filtroRelIni; |
return $this->filtroRelIni; |
||||||
} |
} |
||||||
|
|
||||||
function setFiltroRelFim($filtroRelFim) { |
function getFiltroRelFim() { |
||||||
$this->filtroRelFim = $filtroRelFim; |
return $this->filtroRelFim; |
||||||
} |
} |
||||||
|
|
||||||
function getFiltroRelDac() { |
function setFiltroRelIni($filtroRelIni) { |
||||||
return $this->filtroRelDac; |
$this->filtroRelIni = $filtroRelIni; |
||||||
} |
} |
||||||
|
|
||||||
function setFiltroRelDac($filtroRelDac) { |
function setFiltroRelFim($filtroRelFim) { |
||||||
$this->filtroRelDac = $filtroRelDac; |
$this->filtroRelFim = $filtroRelFim; |
||||||
} |
} |
||||||
function getType() { |
|
||||||
return $this->type; |
|
||||||
} |
|
||||||
|
|
||||||
function setType($type) { |
function getFiltroRelDac() { |
||||||
$this->type = $type; |
return $this->filtroRelDac; |
||||||
} |
} |
||||||
|
|
||||||
function Header() { |
function setFiltroRelDac($filtroRelDac) { |
||||||
// Logo |
$this->filtroRelDac = $filtroRelDac; |
||||||
|
} |
||||||
$this->Image(file_exists($this->getLogoRel()) ? $this->getLogoRel() : LOGO_HEADER_RELATORIO, 10, 13, 30); |
|
||||||
$this->SetFont('Arial', 'B', 13); |
function getType() { |
||||||
$this->Cell(80); |
return $this->type; |
||||||
// Titulo |
} |
||||||
$this->Cell($this->type == "L" ? 120 : 30, 5, $this->getNomeRel(), 0, 0, 'C'); |
|
||||||
$this->Ln(1); |
function setType($type) { |
||||||
$this->SetFont('Arial', 'B', 9); |
$this->type = $type; |
||||||
$this->Cell(0, 18, sprintf("Datas Filtradas: %s até %s", $this->getFiltroRelIni(), $this->getFiltroRelFim()), 0, 0, 'C'); |
} |
||||||
$this->Ln(5); |
|
||||||
$this->getFiltroRelDac() ? $this->Cell(0, 18, sprintf("Fila: %s", $this->getFiltroRelDac()), 0, 0, 'C') : ''; |
function Header() { |
||||||
$this->Ln(15); |
// Logo |
||||||
} |
|
||||||
|
$this->Image(file_exists($this->getLogoRel()) ? $this->getLogoRel() : LOGO_HEADER_RELATORIO, 10, 13, 30); |
||||||
|
$this->SetFont('Arial', 'B', 13); |
||||||
|
$this->Cell(80); |
||||||
|
// Titulo |
||||||
|
$this->Cell($this->type == "L" ? 120 : 30, 5, $this->getNomeRel(), 0, 0, 'C'); |
||||||
|
$this->Ln(1); |
||||||
|
$this->SetFont('Arial', 'B', 9); |
||||||
|
$this->Cell(0, 18, sprintf("Datas Filtradas: %s até %s", $this->getFiltroRelIni(), $this->getFiltroRelFim()), 0, 0, 'C'); |
||||||
|
$this->Ln(5); |
||||||
|
$this->getFiltroRelDac() ? $this->Cell(0, 18, sprintf("Fila: %s", $this->getFiltroRelDac()), 0, 0, 'C') : ''; |
||||||
|
$this->Ln(15); |
||||||
|
} |
||||||
|
|
||||||
|
function Table($header, $dataRow, $dataDB, $headerW, $totaliza, $gridRow = 0) { |
||||||
|
$this->SetFillColor(200); |
||||||
|
$this->SetLineWidth(.1); |
||||||
|
$this->SetFont('Arial', 'B'); |
||||||
|
$this->Ln(2); |
||||||
|
$i = 0; |
||||||
|
foreach ($header as $keyH => $dataH) { |
||||||
|
$this->Cell($headerW[$i], 7, $keyH, $gridRow, 0, $dataH, true); |
||||||
|
$i++; |
||||||
|
} |
||||||
|
$this->Ln(); |
||||||
|
// Cor das linhas da tabela |
||||||
|
$this->SetFillColor(255); |
||||||
|
|
||||||
|
$this->SetFont(''); |
||||||
|
$fill = false; |
||||||
|
foreach ($dataDB as $keyD => $data) { |
||||||
|
$x = 0; |
||||||
|
|
||||||
function Table($header, $dataRow, $dataDB, $headerW, $totaliza, $gridRow = 0) { |
|
||||||
$this->SetFillColor(235); |
|
||||||
$this->SetLineWidth(.1); |
|
||||||
$this->SetFont('Arial', 'B'); |
|
||||||
$this->Ln(2); |
|
||||||
$i = 0; |
|
||||||
foreach ($header as $keyH => $dataH) { |
|
||||||
$this->Cell($headerW[$i], 7, $keyH, $gridRow, 0, $dataH, true); |
|
||||||
$i++; |
|
||||||
} |
|
||||||
$this->Ln(); |
|
||||||
// Cor das linhas da tabela |
// Cor das linhas da tabela |
||||||
$this->SetFillColor(255); |
$this->SetFillColor(255); |
||||||
$this->SetFont(''); |
$setFill = 0; |
||||||
$fill = false; |
if (array_key_exists('cor_linha_dados', $data)) { |
||||||
foreach ($dataDB as $keyD => $data) { |
$this->SetFillColor((int) $data['cor_linha_dados']); |
||||||
$x = 0; |
$setFill = 1; |
||||||
foreach ($dataRow as $keyR => $row) { |
|
||||||
$this->Cell($headerW[$x], 7, $data[$keyR] ? $data[$keyR] : "0", $gridRow, 0, $row, $fill); |
|
||||||
$x++; |
|
||||||
} |
|
||||||
$this->Ln(); |
|
||||||
$fill = !$fill; |
|
||||||
} |
} |
||||||
$this->Ln(3); |
|
||||||
if ($totaliza) { |
foreach ($dataRow as $keyR => $row) { |
||||||
$this->SetFont('Arial', 'B'); |
$this->Cell($headerW[$x], 7, $data[$keyR] ? $data[$keyR] : "0", $gridRow, 0, $row, ($setFill ? $setFill : $fill)); |
||||||
$this->SetFillColor(235); |
$x++; |
||||||
for ($t = 0; $t < count($totaliza); $t++) { |
|
||||||
$this->Cell($headerW[$t], 7, $totaliza[$t], 0, 0, 'C', true); |
|
||||||
} |
|
||||||
} |
} |
||||||
$this->Ln(6); |
|
||||||
$this->Cell(array_sum($headerW), 0, '', ''); |
$this->Ln(); |
||||||
|
$fill = !$fill; |
||||||
} |
} |
||||||
|
$this->Ln(3); |
||||||
function Footer() { |
if ($totaliza) { |
||||||
$this->SetY(-15); |
$this->SetFont('Arial', 'B'); |
||||||
$this->SetFont('Arial', '', 8); |
$this->SetFillColor(235); |
||||||
$this->Cell(0, 15, 'Emitido em: ' . $this->dataRel . " | Gerado por: " . $this->userRel, 0, 0, 'L'); |
for ($t = 0; $t < count($totaliza); $t++) { |
||||||
$this->Cell(0, 15, 'Página ' . $this->PageNo(), 0, 0, 'R'); |
$this->Cell($headerW[$t], 7, $totaliza[$t], 0, 0, 'C', true); |
||||||
|
} |
||||||
} |
} |
||||||
|
$this->Ln(6); |
||||||
|
$this->Cell(array_sum($headerW), 0, '', ''); |
||||||
|
} |
||||||
|
|
||||||
|
function Footer() { |
||||||
|
$this->SetY(-15); |
||||||
|
$this->SetFont('Arial', '', 8); |
||||||
|
$this->Cell(0, 15, 'Emitido em: ' . $this->dataRel . " | Gerado por: " . $this->userRel, 0, 0, 'L'); |
||||||
|
$this->Cell(0, 15, 'Página ' . $this->PageNo(), 0, 0, 'R'); |
||||||
} |
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
?> |
?> |
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,334 +1,399 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
include_once 'util/relatoriosBase.php'; |
include_once 'util/relatoriosBase.php'; |
||||||
|
|
||||||
class RelRechamadas extends Relatorios { |
class RelRechamadas extends Relatorios { |
||||||
|
|
||||||
private $___origem; |
private $___origem; |
||||||
|
private $___servico; |
||||||
public function __construct($idProg, $dbcon, $incDac) { |
|
||||||
parent::__construct($idProg, $dbcon, $incDac); |
|
||||||
$this->___dac = isset($_POST['listaDacs']) ? $_POST['listaDacs'] : 0; |
|
||||||
$this->___origem = isset($_POST["origem"]) ? $_POST["origem"] : ''; |
|
||||||
} |
|
||||||
|
|
||||||
|
public function __construct($idProg, $dbcon, $incDac) { |
||||||
|
parent::__construct($idProg, $dbcon, $incDac); |
||||||
|
$this->___dac = isset($_POST['listaDacs']) ? $_POST['listaDacs'] : 0; |
||||||
|
$this->___origem = isset($_POST["origem"]) ? $_POST["origem"] : ''; |
||||||
|
$this->___servico = isset($_POST["listaServico"]) ? $_POST["listaServico"] : 0; |
||||||
|
} |
||||||
|
|
||||||
function ___FiltrosRelatorio() { |
function ___FiltrosRelatorio() { |
||||||
|
|
||||||
if ($this->___media != MEDIA_PRINT_GRID) { |
|
||||||
/* |
|
||||||
* Recupera os filtros da sessão do usuário. |
|
||||||
*/ |
|
||||||
list($this->___dac, $this->___dataIni, $this->___dataFim, $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->___dataIni, $this->___dataFim, ($this->___tipoRelatorio ? 'Analítico' : 'Sintético')); |
|
||||||
} |
|
||||||
|
|
||||||
$fltCsv = array(); |
|
||||||
if ($this->GetIncDac()) { |
|
||||||
$fltCsv[] = 'Fila:' . GetDacDesc($this->GetDbCon(), $this->___dac); |
|
||||||
} |
|
||||||
$fltCsv[] = "Data Inicial:" . $this->___dataIni; |
|
||||||
$fltCsv[] = "Data Final:" . $this->___dataFim; |
|
||||||
$fltCsv[] = "Data Emissao:" . date('d/m/Y H:i:s'); |
|
||||||
$fltCsv[] = "Emitido Por:" . GetLogin(); |
|
||||||
return $fltCsv; |
|
||||||
} |
|
||||||
|
|
||||||
if ($this->GetIncDac()) { |
if ($this->___media != MEDIA_PRINT_GRID) { |
||||||
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); |
/* |
||||||
|
* Recupera os filtros da sessão do usuário. |
||||||
|
*/ |
||||||
|
list($this->___dac, $this->___dataIni, $this->___dataFim, $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->___dataIni, $this->___dataFim, ($this->___tipoRelatorio ? 'Analítico' : 'Sintético')); |
||||||
} |
} |
||||||
|
|
||||||
$lkPrint = ""; |
$fltCsv = array(); |
||||||
if ($this->___dataCount) { |
if ($this->GetIncDac()) { |
||||||
$prt = '<a href="index.php?idProg=%s&media=%s&tipoRelatorio=%s"><img src="imgSite/%s" alt="Clique aqui para imprimir!" width="24" height="24" border="0"></a>'; |
$fltCsv[] = 'Fila:' . GetDacDesc($this->GetDbCon(), $this->___dac); |
||||||
$prtHtml = "<a href=\"javaScript:NovaJanela('index.php?idProg=%s&media=%s&tipoRelatorio=%s', '%s', '720', '700', 'scrollbars=YES');\"><img src=\"imgSite/%s\" alt=\"Clique aqui para imprimir!\" width=\"24\" height=\"24\" border=\"0\"></a>"; |
|
||||||
$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'); |
|
||||||
} |
} |
||||||
|
$fltCsv[] = "Data Inicial:" . $this->___dataIni; |
||||||
|
$fltCsv[] = "Data Final:" . $this->___dataFim; |
||||||
|
$fltCsv[] = "Data Emissao:" . date('d/m/Y H:i:s'); |
||||||
|
$fltCsv[] = "Emitido Por:" . GetLogin(); |
||||||
|
return $fltCsv; |
||||||
|
} |
||||||
|
|
||||||
$tipoRel = !$this->___tipoRelatorio ? '' : 'checked="checked"'; |
if ($this->GetIncDac()) { |
||||||
/* |
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); |
||||||
* Personalise esta função se necessitar de outras op��es de filtro. |
} |
||||||
*/ |
|
||||||
$filtro = '<table border="0" cellspacing="1" cellpadding="1">'; |
|
||||||
/* |
|
||||||
* Rotulos. |
|
||||||
*/ |
|
||||||
$filtro .= '<tr>'; |
|
||||||
if ($this->GetIncDac()) |
|
||||||
$filtro .= '<td>Fila</td>'; |
|
||||||
$filtro .= '<td>Data Inicial</td>'; |
|
||||||
$filtro .= '<td>Data Final </td>'; |
|
||||||
$filtro .= '<td>Origem</td>'; |
|
||||||
$filtro .= '<td align="center" valign="middle"> </td>'; |
|
||||||
$filtro .= '</tr>'; |
|
||||||
|
|
||||||
/* |
$lkPrint = ""; |
||||||
* Valores. |
if ($this->___dataCount) { |
||||||
*/ |
$prt = '<a href="index.php?idProg=%s&media=%s&tipoRelatorio=%s"><img src="imgSite/%s" alt="Clique aqui para imprimir!" width="24" height="24" border="0"></a>'; |
||||||
$filtro .= '<tr>'; |
$prtHtml = "<a href=\"javaScript:NovaJanela('index.php?idProg=%s&media=%s&tipoRelatorio=%s', '%s', '720', '700', 'scrollbars=YES');\"><img src=\"imgSite/%s\" alt=\"Clique aqui para imprimir!\" width=\"24\" height=\"24\" border=\"0\"></a>"; |
||||||
if ($this->GetIncDac()) |
$lkPrint .= sprintf($prtHtml, $this->GetidProg(), MEDIA_PRINT_HTML, $this->___tipoRelatorio, substr(LimpaString(GetDispProgSel($this->GetIdProg())), 0, 20), 'print.gif'); |
||||||
$filtro .= sprintf('<td>%s</td>', $dacs); |
$lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_EXCEL, $this->___tipoRelatorio, 'prt-xls.png'); |
||||||
$filtro .= '<td><input name="dataIni" id="dataIni" type="text" size="15" maxlength="10" value="%s" onkeyup="formataData(this)" title="dd/mm/aaaa"></td>'; |
$lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_PDF, $this->___tipoRelatorio, 'prt-pdf.png'); |
||||||
$filtro .= '<td><input name="dataFim" id="dataFim" type="text" size="15" maxlength="10" value="%s" onkeyup="formataData(this)" title="dd/mm/aaaa"></td>'; |
$lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_CSV, $this->___tipoRelatorio, 'prt-csv.png'); |
||||||
$filtro .= sprintf('<td><input name="origem" id="origem" type="text" size="15" value="%s" /></td>', $this->___origem); |
} |
||||||
$filtro .= '<td><input type="submit" name="btConsulta" id="btConsulta" value="Consultar"></td>'; |
|
||||||
$filtro .= '<td>%s</td>'; |
|
||||||
$filtro .= '</tr>'; |
|
||||||
$filtro .= '</table>'; |
|
||||||
|
|
||||||
/* |
$tipoRel = !$this->___tipoRelatorio ? '' : 'checked="checked"'; |
||||||
* Guarda os filtros passados para recuperar na emissão dos relatóios para impressão. |
/* |
||||||
*/ |
* Personalise esta função se necessitar de outras op��es de filtro. |
||||||
|
*/ |
||||||
|
$filtro = '<table border="0" cellspacing="1" cellpadding="1">'; |
||||||
|
/* |
||||||
|
* Rotulos. |
||||||
|
*/ |
||||||
|
$filtro .= '<tr>'; |
||||||
|
if ($this->GetIncDac()) { |
||||||
|
$filtro .= '<td>Fila</td>'; |
||||||
|
} |
||||||
|
if (GetUsoServico()) { |
||||||
|
$filtro .= '<td>Serviço</td>'; |
||||||
|
} |
||||||
|
$filtro .= '<td>Data Inicial</td>'; |
||||||
|
$filtro .= '<td>Data Final </td>'; |
||||||
|
$filtro .= '<td>Origem</td>'; |
||||||
|
$filtro .= '<td align="center" valign="middle"> </td>'; |
||||||
|
$filtro .= '</tr>'; |
||||||
|
|
||||||
|
/* |
||||||
|
* Valores. |
||||||
|
*/ |
||||||
|
$filtro .= '<tr>'; |
||||||
|
if ($this->GetIncDac()) { |
||||||
|
$filtro .= sprintf('<td>%s</td>', $dacs); |
||||||
|
} |
||||||
|
|
||||||
$_SESSION["SSstorageFiltros"] = array($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio, $this->___agente); |
if (GetUsoServico()) { |
||||||
|
$filtro .= sprintf('<td>%s</td>', GetIdentRota(false, $this->___servico)); |
||||||
|
} |
||||||
|
$filtro .= '<td><input name="dataIni" id="dataIni" type="text" size="15" maxlength="10" value="%s" onkeyup="formataData(this)" title="dd/mm/aaaa"></td>'; |
||||||
|
$filtro .= '<td><input name="dataFim" id="dataFim" type="text" size="15" maxlength="10" value="%s" onkeyup="formataData(this)" title="dd/mm/aaaa"></td>'; |
||||||
|
$filtro .= sprintf('<td><input name="origem" id="origem" type="text" size="15" value="%s" /></td>', $this->___origem); |
||||||
|
$filtro .= '<td><input type="submit" name="btConsulta" id="btConsulta" value="Consultar"></td>'; |
||||||
|
$filtro .= '<td>%s</td>'; |
||||||
|
$filtro .= '</tr>'; |
||||||
|
$filtro .= '</table>'; |
||||||
|
|
||||||
|
/* |
||||||
|
* Guarda os filtros passados para recuperar na emissão dos relatóios para impressão. |
||||||
|
*/ |
||||||
|
$_SESSION["SSstorageFiltros"] = array($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio, $this->___agente); |
||||||
|
|
||||||
|
return sprintf($filtro, $this->___dataIni, $this->___dataFim, $lkPrint); |
||||||
|
} |
||||||
|
|
||||||
return sprintf($filtro, $this->___dataIni, $this->___dataFim, $lkPrint); |
protected function ___GetDadosDb() { |
||||||
|
$dataIni = FormatDtMssql($this->___dataIni); |
||||||
|
$dataFim = FormatDtHoraBD($this->___dataFim); |
||||||
|
$dac = $this->___dac; |
||||||
|
$srv = $this->___servico; |
||||||
|
$origem = soNumero($this->___origem); |
||||||
|
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||||
|
|
||||||
|
$query = "SELECT fila, origem ,COUNT(qtde) AS qtde ,SUM (tempo_atende) AS tempo_atende ,SUM (tempo_transf) AS tempo_transf"; |
||||||
|
if ($mostraColunaServicos) { |
||||||
|
$query .= "\n ,serv_id"; |
||||||
|
} |
||||||
|
$query .= "\nFROM ( |
||||||
|
select b.fila, case when(coalesce(a.src, '') = '')then 'NI*' else a.src end as origem, a.uniqueid as qtde, |
||||||
|
(case when(b.evento in('COMPLETEAGENT','COMPLETECALLER', 'COMPLETAAGENT','COMPLETACALLER'))then strtoint(param2) else 0 end) as tempo_atende, |
||||||
|
(case when(exists(select * from pbx_bilhetes where data_bilhete = a.data_bilhete and accountcode = a.uniqueid ))then a.billsec else 0 end) as tempo_transf"; |
||||||
|
if ($mostraColunaServicos) { |
||||||
|
$query .= "\n ,coalesce(serv_id, 'SERV. NÃO ASSOCIADO') as serv_id"; |
||||||
} |
} |
||||||
|
$query .= "\n from pbx_bilhetes a |
||||||
|
inner join pbx_eventos_dacs b on b.uid2 = a.uniqueid "; |
||||||
|
if (GetUsoServico()) { |
||||||
|
$query .= "\nleft join pbx_servicos_registra c on c.uniqueid = a.uniqueid"; |
||||||
|
} |
||||||
|
$query .= "\nwhere a.id_bilhetes = (select max (l.id_bilhetes) from pbx_bilhetes l where l.uniqueid = a.uniqueid and l.lastapp <> 'Transferred Call' ) |
||||||
|
and b.evento in('COMPLETEAGENT','COMPLETECALLER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFER', 'TRANSFERORIG')\n"; |
||||||
|
|
||||||
protected function ___GetDadosDb() { |
if (GetUsoServico() && $srv) { |
||||||
$dataIni = FormatDtMssql($this->___dataIni); |
$query .= "\nand c.serv_id = '{$srv}'"; |
||||||
$dataFim = FormatDtHoraBD($this->___dataFim); |
} |
||||||
$dac = $this->___dac; |
$query .= "\nand a.lastapp <> 'Transferred Call' |
||||||
$origem = soNumero($this->___origem); |
|
||||||
|
|
||||||
$query = "SELECT FILA, ORIGEM ,COUNT(QTDE) AS QTDE ,SUM (TEMPO_ATENDE) AS TEMPO_ATENDE ,SUM (TEMPO_TRANSF) AS TEMPO_TRANSF |
|
||||||
FROM (select b.fila, case when(coalesce(a.src, '') = '')then 'NI*' else a.src end as origem, a.uniqueid as qtde, |
|
||||||
(case when(b.evento in('COMPLETEAGENT','COMPLETECALLER', 'COMPLETAAGENT','COMPLETACALLER'))then strtoint(param2) else 0 end) as tempo_atende, |
|
||||||
(case when(exists(select * from pbx_bilhetes where data_bilhete = a.data_bilhete and accountcode = a.uniqueid ))then a.billsec else 0 end) as tempo_transf |
|
||||||
from pbx_bilhetes a, pbx_eventos_dacs b |
|
||||||
where b.uid2 = a.uniqueid |
|
||||||
and a.id_bilhetes = (select max (l.id_bilhetes) from pbx_bilhetes l where l.uniqueid = a.uniqueid and l.lastapp <> 'Transferred Call' ) |
|
||||||
and b.evento in('COMPLETEAGENT','COMPLETECALLER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFER', 'TRANSFERORIG') |
|
||||||
and a.lastapp <> 'Transferred Call' |
|
||||||
and a.data_bilhete >= '$dataIni' |
and a.data_bilhete >= '$dataIni' |
||||||
and a.data_bilhete <= '$dataFim' |
and a.data_bilhete <= '$dataFim' |
||||||
and b.fila = (select nome from pbx_dacs where id = '$dac')"; |
and b.fila = (select nome from pbx_dacs where id = '$dac')\n"; |
||||||
if ($origem) { |
if ($origem) { |
||||||
$query .= " and a.src like '%$origem%' \n"; |
$query .= "\nand a.src like '%$origem%' \n"; |
||||||
} |
} |
||||||
|
|
||||||
$query .= " ) AS RECHAMADAS GROUP BY FILA, ORIGEM having count(*) > 1 ORDER BY 3 desc"; |
if ($mostraColunaServicos) { |
||||||
|
$query .= " ) AS RECHAMADAS GROUP BY fila, serv_id, origem having count(*) > 1 ORDER BY serv_id, qtde desc"; |
||||||
$result = $this->___GetQuery($query); |
} else { |
||||||
$row = pg_fetch_all($result); |
$query .= " ) AS RECHAMADAS GROUP BY fila, origem having count(*) > 1 ORDER BY qtde desc"; |
||||||
$this->SetData($row ? $row : array()); |
|
||||||
} |
} |
||||||
|
|
||||||
protected function ___PreparaCsv() { |
|
||||||
$dataRel = array(); |
$result = $this->___GetQuery($query); |
||||||
$filtro = $this->___FiltrosRelatorio(); |
$row = pg_fetch_all($result); |
||||||
$dataRel[] = GenerateCsvFromArray($filtro); |
$this->SetData($row ? $row : array()); |
||||||
|
} |
||||||
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
|
||||||
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
protected function ___PreparaCsv() { |
||||||
|
|
||||||
$dataRel[] = GenerateCsvFromArray($dadosCabecalio); |
$dataRel = array(); |
||||||
|
$filtro = $this->___FiltrosRelatorio(); |
||||||
foreach ($this->GetData()[0] as $row) { |
$dataRel[] = GenerateCsvFromArray($filtro); |
||||||
$row['tma'] = SecondToStrTime(round($row['tempo_atende']/$row['qtde'])); |
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||||
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
|
||||||
|
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
||||||
$linha = array(); |
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
||||||
foreach ($dadosField as $key) { |
|
||||||
$linha[] = $row["$key"]; |
|
||||||
} |
if ($mostraColunaServicos) { |
||||||
$dataRel[] = GenerateCsvFromArray($linha); |
$dadosCabecalio = array_merge(['Servico'], $dadosCabecalio); |
||||||
} |
$dadosField = array_merge(['serv_id'], $dadosField); |
||||||
|
|
||||||
$this->___dataRel[] = $dataRel; |
|
||||||
} |
} |
||||||
|
|
||||||
protected function ___PreparaExcel() { |
$dataRel[] = GenerateCsvFromArray($dadosCabecalio); |
||||||
$dataRel = array(); |
|
||||||
$filtro = $this->___FiltrosRelatorio(); |
|
||||||
|
|
||||||
/* |
foreach ($this->GetData()[0] as $row) { |
||||||
* Inicia o relatório. |
$row['tma'] = SecondToStrTime(round($row['tempo_atende'] / $row['qtde'])); |
||||||
*/ |
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||||
|
|
||||||
/* |
$linha = array(); |
||||||
* Cria os filtros |
foreach ($dadosField as $key) { |
||||||
*/ |
$linha[] = $row["$key"]; |
||||||
$linha = array('LABEL'); |
|
||||||
foreach ($filtro as $values) { |
|
||||||
list($label, $value) = explode(":", $values); |
|
||||||
$linha[] = $label; |
|
||||||
} |
} |
||||||
$dataRel[] = $linha; |
$dataRel[] = GenerateCsvFromArray($linha); |
||||||
|
} |
||||||
|
|
||||||
$linha = array('DADOS'); |
$this->___dataRel[] = $dataRel; |
||||||
foreach ($filtro as $values) { |
} |
||||||
list($label, $value) = explode(":", $values); |
|
||||||
$linha[] = $value; |
|
||||||
} |
|
||||||
$dataRel[] = $linha; |
|
||||||
|
|
||||||
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
protected function ___PreparaExcel() { |
||||||
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
$dataRel = array(); |
||||||
|
$filtro = $this->___FiltrosRelatorio(); |
||||||
$linha = array('LABEL'); |
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||||
foreach ($dadosCabecalio as $value) { |
/* |
||||||
$linha[] = $value; |
* Inicia o relatório. |
||||||
} |
*/ |
||||||
$dataRel[] = $linha; |
|
||||||
|
/* |
||||||
foreach ($this->GetData()[0] as $row) { |
* Cria os filtros |
||||||
$row['tma'] = SecondToStrTime(round($row['tempo_atende']/$row['qtde'])); |
*/ |
||||||
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
$linha = array('LABEL'); |
||||||
|
foreach ($filtro as $values) { |
||||||
$linha = array('DADOS'); |
list($label, $value) = explode(":", $values); |
||||||
foreach ($dadosField as $key) { |
$linha[] = $label; |
||||||
$linha[] = $row["$key"]; |
|
||||||
} |
|
||||||
$dataRel[] = $linha; |
|
||||||
} |
|
||||||
|
|
||||||
$this->___dataRel[] = $dataRel; |
|
||||||
} |
} |
||||||
|
$dataRel[] = $linha; |
||||||
|
|
||||||
protected function ___PreparaGrid() { |
$linha = array('DADOS'); |
||||||
$dataRel = array(); |
foreach ($filtro as $values) { |
||||||
|
list($label, $value) = explode(":", $values); |
||||||
$dadosCabecalio = array( |
$linha[] = $value; |
||||||
'Origem' => 'align="center"', |
} |
||||||
'Quantidade' => 'align="center"', |
$dataRel[] = $linha; |
||||||
'TMA' => 'align="center"', |
|
||||||
'Tempo' => 'align="center"' |
|
||||||
); |
|
||||||
$dadosField = array( |
|
||||||
'origem' => 'align="center"', |
|
||||||
'qtde' => 'align="center"', |
|
||||||
'tma' => 'align="center"', |
|
||||||
'tempo_atende' => 'align="center"' |
|
||||||
); |
|
||||||
|
|
||||||
/* |
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
||||||
* Inicia o relatório. |
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
||||||
*/ |
|
||||||
$dataRel[] = '<table width="70%" cellpadding="2" class="grid">'; |
|
||||||
|
|
||||||
/* |
if ($mostraColunaServicos) { |
||||||
* Monta a linha de cabecalio. |
$dadosCabecalio = array_merge(['Servico'], $dadosCabecalio); |
||||||
*/ |
$dadosField = array_merge(['serv_id'], $dadosField); |
||||||
|
} |
||||||
|
|
||||||
$linha = '<tr>'; |
$linha = array('LABEL'); |
||||||
$linha .= "<th align=\"center\" colspan=\"4\">Rechamadas</th>"; |
foreach ($dadosCabecalio as $value) { |
||||||
$linha .= "</tr>"; |
$linha[] = $value; |
||||||
$dataRel[] = $linha; |
} |
||||||
|
$dataRel[] = $linha; |
||||||
|
|
||||||
/* |
foreach ($this->GetData()[0] as $row) { |
||||||
* Verifica se retornou dados |
$row['tma'] = SecondToStrTime(round($row['tempo_atende'] / $row['qtde'])); |
||||||
*/ |
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||||
if (!IsPostBack() || !count($this->GetData()[0])) { |
|
||||||
$dataRel[] = sprintf("<tr><td align=\"center\" colspan=\"%s\">%s<td></tr></table>", count(1) - 1, (!IsPostBack() ? 'Informe os parametros e clique em consultar!' : 'Nenhum registro encontado!')); |
|
||||||
$this->___dataRel[] = $dataRel; |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
$linhaC = "<tr>"; |
$linha = array('DADOS'); |
||||||
foreach ($dadosCabecalio as $key => $value) { |
foreach ($dadosField as $key) { |
||||||
$linhaC .= sprintf("<th %s>%s</th>", $value, $key); |
$linha[] = $row["$key"]; |
||||||
} |
} |
||||||
$linhaC .= "</tr>"; |
$dataRel[] = $linha; |
||||||
$dataRel[] = $linhaC; |
} |
||||||
|
|
||||||
/* |
$this->___dataRel[] = $dataRel; |
||||||
* Linhas de dados. |
} |
||||||
*/ |
|
||||||
foreach ($this->GetData()[0] as $row) { |
protected function ___PreparaGrid() { |
||||||
$row['origem'] = ocultarTelefone($row['origem']); |
$dataRel = array(); |
||||||
$row['tma'] = SecondToStrTime(round($row['tempo_atende']/$row['qtde'])); |
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||||
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
|
||||||
|
|
||||||
$linha = "<tr>"; |
|
||||||
foreach ($dadosField as $key => $value) { |
|
||||||
$linha .= sprintf("<td %s>%s</td>", $value, $row["$key"]); |
|
||||||
} |
|
||||||
$linha .= "</tr>"; |
|
||||||
$dataRel[] = $linha; |
|
||||||
} |
|
||||||
|
|
||||||
|
$dadosCabecalio = array( |
||||||
|
'Origem' => 'align="center"', |
||||||
|
'Quantidade' => 'align="center"', |
||||||
|
'TMA' => 'align="center"', |
||||||
|
'Tempo' => 'align="center"' |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
$dadosField = array( |
||||||
|
'origem' => 'align="center"', |
||||||
|
'qtde' => 'align="center"', |
||||||
|
'tma' => 'align="center"', |
||||||
|
'tempo_atende' => 'align="center"' |
||||||
|
); |
||||||
|
|
||||||
|
if ($mostraColunaServicos) { |
||||||
|
$dadosCabecalio = array_merge(['Serviço' => 'align="center"'], $dadosCabecalio); |
||||||
|
$dadosField = array_merge(['serv_id' => 'align="left"'], $dadosField); |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* Inicia o relatório. |
||||||
|
*/ |
||||||
|
$dataRel[] = '<table width="70%" cellpadding="2" class="grid">'; |
||||||
|
|
||||||
|
/* |
||||||
|
* Monta a linha de cabecalio. |
||||||
|
*/ |
||||||
|
|
||||||
|
$linha = '<tr>'; |
||||||
|
$linha .= "<th align=\"center\" colspan=\"5\">Rechamadas</th>"; |
||||||
|
$linha .= "</tr>"; |
||||||
|
$dataRel[] = $linha; |
||||||
|
|
||||||
|
/* |
||||||
|
* Verifica se retornou dados |
||||||
|
*/ |
||||||
|
if (!IsPostBack() || !count($this->GetData()[0])) { |
||||||
|
$dataRel[] = sprintf("<tr><td align=\"center\" colspan=\"%s\">%s<td></tr></table>", count(1) - 1, (!IsPostBack() ? 'Informe os parametros e clique em consultar!' : 'Nenhum registro encontado!')); |
||||||
$this->___dataRel[] = $dataRel; |
$this->___dataRel[] = $dataRel; |
||||||
|
return; |
||||||
} |
} |
||||||
|
|
||||||
protected function ___PreparaHtml() { |
$linhaC = "<tr>"; |
||||||
|
foreach ($dadosCabecalio as $key => $value) { |
||||||
|
$linhaC .= sprintf("<th %s>%s</th>", $value, $key); |
||||||
|
} |
||||||
|
$linhaC .= "</tr>"; |
||||||
|
$dataRel[] = $linhaC; |
||||||
|
|
||||||
|
$somaRechamada = 0; |
||||||
|
|
||||||
|
/* |
||||||
|
* Linhas de dados. |
||||||
|
*/ |
||||||
|
foreach ($this->GetData()[0] as $row) { |
||||||
|
$row['origem'] = ocultarTelefone($row['origem']); |
||||||
|
$row['tma'] = SecondToStrTime(round($row['tempo_atende'] / $row['qtde'])); |
||||||
|
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||||
|
|
||||||
|
$linha = "<tr>"; |
||||||
|
foreach ($dadosField as $key => $value) { |
||||||
|
$linha .= sprintf("<td %s>%s</td>", $value, $row["$key"]); |
||||||
|
} |
||||||
|
$linha .= "</tr>"; |
||||||
|
$dataRel[] = $linha; |
||||||
} |
} |
||||||
|
|
||||||
protected function ___PreparaPdf() { |
$this->___dataRel[] = $dataRel; |
||||||
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
} |
||||||
|
|
||||||
$dadosCabecalio = array( |
protected function ___PreparaHtml() { |
||||||
'Origem' => 'C', |
|
||||||
'Quantidade' => 'C', |
} |
||||||
'TMA' => 'C', |
|
||||||
'Tempo' => 'C' |
protected function ___PreparaPdf() { |
||||||
); |
|
||||||
$dadosField = array( |
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
||||||
'origem' => 'C', |
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||||
'qtde' => 'C', |
|
||||||
'tma' => 'C', |
$dadosCabecalio = array( |
||||||
'tempo_atende' => 'C' |
'Origem' => 'C', |
||||||
); |
'Quantidade' => 'C', |
||||||
|
'TMA' => 'C', |
||||||
$x = 0; |
'Tempo' => 'C' |
||||||
$dados = $this->GetData()[0]; |
); |
||||||
/* |
$dadosField = array( |
||||||
* Linhas de dados. |
'origem' => 'C', |
||||||
*/ |
'qtde' => 'C', |
||||||
foreach ($dados as $row) { |
'tma' => 'C', |
||||||
$dados[$x]['tma'] = SecondToStrTime(round($row['tempo_atende']/$row['qtde'])); |
'tempo_atende' => 'C' |
||||||
$dados[$x]['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
); |
||||||
$x++; |
|
||||||
} |
if ($mostraColunaServicos) { |
||||||
$widthHeader = array(45, 45, 45, 45); |
$dadosCabecalio = array_merge(['Serviço' => 'C'], $dadosCabecalio); |
||||||
$table = array($dadosCabecalio, $dadosField, $dados, $widthHeader, 0, 0); |
$dadosField = array_merge(['serv_id' => 'C'], $dadosField); |
||||||
$this->___dataRel = array($table); |
|
||||||
} |
} |
||||||
|
|
||||||
public function ExecutaRelatorio() { |
$x = 0; |
||||||
global $jsStartup, $jsJQuery, $smarty; |
$dados = $this->GetData()[0]; |
||||||
try { |
/* |
||||||
/* |
* Linhas de dados. |
||||||
* Use esta função para validar dados do formulário. |
*/ |
||||||
*/ |
foreach ($dados as $row) { |
||||||
$this->___ValidaForm(); |
$dados[$x]['tma'] = SecondToStrTime(round($row['tempo_atende'] / $row['qtde'])); |
||||||
|
$dados[$x]['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||||
/* |
$x++; |
||||||
* Recupera os dados do banco. |
} |
||||||
*/ |
|
||||||
$this->___ConteudoRelatorio(); |
if ($mostraColunaServicos) { |
||||||
|
$widthHeader = array(40, 45, 25, 35, 35); |
||||||
/* |
} else { |
||||||
* Imprime relatório de acordo com a media passada. |
$widthHeader = array(45, 45, 45, 45); |
||||||
*/ |
} |
||||||
$conteudoRelatorio = $this->___ImprimeRelatorio(); |
$table = array($dadosCabecalio, $dadosField, $dados, $widthHeader, 0, 0); |
||||||
} catch (Exception $exc) { |
$this->___dataRel = array($table); |
||||||
$this->SetMsg($exc->getMessage()); |
} |
||||||
$jsStartup[] = sprintf("alert('%s');", $this->GetMsg()); |
|
||||||
$this->___GravaLog(); |
|
||||||
} |
|
||||||
|
|
||||||
|
public function ExecutaRelatorio() { |
||||||
|
global $jsStartup, $jsJQuery, $smarty; |
||||||
|
try { |
||||||
/* |
/* |
||||||
* Inclua os scripts necessários aqui. |
* Use esta função para validar dados do formulário. |
||||||
*/ |
*/ |
||||||
$jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) "; |
$this->___ValidaForm(); |
||||||
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) "; |
|
||||||
|
|
||||||
$smarty->assign('filtros', $this->___FiltrosRelatorio()); |
/* |
||||||
$smarty->assign('conteudo', $conteudoRelatorio); |
* Recupera os dados do banco. |
||||||
$smarty->assign('msg', $this->GetMsg()); |
*/ |
||||||
GetTemplate($smarty, 'relatoriosGrid.tpl'); |
$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'); |
||||||
} |
} |
||||||
|
|
||||||
$relRechamadas = new RelRechamadas($idProg, $dbcon, 1); |
} |
||||||
$relRechamadas->ExecutaRelatorio(); |
|
||||||
|
$relRechamadas = new RelRechamadas($idProg, $dbcon, 1); |
||||||
|
$relRechamadas->ExecutaRelatorio(); |
||||||
?> |
?> |
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,441 +1,474 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/* ************************************************************************* |
/* * ************************************************************************ |
||||||
* |
* |
||||||
* RELATÓRIO CLASSIFICAÇÃO MENSAL |
* RELATÓRIO CLASSIFICAÇÃO MENSAL |
||||||
* Autor |
* Autor |
||||||
* Lucas Awade |
* Lucas Awade |
||||||
* |
* |
||||||
* ************************************************************************* |
* ************************************************************************* |
||||||
* Definições do Projeto |
* Definições do Projeto |
||||||
* Nome: RelClassificacaoMensal |
* Nome: RelClassificacaoMensal |
||||||
* Data início: 10/08/2018 |
* Data início: 10/08/2018 |
||||||
* Equipe: Amarildo Pereira |
* Equipe: Amarildo Pereira |
||||||
* Descrição: Gera relatório de classificação realizadas no mês e cadastrada |
* Descrição: Gera relatório de classificação realizadas no mês e cadastrada |
||||||
* no banco de dados. As impressões é feito de acordo com o retorno com a |
* no banco de dados. As impressões é feito de acordo com o retorno com a |
||||||
* query do banco de dados que possui na pesquisa o mês e ano e a fila(DAC); |
* query do banco de dados que possui na pesquisa o mês e ano e a fila(DAC); |
||||||
* |
* |
||||||
* Pré-requisito: As querys de banco de dados tem que retornar com ordenação |
* Pré-requisito: As querys de banco de dados tem que retornar com ordenação |
||||||
* de acordo com os classificações; |
* de acordo com os classificações; |
||||||
* |
* |
||||||
* OBS: Atenção ao realizar manutenção nos itens de impressão pois os dados |
* OBS: Atenção ao realizar manutenção nos itens de impressão pois os dados |
||||||
* apresentados são estruturados. |
* apresentados são estruturados. |
||||||
* |
* |
||||||
* ************************************************************************* |
* ************************************************************************* |
||||||
* Copyright (c) 2018, Simples IP |
* Copyright (c) 2018, Simples IP |
||||||
* *************************************************************************/ |
* ************************************************************************ */ |
||||||
|
|
||||||
include_once 'util/relatoriosBase.php'; |
include_once 'util/relatoriosBase.php'; |
||||||
|
|
||||||
class RelClassificacaoMensal extends Relatorios { |
class RelClassificacaoMensal extends Relatorios { |
||||||
|
|
||||||
private $___ano; |
private $___ano; |
||||||
private $___mes; |
private $___mes; |
||||||
|
private $___servico; |
||||||
public function __construct($idProg, $dbcon, $incDac) { |
|
||||||
parent::__construct($idProg, $dbcon, $incDac); |
public function __construct($idProg, $dbcon, $incDac) { |
||||||
$this->___dac = isset($_POST['listaDacs']) ? $_POST['listaDacs'] : 0; |
parent::__construct($idProg, $dbcon, $incDac); |
||||||
$this->___mes = isset($_POST['listaMes']) ? $_POST['listaMes'] : date('m'); |
$this->___dac = isset($_POST['listaDacs']) ? $_POST['listaDacs'] : 0; |
||||||
$this->___ano = isset($_POST['listaAno']) ? $_POST['listaAno'] : 0; |
$this->___mes = isset($_POST['listaMes']) ? $_POST['listaMes'] : date('m'); |
||||||
} |
$this->___ano = isset($_POST['listaAno']) ? $_POST['listaAno'] : 0; |
||||||
|
$this->___servico = isset($_POST["listaServico"]) ? $_POST["listaServico"] : 0; |
||||||
|
} |
||||||
|
|
||||||
public function ___ValidaForm() { |
public function ___ValidaForm() { |
||||||
if (!IsPostBack()) |
if (!IsPostBack()) |
||||||
return; |
return; |
||||||
|
|
||||||
if ($this->GetIncDac() && !StrToIntDef($this->___dac)) { |
if ($this->GetIncDac() && !StrToIntDef($this->___dac)) { |
||||||
GeraExcept('Informe uma Fila!'); |
GeraExcept('Informe uma Fila!'); |
||||||
} |
|
||||||
} |
} |
||||||
|
} |
||||||
|
|
||||||
function ___FiltrosRelatorio() { |
function ___FiltrosRelatorio() { |
||||||
if ($this->___media != MEDIA_PRINT_GRID) { |
if ($this->___media != MEDIA_PRINT_GRID) { |
||||||
/* |
/* |
||||||
* Recupera os filtros da sessão do usuário. |
* Recupera os filtros da sessão do usuário. |
||||||
*/ |
*/ |
||||||
list($this->___dac, $this->___ano, $this->___mes, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
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->___dataIni, $this->___dataFim, ($this->___tipoRelatorio ? 'Analítico' : 'Sintético')); |
|
||||||
} |
|
||||||
|
|
||||||
$fltCsv = array(); |
if ($this->___media == MEDIA_PRINT_HTML) { |
||||||
if ($this->GetIncDac()) { |
$fila = $this->GetIncDac() ? 'Fila: ' . GetDacDesc($this->GetDbCon(), $this->GetIdProg() . ' ') : ''; |
||||||
$fltCsv[] = 'Fila:' . GetDacDesc($this->GetDbCon(), $this->___dac); |
return sprintf("%sData Inicial: %s Data Final: %s Tipo: %s", $fila, $this->___dataIni, $this->___dataFim, ($this->___tipoRelatorio ? 'Analítico' : 'Sintético')); |
||||||
} |
|
||||||
$fltCsv[] = "Ano:" . $this->___ano; |
|
||||||
$fltCsv[] = "Mes:" . $this->___mes; |
|
||||||
$fltCsv[] = "Data Emissao:" . date('d/m/Y H:i:s'); |
|
||||||
$fltCsv[] = "Emitido Por:" . GetLogin(); |
|
||||||
return $fltCsv; |
|
||||||
} |
} |
||||||
|
|
||||||
|
$fltCsv = array(); |
||||||
if ($this->GetIncDac()) { |
if ($this->GetIncDac()) { |
||||||
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); |
$fltCsv[] = 'Fila:' . GetDacDesc($this->GetDbCon(), $this->___dac); |
||||||
} |
} |
||||||
|
$fltCsv[] = "Ano:" . $this->___ano; |
||||||
|
$fltCsv[] = "Mes:" . $this->___mes; |
||||||
|
$fltCsv[] = "Data Emissao:" . date('d/m/Y H:i:s'); |
||||||
|
$fltCsv[] = "Emitido Por:" . GetLogin(); |
||||||
|
return $fltCsv; |
||||||
|
} |
||||||
|
|
||||||
$lkPrint = ""; |
if ($this->GetIncDac()) { |
||||||
if ($this->___dataCount) { |
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); |
||||||
$prt = '<a href="index.php?idProg=%s&media=%s&tipoRelatorio=%s"><img src="imgSite/%s" alt="Clique aqui para imprimir!" width="24" height="24" border="0"></a>'; |
} |
||||||
$prtHtml = "<a href=\"javaScript:NovaJanela('index.php?idProg=%s&media=%s&tipoRelatorio=%s', '%s', '720', '700', 'scrollbars=YES');\"><img src=\"imgSite/%s\" alt=\"Clique aqui para imprimir!\" width=\"24\" height=\"24\" border=\"0\"></a>"; |
|
||||||
$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"'; |
$lkPrint = ""; |
||||||
|
if ($this->___dataCount) { |
||||||
|
$prt = '<a href="index.php?idProg=%s&media=%s&tipoRelatorio=%s"><img src="imgSite/%s" alt="Clique aqui para imprimir!" width="24" height="24" border="0"></a>'; |
||||||
|
$prtHtml = "<a href=\"javaScript:NovaJanela('index.php?idProg=%s&media=%s&tipoRelatorio=%s', '%s', '720', '700', 'scrollbars=YES');\"><img src=\"imgSite/%s\" alt=\"Clique aqui para imprimir!\" width=\"24\" height=\"24\" border=\"0\"></a>"; |
||||||
|
$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 = '<table border="0" cellspacing="1" cellpadding="1">'; |
||||||
|
/* |
||||||
|
* Rotulos. |
||||||
|
*/ |
||||||
|
$filtro .= '<tr>'; |
||||||
|
$filtro .= $this->GetIncDac() ? '<td>Fila</td>' : ''; |
||||||
|
$filtro .= GetUsoServico() ? '<td>Serviço</td>' : ''; |
||||||
|
$filtro .= '<td>Mês</td>'; |
||||||
|
$filtro .= '<td>Ano</td>'; |
||||||
|
$filtro .= '<td align="center" valign="middle"> </td>'; |
||||||
|
$filtro .= '</tr>'; |
||||||
|
|
||||||
|
/* |
||||||
|
* Valores. |
||||||
|
*/ |
||||||
|
$filtro .= '<tr>'; |
||||||
|
$filtro .= $this->GetIncDac() ? sprintf('<td>%s</td>', $dacs) : ''; |
||||||
|
|
||||||
|
if (GetUsoServico()) { |
||||||
|
$filtro .= sprintf('<td>%s</td>', GetIdentRota(false, $this->___servico)); |
||||||
|
} |
||||||
|
$filtro .= sprintf("<td>%s</td>", GetMes($this->___mes, '', 1)); |
||||||
|
$filtro .= sprintf('<td>%s</td>', GetAno($this->___ano, 1)); |
||||||
|
$filtro .= '<td><input type="submit" name="btConsulta" id="btConsulta" value="Consultar"></td>'; |
||||||
|
$filtro .= '<td>%s</td>'; |
||||||
|
$filtro .= '</tr>'; |
||||||
|
$filtro .= '</table>'; |
||||||
|
|
||||||
|
/* |
||||||
|
* 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() { |
||||||
* Personalise esta função se necessitar de outras operações de filtro. |
|
||||||
*/ |
|
||||||
$filtro = '<table border="0" cellspacing="1" cellpadding="1">'; |
|
||||||
/* |
|
||||||
* Rotulos. |
|
||||||
*/ |
|
||||||
$filtro .= '<tr>'; |
|
||||||
$this->GetIncDac() ? $filtro .= '<td>Fila</td>' : ''; |
|
||||||
$filtro .= '<td>Mês</td>'; |
|
||||||
$filtro .= '<td>Ano</td>'; |
|
||||||
$filtro .= '<td align="center" valign="middle"> </td>'; |
|
||||||
$filtro .= '</tr>'; |
|
||||||
|
|
||||||
/* |
$ano = $this->___ano; |
||||||
* Valores. |
$mes = $this->___mes; |
||||||
*/ |
$dac = $this->___dac; |
||||||
$filtro .= '<tr>'; |
$srv = $this->___servico; |
||||||
$this->GetIncDac() ? $filtro .= sprintf('<td>%s</td>', $dacs) : ''; |
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||||
$filtro .= sprintf("<td>%s</td>", GetMes($this->___mes, '', 1)); |
|
||||||
$filtro .= sprintf('<td>%s</td>', GetAno($this->___ano, 1)); |
$query = $mostraColunaServicos ? "select clas_descricao, clit_descricao," : "select clas_descricao, clit_descricao,"; |
||||||
$filtro .= '<td><input type="submit" name="btConsulta" id="btConsulta" value="Consultar"></td>'; |
$query .= " (select count(*) from pbx_classifica_reg d |
||||||
$filtro .= '<td>%s</td>'; |
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
||||||
$filtro .= '</tr>'; |
inner join pbx_eventos_dacs f on f.uid2 = e.uniqueid "; |
||||||
$filtro .= '</table>'; |
if (GetUsoServico()) { |
||||||
|
$query .= "\nleft join pbx_servicos_registra s on s.uniqueid = e.uniqueid"; |
||||||
|
} |
||||||
|
$query .= "\n where e.lastapp <> 'Transferred Call' |
||||||
|
and date_part('year',e.data_bilhete) = '$ano' |
||||||
|
and date_part('month',e.data_bilhete) = '$mes' |
||||||
|
and f.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','BUSY','NOANSWER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG','BUSYS','NOANSWERS') |
||||||
|
and d.clas_id = c.clas_id |
||||||
|
and d.clit_id = c.clit_id |
||||||
|
and d.id_dac = dac.id_dac"; |
||||||
|
|
||||||
|
if (GetUsoServico() && $srv) { |
||||||
|
$query .= "\nand s.serv_id = '{$srv}'"; |
||||||
|
} |
||||||
|
|
||||||
/* |
$query .= " ) as qtde, |
||||||
* Guarda os filtros passados para recuperar na emissão dos relatórios para impressão. |
|
||||||
*/ |
(select count(distinct d.id_bilhetes) from pbx_classifica_reg d |
||||||
$_SESSION["SSstorageFiltros"] = array($this->___dac, $this->___ano, $this->___mes, $this->___tipoRelatorio); |
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
||||||
return sprintf($filtro, $lkPrint); |
inner join pbx_eventos_dacs f on f.uid2 = e.uniqueid "; |
||||||
|
|
||||||
|
if (GetUsoServico()) { |
||||||
|
$query .= "\nleft join pbx_servicos_registra s on s.uniqueid = e.uniqueid"; |
||||||
|
} |
||||||
|
$query .= "\nwhere e.lastapp <> 'Transferred Call' |
||||||
|
and date_part('year', e.data_bilhete) = '$ano' |
||||||
|
and date_part('month', e.data_bilhete) = '$mes' |
||||||
|
and f.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','BUSY','NOANSWER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG','BUSYS','NOANSWERS') |
||||||
|
and d.clas_id = c.clas_id |
||||||
|
and d.clit_id = c.clit_id |
||||||
|
and d.id_dac = dac.id_dac"; |
||||||
|
|
||||||
|
if (GetUsoServico() && $srv) { |
||||||
|
$query .= "\nand s.serv_id = '{$srv}'"; |
||||||
} |
} |
||||||
|
|
||||||
protected function ___GetDadosDb() { |
$query .= ") as chmd |
||||||
|
from pbx_classifica_atendimento a |
||||||
|
inner join pbx_classifica_item c on c.clas_id = a.clas_id |
||||||
|
inner join pbx_classifica_dacs dac on dac.clas_id = a.clas_id |
||||||
|
where dac.id_dac = '$dac' |
||||||
|
order by clas_descricao, clit_descricao"; |
||||||
|
|
||||||
$ano = $this->___ano; |
$result = $this->___GetQuery($query); |
||||||
$mes = $this->___mes; |
$row = pg_fetch_all($result); |
||||||
$dac = $this->___dac; |
$this->SetData($row ? $row : array()); |
||||||
|
} |
||||||
|
|
||||||
$query = "select clas_descricao, clit_descricao, |
protected function ___PreparaCsv() { |
||||||
(select count(*) from pbx_classifica_reg d |
$dataRel = array(); |
||||||
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
$filtro = $this->___FiltrosRelatorio(); |
||||||
and e.lastapp <> 'Transferred Call' |
|
||||||
and date_part('year',e.data_bilhete) = '$ano' |
|
||||||
and date_part('month',e.data_bilhete) = '$mes' |
|
||||||
where d.clas_id = c.clas_id |
|
||||||
and d.clit_id = c.clit_id |
|
||||||
and d.id_dac = '$dac') as qtde, |
|
||||||
|
|
||||||
(select count(distinct d.id_bilhetes) from pbx_classifica_reg d |
/* |
||||||
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
* Inicia o relatório. |
||||||
and e.lastapp <> 'Transferred Call' |
*/ |
||||||
and date_part('year',e.data_bilhete) = '$ano' |
$dataRel[] = GenerateCsvFromArray($filtro); |
||||||
and date_part('month',e.data_bilhete) = '$mes' |
|
||||||
where d.clas_id = c.clas_id |
|
||||||
and d.clit_id = c.clit_id |
|
||||||
and d.id_dac = '$dac') as chmd |
|
||||||
from pbx_classifica_atendimento a |
|
||||||
inner join pbx_classifica_item c on c.clas_id = a.clas_id |
|
||||||
inner join pbx_classifica_dacs d on d.clas_id = a.clas_id |
|
||||||
where d.id_dac = '$dac' |
|
||||||
order by clas_descricao, clit_descricao"; |
|
||||||
$result = $this->___GetQuery($query); |
|
||||||
$row = pg_fetch_all($result); |
|
||||||
$this->SetData($row ? $row : array()); |
|
||||||
} |
|
||||||
|
|
||||||
protected function ___PreparaCsv() { |
$ultClass = ''; |
||||||
$dataRel = array(); |
$somaReg = 0; |
||||||
$filtro = $this->___FiltrosRelatorio(); |
|
||||||
|
foreach ($this->GetData()[0] as $row) { |
||||||
|
$count++; |
||||||
|
$row['clas_descricao'] = RemoveAcentos($row['clas_descricao']); |
||||||
|
|
||||||
|
if ($count != 1) { |
||||||
|
if ($ultClass != $row['clas_descricao']) { |
||||||
|
$dataRel[] = GenerateCsvFromArray(array("Total [$ultClass]", $somaReg)); |
||||||
|
$dataRel[] = GenerateCsvFromArray(array('', '')); |
||||||
|
unset($somaReg); |
||||||
|
|
||||||
/* |
|
||||||
* Inicia o relatório. |
|
||||||
*/ |
|
||||||
$dataRel[] = GenerateCsvFromArray($filtro); |
|
||||||
|
|
||||||
$ultClass = ''; |
|
||||||
$somaReg = 0; |
|
||||||
|
|
||||||
foreach ($this->GetData()[0] as $row) { |
|
||||||
$count++; |
|
||||||
$row['clas_descricao'] = RemoveAcentos($row['clas_descricao']); |
|
||||||
|
|
||||||
if ($count != 1) { |
|
||||||
if ($ultClass != $row['clas_descricao']) { |
|
||||||
$dataRel[] = GenerateCsvFromArray(array("Total [ $ultClass ]", $somaReg)); |
|
||||||
$dataRel[] = GenerateCsvFromArray(array('', '')); |
|
||||||
unset($somaReg); |
|
||||||
|
|
||||||
$dataRel[] = GenerateCsvFromArray(array($row['clas_descricao'], 'Classificacoes')); |
|
||||||
} |
|
||||||
} else { |
|
||||||
$dataRel[] = GenerateCsvFromArray(array($row['clas_descricao'], 'Classificacoes')); |
$dataRel[] = GenerateCsvFromArray(array($row['clas_descricao'], 'Classificacoes')); |
||||||
} |
} |
||||||
|
} else { |
||||||
|
$dataRel[] = GenerateCsvFromArray(array($row['clas_descricao'], 'Classificacoes')); |
||||||
|
} |
||||||
|
|
||||||
$somaReg += $row["qtde"]; |
$somaReg += $row["qtde"]; |
||||||
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
||||||
|
|
||||||
// Formata linha de dados. |
// Formata linha de dados. |
||||||
|
|
||||||
$dataRel[] = GenerateCsvFromArray(array($row['clit_descricao'],$row['qtde'])); |
|
||||||
$ultClass = $row['clas_descricao']; |
|
||||||
|
|
||||||
if (count($this->GetData()[0]) == $count) { |
$dataRel[] = GenerateCsvFromArray(array($row['clit_descricao'], $row['qtde'])); |
||||||
$dataRel[] = GenerateCsvFromArray(array("Total [ $ultClass ]", $somaReg)); |
$ultClass = $row['clas_descricao']; |
||||||
} |
|
||||||
|
if (count($this->GetData()[0]) == $count) { |
||||||
|
$dataRel[] = GenerateCsvFromArray(array("Total [$ultClass]", $somaReg)); |
||||||
} |
} |
||||||
$this->___dataRel[] = $dataRel; |
|
||||||
} |
} |
||||||
|
$this->___dataRel[] = $dataRel; |
||||||
|
} |
||||||
|
|
||||||
protected function ___PreparaExcel() { |
protected function ___PreparaExcel() { |
||||||
$dataRel = array(); |
$dataRel = array(); |
||||||
$filtro = $this->___FiltrosRelatorio(); |
$filtro = $this->___FiltrosRelatorio(); |
||||||
|
|
||||||
/* |
/* |
||||||
* Inicia o relatório. |
* Inicia o relatório. |
||||||
*/ |
*/ |
||||||
|
|
||||||
|
/* |
||||||
|
* Cria os filtros |
||||||
|
*/ |
||||||
|
$linha = array('LABEL'); |
||||||
|
foreach ($filtro as $values) { |
||||||
|
list($label, $value) = explode(":", $values); |
||||||
|
$linha[] = $label; |
||||||
|
} |
||||||
|
$dataRel[] = $linha; |
||||||
|
|
||||||
/* |
$linha = array('DADOS'); |
||||||
* Cria os filtros |
foreach ($filtro as $values) { |
||||||
*/ |
list($label, $value) = explode(":", $values); |
||||||
$linha = array('LABEL'); |
$linha[] = $value; |
||||||
foreach ($filtro as $values) { |
} |
||||||
list($label, $value) = explode(":", $values); |
$dataRel[] = $linha; |
||||||
$linha[] = $label; |
|
||||||
} |
|
||||||
$dataRel[] = $linha; |
|
||||||
|
|
||||||
$linha = array('DADOS'); |
$dadosCabecalio = array('Descricao', 'Quantidade'); |
||||||
foreach ($filtro as $values) { |
$dadosField = array('clit_descricao', 'qtde'); |
||||||
list($label, $value) = explode(":", $values); |
$linha = array('LABEL'); |
||||||
$linha[] = $value; |
foreach ($dadosCabecalio as $value) { |
||||||
} |
$linha[] = $value; |
||||||
$dataRel[] = $linha; |
} |
||||||
|
$dataRel[] = $linha; |
||||||
$dadosCabecalio = array('Descricao', 'Quantidade'); |
|
||||||
$dadosField = array('clit_descricao', 'qtde'); |
|
||||||
$linha = array('LABEL'); |
|
||||||
foreach ($dadosCabecalio as $value) { |
|
||||||
$linha[] = $value; |
|
||||||
} |
|
||||||
$dataRel[] = $linha; |
|
||||||
|
|
||||||
$ultClass = ''; |
$ultClass = ''; |
||||||
|
|
||||||
$somaReg = 0; |
$somaReg = 0; |
||||||
|
|
||||||
/* |
/* |
||||||
* Linhas de dados. |
* Linhas de dados. |
||||||
*/ |
*/ |
||||||
foreach ($this->GetData()[0] as $row) { |
foreach ($this->GetData()[0] as $row) { |
||||||
$count++; |
$count++; |
||||||
$row['clas_descricao'] = RemoveAcentos($row['clas_descricao']); |
$row['clas_descricao'] = RemoveAcentos($row['clas_descricao']); |
||||||
if ($count != 1) { |
if ($count != 1) { |
||||||
if ($ultClass != $row['clas_descricao']) { |
if ($ultClass != $row['clas_descricao']) { |
||||||
$dataRel[] = array('LABEL', "Total [ $ultClass ]", $somaReg); |
$dataRel[] = array('LABEL', "Total [$ultClass]", $somaReg); |
||||||
$dataRel[] = array('LABEL', '', ''); |
$dataRel[] = array('LABEL', '', ''); |
||||||
unset($somaReg); |
unset($somaReg); |
||||||
$dataRel[] = array('LABEL', $row['clas_descricao'], 'Classificacoes'); |
|
||||||
} |
|
||||||
} else { |
|
||||||
$dataRel[] = array('LABEL', $row['clas_descricao'], 'Classificacoes'); |
$dataRel[] = array('LABEL', $row['clas_descricao'], 'Classificacoes'); |
||||||
} |
} |
||||||
$somaReg += $row["qtde"]; |
} else { |
||||||
|
$dataRel[] = array('LABEL', $row['clas_descricao'], 'Classificacoes'); |
||||||
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
} |
||||||
|
$somaReg += $row["qtde"]; |
||||||
|
|
||||||
$linha = array('DADOS'); |
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
||||||
foreach ($dadosField as $key) { |
|
||||||
$linha[] = $row["$key"]; |
|
||||||
} |
|
||||||
$dataRel[] = $linha; |
|
||||||
$ultClass = $row['clas_descricao']; |
|
||||||
|
|
||||||
if (count($this->GetData()[0]) == $count) { |
$linha = array('DADOS'); |
||||||
$dataRel[] = array('LABEL', "Total [ $ultClass ]", $somaReg); |
foreach ($dadosField as $key) { |
||||||
} |
$linha[] = $row["$key"]; |
||||||
} |
} |
||||||
|
$dataRel[] = $linha; |
||||||
|
$ultClass = $row['clas_descricao']; |
||||||
|
|
||||||
$this->___dataRel[] = $dataRel; |
if (count($this->GetData()[0]) == $count) { |
||||||
|
$dataRel[] = array('LABEL', "Total [$ultClass]", $somaReg); |
||||||
|
} |
||||||
} |
} |
||||||
|
|
||||||
protected function ___PreparaGrid() { |
$this->___dataRel[] = $dataRel; |
||||||
$dataRel = array(); |
} |
||||||
|
|
||||||
/* |
protected function ___PreparaGrid() { |
||||||
* Inicia o relatório. |
$dataRel = array(); |
||||||
*/ |
|
||||||
$dataRel[] = '<table width="70%" cellpadding="2" class="grid">'; |
|
||||||
|
|
||||||
/* |
/* |
||||||
* Monta a linha de cabecalio. |
* Inicia o relatório. |
||||||
*/ |
*/ |
||||||
|
$dataRel[] = '<table width="70%" cellpadding="2" class="grid">'; |
||||||
|
|
||||||
$linha = '<tr>'; |
/* |
||||||
$linha .= sprintf("<th colspan=\"2\" %s>%s</th>", 'align="center"', 'Relatório Classificação Mensal'); |
* Monta a linha de cabecalio. |
||||||
$linha .= "</tr>"; |
*/ |
||||||
$dataRel[] = $linha; |
|
||||||
|
|
||||||
/* |
$linha = '<tr>'; |
||||||
* Verifica se retornou dados |
$linha .= sprintf("<th colspan = \"2\" %s>%s</th>", 'align="center"', 'Relatório Classificação Mensal'); |
||||||
*/ |
$linha .= "</tr>"; |
||||||
if (!IsPostBack() || !count($this->GetData()[0])) { |
$dataRel[] = $linha; |
||||||
$dataRel[] = sprintf("<tr><td align=\"center\" colspan=\"%s\">%s<td></tr></table>", count(1) - 1, (!IsPostBack() ? 'Informe os parametros e clique em consultar!' : 'Nenhum registro encontado!')); |
|
||||||
$this->___dataRel[] = $dataRel; |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
$somaReg = 0; |
|
||||||
$ultClass = ""; |
|
||||||
$pass = 0; |
|
||||||
/* |
|
||||||
* Linhas de dados. |
|
||||||
*/ |
|
||||||
foreach ($this->GetData()[0] as $row) { |
|
||||||
$count ++; |
|
||||||
|
|
||||||
if ($ultClass != $row['clas_descricao']) { |
/* |
||||||
if ($pass) { |
* Verifica se retornou dados |
||||||
$linha = '<tr><th align="left">Total [ %s ]</th><th align="right">%s</th></tr>'; |
*/ |
||||||
$dataRel[] = sprintf($linha, $ultClass, $somaReg); |
if (!IsPostBack() || !count($this->GetData()[0])) { |
||||||
$dataRel[] = '<tr><td> </td></tr>'; |
$dataRel[] = sprintf("<tr><td align=\"center\" colspan=\"%s\">%s<td></tr></table>", count(1) - 1, (!IsPostBack() ? 'Informe os parametros e clique em consultar!' : 'Nenhum registro encontado!')); |
||||||
unset($somaReg); |
$this->___dataRel[] = $dataRel; |
||||||
} |
return; |
||||||
|
} |
||||||
$linha = '<tr>'; |
|
||||||
$linha .= sprintf("<th %s>%s</th>", 'align="left"', $row['clas_descricao']); |
|
||||||
$linha .= sprintf("<th %s>%s</th>", 'align="right"', 'Classificações'); |
|
||||||
$linha .= "</tr>"; |
|
||||||
$dataRel[] = $linha; |
|
||||||
} |
|
||||||
|
|
||||||
$ultClass = $row['clas_descricao']; |
|
||||||
$somaReg += $row['qtde']; |
|
||||||
|
|
||||||
// Formata linha de dados. |
$somaReg = 0; |
||||||
$linha = "<tr>"; |
$ultClass = ""; |
||||||
$linha .= sprintf("<td aling=\"left\">%s</td>", $row['clit_descricao']); |
$pass = 0; |
||||||
$linha .= sprintf("<td align=\"right\">%s</td>", $row['qtde']); |
/* |
||||||
$linha .= "</tr>"; |
* Linhas de dados. |
||||||
$dataRel[] = $linha; |
*/ |
||||||
$pass = 1; |
foreach ($this->GetData()[0] as $row) { |
||||||
if (count($this->GetData()[0]) == $count) { |
$count ++; |
||||||
|
|
||||||
|
if ($ultClass != $row['clas_descricao']) { |
||||||
|
if ($pass) { |
||||||
$linha = '<tr><th align="left">Total [ %s ]</th><th align="right">%s</th></tr>'; |
$linha = '<tr><th align="left">Total [ %s ]</th><th align="right">%s</th></tr>'; |
||||||
$dataRel[] = sprintf($linha, $ultClass, $somaReg); |
$dataRel[] = sprintf($linha, $ultClass, $somaReg); |
||||||
|
$dataRel[] = '<tr><td> </td></tr>'; |
||||||
unset($somaReg); |
unset($somaReg); |
||||||
} |
} |
||||||
|
|
||||||
|
$linha = '<tr>'; |
||||||
|
$linha .= sprintf("<th %s>%s</th>", 'align="left"', $row['clas_descricao']); |
||||||
|
$linha .= sprintf("<th %s>%s</th>", 'align="right"', 'Classificações'); |
||||||
|
$linha .= "</tr>"; |
||||||
|
$dataRel[] = $linha; |
||||||
} |
} |
||||||
/* |
|
||||||
* Fecha relatorio. |
|
||||||
*/ |
|
||||||
$dataRel[] = '</table>'; |
|
||||||
$this->___dataRel[] = $dataRel; |
|
||||||
} |
|
||||||
|
|
||||||
protected function ___PreparaHtml() { |
$ultClass = $row['clas_descricao']; |
||||||
|
$somaReg += $row['qtde']; |
||||||
|
|
||||||
|
// Formata linha de dados. |
||||||
|
$linha = "<tr>"; |
||||||
|
$linha .= sprintf("<td aling=\"left\">%s</td>", $row['clit_descricao']); |
||||||
|
$linha .= sprintf("<td align=\"right\">%s</td>", $row['qtde']); |
||||||
|
$linha .= "</tr>"; |
||||||
|
$dataRel[] = $linha; |
||||||
|
$pass = 1; |
||||||
|
if (count($this->GetData()[0]) == $count) { |
||||||
|
$linha = '<tr><th align="left">Total [ %s ]</th><th align="right">%s</th></tr>'; |
||||||
|
$dataRel[] = sprintf($linha, $ultClass, $somaReg); |
||||||
|
unset($somaReg); |
||||||
|
} |
||||||
} |
} |
||||||
|
/* |
||||||
|
* Fecha relatorio. |
||||||
|
*/ |
||||||
|
$dataRel[] = '</table>'; |
||||||
|
$this->___dataRel[] = $dataRel; |
||||||
|
} |
||||||
|
|
||||||
protected function ___PreparaPdf() { |
protected function ___PreparaHtml() { |
||||||
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
|
||||||
|
} |
||||||
$dados = array(); |
|
||||||
$tables = array(); |
protected function ___PreparaPdf() { |
||||||
$header = null; |
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
||||||
|
|
||||||
$x = 0; |
$dados = array(); |
||||||
$t = 0; |
$tables = array(); |
||||||
|
$header = null; |
||||||
$ultClass = ""; |
|
||||||
$somaReg = 0; |
$x = 0; |
||||||
|
$t = 0; |
||||||
$dataHeader = array('clit_descricao' => 'C', 'qtde' => 'C'); |
|
||||||
$widthHeader = array(130, 60); |
|
||||||
|
|
||||||
foreach ($this->GetData()[0] as $row) { |
|
||||||
$count ++; |
|
||||||
if ($x) { |
|
||||||
if ($ultClass != $row['clas_descricao']) { |
|
||||||
$totalizador = array("Total [ $ultClass ] ", $somaReg); |
|
||||||
${'table' . $t} = array($header, $dataHeader, $dados, $widthHeader, $totalizador, 0); |
|
||||||
array_push($tables, ${"table" . $t}); |
|
||||||
$t++; |
|
||||||
unset($somaReg); |
|
||||||
unset($dados); |
|
||||||
$x = 0; |
|
||||||
$header = array($row['clas_descricao'] => 'C', "Classificações" => 'C'); |
|
||||||
} |
|
||||||
} else { |
|
||||||
$header = array($row['clas_descricao'] => 'C', "Classificações" => 'C'); |
|
||||||
} |
|
||||||
|
|
||||||
$somaReg += $row['qtde']; |
$ultClass = ""; |
||||||
$ultClass = $row['clas_descricao']; |
$somaReg = 0; |
||||||
|
|
||||||
$dados[$x]["clit_descricao"] = $row["clit_descricao"]; |
$dataHeader = array('clit_descricao' => 'C', 'qtde' => 'C'); |
||||||
$dados[$x]["qtde"] = $row['qtde']; |
$widthHeader = array(130, 60); |
||||||
$x++; |
|
||||||
$z++; |
|
||||||
|
|
||||||
if (count($this->GetData()[0]) == $count) { |
foreach ($this->GetData()[0] as $row) { |
||||||
|
$count ++; |
||||||
|
if ($x) { |
||||||
|
if ($ultClass != $row['clas_descricao']) { |
||||||
$totalizador = array("Total [ $ultClass ] ", $somaReg); |
$totalizador = array("Total [ $ultClass ] ", $somaReg); |
||||||
${'table' . $t} = array($header, $dataHeader, $dados, $widthHeader, $totalizador, 0); |
${'table' . $t} = array($header, $dataHeader, $dados, $widthHeader, $totalizador, 0); |
||||||
array_push($tables, ${"table" . $t}); |
array_push($tables, ${"table" . $t}); |
||||||
|
$t++; |
||||||
|
unset($somaReg); |
||||||
|
unset($dados); |
||||||
|
$x = 0; |
||||||
|
$header = array($row['clas_descricao'] => 'C', "Classificações" => 'C'); |
||||||
} |
} |
||||||
|
} else { |
||||||
|
$header = array($row['clas_descricao'] => 'C', "Classificações" => 'C'); |
||||||
} |
} |
||||||
|
|
||||||
$this->___dataRel = $tables; |
$somaReg += $row['qtde']; |
||||||
} |
$ultClass = $row['clas_descricao']; |
||||||
|
|
||||||
public function ExecutaRelatorio() { |
$dados[$x]["clit_descricao"] = $row["clit_descricao"]; |
||||||
global $jsStartup, $jsJQuery, $smarty; |
$dados[$x]["qtde"] = $row['qtde']; |
||||||
try { |
$x++; |
||||||
/* |
$z++; |
||||||
* Use esta função para validar dados do formulário. |
|
||||||
*/ |
if (count($this->GetData()[0]) == $count) { |
||||||
$this->___ValidaForm(); |
$totalizador = array("Total [ $ultClass ] ", $somaReg); |
||||||
|
${'table' . $t} = array($header, $dataHeader, $dados, $widthHeader, $totalizador, 0); |
||||||
/* |
array_push($tables, ${"table" . $t}); |
||||||
* 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(); |
|
||||||
} |
} |
||||||
|
} |
||||||
|
|
||||||
|
$this->___dataRel = $tables; |
||||||
|
} |
||||||
|
|
||||||
|
public function ExecutaRelatorio() { |
||||||
|
global $jsStartup, $jsJQuery, $smarty; |
||||||
|
try { |
||||||
/* |
/* |
||||||
* Inclua os scripts necessários aqui. |
* Use esta função para validar dados do formulário. |
||||||
*/ |
*/ |
||||||
$jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) "; |
$this->___ValidaForm(); |
||||||
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) "; |
|
||||||
|
|
||||||
$smarty->assign('filtros', $this->___FiltrosRelatorio()); |
/* |
||||||
$smarty->assign('conteudo', $conteudoRelatorio); |
* Recupera os dados do banco. |
||||||
$smarty->assign('msg', $this->GetMsg()); |
*/ |
||||||
GetTemplate($smarty, 'relatoriosGrid.tpl'); |
$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'); |
||||||
} |
} |
||||||
|
|
||||||
$relClassMensal = new RelClassificacaoMensal($idProg, $dbcon, 1); |
} |
||||||
$relClassMensal->ExecutaRelatorio(); |
|
||||||
|
$relClassMensal = new RelClassificacaoMensal($idProg, $dbcon, 1); |
||||||
|
$relClassMensal->ExecutaRelatorio(); |
||||||
?> |
?> |
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue