forked from SimplesIP/pabx-app
AMARILDO PEREIRA
2 years ago
27 changed files with 402 additions and 1150 deletions
@ -1,370 +1,126 @@
|
||||
<?php |
||||
|
||||
$tpLayout = 1; |
||||
|
||||
include_once 'util/relatoriosBase.php'; |
||||
|
||||
class AgenteAnota extends Relatorios { |
||||
|
||||
private $___consultar; |
||||
private $___validar; |
||||
private $___agenteAnota; |
||||
private $___agenteFone; |
||||
private $___listaAgente; |
||||
private $___matricula; |
||||
|
||||
public function __construct($idProg, $dbcon, $incDac) { |
||||
parent::__construct($idProg, $dbcon, $incDac); |
||||
$this->___consultar = isset($_POST["btPesquisa"]); |
||||
$this->___validar = isset($_POST["btAnota"]) && (trim($_POST["AnotaTexto"]) != ""); |
||||
$this->___agenteAnota = isset($_POST["AnotaTexto"]) ? $_POST["AnotaTexto"] : ""; |
||||
$this->___agenteFone = isset($_POST["AnotaFone"]) ? soNumero($_POST["AnotaFone"]) : (isset($_SESSION[RAMAL_DESTINO]) ? soNumero($_SESSION[RAMAL_DESTINO]) : ''); |
||||
$this->___listaAgente = isset($_POST["listaAgente"]) ? $_POST["listaAgente"] : GetMatricula(); |
||||
$this->___dataIni = IsPostBack() ? $_POST['dataIni'] : date('d/m/Y'); |
||||
$this->___dataFim = IsPostBack() ? $_POST['dataFim'] : date('d/m/Y'); |
||||
$this->___matricula = GetMatricula(); |
||||
} |
||||
|
||||
function ___ValidaForm() { |
||||
|
||||
if (!is_date($this->___dataIni) && empty($this->___agenteFone)) { |
||||
GeraExcept('A "Data Inicial" informada é inválida!'); |
||||
} |
||||
|
||||
if (!is_date($this->___dataFim) && empty($this->___agenteFone)) { |
||||
GeraExcept('A "Data Final" informada é inválida!'); |
||||
} |
||||
|
||||
if (!$this->___consultar && $this->___validar && empty($this->___agenteFone)) { |
||||
$msg = GetAnotacoesKey() ? "Informe o número do telefone!" : "Informe o número do protocolo!"; |
||||
GeraExcept($msg); |
||||
} |
||||
|
||||
if($this->___validar && !$this->___consultar){ |
||||
$this->___InserirAnotacao(); |
||||
} |
||||
} |
||||
|
||||
function ___FiltrosRelatorio() { |
||||
if ($this->___media != MEDIA_PRINT_GRID) { |
||||
/* |
||||
* Recupera os filtros da sess�o do usu�rio. |
||||
*/ |
||||
list($this->___dataIni, $this->___dataFim, $this->___agenteFone) = $_SESSION["SSstorageFiltros"]; |
||||
|
||||
if ($this->___media == MEDIA_PRINT_HTML) { |
||||
return sprintf("Data Inicial: %s Data Final: %s ", $this->___dataIni, $this->___dataFim); |
||||
} |
||||
|
||||
$fltCsv = array(); |
||||
$fltCsv[] = "Data Inicial: " . $this->___dataIni; |
||||
$fltCsv[] = "Data Final: " . $this->___dataFim; |
||||
$fltCsv[] = "Data Hora 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"><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', '%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, substr(LimpaString(GetDispProgSel($this->GetIdProg())), 0, 20), 'print.gif'); |
||||
$lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_EXCEL, 'prt-xls.png'); |
||||
//$lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_PDF, 'prt-pdf.png'); |
||||
//$lkPrint .= sprintf($prt, $this->GetidProg(), MEDIA_PRINT_CSV, 'prt-csv.png'); |
||||
} |
||||
|
||||
$filtro .= '<table border="0" align="center" cellpadding="8" cellspacing="0" style="border-top:0;font-size:12px;" > |
||||
<tr> |
||||
<td align="center"> |
||||
<span style="font-face:Arial, Helvetica, sans-serif; font-size:16px; font-weight:bold;"> |
||||
<img src="imgSite/anotacoes.png" alt="Bloco de Anotações" align="absmiddle" width="32" height="32" border="0" title="Bloco de Anotações"> |
||||
Bloco de Anotações |
||||
</span> |
||||
</td> |
||||
</tr> |
||||
</table>'; |
||||
/* |
||||
* Personalise esta função se necessitar de outras opções de filtro. |
||||
*/ |
||||
$filtro .= '<table class="filtro" align="center" border="0" cellspacing="1" cellpadding="1">'; |
||||
/* |
||||
* Rotulos. |
||||
*/ |
||||
$filtro .= '<tr>'; |
||||
$filtro .= IsSuper() ? '<td>Agentes</td>' : ''; |
||||
$filtro .= '<td>Agentes</td>'; |
||||
$filtro .= '<td>Data Inicial </td>'; |
||||
$filtro .= '<td>Data Final </td>'; |
||||
$filtro .= sprintf('<td>%s</td>', GetAnotacoesKey() ? 'Fone' : $_SESSION['prm_label_protoco_pesquisa']); |
||||
|
||||
/* |
||||
* Valores. |
||||
*/ |
||||
$filtro .= '<tr>'; |
||||
$filtro .= IsSuper() ? sprintf("<td><select name='listaAgente'>%s</select></td>", $this->GetAgentesAnotacoes($this->___listaAgente)) : ''; |
||||
$filtro .= sprintf("<td><select name='listaAgente'>%s</select></td>", $this->GetAgentesAnotacoes($this->___listaAgente)); |
||||
$filtro .= '<td><input name="dataIni" id="dataIni" type="text" size="15" maxlength="16" value="%s" onkeyup="formataDataHora(this)" title="dd/mm/aaaa"></td>'; |
||||
$filtro .= '<td><input name="dataFim" id="dataFim" type="text" size="15" maxlength="16" value="%s" onkeyup="formataDataHora(this)" title="dd/mm/aaaa"></td>'; |
||||
$filtro .= '<td><div> '; |
||||
$filtro .= sprintf('<input name="AnotaFone" size="20" type="text" id="AnotaFone" value="%s">' |
||||
. '<input name="btPesquisa" type="submit" id="btPesquisa" value="Pesquisar">' |
||||
. '<input name="btAnota" type="submit" id="btAnota" value="Salvar">', $this->___agenteFone); |
||||
$filtro .= '</div></td>'; |
||||
$filtro .= '<td>%s</td>'; |
||||
$filtro .= '</tr>'; |
||||
$filtro .= '</table>'; |
||||
|
||||
$filtro .= "<br>"; |
||||
|
||||
$filtro .= '<table class="grid" align="center" border="0" cellspacing="1" cellpadding="1">'; |
||||
$filtro .= "<tr><td class='destaque'>{$_SESSION['prm_label_protoco_texto']}</td></tr>"; |
||||
$filtro .= "<tr>"; |
||||
$filtro .= "<td><textarea name='AnotaTexto' cols='114' rows='8' id='AnotaTexto'></textarea></td>"; |
||||
$filtro .= "</tr>"; |
||||
$filtro .= "</table>"; |
||||
|
||||
|
||||
/* |
||||
* Guarda os filtros passados para recuperar na emiss�o dos relat?ios para impress�o. |
||||
*/ |
||||
$_SESSION["SSstorageFiltros"] = array($this->___dataIni, $this->___dataFim, $this->___agenteFone); |
||||
|
||||
return sprintf($filtro, $this->___dataIni, $this->___dataFim, $lkPrint); |
||||
} |
||||
|
||||
protected function ___GetDadosDb() { |
||||
$dataIni = FormatDtMssql($this->___dataIni); |
||||
$dataFim = FormatDtMssql($this->___dataFim); |
||||
|
||||
$query = sprintf("SELECT a.id_text, a.conteudo, a.matricula_agente, a.fone_cliente, a.data, b.apelido |
||||
FROM pbx_anotacoes a |
||||
INNER JOIN pbx_usuarios b ON b.matricula = a.matricula_agente::text |
||||
WHERE data::DATE >= '$dataIni' AND data::DATE <= '$dataFim'"); |
||||
|
||||
if(empty($this->___agenteFone)){ |
||||
$query .= $this->___listaAgente ? " AND a.matricula_agente::text = '$this->___listaAgente' " : ""; |
||||
} |
||||
|
||||
$query .= " AND fone_cliente LIKE '%$this->___agenteFone%'"; |
||||
$query .= " ORDER BY b.apelido, a.data DESC"; |
||||
|
||||
$result = $this->___GetQuery($query); |
||||
$row = pg_fetch_all($result); |
||||
|
||||
$this->SetData($row ? $row : array()); |
||||
} |
||||
|
||||
protected function ___PreparaCsv() { |
||||
|
||||
} |
||||
|
||||
protected function ___PreparaExcel() { |
||||
$dataRel = array(); |
||||
$dataAgrup = 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; |
||||
|
||||
$linha = array('DADOS'); |
||||
foreach ($filtro as $values) { |
||||
list($label, $value) = explode(":", $values); |
||||
$linha[] = $value; |
||||
} |
||||
|
||||
$dataRel[] = $linha; |
||||
|
||||
$dadosCabecalio = array('ID','Data', RemoveAcentos($_SESSION['prm_label_protoco_pesquisa']), 'Mensagem','Autor'); |
||||
$dadosField = array('id_text', 'data', 'fone_cliente', 'conteudo', 'apelido'); |
||||
|
||||
/* |
||||
* Monta a linha de cabecalio. |
||||
*/ |
||||
$linha = array('LABEL'); |
||||
foreach ($dadosCabecalio as $value) { |
||||
$linha[] = $value; |
||||
} |
||||
$dataRel[] = $linha; |
||||
|
||||
$somaTempo = 0; |
||||
$somaQuantidade = 0; |
||||
/* |
||||
* Linhas de dados. |
||||
*/ |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$row["data"] = date('d/m/Y', strtotime($row["data"])); |
||||
$row["conteudo"] = RemoveAcentos($row['conteudo']); |
||||
// Formata linha de dados. |
||||
$linha = array('DADOS'); |
||||
foreach ($dadosField as $key) { |
||||
$linha[] = $row["$key"]; |
||||
} |
||||
|
||||
$dataRel[] = $linha; |
||||
} |
||||
|
||||
$dataRel[] = $linha; |
||||
|
||||
$this->___dataRel[] = $dataRel; |
||||
} |
||||
|
||||
protected function ___PreparaGrid() { |
||||
$dadosCabecalio = array( |
||||
'ID' => 'align="center"', |
||||
'Data' => 'align="center"', |
||||
$_SESSION['prm_label_protoco_pesquisa'] => 'align="center"', |
||||
'Mensagem' => 'align="left"', |
||||
'Autor' => 'align="center"', |
||||
); |
||||
$dadosField = array( |
||||
'id_text' => 'align="center"', |
||||
'data' => 'align="center"', |
||||
'fone_cliente' => 'align="center"', |
||||
'conteudo' => 'align="left"', |
||||
'apelido' => 'align="center"', |
||||
); |
||||
/* |
||||
* Inicia o relat�rio. |
||||
*/ |
||||
$dataRel[] = '<table width="99%" cellpadding="2" class="grid">'; |
||||
|
||||
/* |
||||
* Monta a linha de cabecalio. |
||||
*/ |
||||
$linha = '<tr>'; |
||||
foreach ($dadosCabecalio as $key => $value) { |
||||
$linha .= sprintf("<th %s>%s</th>", $value, $key); |
||||
} |
||||
$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($dadosCabecalio), (!IsPostBack() ? 'Informe os parametros e clique em consultar!' : 'Nenhum registro encontado!')); |
||||
$this->___dataRel[] = $dataRel; |
||||
return; |
||||
} |
||||
|
||||
$somaQuantidade = 0; |
||||
/* |
||||
* Linhas de dados. |
||||
*/ |
||||
foreach ($this->GetData()[0] as $row) { |
||||
$row["data"] = date('d/m/Y', strtotime($row["data"])); |
||||
|
||||
// Formata linha de dados. |
||||
$linha = "<tr>"; |
||||
foreach ($dadosField as $key => $value) { |
||||
$linha .= sprintf("<td %s>%s</td>", $value, $row["$key"]); |
||||
} |
||||
$linha .= "</tr>"; |
||||
$dataRel[] = $linha; |
||||
} |
||||
/* |
||||
* Linha de totalizacao. |
||||
*/ |
||||
//$linha = '<tr><th colspan="2" align="left">Total</th><th align="left" colspan="2">Registros: %s</th><th align="left" colspan="6">Duração: %s</th></tr>'; |
||||
//$dataRel[] = sprintf($linha, $somaQuantidade, SecondToStrTime($somaTempo)); |
||||
|
||||
/* |
||||
* Fecha relatorio. |
||||
*/ |
||||
$dataRel[] = '</table>'; |
||||
$this->___dataRel[] = $dataRel; |
||||
} |
||||
|
||||
protected function ___PreparaHtml() { |
||||
|
||||
} |
||||
|
||||
protected function ___PreparaPdf() { |
||||
|
||||
} |
||||
|
||||
private function ___InserirAnotacao(){ |
||||
if ($this->___validar && empty($this->___agenteAnota)) { |
||||
GeraExcept("Insira uma anotação!"); |
||||
} |
||||
|
||||
$query = "SELECT * FROM pbx_anotacoes WHERE conteudo = '{$this->___agenteAnota}' AND fone_cliente = '{$this->___agenteFone}';"; |
||||
$res = $this->___GetQuery($query); |
||||
if(pg_fetch_assoc($res)){ |
||||
GeraExcept('Essas informações já foram registradas!'); |
||||
} |
||||
|
||||
$query = "INSERT INTO pbx_anotacoes (conteudo,matricula_agente,fone_cliente) VALUES('$this->___agenteAnota', '$this->___matricula', '$this->___agenteFone');"; |
||||
$result = $this->___GetQuery($query); |
||||
if(!$result){ |
||||
GeraExcept('Não foi possível inserir o registro'); |
||||
} |
||||
} |
||||
|
||||
private function GetAgentesAnotacoes($matricula) { |
||||
$query = "SELECT id, apelido, nome, matricula FROM pbx_usuarios WHERE delete_ = 0 AND apelido NOT IN('sinccontasenha') ORDER BY apelido"; //'admin', |
||||
$result = $this->___GetQuery($query); |
||||
$sel = $matricula == "0" ? ' Selected="selected" ' : ''; |
||||
$item = "<option value=\"0\"$sel>Todos</option>\n"; |
||||
|
||||
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { |
||||
$mat = $dados['matricula']; |
||||
$apelido = $dados['apelido']; |
||||
$sel = $mat == $matricula ? ' Selected="selected" ' : ''; |
||||
$item .= "<option value=\"$mat\"$sel>$apelido-[$mat]</option>\n"; |
||||
} |
||||
return $item; |
||||
} |
||||
|
||||
public function ExecutaRelatorio() { |
||||
global $jsStartup, $jsJQuery, $smarty; |
||||
try { |
||||
/* |
||||
* Use esta fun��o para validar dados do formul�rio. |
||||
*/ |
||||
$this->___ValidaForm(); |
||||
|
||||
/* |
||||
* Recupera os dados do banco. |
||||
*/ |
||||
$this->___ConteudoRelatorio(); |
||||
|
||||
/* |
||||
* Imprime relat�rio de acordo com a media passada. |
||||
*/ |
||||
$conteudoRelatorio = $this->___ImprimeRelatorio(); |
||||
} catch (Exception $exc) { |
||||
$this->SetMsg($exc->getMessage()); |
||||
$jsStartup[] = sprintf("alert('%s');", $this->GetMsg()); |
||||
$this->___GravaLog(); |
||||
} |
||||
|
||||
/* |
||||
* Inclua os scripts necessários aqui. |
||||
*/ |
||||
$jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) "; |
||||
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) "; |
||||
|
||||
$smarty->assign('filtros', $this->___FiltrosRelatorio()); |
||||
$smarty->assign('conteudo', $conteudoRelatorio); |
||||
$smarty->assign('msg', $this->GetMsg()); |
||||
GetTemplate($smarty, 'relatoriosGrid.tpl'); |
||||
/* |
||||
* To change this template, choose Tools | Templates |
||||
* and open the template in the editor. |
||||
*/ |
||||
$tpLayout = 1; |
||||
$matricula = GetMatricula(); |
||||
$consultar = isset($_POST["btPesquisa"]); |
||||
$valida = isset($_POST["btAnota"]) && (trim($_POST["AnotaTexto"]) != ""); |
||||
$agtAnota = isset($_POST["AnotaTexto"]) ? $_POST["AnotaTexto"] : ""; |
||||
$agtFone = isset($_POST["AnotaFone"]) ? soNumero($_POST["AnotaFone"]) : (isset($_SESSION[RAMAL_DESTINO]) ? soNumero($_SESSION[RAMAL_DESTINO]) : ''); |
||||
$btAnota = isset($_POST["btAnota"]) ? $_POST["btAnota"] : ""; |
||||
$listaAgente = isset($_POST["listaAgente"]) ? $_POST["listaAgente"] : GetMatricula(); |
||||
$dataIni = !isset($_POST["dataIni"]) ? date('d/m/Y') : $_POST["dataIni"]; |
||||
$dataFim = !isset($_POST["dataFim"]) ? date('d/m/Y') : $_POST["dataFim"]; |
||||
|
||||
$msg = ""; |
||||
$pesquisa = ""; |
||||
|
||||
if (isset($_GET["formAction"])) { |
||||
$idDel = $_GET["id"]; |
||||
$query = "delete from pbx_anotacoes where id_text = '$idDel'"; |
||||
@pg_query($dbcon, $query); |
||||
} |
||||
|
||||
if (!is_date($dataIni)) { |
||||
$jsStartup[] = "alert('Data inicial inválida!');"; |
||||
$msg = "Data inicial inválida!"; |
||||
$isValid = 0; |
||||
} else if (!is_date($dataFim)) { |
||||
$jsStartup[] = "alert('Data final inválida!');"; |
||||
$msg = "Data final inválida!"; |
||||
$isValid = 0; |
||||
} else if (!$consultar && $valida && empty($agtFone)) { |
||||
$msg = GetAnotacoesKey() ? "Informe o número do telefone!" : "Informe o número do protocolo!"; |
||||
} else if ($valida && empty($agtAnota)) { |
||||
$msg = "Insira uma anotação!"; |
||||
} else if (!$consultar && $valida) { |
||||
$query = "insert into pbx_anotacoes(conteudo, matricula_agente, fone_cliente) |
||||
values('$agtAnota', '$matricula', '$agtFone')"; |
||||
$result = pg_query($dbcon, $query); |
||||
if ($result) { |
||||
$agtAnota = ""; |
||||
$msg = "Operação realizada com sucesso!"; |
||||
} |
||||
} |
||||
|
||||
|
||||
$pesquisa = PesquisaFone($dbcon, $agtFone); |
||||
if (empty($pesquisa)) |
||||
$pesquisa = "<tr><td colspan=4>Nenhum registro encontrado!</td></tr>"; |
||||
|
||||
|
||||
$cor = !$msg || stripos($msg, 'sucesso') ? '#0000FF' : '#FF0000'; |
||||
$smarty->assign("AnotaFone", $agtFone); |
||||
$smarty->assign("AnotaTexto", $agtAnota); |
||||
$smarty->assign("corErro", $cor); |
||||
$smarty->assign("msg", $msg); |
||||
$smarty->assign("linhas", $pesquisa); |
||||
$smarty->assign("isFone", GetAnotacoesKey()); |
||||
$smarty->assign("isSuper", IsSuper()); |
||||
$smarty->assign("dataIni", $dataIni); |
||||
$smarty->assign("dataFim", $dataFim); |
||||
$smarty->assign("prm_label_protoco_pesquisa", $_SESSION['prm_label_protoco_pesquisa']); |
||||
$smarty->assign("prm_label_protoco_texto", $_SESSION['prm_label_protoco_texto']); |
||||
$smarty->assign("prm_label_protoco_grid", $_SESSION['prm_label_protoco_grid']); |
||||
if (IsSuper()) { |
||||
$agentes = GetAgentesAnotacoes($listaAgente); |
||||
$smarty->assign("listaAgente", $agentes); |
||||
} |
||||
DispLogin($smarty); |
||||
|
||||
function PesquisaFone($db, $num) { |
||||
global $listaAgente, $dataIni, $dataFim; |
||||
$mat = IsSuper() ? $listaAgente : GetMatricula(); |
||||
$query = "select a.id_text, a.conteudo, a.matricula_agente, a.fone_cliente, a.data, b.apelido from pbx_anotacoes a, pbx_usuarios b where b.matricula = a.matricula_agente::text "; |
||||
$query .= $mat ? " and a.matricula_agente::text = '$mat' " : ""; |
||||
$query .= sprintf(" and data::date >= %s and data::date <= %s ", FormatDtMssql($dataIni, true), FormatDtMssql($dataFim, true)); |
||||
$query .= " and fone_cliente like '%" . $num . "%'"; |
||||
$query .= " order by b.apelido, a.data desc"; |
||||
|
||||
$result = @pg_query($db, $query); |
||||
//if(IsAdmin()) echo $query; |
||||
while (($result) && ($row = pg_fetch_array($result))) { |
||||
$fone = GetAnotacoesKey() ? FormataFone($row["fone_cliente"]) : $row["fone_cliente"]; |
||||
$content = $row["conteudo"]; |
||||
$matAgt = $row["matricula_agente"] . '-' . $row["apelido"]; |
||||
$data = date('d/m/Y', strtotime($row["data"])); |
||||
$imgDel = GetLinkFormDelete($row["id_text"], 'DeletaAnotacao'); |
||||
$linha .= "<tr> |
||||
<td align=left>$data</td>"; |
||||
if (IsSuper()) { |
||||
$linha .= " <td align=left>$matAgt</td>"; |
||||
} |
||||
|
||||
$linha .= " <td align=left>$fone</td> |
||||
<td align=left>$content</td> |
||||
<td align=center>$imgDel</td> |
||||
</tr>"; |
||||
} |
||||
$colspan = IsSuper() ? 4 : 3; |
||||
if (empty($linha)) |
||||
$linha = "<tr><td colspan=\"$colspan\">Nenhum registro encontrado!</td></tr>"; |
||||
|
||||
return $linha; |
||||
} |
||||
|
||||
function DispLogin($smarty) { |
||||
$smarty->display('callcenter/agente/agenteAnota.tpl'); |
||||
} |
||||
|
||||
function GetAgentesAnotacoes($matricula) { |
||||
$query = "select id, apelido, nome, matricula from pbx_usuarios where delete_ = 0 and apelido not in('sinccontasenha' )"; //'admin', |
||||
$result = pg_query($query); |
||||
$sel = $matricula == "0" ? ' Selected="selected" ' : ''; |
||||
$item = "<option value=\"0\"$sel>Todos</option>\n"; |
||||
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { |
||||
$mat = $dados['matricula']; |
||||
$apelido = $dados['apelido']; |
||||
$sel = $mat == $matricula ? ' Selected="selected" ' : ''; |
||||
$item .= "<option value=\"$mat\"$sel>$apelido-[$mat]</option>\n"; |
||||
} |
||||
return $item; |
||||
} |
||||
|
||||
$agenteAnota = new AgenteAnota($idProg, $dbcon, 0); |
||||
$agenteAnota->ExecutaRelatorio(); |
||||
?> |
||||
|
@ -1,233 +0,0 @@
|
||||
TERMOS DE USO E PRIVACIDADE APLICAÇÃO SIMPLES IP |
||||
|
||||
Última Atualização: 12 de julho de 2021 |
||||
|
||||
Esta aplicação e seu conteúdo ("SIMPLES IP") são controlados e operados pelo próprio |
||||
SIMPLES IP. Todos os direitos reservados. |
||||
|
||||
De acordo com a disposição do artigo 41 da Lei Geral de Proteção de Dados, o SIMPLES |
||||
IP indica Gardemann & Vidotti Advogados Associados, como encarregado pelo |
||||
tratamento de dados, sendo possível o contato através o seguinte e-mail: |
||||
encarregado.simplesip@gev.adv.br e WhatsApp (43) 3373-9394. |
||||
|
||||
Este Termo de Uso e Privacidade, pelas cláusulas adiante descritas, regulamentam o uso |
||||
da aplicação SIMPLES IP, e de seus conteúdos, adiante denominados como |
||||
CONTEÚDOS, sem prejuízo da aplicação da legislação vigente. |
||||
|
||||
AO UTILIZAR O SIMPLES IP, VOCÊ AUTOMATICAMENTE CONCORDA COM ESTES |
||||
TERMOS DE USO E PRIVACIDADE, RESPONSABILIZANDO-SE INTEGRALMENTE POR |
||||
TODOS E QUAISQUER ATOS PRATICADOS POR VOCÊ NO SIMPLES IP OU EM SERVIÇOS A |
||||
ELE RELACIONADOS. CASO VOCÊ NÃO CONCORDE COM QUALQUER DOS TERMOS E |
||||
CONDIÇÕES ABAIXO ESTABELECIDOS, VOCÊ NÃO DEVE UTILIZAR O SIMPLES IP. |
||||
|
||||
Integram os presentes TERMOS DE USO todos os avisos, regulamentos de uso e |
||||
instruções levados ao conhecimento do USUÁRIO pelo SIMPLES IP. |
||||
|
||||
GLOSSÁRIO |
||||
|
||||
Para fins destes Termos de Uso, devem-se considerar as seguintes definições e |
||||
descrições para melhor entendimento: |
||||
Conta de Acesso: Credencial de um usuário cadastrado que permite o acesso à área |
||||
restrita e às funcionalidades exclusivas, que é definida por nome de usuário (login) e |
||||
senha. |
||||
Dados Cadastrais: Conjunto de informações pessoais de um usuário, quando aplicável, |
||||
de modo que o identifique, diferenciando-o dos demais, a exemplo do número do |
||||
documento de identidade (RG), cadastro de pessoa física (CPF) ou jurídica (CNPJ), |
||||
endereço residencial ou comercial, sede, nome completo, "apelido" (login), entre |
||||
outros. |
||||
Layout: Conjunto compreendido entre aparência, design e fluxos da aplicação. |
||||
Login: Nome de Usuário escolhido pelo usuário quando preenche o cadastro para |
||||
acesso a funcionalidades exclusivas da aplicação. |
||||
Logon: Ato de o usuário cadastrado ingressar na área restrita da aplicação |
||||
utilizando login e senha. |
||||
Logs: Registros de atividades do usuário efetuadas na aplicação. |
||||
Senha: Conjunto de caracteres que serve como prova de identidade digital do usuário, |
||||
cujo conhecimento deve ser exclusivo e único. |
||||
Usuário: Indivíduo/pessoa jurídica que acessa a área restrita da aplicação mediante |
||||
login e senha. |
||||
|
||||
1. O QUE É SIMPLES IP? |
||||
|
||||
1.1. Serviços. O SIMPLES IP é uma aplicação que oferece os seguintes serviços: |
||||
gestão e provimento de comunicação por voz feita através da plataforma. |
||||
1.2. Suspensão. Nós nos reservamos o direito de suspender ou cancelar, a qualquer |
||||
momento, o seu acesso à aplicação em caso de suspeita de fraude, obtenção de |
||||
benefício ou vantagem de forma ilícita, ou pelo não cumprimento de quaisquer |
||||
condições previstas nestes Termo de Uso e Privacidade, ou legislação aplicável. Nesses |
||||
casos, não será devida qualquer indenização a você e o SIMPLES IP poderá promover a |
||||
competente ação de regresso, se necessário, bem como tomar quaisquer outras |
||||
medidas necessárias para perseguir e resguardar seus interesses. |
||||
|
||||
2. COMO ACESSO O SIMPLES IP? |
||||
|
||||
2.1. Acesso. Para acessar a plataforma SIMPLES IP e utilizar funcionalidades |
||||
exclusivas, o usuário deverá obter uma conta de acesso, por meio de procedimento de |
||||
cadastro, mais detalhado em seção própria. |
||||
Vale lembrar que não é permitido aos usuários acessar as áreas de programação da |
||||
plataforma, seu banco de dados ou qualquer conjunto de informações que faça parte |
||||
da atividade de webmastering, ficando sujeito quem o fizer à legislação penal brasileira |
||||
e obrigado a reparar os danos que causar. |
||||
Também não é autorizado realizar ou permitir engenharia reversa, nem traduzir, |
||||
decompilar, copiar, modificar, reproduzir, alugar, sublicenciar, publicar, divulgar, |
||||
transmitir, emprestar, distribuir ou, de outra maneira, dispor das ferramentas de |
||||
consulta desta plataforma e de suas funcionalidades. |
||||
Destaca-se que nessa plataforma é proibida a utilização de aplicativo spider, ou de |
||||
mineração de dados, de qualquer tipo ou espécie, além de outro aqui não tipificado, |
||||
mas que atue como um robô, tanto para realizar operações massificadas ou para |
||||
quaisquer outras finalidades, sob aplicação da legislação penal brasileira e de reparar os |
||||
danos que decorrerem desta utilização. |
||||
Ressalta-se, também, que é ônus dos visitantes e usuários arcar com os meios |
||||
necessários para utilizar esta plataforma. |
||||
2.2. Titularidade. A partir do cadastro, você será titular de uma conta que somente |
||||
poderá ser acessada por você. |
||||
|
||||
3. A RELAÇÃO CONTRATUAL ENTRE O SIMPLES IP E O USUÁRIO |
||||
|
||||
3.1. Relação Contratual. Os serviços e o conteúdo oferecidos pela plataforma são de |
||||
propriedade do SIMPLES IP. Ao estabelecer o contrato que permite ao usuário o gozo |
||||
das funcionalidades do sistema, o SIMPLES IP está oferecendo licença de uso de |
||||
plataforma de gestão e provimento de comunicação por voz, cuja a propriedade e |
||||
direitos de propriedade intelectual continuam sendo da SIMPLES IP. |
||||
|
||||
4. DIREITOS AUTORAIS E PROPRIEDADE INTELECTUAL DO SIMPLES IP |
||||
|
||||
4.1. Nossos Direitos. O uso comercial das expressões do SIMPLES IP, como marca, |
||||
nome empresarial ou nome de domínio, além dos conteúdos das telas da plataforma, |
||||
bancos de dados, redes, arquivos que permitem que o usuário acesse sua conta são de |
||||
propriedade do SIMPLES IP e estão protegidos pelas leis e tratados internacionais de |
||||
direito autoral, marcas e patentes, modelos e desenhos industriais. |
||||
4.2. Não concessão de Licença. O SIMPLES IP não concede nenhuma licença ou |
||||
autorização de uso de nenhum tipo sobre seus direitos de propriedade industrial e |
||||
intelectual, segredos empresariais ou sobre qualquer outra propriedade ou direito |
||||
relacionado com a plataforma e seus conteúdos. |
||||
4.3. Proibição de Reprodução. A reprodução dos conteúdos descritos anteriormente |
||||
está proibida, salvo com prévia autorização por escrito do SIMPLES IP ou se destinarem |
||||
a uso exclusivamente pessoal e sem que em nenhuma circunstância os visitantes e |
||||
usuários adquiram qualquer direito sobre os mesmos. |
||||
|
||||
5. UTILIZAÇÃO DA APLICAÇÃO E DE SEUS CONTEÚDOS SOB A EXCLUSIVA |
||||
RESPONSABILIDADE DO USUÁRIO |
||||
|
||||
5.1. Responsabilidade pelo Uso. O USUÁRIO reconhece e aceita voluntariamente que |
||||
o uso do SIMPLES IP e do CONTEÚDO seja feito, em qualquer caso, sob sua única e |
||||
exclusiva responsabilidade. |
||||
5.2. Responsabilização por Eventuais Danos. O SIMPLES IP não será, em hipótese |
||||
alguma, responsabilizado por danos diretos ou indiretos que resultem de, ou tenham |
||||
relação com o acesso, uso ou a incapacidade de acessar ou utilizar o SIMPLES IP. |
||||
|
||||
6. UTILIZAÇÃO DA APLICAÇÃO E DOS SEUS CONTEÚDOS |
||||
|
||||
6.1. Compromisso de Correta Utilização. Você se compromete a utilizar a plataforma |
||||
do SIMPLES IP e os seus conteúdos em conformidade com a lei, com o disposto neste |
||||
Termo de Uso e Privacidade, com a moral, os bons costumes e com a ordem pública, |
||||
assim como se obriga a não utilizar o SIMPLES IP e seus CONTEÚDOS de forma nociva |
||||
aos direitos e interesses de terceiros, ou de qualquer forma que possa vir a causar |
||||
dano, sobrecarregar, inutilizar ou impedir a normal utilização do SIMPLES IP e dos seus |
||||
CONTEÚDOS. |
||||
Ainda, você deve abster-se de obter informações, gráficos, mensagens, arquivos de |
||||
som, gravações, programas e/ou qualquer outro tipo de material acessível através do |
||||
SIMPLES IP ou dos CONTEÚDOS, inclusive de marca, empregando meios ou |
||||
procedimentos diversos daqueles que disponibilizados ou indicados com este propósito |
||||
na aplicação SIMPLES IP. |
||||
Bem como, você obriga-se a utilizar os CONTEÚDOS de forma lícita e, além disso: |
||||
- Se abstém de eliminar ou manipular o copyright ou outros dados que identifiquem os |
||||
direitos do SIMPLES IP ou ainda direitos incorporados ao SIMPLES IP e seus CONTEÚDOS |
||||
de propriedade de terceiros, bem como os dispositivos de proteção, as marcas ou |
||||
quaisquer mecanismos de informação. |
||||
6.2. Titularidade do Conteúdo. Qualquer conteúdo de usuário fornecido por você |
||||
permanece de sua propriedade quando a aplicação SIMPLES IP foi por você contratada, |
||||
ou de propriedade da pessoa jurídica que contratou o SIMPLES IP a qual você possui |
||||
ligação que justificou seu cadastro, como por exemplo, necessidade de que você possua |
||||
um ramal desta empresa. |
||||
6.3. Níveis de acesso. A SIMPLES IP informa que existem diferentes níveis de acesso, |
||||
sendo que a depender do tipo de acesso algumas funcionalidades não são disponíveis |
||||
ao usuário. A CONTRATANTE da aplicação SIMPLES IP é única e exclusiva responsável |
||||
por determinar os níveis de acesso dos usuários a serem cadastrados na aplicação. |
||||
6.4. Acesso ao conteúdo da comunicação por voz pela SIMPLES IP. A SIMPLES IP |
||||
declara que não acessa o conteúdo das comunicações por voz realizada através de sua |
||||
aplicação através de usuários da CONTRATANTE. |
||||
6.5. Acesso ao conteúdo da comunicação por voz pela CONTRATANTE. A depender |
||||
do nível de acesso os usuários da CONTRATANTE poderão ter acesso ao conteúdo e |
||||
gravação da comunicação por voz realizada através da plataforma SIMPLES IP, podendo |
||||
ter acesso ao conteúdo relacionado ao seu ramal ou a outros usuários. A permissão de |
||||
acesso ao conteúdo de outros usuários é relacionada ao nível de acesso à aplicação |
||||
SIMPLES IP, cuja determinação é de responsabilidade exclusiva da CONTRATANTE, |
||||
cabendo a CONTRATANTE limitar ou não tal funcionalidade ao usuário ou grupo de |
||||
usuários. |
||||
|
||||
7. PRIVACIDADE E SEGURANÇA DA PLATAFORMA E DOS SEUS CONTEÚDOS |
||||
|
||||
7.1. Compromisso com a Privacidade. O SIMPLES IP tem o compromisso com a |
||||
privacidade e a segurança de seus USUÁRIOS durante todo o processo de utilização da |
||||
aplicação. Os dados cadastrais dos usuários não são vendidos, trocados ou divulgados |
||||
para terceiros, exceto quando essas informações são necessárias para cumprimento de |
||||
obrigações legais ou determinações judiciais. Seus dados pessoais são peça |
||||
fundamental para que seu cadastro seja feito. |
||||
7.2. Recomendações quanto à Senha. Para que estes dados permaneçam intactos, |
||||
nós desaconselhamos expressamente a divulgação de sua senha a terceiros, mesmo a |
||||
amigos, colegas de trabalho ou supervisores. O SIMPLES IP exime-se de |
||||
responsabilidade pelos danos, prejuízos e/ou lucros cessantes de qualquer natureza que |
||||
possam advir do conhecimento que possam ter terceiros não autorizados a respeito de |
||||
condições, características e circunstâncias de uso que os usuários fazem do SIMPLES IP |
||||
ou de seus CONTEÚDOS. |
||||
|
||||
8. OBTENÇÃO DOS DADOS E INFORMAÇÕES |
||||
|
||||
8.1. Obtenção de Dados. Os dados e informações serão obtidos quando a |
||||
CONTRATANTE: |
||||
- Fornecer seus dados e de seus usuários para cadastros com preenchimento das |
||||
informações necessárias; ou |
||||
- Os usuários interagirem com as diversas funcionalidades existentes na aplicação, |
||||
fornecendo as informações voluntariamente, como nas funcionalidades de pausa, por |
||||
exemplo; |
||||
- Cadastrar e configurar o sistema, inclusive abertura de ramais, a depender do nível de |
||||
acesso da CONTRATANTE; |
||||
|
||||
9. INFORMAÇÕES COLETADAS - FINALIDADE, ATUALIZAÇÃO OU MUDANÇA DE PERFIL |
||||
E FORMA DE UTILIZAÇÃO |
||||
|
||||
9.1. Armazenamento. As informações cadastrais do usuário serão armazenadas em |
||||
um servidor seguro e têm o intuito exclusivo de fornecer acesso à área restrita que |
||||
permite a utilização das funcionalidades. |
||||
9.2. Exclusão de Responsabilidade. Contudo, considerando que nenhum sistema de |
||||
segurança é absolutamente seguro, o SIMPLES IP se exime de quaisquer |
||||
responsabilidades por eventuais danos e/ou prejuízos decorrentes de falhas, vírus ou |
||||
invasores do banco de dados da plataforma, salvo no caso de dolo ou culpa da mesma. |
||||
9.3. Precisão das Informações. A CONTRATANTE se responsabiliza pela precisão e |
||||
veracidade dos dados informados. |
||||
9.4. Exclusão dos Dados. A CONTRATANTE poderá, a qualquer momento, excluir a |
||||
conta de determinado usuário no SIMPLES IP sem necessitar solicitar à SIMPLES IP, |
||||
ficando ressalvada a guarda pelo SIMPLES IP das informações e/ou dados cuja |
||||
manutenção seja a eles imposta em razão de obrigações legais e/ou regulatórias ou, |
||||
ainda, cuja a manutenção seja necessária para cumprimento de ordem judicial, no |
||||
âmbito de processos judiciais e/ou administrativos e questionamento de terceiros |
||||
decorrentes das atividades desempenhadas pelo usuário no SIMPLES IP. |
||||
9.5. Do Não Compartilhamento com Terceiros. Os dados pessoais dos usuários não |
||||
serão compartilhados com terceiros, sendo que os dados adquiridos somente poderão |
||||
ser acessados por profissionais devidamente autorizados, respeitando a necessidade a |
||||
que serão submetidos. A SIMPLES IP se compromete em estabelecer com estes |
||||
profissionais termos de confidencialidade e sigilo. |
||||
|
||||
10. DO REGISTRO DE ATIVIDADES |
||||
|
||||
10.1. Consentimento do Registro. Você consente que o SIMPLES IP poderá registrar as |
||||
atividades efetuadas na plataforma, por meio de logs, incluindo: Ações efetuadas; Datas |
||||
e horários de cada acesso; e Session ID. Os referidos registros são realizados para o |
||||
estrito cumprimento legal, sendo que poderão ser utilizados pelo SIMPLES IP em casos |
||||
de investigação de fraudes ou de alterações indevidas em seus sistemas e cadastros, |
||||
bem como, em determinados casos, disponibilizados à CONTRATANTE em relação aos |
||||
seus usuários, inclusive podem a CONTRATANTE realizar consulta a determinados |
||||
registros. |
||||
|
||||
11. ACEITE |
||||
|
||||
11.1. Aceite Expresso. Ao acessar o SIMPLES IP e clicar no campo "Li e aceito os |
||||
Termos e Condições de Uso e Política de Privacidade" os usuários, expressamente e |
||||
sem ressalvas concordam com todos os referidos termos e condições. |
||||
|
||||
12. LEI APLICÁVEL E FORO |
||||
|
||||
Estes TERMOS DE USO E PRIVACIDADE são regidos pelas leis brasileiras. O SIMPLES IP e |
||||
USUÁRIOS, com renúncia expressa a qualquer outro foro, se submetem ao Foro de |
||||
Cuiabá/MT. |
||||
|
Before Width: | Height: | Size: 745 B |
@ -1,49 +0,0 @@
|
||||
<?php |
||||
/* |
||||
* Configuração para acesso ao banco de dados principal da aplicação. |
||||
*/ |
||||
$dbPort = getenv('DB_PORT') ? getenv('DB_PORT') : '5432'; |
||||
$dbHost = getenv('DB_HOST') ? getenv('DB_HOST') : 'algar.simplesip.com.br'; |
||||
$dbName = getenv('DB_BASE') ? getenv('DB_BASE') : 'pbx'; |
||||
$dbUser = getenv('DB_USER') ? getenv('DB_USER') : 'contacte'; |
||||
$dbPassword = getenv('DB_PASSWD') ? getenv('DB_PASSWD') : 'ctepgSQL'; |
||||
|
||||
/* |
||||
* Esta configuração define se o servidor será Master |
||||
* e se havera sincronização da conta/senha entre os multiplos sites. |
||||
* Obs.: Quando não utilizar sincronização de conta/senha o valor de |
||||
* master deve ser 1. |
||||
*/ |
||||
$master = 1; |
||||
$sincContaSenha = 0; |
||||
|
||||
/* |
||||
* Quando o arquivo for configurado para slave(master=0) no parametro hostMaster deve ser |
||||
* informado o Ip do servidor master. |
||||
*/ |
||||
$hostMaster = '127.0.0.1'; |
||||
/* |
||||
*Informe uma identificação para o servidor |
||||
*/ |
||||
$serverName = 'MASTER_SERVER'; |
||||
|
||||
/* |
||||
* Configurações para acesso a api. |
||||
* |
||||
*/ |
||||
$hostApi = '127.0.0.1'; |
||||
$portaApi = ''; |
||||
|
||||
/* |
||||
* Acesso ao mysql para real-time. |
||||
* |
||||
*/ |
||||
|
||||
$myParams = array('myPort' => '3306', |
||||
'myHost' => '127.0.0.1', |
||||
'myDatabase' => 'pabx', |
||||
'myUser' => 'root', |
||||
'myPassword' => 'SimpleS_root' |
||||
); |
||||
|
||||
?> |
@ -1,8 +0,0 @@
|
||||
browser.id=SL[/Browsers/FirefoxBrowser |
||||
copy.src.files=false |
||||
copy.src.on.open=false |
||||
copy.src.target=/var/www/aplicativo |
||||
include.path.private= |
||||
index.file=index.php |
||||
run.as=LOCAL |
||||
url=http://localhost/ |
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> |
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="5"/> |
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> |
||||
<group> |
||||
<file>file:/var/www/html/aplicativo/supervisor.php</file> |
||||
<file>file:/var/www/html/aplicativo/projeto/base/sql/versao-1.7.11.5.sql</file> |
||||
<file>file:/var/www/html/aplicativo/include/util/funcoesAmi.php</file> |
||||
<file>file:/var/www/html/aplicativo/include/util/display_errors.php</file> |
||||
<file>file:/var/www/html/aplicativo/asterisk/etc_asterisk/editado_manual/extensions_padrao.conf</file> |
||||
<file>file:/var/www/html/aplicativo/include/util/funcoesLgpd.php</file> |
||||
<file>file:/var/www/html/aplicativo/agente/agenteChamadasAbandon.php</file> |
||||
<file>file:/var/www/html/aplicativo/contacteFunc.php</file> |
||||
<file>file:/var/www/html/aplicativo/asterisk/var_lib_asterisk/scripts/abandonadas/retornoAbandonada.php</file> |
||||
<file>file:/var/www/html/aplicativo/include/util/funcoesApl.php</file> |
||||
</group> |
||||
</open-files> |
||||
</project-private> |
@ -1,7 +0,0 @@
|
||||
include.path= |
||||
php.version=PHP_56 |
||||
source.encoding=ISO-8859-1 |
||||
src.dir=. |
||||
tags.asp=false |
||||
tags.short=false |
||||
web.root=. |
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project xmlns="http://www.netbeans.org/ns/project/1"> |
||||
<type>org.netbeans.modules.php.project</type> |
||||
<configuration> |
||||
<data xmlns="http://www.netbeans.org/ns/php-project/1"> |
||||
<name>aplicativo</name> |
||||
</data> |
||||
</configuration> |
||||
</project> |
Loading…
Reference in new issue