Browse Source

Ajustes em operacoes que realizam divisao para evitar que valores zerados entrem no calculo, alm disto teve mais alguns pequenos ajustes para lgpd e funcionamento correto dos relatorios.

spr_spr5_patch
douglas.strappasson 1 year ago
parent
commit
e926ca1fcf
  1. 67
      cadastros/pesquisa/pesquisaRel.php
  2. 33
      cadastros/pesquisa/pesquisaRelAgente.php
  3. 45
      include/util/util.php
  4. 6
      relatorios/tarifador/tarifaRamal.php

67
cadastros/pesquisa/pesquisaRel.php

@ -157,10 +157,11 @@
INNER JOIN pbx_eventos_dacs b ON a.uniqueid = b.uid2 INNER JOIN pbx_eventos_dacs b ON a.uniqueid = b.uid2
LEFT JOIN pbx_pesquisa_regitra c ON a.uniqueid = c.uniqueid LEFT JOIN pbx_pesquisa_regitra c ON a.uniqueid = c.uniqueid
LEFT JOIN pbx_usuarios d ON d.matricula = SUBSTRING(b.agente, 7, 4) LEFT JOIN pbx_usuarios d ON d.matricula = SUBSTRING(b.agente, 7, 4)
LEFT JOIN pbx_queues_grupos e ON e.nome = b.fila
WHERE calldate::DATE >= '$dataIni' WHERE calldate::DATE >= '$dataIni'
AND calldate::DATE <= '$dataFim' AND calldate::DATE <= '$dataFim'
AND b.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETACALLER', 'COMPLETAAGENT') AND b.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETACALLER', 'COMPLETAAGENT')
AND fila = 'SUPORTE_NIVEL1_ARAXA' AND e.id = '$dac'
GROUP BY fila, d.matricula, apelido"; GROUP BY fila, d.matricula, apelido";
$result = $this->___GetQuery($query); $result = $this->___GetQuery($query);
@ -201,6 +202,7 @@
} }
$dataRel[] = GenerateCsvFromArray($linha); $dataRel[] = GenerateCsvFromArray($linha);
$dataRel[] = GenerateCsvFromArray($linha);
// Formata linha de dados. // Formata linha de dados.
foreach ($this->GetData()[$x] as $dataPsq) { foreach ($this->GetData()[$x] as $dataPsq) {
$linha = array(); $linha = array();
@ -209,7 +211,7 @@
if ($key == 'po_opcao') { if ($key == 'po_opcao') {
$linha[] = RemoveAcentos($dataPsq["$key"]); $linha[] = RemoveAcentos($dataPsq["$key"]);
} else if ($key == 'por_resp') { } else if ($key == 'por_resp') {
$dataPsq['por_resp'] = number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%'; $dataPsq['por_resp'] = $dataPsq["num_resp"] ?? number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%';
$linha[] = $dataPsq['por_resp']; $linha[] = $dataPsq['por_resp'];
} else { } else {
$linha[] = $dataPsq["$key"]; $linha[] = $dataPsq["$key"];
@ -218,7 +220,7 @@
$dataRel[] = GenerateCsvFromArray($linha); $dataRel[] = GenerateCsvFromArray($linha);
unset($linha); unset($linha);
} }
$dataRel[] = GenerateCsvFromArray(array('Total', '', 'Resp.: '.$somaResp,number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%')); $dataRel[] = GenerateCsvFromArray(array('Total', '', 'Resp.: '.$somaResp, $somaResp ?? number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%'));
$x++; $x++;
} }
@ -275,17 +277,15 @@
} }
$dataRel[] = $linha; $dataRel[] = $linha;
//$row['po_opcao'] = RemoveAcentos($row['po_opcao']);
// Formata linha de dados.
// Formata linha de dados.
foreach ($this->GetData()[$x] as $dataPsq) { foreach ($this->GetData()[$x] as $dataPsq) {
$linha = array('DADOS'); $linha = array('DADOS');
foreach ($dadosField as $key) { foreach ($dadosField as $key) {
if ($key == 'po_opcao') { if ($key == 'po_opcao') {
$linha[] = RemoveAcentos($dataPsq["$key"]); $linha[] = RemoveAcentos($dataPsq["$key"]);
} else if ($key == 'por_resp') { } else if ($key == 'por_resp') {
$dataPsq['por_resp'] = number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%'; $dataPsq['por_resp'] = $dataPsq["num_resp"] ?? number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%';
$linha[] = $dataPsq['por_resp']; $linha[] = $dataPsq['por_resp'];
} else { } else {
$linha[] = $dataPsq["$key"]; $linha[] = $dataPsq["$key"];
@ -295,11 +295,30 @@
$dataRel[] = $linha; $dataRel[] = $linha;
unset($linha); unset($linha);
} }
$dataRel[] = array('LABEL', 'Total', '', 'Resp.: '.$somaResp,number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%'); $dataRel[] = array('LABEL', 'Total', '', 'Resp.: '.$somaResp, $somaResp ?? number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%');
$x++; $x++;
} }
$dataRel[] = array('LABEL', '');
$dadosCabecalio = array('Fila', 'Agente', 'Direcionamento Pesquisa', 'Conclusao Pesquisa', 'Chamadas');
$linha = array('LABEL');
foreach ($dadosCabecalio as $value) {
$linha[] = $value;
}
$dataRel[] = $linha;
$dadosField = array('fila', 'apelido', 'envio_pesquisa', 'completou_pesquisa', 'chamadas_realizadas');
$linha = array('DADOS');
foreach ($this->GetData()[$x] as $stat) {
$linha = array('DADOS');
foreach ($dadosField as $key) {
$linha[] = $stat[$key];
}
}
$dataRel[] = $linha;
$this->___dataRel[] = $dataRel; $this->___dataRel[] = $dataRel;
} }
@ -344,6 +363,7 @@
//print_r($this->GetData()); //print_r($this->GetData());
$x = 1; $x = 1;
$somaResp = 0; $somaResp = 0;
$linhas = '';
/* /*
* Linhas de dados. * Linhas de dados.
@ -364,14 +384,14 @@
$linhas .= "<tr>"; $linhas .= "<tr>";
foreach ($dadosField as $k => $value) { foreach ($dadosField as $k => $value) {
if ($k == 'por_resp') { if ($k == 'por_resp') {
$linhas .= sprintf("<td %s>%s%%</td>", $value, number_format(($dataPesquisa["num_resp"] / $somaResp) * 100.0, 2, ',', '.')); $linhas .= sprintf("<td %s>%s%%</td>", $value, $dataPesquisa["num_resp"] ?? number_format(($dataPesquisa["num_resp"] / $somaResp) * 100.0, 2, ',', '.'));
} else { } else {
$linhas .= sprintf("<td %s>%s</td>", $value, $dataPesquisa["$k"]); $linhas .= sprintf("<td %s>%s</td>", $value, $dataPesquisa["$k"]);
} }
} }
$linhas .= "</tr>"; $linhas .= "</tr>";
} }
$linhas .= sprintf("<tr><td colspan='2' align='center'><b>Total</b></td><td align='center'><b>$somaResp</b></td><td align='center'><b>%s</b></td></tr>", number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.').'%'); $linhas .= sprintf("<tr><td colspan='2' align='center'><b>Total</b></td><td align='center'><b>$somaResp</b></td><td align='center'><b>%s</b></td></tr>", $somaResp ?? number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.').'%');
$x++; $x++;
$dataRel[] = $linhas; $dataRel[] = $linhas;
unset($linhas); unset($linhas);
@ -454,14 +474,34 @@
$dataQst[$z]['po_opcao'] = $data['po_opcao']; $dataQst[$z]['po_opcao'] = $data['po_opcao'];
$dataQst[$z]['num_resp'] = $data['num_resp']; $dataQst[$z]['num_resp'] = $data['num_resp'];
$dataQst[$z]['po_tecla'] = $data['po_tecla']; $dataQst[$z]['po_tecla'] = $data['po_tecla'];
$dataQst[$z]['por_resp'] = number_format(($data["num_resp"] / $somaTotalQtd) * 100.0, 2, ',', '.') . '%'; $dataQst[$z]['por_resp'] = $data["num_resp"] ?? number_format(($data["num_resp"] / $somaTotalQtd) * 100.0, 2, ',', '.') . '%';
$z++; $z++;
} }
$totalizador = array('Total: ', $row['pq_questao'], 'Resp.: '.$somaTotalQtd , number_format(($somaTotalQtd / $somaTotalQtd) * 100.0, 2, ',', '.') . '%'); $totalizador = array('Total: ', $row['pq_questao'], 'Resp.: '.$somaTotalQtd , $somaTotalQtd ?? number_format(($somaTotalQtd / $somaTotalQtd) * 100.0, 2, ',', '.') . '%');
$tables[] = array($dadosCabecalio, $dadosField, $dataQst, $widthHeader, $totalizador, 0); $tables[] = array($dadosCabecalio, $dadosField, $dataQst, $widthHeader, $totalizador, 0);
$x++; $x++;
unset($dataQst); unset($dataQst);
} }
$dadosCabecalio = array(
'Fila' => 'C',
'Agente' => 'C',
'Direcionamento Pesquisa' => 'C',
'Conclusao Pesquisa' => 'C',
'Chamadas' => 'C'
);
$dadosField = array(
'fila' => 'C',
'apelido' => 'C',
'envio_pesquisa' => 'C',
'completou_pesquisa' => 'C',
'chamadas_realizadas' => 'C'
);
$widthHeader = array(20, 20, 40, 40, 20);
$tables[] = array($dadosCabecalio, $dadosField, $this->GetData()[$x], $widthHeader, 0, 0);
$this->___dataRel = $tables; $this->___dataRel = $tables;
} }
@ -510,10 +550,7 @@
$smarty->assign('msg', $this->GetMsg()); $smarty->assign('msg', $this->GetMsg());
GetTemplate($smarty, 'relatoriosGrid.tpl'); GetTemplate($smarty, 'relatoriosGrid.tpl');
} }
} }
$relPesquisa = new RelPesquisa($idProg, $dbcon, 1); $relPesquisa = new RelPesquisa($idProg, $dbcon, 1);
$relPesquisa->ExecutaRelatorio(); $relPesquisa->ExecutaRelatorio();

33
cadastros/pesquisa/pesquisaRelAgente.php

@ -1,5 +1,4 @@
<?php <?php
include_once 'util/relatoriosBase.php'; include_once 'util/relatoriosBase.php';
require("pesquisaFuncoes.php"); require("pesquisaFuncoes.php");
@ -12,6 +11,7 @@
private $___ppNome = ''; private $___ppNome = '';
private $___datas = array(); private $___datas = array();
private $___matricula; private $___matricula;
private $___tipoRelatorio;
public function __construct($idProg, $dbcon, $incDac) { public function __construct($idProg, $dbcon, $incDac) {
parent::__construct($idProg, $dbcon, $incDac); parent::__construct($idProg, $dbcon, $incDac);
@ -165,7 +165,7 @@
INNER JOIN pbx_eventos_dacs b ON a.uniqueid = b.uid2 INNER JOIN pbx_eventos_dacs b ON a.uniqueid = b.uid2
LEFT JOIN pbx_pesquisa_regitra c ON a.uniqueid = c.uniqueid LEFT JOIN pbx_pesquisa_regitra c ON a.uniqueid = c.uniqueid
LEFT JOIN pbx_usuarios d ON d.matricula = SUBSTRING(b.agente, 7, 4) LEFT JOIN pbx_usuarios d ON d.matricula = SUBSTRING(b.agente, 7, 4)
INNER JOIN pbx_queues_grupos e ON e.nome = b.fila LEFT JOIN pbx_queues_grupos e ON e.nome = b.fila
WHERE calldate::DATE >= '{$dataIni}' AND calldate::DATE <= '{$dataFim}' WHERE calldate::DATE >= '{$dataIni}' AND calldate::DATE <= '{$dataFim}'
AND b.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETACALLER', 'COMPLETAAGENT') AND b.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETACALLER', 'COMPLETAAGENT')
AND e.id = {$dac} AND e.id = {$dac}
@ -208,18 +208,16 @@
$linha[] = $value; $linha[] = $value;
} }
$dataRel[] = $linha; $dataRel[] = GenerateCsvFromArray($linha);
//$row['po_opcao'] = RemoveAcentos($row['po_opcao']);
// Formata linha de dados.
// Formata linha de dados.
foreach ($this->GetData()[$x] as $dataPsq) { foreach ($this->GetData()[$x] as $dataPsq) {
$linha = array(); $linha = array();
foreach ($dadosField as $key) { foreach ($dadosField as $key) {
if ($key == 'po_opcao') { if ($key == 'po_opcao') {
$linha[] = RemoveAcentos($dataPsq["$key"]); $linha[] = RemoveAcentos($dataPsq["$key"]);
} else if ($key == 'por_resp') { } else if ($key == 'por_resp') {
$dataPsq['por_resp'] = number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%'; $dataPsq['por_resp'] = $dataPsq["num_resp"] ?? number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%';
$linha[] = $dataPsq['por_resp']; $linha[] = $dataPsq['por_resp'];
} else { } else {
$linha[] = $dataPsq["$key"]; $linha[] = $dataPsq["$key"];
@ -228,7 +226,7 @@
$dataRel[] = GenerateCsvFromArray($linha); $dataRel[] = GenerateCsvFromArray($linha);
unset($linha); unset($linha);
} }
$dataRel[] = GenerateCsvFromArray(array('Total', '', 'Resp.: ' . $somaResp, number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%')); $dataRel[] = GenerateCsvFromArray(array('Total', '', 'Resp.: ' . $somaResp, $somaResp ?? number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%'));
$x++; $x++;
} }
@ -300,17 +298,15 @@
} }
$dataRel[] = $linha; $dataRel[] = $linha;
//$row['po_opcao'] = RemoveAcentos($row['po_opcao']);
// Formata linha de dados.
// Formata linha de dados.
foreach ($this->GetData()[$x] as $dataPsq) { foreach ($this->GetData()[$x] as $dataPsq) {
$linha = array('DADOS'); $linha = array('DADOS');
foreach ($dadosField as $key) { foreach ($dadosField as $key) {
if ($key == 'po_opcao') { if ($key == 'po_opcao') {
$linha[] = RemoveAcentos($dataPsq["$key"]); $linha[] = RemoveAcentos($dataPsq["$key"]);
} else if ($key == 'por_resp') { } else if ($key == 'por_resp') {
$dataPsq['por_resp'] = number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%'; $dataPsq['por_resp'] = $dataPsq["num_resp"] ?? number_format(($dataPsq["num_resp"] / $somaResp) * 100.0, 2, ',', '.') . '%';
$linha[] = $dataPsq['por_resp']; $linha[] = $dataPsq['por_resp'];
} else { } else {
$linha[] = $dataPsq["$key"]; $linha[] = $dataPsq["$key"];
@ -320,7 +316,7 @@
$dataRel[] = $linha; $dataRel[] = $linha;
unset($linha); unset($linha);
} }
$dataRel[] = array('LABEL', 'Total', '', 'Resp.: ' . $somaResp, number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%'); $dataRel[] = array('LABEL', 'Total', '', 'Resp.: ' . $somaResp, $somaResp ?? number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%');
$x++; $x++;
} }
@ -386,6 +382,7 @@
//print_r($this->GetData()); //print_r($this->GetData());
$x = 1; $x = 1;
$somaResp = 0; $somaResp = 0;
$linhas = '';
/* /*
* Linhas de dados. * Linhas de dados.
@ -394,7 +391,6 @@
//Monta a Questão da Pergunta da pesquisa. //Monta a Questão da Pergunta da pesquisa.
$linhas .= sprintf("<tr><th colspan=\"4\"><span style='color:#404040'>%s</span></th></tr>", $row['pq_questao']); $linhas .= sprintf("<tr><th colspan=\"4\"><span style='color:#404040'>%s</span></th></tr>", $row['pq_questao']);
$linhas .= "<tr>"; $linhas .= "<tr>";
foreach ($dadosCabecalio as $key => $value) { foreach ($dadosCabecalio as $key => $value) {
$linhas .= sprintf("<th %s>%s</th>", $value, $key); $linhas .= sprintf("<th %s>%s</th>", $value, $key);
@ -409,14 +405,14 @@
$linhas .= "<tr>"; $linhas .= "<tr>";
foreach ($dadosField as $k => $value) { foreach ($dadosField as $k => $value) {
if ($k == 'por_resp') { if ($k == 'por_resp') {
$linhas .= sprintf("<td %s>%s%%</td>", $value, number_format(($dataPesquisa["num_resp"] / $somaResp) * 100.0, 2, ',', '.')); $linhas .= sprintf("<td %s>%s%%</td>", $value, $dataPesquisa["num_resp"] ?? number_format(($dataPesquisa["num_resp"] / $somaResp) * 100.0, 2, ',', '.'));
} else { } else {
$linhas .= sprintf("<td %s>%s</td>", $value, $dataPesquisa["$k"]); $linhas .= sprintf("<td %s>%s</td>", $value, $dataPesquisa["$k"]);
} }
} }
$linhas .= "</tr>"; $linhas .= "</tr>";
} }
$linhas .= sprintf("<tr><td colspan='2' align='center'><b>Total</b></td><td align='center'><b>$somaResp</b></td><td align='center'><b>%s</b></td></tr>", number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%'); $linhas .= sprintf("<tr><td colspan='2' align='center'><b>Total</b></td><td align='center'><b>$somaResp</b></td><td align='center'><b>%s</b></td></tr>", $somaResp ?? number_format(($somaResp / $somaResp) * 100.0, 2, ',', '.') . '%');
$x++; $x++;
@ -492,10 +488,10 @@
$dataQst[$z]['po_opcao'] = $data['po_opcao']; $dataQst[$z]['po_opcao'] = $data['po_opcao'];
$dataQst[$z]['num_resp'] = $data['num_resp']; $dataQst[$z]['num_resp'] = $data['num_resp'];
$dataQst[$z]['po_tecla'] = $data['po_tecla']; $dataQst[$z]['po_tecla'] = $data['po_tecla'];
$dataQst[$z]['por_resp'] = number_format(($data["num_resp"] / $somaTotalQtd) * 100.0, 2, ',', '.') . '%'; $dataQst[$z]['por_resp'] = $data["num_resp"] ?? number_format(($data["num_resp"] / $somaTotalQtd) * 100.0, 2, ',', '.') . '%';
$z++; $z++;
} }
$totalizador = array('Total: ', $row['pq_questao'], 'Resp.: ' . $somaTotalQtd, number_format(($somaTotalQtd / $somaTotalQtd) * 100.0, 2, ',', '.') . '%'); $totalizador = array('Total: ', $row['pq_questao'], 'Resp.: ' . $somaTotalQtd, $somaTotalQtd ?? number_format(($somaTotalQtd / $somaTotalQtd) * 100.0, 2, ',', '.') . '%');
$tables[] = array($dadosCabecalio, $dadosField, $dataQst, $widthHeader, $totalizador, 0); $tables[] = array($dadosCabecalio, $dadosField, $dataQst, $widthHeader, $totalizador, 0);
$x++; $x++;
unset($dataQst); unset($dataQst);
@ -573,4 +569,3 @@
$relPesquisaAgt = new RelPesquisaAgente($idProg, $dbcon, 1); $relPesquisaAgt = new RelPesquisaAgente($idProg, $dbcon, 1);
$relPesquisaAgt->ExecutaRelatorio(); $relPesquisaAgt->ExecutaRelatorio();

45
include/util/util.php

@ -1639,6 +1639,7 @@ function TarifaChamada($tipoTarifa, $duracaoSegundos, $precoMinuto, $fator, $cad
* 3) Acima de 60 segundos a chamada dever<EFBFBD> ser cobrada com o pre<EFBFBD>o cheio (60s = tarifa) e a acrescida do valor da tarifa (Tarifa / 10) a cada 6 segundos. * 3) Acima de 60 segundos a chamada dever<EFBFBD> ser cobrada com o pre<EFBFBD>o cheio (60s = tarifa) e a acrescida do valor da tarifa (Tarifa / 10) a cada 6 segundos.
*/ */
$MINUTO = 60; $MINUTO = 60;
$operatorModule = true;
/* /*
* Tarifa<EFBFBD><EFBFBD>o tipo 2 tem o preco definido por chamada. * Tarifa<EFBFBD><EFBFBD>o tipo 2 tem o preco definido por chamada.
*/ */
@ -1651,47 +1652,55 @@ function TarifaChamada($tipoTarifa, $duracaoSegundos, $precoMinuto, $fator, $cad
if ($duracaoSegundos <= 3) if ($duracaoSegundos <= 3)
return 0; return 0;
$fatorCalculo = (int) ($MINUTO / $fator); $fatorCalculo = (int) Divide($MINUTO, $fator);
$fatorCadencia = (int) ($MINUTO / $cadencia); $fatorCadencia = (int) Divide($MINUTO, $cadencia);
if (($fatorCalculo == 1) && ($fatorCadencia == 1)) { if (($fatorCalculo == 1) && ($fatorCadencia == 1)) {
/* /*
* Tarifa<EFBFBD><EFBFBD>o cheia ou seja 61 segundos <EFBFBD> tarifado como 120 * Tarifa<EFBFBD><EFBFBD>o cheia ou seja 61 segundos <EFBFBD> tarifado como 120
*/ */
$minutos = (int) ($duracaoSegundos / $MINUTO); $minutos = (int) Divide($duracaoSegundos, $MINUTO);
$quebraMinuto = ($duracaoSegundos % $MINUTO) ? 1 : 0; $quebraMinuto = Divide($duracaoSegundos, $MINUTO, $operatorModule) ? 1 : 0;
return round((($precoMinuto * $minutos) + ($precoMinuto * $quebraMinuto)), 2); return round((($precoMinuto * $minutos) + ($precoMinuto * $quebraMinuto)), 2);
} else if (($duracaoSegundos) <= ($MINUTO / $fatorCalculo)) { } else if (($duracaoSegundos) <= Divide($MINUTO, $fatorCalculo)) {
/* /*
* Aqui ser<EFBFBD> tarifado por exemplo chamadas entre 3 e 30 segundos quando * Aqui ser<EFBFBD> tarifado por exemplo chamadas entre 3 e 30 segundos quando
* cadencia 30+6 ou entre 3 e 60 quando cadencia 60+6 * cadencia 30+6 ou entre 3 e 60 quando cadencia 60+6
*/ */
return round(($precoMinuto / $fatorCalculo), 2); return round(Divide($precoMinuto, $fatorCalculo), 2);
} else if ($duracaoSegundos < ($MINUTO)) { } else if ($duracaoSegundos < $MINUTO) {
/* /*
* Aqui sera tarifado chamada que estiver entre 31 e 59 segundos * Aqui sera tarifado chamada que estiver entre 31 e 59 segundos
* quando cadencia 30+6 * quando cadencia 30+6
*/ */
$duracaoCadencia = $duracaoSegundos - ($MINUTO / $fatorCalculo); $duracaoCadencia = $duracaoSegundos - Divide($MINUTO, $fatorCalculo);
$precoCadencia = $precoMinuto / $fatorCalculo; $precoCadencia = Divide($precoMinuto, $fatorCalculo);
$resto = ($duracaoCadencia % $cadencia); $resto = Divide($duracaoCadencia, $cadencia, $operatorModule);
$numCadencia = (int) ($duracaoCadencia / $cadencia) + ($resto ? 1 : 0); $numCadencia = (int) Divide($duracaoCadencia, $cadencia) + ($resto ? 1 : 0);
$valorCadencia = $precoMinuto / $fatorCadencia; $valorCadencia = Divide($precoMinuto, $fatorCadencia);
return round(($precoCadencia + ($numCadencia * $valorCadencia)), 2); return round(($precoCadencia + ($numCadencia * $valorCadencia)), 2);
} else { } else {
/* /*
* Chamada acima de um minuto. * Chamada acima de um minuto.
*/ */
$minutos = (int) ($duracaoSegundos / $MINUTO); $minutos = (int) Divide($duracaoSegundos, $MINUTO);
$segundosCandencia = ($duracaoSegundos % $MINUTO); $segundosCandencia = Divide($duracaoSegundos, $MINUTO, $operatorModule);
$numCadencia = (int) ($segundosCandencia / $cadencia) + (($segundosCandencia % $cadencia) ? 1 : 0); $numCadencia = (int) Divide($segundosCandencia, $cadencia) + (Divide($segundosCandencia, $cadencia, $operatorModule) ? 1 : 0);
$valorCadencia = $precoMinuto / $fatorCadencia; $valorCadencia = Divide($precoMinuto, $fatorCadencia);
return round((($precoMinuto * $minutos) + ($valorCadencia * $numCadencia)), 2); return round((($precoMinuto * $minutos) + ($valorCadencia * $numCadencia)), 2);
} }
} }
/**
* Esta função é utilizada para verificar se o dividendo ou o divisor é igual a ZERO antes de realizar a divisão.
*/
function Divide($dividend, $divider, $operator = false){
if ($dividend && $divider){
return ($operator ? $dividend % $divider : $dividend / $divider);
}
return 0;
}
function SaveVarToFile($var, $fileName) { function SaveVarToFile($var, $fileName) {
return file_put_contents($fileName, serialize($var)); return file_put_contents($fileName, serialize($var));
} }

