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 |
||||
|
||||
/***************************************************************************************** |
||||
* |
||||
* GERA PDF |
||||
* Autor |
||||
* Lucas Awade |
||||
* |
||||
* *************************************************************************************** |
||||
* Definições do Projeto |
||||
* Nome: GerarPDF |
||||
* Data início: 02/08/2018 |
||||
* Equipe: Amarildo Pereira |
||||
* Descrição: |
||||
* 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 |
||||
* é importante formatar a fonte e criar uma página inicial para o preenchimento dos dados. |
||||
* |
||||
* Exemplo formatação: |
||||
* $pdf->SetFont('Arial', '', 6); Parametros ('FONTE', '(B | I | '')','TAMANHO') |
||||
* $pdf->AddPage(); Adiciona a primeira página |
||||
* $pdf->Ln(5); Pula linhas |
||||
* |
||||
* 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. |
||||
* |
||||
* Exemplo de geração: |
||||
* $pdf->Table(Array 1, Array 2, Array 3, Array 4, Array 5, boolean); |
||||
* |
||||
* Array 1 = Array para o cabeçalho(Header) [MULTIDIMENSIONAL]; |
||||
* Array 2 = Array para os dados do cabeçalho [MULTIDIMENSIONAL]; |
||||
* Array 3 = Array de dados para o preencimento das linhas [MULTIDIMENSIONAL] |
||||
* Array 4 = Array para o tamanho dos cabeçalhos [COMUM] |
||||
* boolean = 0 sem grid | 1 com grid |
||||
* |
||||
* Por fim para gerar o PDF em arquivo para download ou via browser adicione a linha Output |
||||
* com uma target de arquivo. |
||||
* |
||||
* Exemplo: |
||||
* $pdf->Output(NOMEPDF .".pdf", 'target'); |
||||
* |
||||
* 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. |
||||
* |
||||
* ************************************************************************************** |
||||
* Copyright (c) 2018, Simples IP |
||||
* ************************************************************************************* */ |
||||
|
||||
require('fpdf.php'); |
||||
|
||||
class GerarPDF extends FPDF { |
||||
|
||||
private $nomeRel; |
||||
private $dataRel; |
||||
private $userRel; |
||||
private $logoRel; |
||||
private $filtroRelIni; |
||||
private $filtroRelFim; |
||||
private $filtroRelDac; |
||||
private $type; |
||||
|
||||
function getLogoRel() { |
||||
return $this->logoRel; |
||||
} |
||||
/* * *************************************************************************************** |
||||
* |
||||
* GERA PDF |
||||
* Autor |
||||
* Lucas Awade |
||||
* |
||||
* *************************************************************************************** |
||||
* Definições do Projeto |
||||
* Nome: GerarPDF |
||||
* Data início: 02/08/2018 |
||||
* Equipe: Amarildo Pereira |
||||
* Descrição: |
||||
* 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 |
||||
* é importante formatar a fonte e criar uma página inicial para o preenchimento dos dados. |
||||
* |
||||
* Exemplo formatação: |
||||
* $pdf->SetFont('Arial', '', 6); Parametros ('FONTE', '(B | I | '')','TAMANHO') |
||||
* $pdf->AddPage(); Adiciona a primeira página |
||||
* $pdf->Ln(5); Pula linhas |
||||
* |
||||
* 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. |
||||
* |
||||
* Exemplo de geração: |
||||
* $pdf->Table(Array 1, Array 2, Array 3, Array 4, Array 5, boolean); |
||||
* |
||||
* Array 1 = Array para o cabeçalho(Header) [MULTIDIMENSIONAL]; |
||||
* Array 2 = Array para os dados do cabeçalho [MULTIDIMENSIONAL]; |
||||
* Array 3 = Array de dados para o preencimento das linhas [MULTIDIMENSIONAL] |
||||
* Array 4 = Array para o tamanho dos cabeçalhos [COMUM] |
||||
* boolean = 0 sem grid | 1 com grid |
||||
* |
||||
* Por fim para gerar o PDF em arquivo para download ou via browser adicione a linha Output |
||||
* com uma target de arquivo. |
||||
* |
||||
* Exemplo: |
||||
* $pdf->Output(NOMEPDF .".pdf", 'target'); |
||||
* |
||||
* 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. |
||||
* |
||||
* ************************************************************************************** |
||||
* Copyright (c) 2018, Simples IP |
||||
* ************************************************************************************* */ |
||||
|
||||
require('fpdf.php'); |
||||
|
||||
class GerarPDF extends FPDF { |
||||
|
||||
private $nomeRel; |
||||
private $dataRel; |
||||
private $userRel; |
||||
private $logoRel; |
||||
private $filtroRelIni; |
||||
private $filtroRelFim; |
||||
private $filtroRelDac; |
||||
private $type; |
||||
|
||||
function getLogoRel() { |
||||
return $this->logoRel; |
||||
} |
||||
|
||||
function setLogoRel($logoRel) { |
||||
$this->logoRel = $logoRel; |
||||
} |
||||
|
||||
function getNomeRel() { |
||||
return $this->nomeRel; |
||||
} |
||||
function setLogoRel($logoRel) { |
||||
$this->logoRel = $logoRel; |
||||
} |
||||
|
||||
function setNomeRel($nomeRel) { |
||||
$this->nomeRel = $nomeRel; |
||||
} |
||||
function getNomeRel() { |
||||
return $this->nomeRel; |
||||
} |
||||
|
||||
function getDataRel() { |
||||
return $this->dataRel; |
||||
} |
||||
|
||||
function getUserRel() { |
||||
return $this->userRel; |
||||
} |
||||
function setNomeRel($nomeRel) { |
||||
$this->nomeRel = $nomeRel; |
||||
} |
||||
|
||||
function setDataRel($dataRel) { |
||||
$this->dataRel = $dataRel; |
||||
} |
||||
function getDataRel() { |
||||
return $this->dataRel; |
||||
} |
||||
|
||||
function setUserRel($userRel) { |
||||
$this->userRel = $userRel; |
||||
} |
||||
function getUserRel() { |
||||
return $this->userRel; |
||||
} |
||||
|
||||
function getFiltroRelIni() { |
||||
return $this->filtroRelIni; |
||||
} |
||||
function setDataRel($dataRel) { |
||||
$this->dataRel = $dataRel; |
||||
} |
||||
|
||||
function getFiltroRelFim() { |
||||
return $this->filtroRelFim; |
||||
} |
||||
function setUserRel($userRel) { |
||||
$this->userRel = $userRel; |
||||
} |
||||
|
||||
function setFiltroRelIni($filtroRelIni) { |
||||
$this->filtroRelIni = $filtroRelIni; |
||||
} |
||||
function getFiltroRelIni() { |
||||
return $this->filtroRelIni; |
||||
} |
||||
|
||||
function setFiltroRelFim($filtroRelFim) { |
||||
$this->filtroRelFim = $filtroRelFim; |
||||
} |
||||
function getFiltroRelFim() { |
||||
return $this->filtroRelFim; |
||||
} |
||||
|
||||
function getFiltroRelDac() { |
||||
return $this->filtroRelDac; |
||||
} |
||||
function setFiltroRelIni($filtroRelIni) { |
||||
$this->filtroRelIni = $filtroRelIni; |
||||
} |
||||
|
||||
function setFiltroRelDac($filtroRelDac) { |
||||
$this->filtroRelDac = $filtroRelDac; |
||||
} |
||||
function getType() { |
||||
return $this->type; |
||||
} |
||||
function setFiltroRelFim($filtroRelFim) { |
||||
$this->filtroRelFim = $filtroRelFim; |
||||
} |
||||
|
||||
function setType($type) { |
||||
$this->type = $type; |
||||
} |
||||
function getFiltroRelDac() { |
||||
return $this->filtroRelDac; |
||||
} |
||||
|
||||
function Header() { |
||||
// 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 setFiltroRelDac($filtroRelDac) { |
||||
$this->filtroRelDac = $filtroRelDac; |
||||
} |
||||
|
||||
function getType() { |
||||
return $this->type; |
||||
} |
||||
|
||||
function setType($type) { |
||||
$this->type = $type; |
||||
} |
||||
|
||||
function Header() { |
||||
// 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 |
||||
$this->SetFillColor(255); |
||||
$this->SetFont(''); |
||||
$fill = false; |
||||
foreach ($dataDB as $keyD => $data) { |
||||
$x = 0; |
||||
foreach ($dataRow as $keyR => $row) { |
||||
$this->Cell($headerW[$x], 7, $data[$keyR] ? $data[$keyR] : "0", $gridRow, 0, $row, $fill); |
||||
$x++; |
||||
} |
||||
$this->Ln(); |
||||
$fill = !$fill; |
||||
$setFill = 0; |
||||
if (array_key_exists('cor_linha_dados', $data)) { |
||||
$this->SetFillColor((int) $data['cor_linha_dados']); |
||||
$setFill = 1; |
||||
} |
||||
$this->Ln(3); |
||||
if ($totaliza) { |
||||
$this->SetFont('Arial', 'B'); |
||||
$this->SetFillColor(235); |
||||
for ($t = 0; $t < count($totaliza); $t++) { |
||||
$this->Cell($headerW[$t], 7, $totaliza[$t], 0, 0, 'C', true); |
||||
} |
||||
|
||||
foreach ($dataRow as $keyR => $row) { |
||||
$this->Cell($headerW[$x], 7, $data[$keyR] ? $data[$keyR] : "0", $gridRow, 0, $row, ($setFill ? $setFill : $fill)); |
||||
$x++; |
||||
} |
||||
$this->Ln(6); |
||||
$this->Cell(array_sum($headerW), 0, '', ''); |
||||
|
||||
$this->Ln(); |
||||
$fill = !$fill; |
||||
} |
||||
|
||||
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'); |
||||
$this->Ln(3); |
||||
if ($totaliza) { |
||||
$this->SetFont('Arial', 'B'); |
||||
$this->SetFillColor(235); |
||||
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, '', ''); |
||||
} |
||||
|
||||
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 |
||||
|
||||
include_once 'util/relatoriosBase.php'; |
||||
include_once 'util/relatoriosBase.php'; |
||||
|
||||
class RelRechamadas extends Relatorios { |
||||
class RelRechamadas extends Relatorios { |
||||
|
||||
private $___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"] : ''; |
||||
} |
||||
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"] : ''; |
||||
$this->___servico = isset($_POST["listaServico"]) ? $_POST["listaServico"] : 0; |
||||
} |
||||
|
||||
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; |
||||
} |
||||
function ___FiltrosRelatorio() { |
||||
|
||||
if ($this->GetIncDac()) { |
||||
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); |
||||
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')); |
||||
} |
||||
|
||||
$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'); |
||||
$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; |
||||
} |
||||
|
||||
$tipoRel = !$this->___tipoRelatorio ? '' : 'checked="checked"'; |
||||
/* |
||||
* 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>'; |
||||
if ($this->GetIncDac()) { |
||||
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); |
||||
} |
||||
|
||||
/* |
||||
* Valores. |
||||
*/ |
||||
$filtro .= '<tr>'; |
||||
if ($this->GetIncDac()) |
||||
$filtro .= sprintf('<td>%s</td>', $dacs); |
||||
$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>'; |
||||
$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'); |
||||
} |
||||
|
||||
/* |
||||
* Guarda os filtros passados para recuperar na emissão dos relatóios para impressão. |
||||
*/ |
||||
$tipoRel = !$this->___tipoRelatorio ? '' : 'checked="checked"'; |
||||
/* |
||||
* 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() { |
||||
$dataIni = FormatDtMssql($this->___dataIni); |
||||
$dataFim = FormatDtHoraBD($this->___dataFim); |
||||
$dac = $this->___dac; |
||||
$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' |
||||
if (GetUsoServico() && $srv) { |
||||
$query .= "\nand c.serv_id = '{$srv}'"; |
||||
} |
||||
$query .= "\nand a.lastapp <> 'Transferred Call' |
||||
and a.data_bilhete >= '$dataIni' |
||||
and a.data_bilhete <= '$dataFim' |
||||
and b.fila = (select nome from pbx_dacs where id = '$dac')"; |
||||
if ($origem) { |
||||
$query .= " and a.src like '%$origem%' \n"; |
||||
} |
||||
and b.fila = (select nome from pbx_dacs where id = '$dac')\n"; |
||||
if ($origem) { |
||||
$query .= "\nand a.src like '%$origem%' \n"; |
||||
} |
||||
|
||||
$query .= " ) AS RECHAMADAS GROUP BY FILA, ORIGEM having count(*) > 1 ORDER BY 3 desc"; |
||||
|
||||
$result = $this->___GetQuery($query); |
||||
$row = pg_fetch_all($result); |
||||
$this->SetData($row ? $row : array()); |
||||
if ($mostraColunaServicos) { |
||||
$query .= " ) AS RECHAMADAS GROUP BY fila, serv_id, origem having count(*) > 1 ORDER BY serv_id, qtde desc"; |
||||
} else { |
||||
$query .= " ) AS RECHAMADAS GROUP BY fila, origem having count(*) > 1 ORDER BY qtde desc"; |
||||
} |
||||
|
||||
protected function ___PreparaCsv() { |
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
$dataRel[] = GenerateCsvFromArray($filtro); |
||||
|
||||
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
||||
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
||||
|
||||
$dataRel[] = GenerateCsvFromArray($dadosCabecalio); |
||||
|
||||
foreach ($this->GetData()[0] as $row) { |
||||
$row['tma'] = SecondToStrTime(round($row['tempo_atende']/$row['qtde'])); |
||||
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||
|
||||
$linha = array(); |
||||
foreach ($dadosField as $key) { |
||||
$linha[] = $row["$key"]; |
||||
} |
||||
$dataRel[] = GenerateCsvFromArray($linha); |
||||
} |
||||
|
||||
$this->___dataRel[] = $dataRel; |
||||
|
||||
$result = $this->___GetQuery($query); |
||||
$row = pg_fetch_all($result); |
||||
$this->SetData($row ? $row : array()); |
||||
} |
||||
|
||||
protected function ___PreparaCsv() { |
||||
|
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
$dataRel[] = GenerateCsvFromArray($filtro); |
||||
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||
|
||||
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
||||
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
||||
|
||||
|
||||
if ($mostraColunaServicos) { |
||||
$dadosCabecalio = array_merge(['Servico'], $dadosCabecalio); |
||||
$dadosField = array_merge(['serv_id'], $dadosField); |
||||
} |
||||
|
||||
protected function ___PreparaExcel() { |
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
$dataRel[] = GenerateCsvFromArray($dadosCabecalio); |
||||
|
||||
/* |
||||
* Inicia o relatório. |
||||
*/ |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$row['tma'] = SecondToStrTime(round($row['tempo_atende'] / $row['qtde'])); |
||||
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||
|
||||
/* |
||||
* Cria os filtros |
||||
*/ |
||||
$linha = array('LABEL'); |
||||
foreach ($filtro as $values) { |
||||
list($label, $value) = explode(":", $values); |
||||
$linha[] = $label; |
||||
$linha = array(); |
||||
foreach ($dadosField as $key) { |
||||
$linha[] = $row["$key"]; |
||||
} |
||||
$dataRel[] = $linha; |
||||
$dataRel[] = GenerateCsvFromArray($linha); |
||||
} |
||||
|
||||
$linha = array('DADOS'); |
||||
foreach ($filtro as $values) { |
||||
list($label, $value) = explode(":", $values); |
||||
$linha[] = $value; |
||||
} |
||||
$dataRel[] = $linha; |
||||
$this->___dataRel[] = $dataRel; |
||||
} |
||||
|
||||
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
||||
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
||||
|
||||
$linha = array('LABEL'); |
||||
foreach ($dadosCabecalio as $value) { |
||||
$linha[] = $value; |
||||
} |
||||
$dataRel[] = $linha; |
||||
|
||||
foreach ($this->GetData()[0] as $row) { |
||||
$row['tma'] = SecondToStrTime(round($row['tempo_atende']/$row['qtde'])); |
||||
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||
|
||||
$linha = array('DADOS'); |
||||
foreach ($dadosField as $key) { |
||||
$linha[] = $row["$key"]; |
||||
} |
||||
$dataRel[] = $linha; |
||||
} |
||||
|
||||
$this->___dataRel[] = $dataRel; |
||||
protected function ___PreparaExcel() { |
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||
/* |
||||
* Inicia o relatório. |
||||
*/ |
||||
|
||||
/* |
||||
* Cria os filtros |
||||
*/ |
||||
$linha = array('LABEL'); |
||||
foreach ($filtro as $values) { |
||||
list($label, $value) = explode(":", $values); |
||||
$linha[] = $label; |
||||
} |
||||
$dataRel[] = $linha; |
||||
|
||||
protected function ___PreparaGrid() { |
||||
$dataRel = array(); |
||||
|
||||
$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"' |
||||
); |
||||
$linha = array('DADOS'); |
||||
foreach ($filtro as $values) { |
||||
list($label, $value) = explode(":", $values); |
||||
$linha[] = $value; |
||||
} |
||||
$dataRel[] = $linha; |
||||
|
||||
/* |
||||
* Inicia o relatório. |
||||
*/ |
||||
$dataRel[] = '<table width="70%" cellpadding="2" class="grid">'; |
||||
$dadosCabecalio = array('Origem', 'Quantidade', 'TMA', 'Tempo'); |
||||
$dadosField = array('origem', 'qtde', 'tma', 'tempo_atende'); |
||||
|
||||
/* |
||||
* Monta a linha de cabecalio. |
||||
*/ |
||||
if ($mostraColunaServicos) { |
||||
$dadosCabecalio = array_merge(['Servico'], $dadosCabecalio); |
||||
$dadosField = array_merge(['serv_id'], $dadosField); |
||||
} |
||||
|
||||
$linha = '<tr>'; |
||||
$linha .= "<th align=\"center\" colspan=\"4\">Rechamadas</th>"; |
||||
$linha .= "</tr>"; |
||||
$dataRel[] = $linha; |
||||
$linha = array('LABEL'); |
||||
foreach ($dadosCabecalio as $value) { |
||||
$linha[] = $value; |
||||
} |
||||
$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; |
||||
return; |
||||
} |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$row['tma'] = SecondToStrTime(round($row['tempo_atende'] / $row['qtde'])); |
||||
$row['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||
|
||||
$linhaC = "<tr>"; |
||||
foreach ($dadosCabecalio as $key => $value) { |
||||
$linhaC .= sprintf("<th %s>%s</th>", $value, $key); |
||||
$linha = array('DADOS'); |
||||
foreach ($dadosField as $key) { |
||||
$linha[] = $row["$key"]; |
||||
} |
||||
$linhaC .= "</tr>"; |
||||
$dataRel[] = $linhaC; |
||||
$dataRel[] = $linha; |
||||
} |
||||
|
||||
/* |
||||
* 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; |
||||
} |
||||
$this->___dataRel[] = $dataRel; |
||||
} |
||||
|
||||
protected function ___PreparaGrid() { |
||||
$dataRel = array(); |
||||
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||
|
||||
$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; |
||||
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() { |
||||
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
||||
$this->___dataRel[] = $dataRel; |
||||
} |
||||
|
||||
$dadosCabecalio = array( |
||||
'Origem' => 'C', |
||||
'Quantidade' => 'C', |
||||
'TMA' => 'C', |
||||
'Tempo' => 'C' |
||||
); |
||||
$dadosField = array( |
||||
'origem' => 'C', |
||||
'qtde' => 'C', |
||||
'tma' => 'C', |
||||
'tempo_atende' => 'C' |
||||
); |
||||
|
||||
$x = 0; |
||||
$dados = $this->GetData()[0]; |
||||
/* |
||||
* Linhas de dados. |
||||
*/ |
||||
foreach ($dados as $row) { |
||||
$dados[$x]['tma'] = SecondToStrTime(round($row['tempo_atende']/$row['qtde'])); |
||||
$dados[$x]['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||
$x++; |
||||
} |
||||
$widthHeader = array(45, 45, 45, 45); |
||||
$table = array($dadosCabecalio, $dadosField, $dados, $widthHeader, 0, 0); |
||||
$this->___dataRel = array($table); |
||||
protected function ___PreparaHtml() { |
||||
|
||||
} |
||||
|
||||
protected function ___PreparaPdf() { |
||||
|
||||
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
||||
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||
|
||||
$dadosCabecalio = array( |
||||
'Origem' => 'C', |
||||
'Quantidade' => 'C', |
||||
'TMA' => 'C', |
||||
'Tempo' => 'C' |
||||
); |
||||
$dadosField = array( |
||||
'origem' => 'C', |
||||
'qtde' => 'C', |
||||
'tma' => 'C', |
||||
'tempo_atende' => 'C' |
||||
); |
||||
|
||||
if ($mostraColunaServicos) { |
||||
$dadosCabecalio = array_merge(['Serviço' => 'C'], $dadosCabecalio); |
||||
$dadosField = array_merge(['serv_id' => 'C'], $dadosField); |
||||
} |
||||
|
||||
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(); |
||||
} |
||||
$x = 0; |
||||
$dados = $this->GetData()[0]; |
||||
/* |
||||
* Linhas de dados. |
||||
*/ |
||||
foreach ($dados as $row) { |
||||
$dados[$x]['tma'] = SecondToStrTime(round($row['tempo_atende'] / $row['qtde'])); |
||||
$dados[$x]['tempo_atende'] = SecondToStrTime($row['tempo_atende']); |
||||
$x++; |
||||
} |
||||
|
||||
if ($mostraColunaServicos) { |
||||
$widthHeader = array(40, 45, 25, 35, 35); |
||||
} else { |
||||
$widthHeader = array(45, 45, 45, 45); |
||||
} |
||||
$table = array($dadosCabecalio, $dadosField, $dados, $widthHeader, 0, 0); |
||||
$this->___dataRel = array($table); |
||||
} |
||||
|
||||
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);}) "; |
||||
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) "; |
||||
$this->___ValidaForm(); |
||||
|
||||
$smarty->assign('filtros', $this->___FiltrosRelatorio()); |
||||
$smarty->assign('conteudo', $conteudoRelatorio); |
||||
$smarty->assign('msg', $this->GetMsg()); |
||||
GetTemplate($smarty, 'relatoriosGrid.tpl'); |
||||
/* |
||||
* 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'); |
||||
} |
||||
|
||||
$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 |
||||
|
||||
/* ************************************************************************* |
||||
* |
||||
* RELATÓRIO CLASSIFICAÇÃO MENSAL |
||||
* Autor |
||||
* Lucas Awade |
||||
* |
||||
* ************************************************************************* |
||||
* Definições do Projeto |
||||
* Nome: RelClassificacaoMensal |
||||
* Data início: 10/08/2018 |
||||
* Equipe: Amarildo Pereira |
||||
* 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 |
||||
* 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 |
||||
* de acordo com os classificações; |
||||
* |
||||
* OBS: Atenção ao realizar manutenção nos itens de impressão pois os dados |
||||
* apresentados são estruturados. |
||||
* |
||||
* ************************************************************************* |
||||
* Copyright (c) 2018, Simples IP |
||||
* *************************************************************************/ |
||||
|
||||
include_once 'util/relatoriosBase.php'; |
||||
|
||||
class RelClassificacaoMensal extends Relatorios { |
||||
|
||||
private $___ano; |
||||
private $___mes; |
||||
|
||||
public function __construct($idProg, $dbcon, $incDac) { |
||||
parent::__construct($idProg, $dbcon, $incDac); |
||||
$this->___dac = isset($_POST['listaDacs']) ? $_POST['listaDacs'] : 0; |
||||
$this->___mes = isset($_POST['listaMes']) ? $_POST['listaMes'] : date('m'); |
||||
$this->___ano = isset($_POST['listaAno']) ? $_POST['listaAno'] : 0; |
||||
} |
||||
/* * ************************************************************************ |
||||
* |
||||
* RELATÓRIO CLASSIFICAÇÃO MENSAL |
||||
* Autor |
||||
* Lucas Awade |
||||
* |
||||
* ************************************************************************* |
||||
* Definições do Projeto |
||||
* Nome: RelClassificacaoMensal |
||||
* Data início: 10/08/2018 |
||||
* Equipe: Amarildo Pereira |
||||
* 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 |
||||
* 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 |
||||
* de acordo com os classificações; |
||||
* |
||||
* OBS: Atenção ao realizar manutenção nos itens de impressão pois os dados |
||||
* apresentados são estruturados. |
||||
* |
||||
* ************************************************************************* |
||||
* Copyright (c) 2018, Simples IP |
||||
* ************************************************************************ */ |
||||
|
||||
include_once 'util/relatoriosBase.php'; |
||||
|
||||
class RelClassificacaoMensal extends Relatorios { |
||||
|
||||
private $___ano; |
||||
private $___mes; |
||||
private $___servico; |
||||
|
||||
public function __construct($idProg, $dbcon, $incDac) { |
||||
parent::__construct($idProg, $dbcon, $incDac); |
||||
$this->___dac = isset($_POST['listaDacs']) ? $_POST['listaDacs'] : 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() { |
||||
if (!IsPostBack()) |
||||
return; |
||||
public function ___ValidaForm() { |
||||
if (!IsPostBack()) |
||||
return; |
||||
|
||||
if ($this->GetIncDac() && !StrToIntDef($this->___dac)) { |
||||
GeraExcept('Informe uma Fila!'); |
||||
} |
||||
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->___dataIni, $this->___dataFim, ($this->___tipoRelatorio ? 'Analítico' : 'Sintético')); |
||||
} |
||||
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"]; |
||||
|
||||
$fltCsv = array(); |
||||
if ($this->GetIncDac()) { |
||||
$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; |
||||
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()) { |
||||
$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->___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'); |
||||
} |
||||
if ($this->GetIncDac()) { |
||||
$dacs = GetDac($this->GetDbCon(), $this->___dac, "", 0, 1, 0, 0, 1); |
||||
} |
||||
|
||||
$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); |
||||
} |
||||
|
||||
/* |
||||
* 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>'; |
||||
protected function ___GetDadosDb() { |
||||
|
||||
/* |
||||
* Valores. |
||||
*/ |
||||
$filtro .= '<tr>'; |
||||
$this->GetIncDac() ? $filtro .= sprintf('<td>%s</td>', $dacs) : ''; |
||||
$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>'; |
||||
$ano = $this->___ano; |
||||
$mes = $this->___mes; |
||||
$dac = $this->___dac; |
||||
$srv = $this->___servico; |
||||
$mostraColunaServicos = GetUsoServico() == RELATORIO_SERVICOS_HABILITA; |
||||
|
||||
$query = $mostraColunaServicos ? "select clas_descricao, clit_descricao," : "select clas_descricao, clit_descricao,"; |
||||
$query .= " (select count(*) from pbx_classifica_reg d |
||||
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
||||
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 .= "\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}'"; |
||||
} |
||||
|
||||
/* |
||||
* 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); |
||||
$query .= " ) as qtde, |
||||
|
||||
(select count(distinct d.id_bilhetes) from pbx_classifica_reg d |
||||
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
||||
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; |
||||
$mes = $this->___mes; |
||||
$dac = $this->___dac; |
||||
$result = $this->___GetQuery($query); |
||||
$row = pg_fetch_all($result); |
||||
$this->SetData($row ? $row : array()); |
||||
} |
||||
|
||||
$query = "select clas_descricao, clit_descricao, |
||||
(select count(*) from pbx_classifica_reg d |
||||
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
||||
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, |
||||
protected function ___PreparaCsv() { |
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
|
||||
(select count(distinct d.id_bilhetes) from pbx_classifica_reg d |
||||
inner join pbx_bilhetes e on e.uniqueid = d.id_bilhetes |
||||
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 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()); |
||||
} |
||||
/* |
||||
* Inicia o relatório. |
||||
*/ |
||||
$dataRel[] = GenerateCsvFromArray($filtro); |
||||
|
||||
protected function ___PreparaCsv() { |
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
$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); |
||||
|
||||
/* |
||||
* 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')); |
||||
} |
||||
} else { |
||||
$dataRel[] = GenerateCsvFromArray(array($row['clas_descricao'], 'Classificacoes')); |
||||
} |
||||
|
||||
$somaReg += $row["qtde"]; |
||||
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
||||
$somaReg += $row["qtde"]; |
||||
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
||||
|
||||
// Formata linha de dados. |
||||
|
||||
$dataRel[] = GenerateCsvFromArray(array($row['clit_descricao'],$row['qtde'])); |
||||
$ultClass = $row['clas_descricao']; |
||||
// Formata linha de dados. |
||||
|
||||
if (count($this->GetData()[0]) == $count) { |
||||
$dataRel[] = GenerateCsvFromArray(array("Total [ $ultClass ]", $somaReg)); |
||||
} |
||||
$dataRel[] = GenerateCsvFromArray(array($row['clit_descricao'], $row['qtde'])); |
||||
$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() { |
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
|
||||
/* |
||||
* Inicia o relatório. |
||||
*/ |
||||
protected function ___PreparaExcel() { |
||||
$dataRel = array(); |
||||
$filtro = $this->___FiltrosRelatorio(); |
||||
|
||||
/* |
||||
* Inicia o relatório. |
||||
*/ |
||||
|
||||
/* |
||||
* Cria os filtros |
||||
*/ |
||||
$linha = array('LABEL'); |
||||
foreach ($filtro as $values) { |
||||
list($label, $value) = explode(":", $values); |
||||
$linha[] = $label; |
||||
} |
||||
$dataRel[] = $linha; |
||||
|
||||
/* |
||||
* Cria os filtros |
||||
*/ |
||||
$linha = array('LABEL'); |
||||
foreach ($filtro as $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; |
||||
|
||||
$linha = array('DADOS'); |
||||
foreach ($filtro as $values) { |
||||
list($label, $value) = explode(":", $values); |
||||
$linha[] = $value; |
||||
} |
||||
$dataRel[] = $linha; |
||||
|
||||
$dadosCabecalio = array('Descricao', 'Quantidade'); |
||||
$dadosField = array('clit_descricao', 'qtde'); |
||||
$linha = array('LABEL'); |
||||
foreach ($dadosCabecalio as $value) { |
||||
$linha[] = $value; |
||||
} |
||||
$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. |
||||
*/ |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$count++; |
||||
$row['clas_descricao'] = RemoveAcentos($row['clas_descricao']); |
||||
if ($count != 1) { |
||||
if ($ultClass != $row['clas_descricao']) { |
||||
$dataRel[] = array('LABEL', "Total [ $ultClass ]", $somaReg); |
||||
$dataRel[] = array('LABEL', '', ''); |
||||
unset($somaReg); |
||||
$dataRel[] = array('LABEL', $row['clas_descricao'], 'Classificacoes'); |
||||
} |
||||
} else { |
||||
/* |
||||
* Linhas de dados. |
||||
*/ |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$count++; |
||||
$row['clas_descricao'] = RemoveAcentos($row['clas_descricao']); |
||||
if ($count != 1) { |
||||
if ($ultClass != $row['clas_descricao']) { |
||||
$dataRel[] = array('LABEL', "Total [$ultClass]", $somaReg); |
||||
$dataRel[] = array('LABEL', '', ''); |
||||
unset($somaReg); |
||||
$dataRel[] = array('LABEL', $row['clas_descricao'], 'Classificacoes'); |
||||
} |
||||
$somaReg += $row["qtde"]; |
||||
|
||||
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
||||
} else { |
||||
$dataRel[] = array('LABEL', $row['clas_descricao'], 'Classificacoes'); |
||||
} |
||||
$somaReg += $row["qtde"]; |
||||
|
||||
$linha = array('DADOS'); |
||||
foreach ($dadosField as $key) { |
||||
$linha[] = $row["$key"]; |
||||
} |
||||
$dataRel[] = $linha; |
||||
$ultClass = $row['clas_descricao']; |
||||
$row['clit_descricao'] = RemoveAcentos($row['clit_descricao']); |
||||
|
||||
if (count($this->GetData()[0]) == $count) { |
||||
$dataRel[] = array('LABEL', "Total [ $ultClass ]", $somaReg); |
||||
} |
||||
$linha = array('DADOS'); |
||||
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() { |
||||
$dataRel = array(); |
||||
$this->___dataRel[] = $dataRel; |
||||
} |
||||
|
||||
/* |
||||
* Inicia o relatório. |
||||
*/ |
||||
$dataRel[] = '<table width="70%" cellpadding="2" class="grid">'; |
||||
protected function ___PreparaGrid() { |
||||
$dataRel = array(); |
||||
|
||||
/* |
||||
* 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'); |
||||
$linha .= "</tr>"; |
||||
$dataRel[] = $linha; |
||||
/* |
||||
* Monta a linha de cabecalio. |
||||
*/ |
||||
|
||||
/* |
||||
* 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; |
||||
return; |
||||
} |
||||
|
||||
$somaReg = 0; |
||||
$ultClass = ""; |
||||
$pass = 0; |
||||
/* |
||||
* Linhas de dados. |
||||
*/ |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$count ++; |
||||
$linha = '<tr>'; |
||||
$linha .= sprintf("<th colspan = \"2\" %s>%s</th>", 'align="center"', 'Relatório Classificação Mensal'); |
||||
$linha .= "</tr>"; |
||||
$dataRel[] = $linha; |
||||
|
||||
if ($ultClass != $row['clas_descricao']) { |
||||
if ($pass) { |
||||
$linha = '<tr><th align="left">Total [ %s ]</th><th align="right">%s</th></tr>'; |
||||
$dataRel[] = sprintf($linha, $ultClass, $somaReg); |
||||
$dataRel[] = '<tr><td> </td></tr>'; |
||||
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; |
||||
} |
||||
|
||||
$ultClass = $row['clas_descricao']; |
||||
$somaReg += $row['qtde']; |
||||
/* |
||||
* 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; |
||||
return; |
||||
} |
||||
|
||||
// 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) { |
||||
$somaReg = 0; |
||||
$ultClass = ""; |
||||
$pass = 0; |
||||
/* |
||||
* Linhas de dados. |
||||
*/ |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$count ++; |
||||
|
||||
if ($ultClass != $row['clas_descricao']) { |
||||
if ($pass) { |
||||
$linha = '<tr><th align="left">Total [ %s ]</th><th align="right">%s</th></tr>'; |
||||
$dataRel[] = sprintf($linha, $ultClass, $somaReg); |
||||
$dataRel[] = '<tr><td> </td></tr>'; |
||||
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() { |
||||
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
||||
|
||||
$dados = array(); |
||||
$tables = array(); |
||||
$header = null; |
||||
|
||||
$x = 0; |
||||
$t = 0; |
||||
|
||||
$ultClass = ""; |
||||
$somaReg = 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'); |
||||
} |
||||
protected function ___PreparaHtml() { |
||||
|
||||
} |
||||
|
||||
protected function ___PreparaPdf() { |
||||
list($this->___dac, $this->___dataIni, $this->___dataFim, $this->___tipoRelatorio) = $_SESSION["SSstorageFiltros"]; |
||||
|
||||
$dados = array(); |
||||
$tables = array(); |
||||
$header = null; |
||||
|
||||
$x = 0; |
||||
$t = 0; |
||||
|
||||
$somaReg += $row['qtde']; |
||||
$ultClass = $row['clas_descricao']; |
||||
$ultClass = ""; |
||||
$somaReg = 0; |
||||
|
||||
$dados[$x]["clit_descricao"] = $row["clit_descricao"]; |
||||
$dados[$x]["qtde"] = $row['qtde']; |
||||
$x++; |
||||
$z++; |
||||
$dataHeader = array('clit_descricao' => 'C', 'qtde' => 'C'); |
||||
$widthHeader = array(130, 60); |
||||
|
||||
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); |
||||
${'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'); |
||||
} |
||||
|
||||
$this->___dataRel = $tables; |
||||
} |
||||
$somaReg += $row['qtde']; |
||||
$ultClass = $row['clas_descricao']; |
||||
|
||||
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(); |
||||
$dados[$x]["clit_descricao"] = $row["clit_descricao"]; |
||||
$dados[$x]["qtde"] = $row['qtde']; |
||||
$x++; |
||||
$z++; |
||||
|
||||
if (count($this->GetData()[0]) == $count) { |
||||
$totalizador = array("Total [ $ultClass ] ", $somaReg); |
||||
${'table' . $t} = array($header, $dataHeader, $dados, $widthHeader, $totalizador, 0); |
||||
array_push($tables, ${"table" . $t}); |
||||
} |
||||
} |
||||
|
||||
$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);}) "; |
||||
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) "; |
||||
$this->___ValidaForm(); |
||||
|
||||
$smarty->assign('filtros', $this->___FiltrosRelatorio()); |
||||
$smarty->assign('conteudo', $conteudoRelatorio); |
||||
$smarty->assign('msg', $this->GetMsg()); |
||||
GetTemplate($smarty, 'relatoriosGrid.tpl'); |
||||
/* |
||||
* 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'); |
||||
} |
||||
|
||||
$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