6
relatorios/tarifador/tarifaRamal.php

@ -1,5 +1,4 @@
<?php <?php
include_once 'util/relatoriosBase.php'; include_once 'util/relatoriosBase.php';
class RelTarifaRamal extends Relatorios { class RelTarifaRamal extends Relatorios {
@ -106,8 +105,6 @@
} }
protected function ___GetDadosDb() { protected function ___GetDadosDb() {
$dataIni = FormatDtMssql($this->___dataIni); $dataIni = FormatDtMssql($this->___dataIni);
$dataFim = FormatDtMssql($this->___dataFim); $dataFim = FormatDtMssql($this->___dataFim);
@ -236,6 +233,7 @@
/* /*
* FORMATA OS DADOS PARA SER APRESENTADOS * FORMATA OS DADOS PARA SER APRESENTADOS
*/ */
$row['trr_destino'] = ocultarTelefone($row['trr_destino']);
$row['trr_data'] = date('d/m/Y', strtotime($row['trr_data'])); $row['trr_data'] = date('d/m/Y', strtotime($row['trr_data']));
$row['trr_conta'] = $row['trr_conta'] ? $row['trr_conta'] : ' - '; $row['trr_conta'] = $row['trr_conta'] ? $row['trr_conta'] : ' - ';
$row['trr_duracao'] = $row['trr_duracao'] ? SecondToStrTime($row['trr_duracao']) : '00:00:00'; $row['trr_duracao'] = $row['trr_duracao'] ? SecondToStrTime($row['trr_duracao']) : '00:00:00';
@ -372,6 +370,7 @@
/* /*
* FORMATA OS DADOS PARA SER APRESENTADOS * FORMATA OS DADOS PARA SER APRESENTADOS
*/ */
$row['trr_destino'] = ocultarTelefone($row['trr_destino']);
$row['trr_data'] = date('d/m/Y', strtotime($row['trr_data'])); $row['trr_data'] = date('d/m/Y', strtotime($row['trr_data']));
$row['trr_conta'] = $row['trr_conta'] ? $row['trr_conta'] : ' - '; $row['trr_conta'] = $row['trr_conta'] ? $row['trr_conta'] : ' - ';
$row['trr_duracao'] = $row['trr_duracao'] ? SecondToStrTime($row['trr_duracao']) : '00:00:00'; $row['trr_duracao'] = $row['trr_duracao'] ? SecondToStrTime($row['trr_duracao']) : '00:00:00';
@ -636,6 +635,7 @@
/* /*
* FORMATA OS DADOS PARA SER APRESENTADOS * FORMATA OS DADOS PARA SER APRESENTADOS
*/ */
$dados[$somaReg]['trr_destino'] = ocultarTelefone($row['trr_destino']);
$dados[$somaReg]['trr_data'] = date('d/m/Y', strtotime($row['trr_data'])); $dados[$somaReg]['trr_data'] = date('d/m/Y', strtotime($row['trr_data']));
$dados[$somaReg]['trr_conta'] = $row['trr_conta'] ? $row['trr_conta'] : ' - '; $dados[$somaReg]['trr_conta'] = $row['trr_conta'] ? $row['trr_conta'] : ' - ';
$dados[$somaReg]['trr_duracao'] = $row['trr_duracao'] ? SecondToStrTime($row['trr_duracao']) : '00:00:00'; $dados[$somaReg]['trr_duracao'] = $row['trr_duracao'] ? SecondToStrTime($row['trr_duracao']) : '00:00:00';

Loading…
Cancel
Save