Browse Source

cadastro de organizacao e ajustes nos arquivos asterisk

1.9
Lucas Awade 10 months ago
parent
commit
4f97fcf11b
  1. 75
      admin/cadQgrupos.php
  2. 30
      admin/cadRamais.php
  3. 2
      admin/cadUraOpcoes.php
  4. 268
      admin/funcoes.php
  5. 4
      admin/popula.php
  6. 75
      admin/queues.php
  7. 2
      admin/uraOpcoes.php
  8. 11
      ajaxPhp.php
  9. 4
      asterisk/etc_asterisk/editado_manual/extensions_padrao.conf
  10. 50
      asterisk/var_lib_asterisk/agi-bin/agente_fila.php
  11. 206
      asterisk/var_lib_asterisk/agi-bin/pbx_complemento.php
  12. 59
      asterisk/var_lib_asterisk/agi-bin/ramal_empresa.php
  13. 100
      asterisk/var_lib_asterisk/agi-bin/tarifaFinaliza.php
  14. 46
      asterisk/var_lib_asterisk/agi-bin/verifica_rota.php
  15. 29
      asterisk/var_lib_asterisk/scripts/callcenter/atualizar-dacs.php
  16. 117
      asterisk/var_lib_asterisk/scripts/manutencaoDB/importaBilhetes.php
  17. 46
      asterisk/var_lib_asterisk/scripts/manutencaoDB/importaEmpresa.php
  18. 281
      asterisk/var_lib_asterisk/scripts/supervisor/ssupervisor.php
  19. 10
      asterisk/var_lib_asterisk/scripts/supervisor/teste.php
  20. 129
      cadastros/organizacao/atribuirOrganizacao.php
  21. 120
      cadastros/organizacao/cadOrganizacao.php
  22. 86
      cadastros/organizacao/organizacao.php
  23. 27
      configGeral.php
  24. 6
      contacteFunc.php
  25. 2
      include/configBd.php
  26. 2
      include/configs/config.php
  27. 2
      include/util/display_errors.php
  28. 180
      include/util/funcoesApl.php
  29. 4
      include/util/funcoesInternas.php
  30. 35
      include/util/util.php
  31. 1
      iniciaCliente.php
  32. 28
      master.css
  33. 71
      projeto/base/sql/versao-1.9.0.sql
  34. 1566
      scriptApl/functions15.js
  35. 4
      scriptApl/menu.css
  36. 276
      supervisor.php
  37. 57
      templates/cadastros/organizacao/atribuirOrganizacao.tpl
  38. 45
      templates/cadastros/organizacao/cadOrganizacao.tpl
  39. 70
      templates/cadastros/organizacao/organizacao.tpl
  40. 6
      templates/master.tpl

75
admin/cadQgrupos.php

@ -14,7 +14,6 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$("#form1").validationEngine({ $("#form1").validationEngine({
sucess: function() { sucess: function() {
document.form1.submit(); document.form1.submit();
}, },
@ -22,7 +21,6 @@
}); });
}); });
function selecionados() { function selecionados() {
//var j = form1.disponiveis.length; //var j = form1.disponiveis.length;
var objDisp = document.getElementById("disponiveis") var objDisp = document.getElementById("disponiveis")
@ -60,7 +58,6 @@
} }
} }
} }
} }
function _remove() { function _remove() {
@ -70,7 +67,6 @@
var x = document.getElementById("disponiveis"); //retorna o objeto select var x = document.getElementById("disponiveis"); //retorna o objeto select
var options = x.getElementsByTagName("option"); //pega a lista de options do select var options = x.getElementsByTagName("option"); //pega a lista de options do select
var y = document.createElement('option'); //cria um novo elemento option var y = document.createElement('option'); //cria um novo elemento option
var sel = objRamais.options[i].text; var sel = objRamais.options[i].text;
var pos = sel.indexOf(':'); var pos = sel.indexOf(':');
var sel = sel.substr(0, pos); var sel = sel.substr(0, pos);
@ -100,7 +96,6 @@
} }
} }
} }
} }
function marca_todos() { function marca_todos() {
@ -108,7 +103,6 @@
for (var i = 0; i < objRamais.length; i++) { for (var i = 0; i < objRamais.length; i++) {
objRamais.options[i].selected = true; objRamais.options[i].selected = true;
} }
} }
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
@ -135,7 +129,6 @@
alert('Selecione uma opção de Timeout!'); alert('Selecione uma opção de Timeout!');
return false; return false;
} }
} }
</script> </script>
@ -165,7 +158,7 @@
$pesquisaLiberacao = $_POST["pesquisa_liberacao"]; $pesquisaLiberacao = $_POST["pesquisa_liberacao"];
$ativaFila = isset($_POST['ativaFila']) ? 'A' : 'I'; $ativaFila = isset($_POST['ativaFila']) ? 'A' : 'I';
$disponivelfila = $_POST['disponivelfila']; $disponivelfila = $_POST['disponivelfila'];
$nome = LimpaString($_POST["nome"], true); $nome = GravaNomeOrganizacao(LimpaString($_POST["nome"], true));
$musicclass = trim($_POST["musicclass"]); $musicclass = trim($_POST["musicclass"]);
$strategy = trim($_POST["strategy"]); $strategy = trim($_POST["strategy"]);
$servicelevel = empty($_POST["servicelevel"]) || !is_numeric(trim($_POST["servicelevel"])) ? '0' : trim($_POST["servicelevel"]); $servicelevel = empty($_POST["servicelevel"]) || !is_numeric(trim($_POST["servicelevel"])) ? '0' : trim($_POST["servicelevel"]);
@ -174,7 +167,6 @@
$maxlen = trim($_POST["maxlen"]); $maxlen = trim($_POST["maxlen"]);
$joinempty = trim($_POST["joinempty"]); $joinempty = trim($_POST["joinempty"]);
$eventwhencalled = 'no'; //trim($_POST["eventwhencalled"]); $eventwhencalled = 'no'; //trim($_POST["eventwhencalled"]);
$eventmemberstatus = 'no'; //trim($_POST["eventmemberstatus"]); $eventmemberstatus = 'no'; //trim($_POST["eventmemberstatus"]);
$ringinuse = 'no'; // trim($_POST["ringinuse"]); $ringinuse = 'no'; // trim($_POST["ringinuse"]);
$periodic_announce_frequency = trim($_POST["periodic_announce_frequency"]); $periodic_announce_frequency = trim($_POST["periodic_announce_frequency"]);
@ -209,9 +201,9 @@
if ($acao == "inseri") { if ($acao == "inseri") {
if (strtoupper($nome) != 'TODOS') { // VERIFICA NOME DA FILA <> TODOS if (strtoupper($nome) != 'TODOS') { // VERIFICA NOME DA FILA <> TODOS
$query = "select (select count(*) from pbx_queues_grupos where nome = '$nome') as fila_exist, $query = "SELECT (select count(*) FROM pbx_queues_grupos WHERE nome = '$nome') as fila_exist,
(select count(*) from pbx_queues_grupos where numero = '$numero' and status = 'A') + (select count(*) FROM pbx_queues_grupos WHERE numero = '$numero' and status = 'A') +
(select count(*) from pbx_ramais where nome = '$numero') as numero_exist"; (select count(*) FROM pbx_ramais WHERE nome = '$numero') as numero_exist";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
@ -232,7 +224,7 @@
$retornar_abandonadas,'$ativaFila' $dateClass,'$modoAtendimento',$pesquisaLiberacao, '$disponivelfila', $org_id)"; $retornar_abandonadas,'$ativaFila' $dateClass,'$modoAtendimento',$pesquisaLiberacao, '$disponivelfila', $org_id)";
pg_query($dbcon, $query); pg_query($dbcon, $query);
$query2 = "select id from pbx_queues_grupos where org_id = {$org_id} order by id desc limit 1"; $query2 = "SELECT id FROM pbx_queues_grupos WHERE org_id = {$org_id} ORDER BY id DESC LIMIT 1";
$result2 = pg_query($dbcon, $query2); $result2 = pg_query($dbcon, $query2);
while ($dados2 = pg_fetch_array($result2)) { while ($dados2 = pg_fetch_array($result2)) {
@ -242,7 +234,7 @@
$idGrupoUser = GetIdGrupoUser($dbcon, GetIdUser()); $idGrupoUser = GetIdGrupoUser($dbcon, GetIdUser());
if ($id_ult && $idGrupoUser) { if ($id_ult && $idGrupoUser) {
$query = " insert into pbx_fila_grupos(gp_id, id, org_id)values('$idGrupoUser', '$id_ult', $org_id)"; $query = " INSERT INTO pbx_fila_grupos(gp_id, id, org_id)values('$idGrupoUser', '$id_ult', $org_id)";
pg_query($dbcon, $query); pg_query($dbcon, $query);
} }
} else { } else {
@ -256,7 +248,7 @@
} }
if ($acao == "edita") { if ($acao == "edita") {
$query = "select (select count(*) from pbx_queues_grupos where numero = '$numero' and status = 'A' and id <> $id) + $query = "SELECT (select count(*) from pbx_queues_grupos where numero = '$numero' and status = 'A' and id <> $id) +
(select count(*) from pbx_ramais where nome = '$numero') as numero_exist"; (select count(*) from pbx_ramais where nome = '$numero') as numero_exist";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
@ -273,7 +265,7 @@
WHERE id=$id"; WHERE id=$id";
pg_query($dbcon, $query); pg_query($dbcon, $query);
$query = "delete from pbx_queues_membros where id_fila=$id"; $query = "DELETE FROM pbx_queues_membros WHERE id_fila=$id";
pg_query($dbcon, $query); pg_query($dbcon, $query);
} else { } else {
$filaExiste = 1; $filaExiste = 1;
@ -282,7 +274,6 @@
} }
} }
$ramais = $_POST["ramais"] ?? []; $ramais = $_POST["ramais"] ?? [];
$prio = 0; //prioridade do ramal $prio = 0; //prioridade do ramal
$ramalSel = ''; $ramalSel = '';
@ -293,7 +284,7 @@
$paramRamal = explode('/', $ramalSel); $paramRamal = explode('/', $ramalSel);
$num = ($paramRamal[0] == "KHOMP") ? $paramRamal[2] : $paramRamal[1]; $num = ($paramRamal[0] == "KHOMP") ? $paramRamal[2] : $paramRamal[1];
$a = 0; $a = 0;
$sql = "select count(*) from pbx_supervisor_agentes where ramal = '$num'"; $sql = "SELECT count(*) FROM pbx_supervisor_agentes WHERE ramal = '$num'";
$result = pg_query($dbcon, $sql); $result = pg_query($dbcon, $sql);
$qtde = pg_fetch_row($result); $qtde = pg_fetch_row($result);
if ($qtde[0] >= 1) { if ($qtde[0] >= 1) {
@ -301,9 +292,9 @@
$a++; $a++;
} else { } else {
if ($acao == "edita") { if ($acao == "edita") {
$query = "insert into pbx_queues_membros (id_fila,dispositivo, prioridade, org_id) values ($id,'$ramalSel', '$prio', $org_id)"; $query = "INSERT INTO pbx_queues_membros (id_fila,dispositivo, prioridade, org_id) VALUES ($id,'$ramalSel', '$prio', $org_id)";
} else { } else {
$query = "insert into pbx_queues_membros (id_fila,dispositivo, prioridade, org_id) values ($id_ult,'$ramalSel', '$prio', $org_id)"; $query = "INSERT INTO pbx_queues_membros (id_fila,dispositivo, prioridade, org_id) VALUES ($id_ult,'$ramalSel', '$prio', $org_id)";
} }
pg_query($dbcon, $query); pg_query($dbcon, $query);
} }
@ -315,8 +306,6 @@
} }
//gera arquivos e executa o reload dos dados no asterisk //gera arquivos e executa o reload dos dados no asterisk
gera_arquivos($dbcon, 'QUEUES_GRUPOS'); gera_arquivos($dbcon, 'QUEUES_GRUPOS');
?> ?>
<?php <?php
@ -403,7 +392,7 @@
} }
?> ?>
<form action="index.php?idProg=11002&pbxRequest=1&acao=<?php echo $acao; ?>&acao2=salva<?php echo $param ?>" onsubmit="return Verify();" method="post" name="form1" target="_self" id="form1"> <form action="index.php?idProg=11002&pbxRequest=1&acao=<?= $acao; ?>&acao2=salva<?= $param ?>" onsubmit="return Verify();" method="post" name="form1" target="_self" id="form1">
<table width="750" height="335" border="1" align="center" cellpadding="0" cellspacing="0" class="tabela" style="min-width: 760px; width: 860px;"> <table width="750" height="335" border="1" align="center" cellpadding="0" cellspacing="0" class="tabela" style="min-width: 760px; width: 860px;">
<tr bordercolor="#EAEAEA" class="cabecalho" background="img/button03.gif"> <tr bordercolor="#EAEAEA" class="cabecalho" background="img/button03.gif">
<td height="18" colspan="4" class="cabecalho"> <td height="18" colspan="4" class="cabecalho">
@ -419,7 +408,7 @@
<td> <td>
<fieldset> <fieldset>
<legend class="labels">Nome:</legend> <legend class="labels">Nome:</legend>
<input name="nome" type="text" class="validate[required,length[0,100]] caixas" id="nome2" value="<?= ($acao == 'edita') ? $nome . '"' . 'disabled="disabled' : null; ?>" /> <input name="nome" type="text" class="validate[required,length[0,100]] caixas" id="nome2" value="<?= ($acao == 'edita') ? GravaNomeOrganizacao($nome) . '"' . 'disabled="disabled' : null; ?>" />
</fieldset> </fieldset>
</td> </td>
<td> <td>
@ -820,11 +809,7 @@
<div align="left"> <div align="left">
<fieldset> <fieldset>
<legend class="labels">Timeout da Fila:</legend> <legend class="labels">Timeout da Fila:</legend>
<input name="timeout2" type="text" class="validate[optional,custom[onlyNumber],length[0,10]] caixas" id="timeout22" value="<?php <input name="timeout2" type="text" class="validate[optional,custom[onlyNumber],length[0,10]] caixas" id="timeout22" value="<?= ($acao == 'edita') ? $timeout2 : ""; ?>" size="20" />
if ($acao == 'edita') {
echo $timeout2;
}
?>" size="20" />
</fieldset> </fieldset>
</div> </div>
</td> </td>
@ -832,8 +817,7 @@
<div align="left"> <div align="left">
<fieldset> <fieldset>
<legend class="labels">A&ccedil;&atilde;o de Timeout :</legend> <legend class="labels">A&ccedil;&atilde;o de Timeout :</legend>
<select name="opcao" class="validate[optional] caixas" id="opcao" onChange="ajaxComboBox('admin/popula.php?id=<?php echo $acao_; ?>&id_ura=<?php echo $id; ?>', 'acao_', 'opcao', '<?php echo $acao_; ?>');" style="width:90px"> <select name="opcao" class="validate[optional] caixas" id="opcao" onChange="ajaxComboBox('admin/popula.php?id=<?= $acao_; ?>&id_ura=<?= $id; ?>', 'acao_', 'opcao', '<?= $acao_; ?>');" style="width:90px">
<?php <?php
include_once("admin/opcoes.php"); include_once("admin/opcoes.php");
echo _GetOpcoes($dbcon, $opcao); echo _GetOpcoes($dbcon, $opcao);
@ -865,7 +849,6 @@
$sel = ""; $sel = "";
} }
} }
echo "<option value=\"$idDac\" $sel>$nomeDac</option>"; echo "<option value=\"$idDac\" $sel>$nomeDac</option>";
} }
?> ?>
@ -884,7 +867,6 @@
} }
?>" size="15" maxlength="3" /> ?>" size="15" maxlength="3" />
</fieldset> </fieldset>
</td> </td>
</tr> </tr>
</table> </table>
@ -974,11 +956,7 @@
<td width="15%"> <td width="15%">
<fieldset> <fieldset>
<legend class="labels">Status Fila</legend> <legend class="labels">Status Fila</legend>
<input name="ativaFila" type="checkbox" value="A" <?php <input name="ativaFila" type="checkbox" value="A" <?= ($ativaFila == "A") ? "checked=\"checked\"" : ""; ?> /> Ativar
if ($ativaFila == "A") {
echo "checked=\"checked\"";
}
?> /> Ativar
</fieldset> </fieldset>
</td> </td>
</tr> </tr>
@ -1031,7 +1009,8 @@
<td width="10%" valign="top"> <td width="10%" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr> <tr>
<td align="center"><select name="prioridadeRamal" id="prioridadeRamal" class="caixas" style="width:50px"> <td align="center">
<select name="prioridadeRamal" id="prioridadeRamal" class="caixas" style="width:50px">
<option value="0">0</option> <option value="0">0</option>
<option value="1">1</option> <option value="1">1</option>
<option value="2">2</option> <option value="2">2</option>
@ -1042,13 +1021,13 @@
<option value="7">7</option> <option value="7">7</option>
<option value="8">8</option> <option value="8">8</option>
<option value="9">9</option> <option value="9">9</option>
</select></td> </select>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
<div align="center"> <br /> <div align="center"> <br />
<input name="marca1" type="button" class="labels" value="&gt;" onclick="selecionados(); <input name="marca1" type="button" class="labels" value="&gt;" onclick="selecionados(); marca_todos();" />
marca_todos();" />
<br /> <br />
<input name="marca2" type="button" class="labels" value="&lt;" onclick="_remove();" /> <input name="marca2" type="button" class="labels" value="&lt;" onclick="_remove();" />
<br /> <br />
@ -1088,10 +1067,15 @@
</tr> </tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA"> <tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td height="22" colspan="4"> <td height="22" colspan="4">
<div align="center"><span class="style1"></span><span class="style1"></span><span class="style1"></span><span class="style1"> <div align="center">
<span class="style1"></span>
<span class="style1"></span>
<span class="style1"></span>
<span class="style1">
<input name="Submit2" type="button" class="labels" onclick="fecha_popup();" value="Fechar" /> <input name="Submit2" type="button" class="labels" onclick="fecha_popup();" value="Fechar" />
<input name="Submit" type="submit" class="labels" value="Salvar" onclick="marca_todos();" /> <input name="Submit" type="submit" class="labels" value="Salvar" onclick="marca_todos();" />
</span></div> </span>
</div>
</td> </td>
</tr> </tr>
</table> </table>
@ -1105,7 +1089,6 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
window.resizeTo($('#form1').width() + 100, $('#form1').height()); window.resizeTo($('#form1').width() + 100, $('#form1').height());
$('#btfechar').click(function() { $('#btfechar').click(function() {
var $ = window.parent.$; var $ = window.parent.$;
var jQuery = window.parent.jQuery; var jQuery = window.parent.jQuery;
@ -1117,7 +1100,6 @@
}); });
HablitaMusica(); HablitaMusica();
</script> </script>
</body> </body>
</html> </html>
@ -1146,6 +1128,7 @@ function GetDataClassifica($classifica, $mod = null)
function GetOptModoAtendimento($modo) function GetOptModoAtendimento($modo)
{ {
$opt = null;
$opt .= $modo == 'default' ? "<option value='default' selected>DEFAULT</option>" : "<option value='default'>DEFAULT</option>"; $opt .= $modo == 'default' ? "<option value='default' selected>DEFAULT</option>" : "<option value='default'>DEFAULT</option>";
$opt .= $modo == 'automatico' ? "<option value='automatico' selected>AUTOMATICO</option>" : "<option value='automatico'>AUTOMATICO</option>"; $opt .= $modo == 'automatico' ? "<option value='automatico' selected>AUTOMATICO</option>" : "<option value='automatico'>AUTOMATICO</option>";
$opt .= $modo == 'manual' ? "<option value='manual' selected>MANUAL</option>" : "<option value='manual'>MANUAL</option>"; $opt .= $modo == 'manual' ? "<option value='manual' selected>MANUAL</option>" : "<option value='manual'>MANUAL</option>";

30
admin/cadRamais.php

@ -155,7 +155,7 @@ if ($_GET['ajax'] == 1) {
$senha_facilidade = $_POST['senha_facilidade']; $senha_facilidade = $_POST['senha_facilidade'];
$rotas = $_POST['tipoRota']; $rotas = $_POST['tipoRota'];
$id = $_POST["id"]; $id = $_POST["id"];
$nome = trim($_POST["nome"]); $nome = GravaNumeroOrganizacao(trim($_POST["nome"]));
$type = trim($_POST["type"]); $type = trim($_POST["type"]);
$qualify = trim($_POST["qualify"]); $qualify = trim($_POST["qualify"]);
$port = trim($_POST["port"]); $port = trim($_POST["port"]);
@ -188,7 +188,10 @@ if ($_GET['ajax'] == 1) {
$musica = $_POST["musica"]; $musica = $_POST["musica"];
$pertube = $_POST["pertube"]; $pertube = $_POST["pertube"];
$cadeado = $_POST["cadeado"]; $cadeado = $_POST["cadeado"];
$dispositivo = trim($_POST["dispositivo"]);
$disp = explode('/', trim($_POST["dispositivo"]));
$dispositivo = $disp[0] . '/' . $nome;
$gravacao_saida = trim($_POST["gravacao_saida"]); $gravacao_saida = trim($_POST["gravacao_saida"]);
$timeout = trim($_POST["timeout"]); $timeout = trim($_POST["timeout"]);
$musicclass = trim($_POST["musicclass"]); $musicclass = trim($_POST["musicclass"]);
@ -229,7 +232,6 @@ if ($_GET['ajax'] == 1) {
$mes .= 'NOME' . '\n\t'; $mes .= 'NOME' . '\n\t';
} }
if ($passa == false) { if ($passa == false) {
echo '<script>alert("' . $mes . '");</script>'; echo '<script>alert("' . $mes . '");</script>';
echo "<script>javascript:history.back();</script>"; echo "<script>javascript:history.back();</script>";
@ -275,7 +277,13 @@ if ($_GET['ajax'] == 1) {
if ($total >= 1) { if ($total >= 1) {
$nome2 = str_pad($nome2, $qtd, "0", STR_PAD_LEFT); $nome2 = str_pad($nome2, $qtd, "0", STR_PAD_LEFT);
} }
$query2 = "select 1 from pbx_ramais where nome='$nome2'";
$nome2 = GravaNumeroOrganizacao($nome2);
$disp = explode('/', $dispositivo);
$dispositivo = $disp[0] . '/' . GravaNumeroOrganizacao($nome2);
$query2 = "SELECT 1 FROM pbx_ramais WHERE nome='$nome2' AND org_id = $org_id";
if (pg_num_rows(pg_query($dbcon, $query2)) >= 1) { if (pg_num_rows(pg_query($dbcon, $query2)) >= 1) {
$z++; $z++;
@ -289,7 +297,7 @@ if ($_GET['ajax'] == 1) {
} }
if ($qtde == 1) { if ($qtde == 1) {
$nome2 = $_POST['nome']; $nome2 = GravaNumeroOrganizacao($_POST['nome']);
} }
if ((($_POST["gera_voice"] != '') or (($v_nome <> '') or ($v_email <> ''))) and ($qtde > 1)) { if ((($_POST["gera_voice"] != '') or (($v_nome <> '') or ($v_email <> ''))) and ($qtde > 1)) {
@ -343,7 +351,7 @@ if ($_GET['ajax'] == 1) {
$z++; $z++;
$msg .= 'Erro ao incluir ramal ' . $nome2 . '!' . '\n'; $msg .= 'Erro ao incluir ramal ' . $nome2 . '!' . '\n';
} else { } else {
$query = "select max(id) as id from pbx_sip_ramais"; $query = "SELECT max(id) AS id FROM pbx_sip_ramais";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$id_ult = pg_fetch_row($result); $id_ult = pg_fetch_row($result);
$novo = array( $novo = array(
@ -461,8 +469,8 @@ if ($_GET['ajax'] == 1) {
if (($v_nome != '') || ($v_email != '')) { if (($v_nome != '') || ($v_email != '')) {
// Verifica se o ramal teve o numero alterado // Verifica se o ramal teve o numero alterado
if ($oldNome != $nome) { if ($oldNome != $nome) {
$query = "update pbx_voicemail_usuarios set numero_ramal = '$nome' $query = "UPDATE pbx_voicemail_usuarios SET numero_ramal = '$nome'
where numero_ramal = '$oldNome'"; //executa insersao na base interna do asterisk WHERE numero_ramal = '$oldNome'"; //executa insersao na base interna do asterisk
pg_query($dbcon, $query); pg_query($dbcon, $query);
GrvAudita($dbcon, $idProg, 'pbx_voicemail_usuarios', 'UPD', array('numero_ramal' => $oldNome), array('numero_ramal' => $nome), array('numero_ramal'), array('numero_ramal'), true); GrvAudita($dbcon, $idProg, 'pbx_voicemail_usuarios', 'UPD', array('numero_ramal' => $oldNome), array('numero_ramal' => $nome), array('numero_ramal'), array('numero_ramal'), true);
} }
@ -471,8 +479,8 @@ if ($_GET['ajax'] == 1) {
$v_numero = $nome; $v_numero = $nome;
} }
$query = "update pbx_voicemail_usuarios set caixa_postal='$v_numero',senha='$v_senha',email='$v_email',nome='$v_nome',attach='$attach',delete='$delete',saycid='$saycid',envelope='$envelope' $query = "UPDATE pbx_voicemail_usuarios SET caixa_postal='$v_numero', senha='$v_senha', email='$v_email', nome='$v_nome', attach='$attach', delete='$delete', saycid='$saycid', envelope='$envelope'
where numero_ramal = '$nome'"; //executa insersao na base interna do asterisk WHERE numero_ramal = '$nome'"; //executa insersao na base interna do asterisk
CommandAsterisk2($dbcon, 'VOICE2', $nome, $v_numero); CommandAsterisk2($dbcon, 'VOICE2', $nome, $v_numero);
pg_query($dbcon, $query); pg_query($dbcon, $query);
$fields = array('caixa_postal', 'senha', 'email', 'nome', 'attach', 'delete', 'saycid', 'envelope', 'numero_ramal'); $fields = array('caixa_postal', 'senha', 'email', 'nome', 'attach', 'delete', 'saycid', 'envelope', 'numero_ramal');
@ -486,7 +494,7 @@ if ($_GET['ajax'] == 1) {
} }
$query = "INSERT INTO pbx_voicemail_usuarios $query = "INSERT INTO pbx_voicemail_usuarios
(caixa_postal,senha,email,nome,attach,delete,saycid,envelope, numero_ramal, org_id) (caixa_postal,senha,email,nome,attach,delete,saycid,envelope, numero_ramal, org_id)
values ('$v_numero','$v_senha','$v_email','$v_nome','$attach','$delete','$saycid','$envelope', '$nome', '$org_id') "; VALUES ('$v_numero','$v_senha','$v_email','$v_nome','$attach','$delete','$saycid','$envelope', '$nome', '$org_id') ";
pg_query($dbcon, $query); //executa insersao na base interna do asterisk pg_query($dbcon, $query); //executa insersao na base interna do asterisk
$fields = array('caixa_postal', 'senha', 'email', 'nome', 'attach', 'delete', 'saycid', 'envelope', 'numero_ramal'); $fields = array('caixa_postal', 'senha', 'email', 'nome', 'attach', 'delete', 'saycid', 'envelope', 'numero_ramal');

2
admin/cadUraOpcoes.php

@ -50,7 +50,7 @@ if ($acao2 == "salva") {
exit; exit;
} }
if (!is_integer($numero)) { if (!($numero)) {
?> ?>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {

268
admin/funcoes.php

@ -2,17 +2,20 @@
//função para para execução de comandos no servidor //função para para execução de comandos no servidor
//Função para converter as datas no formato dd/mm/YYYY //Função para converter as datas no formato dd/mm/YYYY
function arruma_data($data) { function arruma_data($data)
{
return substr($data, 8, 2) . "/" . substr($data, 5, 2) . "/" . substr($data, 0, 4); return substr($data, 8, 2) . "/" . substr($data, 5, 2) . "/" . substr($data, 0, 4);
} }
//func�o para converter as datas no formato YYYY-mm-dd //func�o para converter as datas no formato YYYY-mm-dd
function inverte_data($data) { function inverte_data($data)
{
return substr($data, 6, 4) . "-" . substr($data, 3, 2) . "-" . substr($data, 0, 2); return substr($data, 6, 4) . "-" . substr($data, 3, 2) . "-" . substr($data, 0, 2);
} }
//Função¿½o para limpar os relacionamentos do banco de dados //Função¿½o para limpar os relacionamentos do banco de dados
function Ajusta_ramais($nome, $conexao, $reload = false, $reloadUra = false) { function Ajusta_ramais($nome, $conexao, $reload = false, $reloadUra = false)
{
$query = "delete from pbx_agenda where tipo = 'R' and ramal = '$nome'"; $query = "delete from pbx_agenda where tipo = 'R' and ramal = '$nome'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
@ -44,7 +47,8 @@ function Ajusta_ramais($nome, $conexao, $reload = false, $reloadUra = false) {
} }
//Função¿½o para limpar os relacionamentos do banco de dados //Função¿½o para limpar os relacionamentos do banco de dados
function Ajusta_troncos($nome, $conexao) { function Ajusta_troncos($nome, $conexao)
{
$query1 = "delete from pbx_rotas_entrada_troncos where id_tronco='$nome'"; $query1 = "delete from pbx_rotas_entrada_troncos where id_tronco='$nome'";
$query2 = "delete from pbx_grupos_atendimento_ramais where ramal='$nome'"; $query2 = "delete from pbx_grupos_atendimento_ramais where ramal='$nome'";
$query3 = "delete from pbx_queues_membros where dispositivo='%/$nome'"; $query3 = "delete from pbx_queues_membros where dispositivo='%/$nome'";
@ -62,11 +66,13 @@ function Ajusta_troncos($nome, $conexao) {
* @param Boolean $reload indica que o arquivo sera inserido na data base do asterisk * @param Boolean $reload indica que o arquivo sera inserido na data base do asterisk
* @param Boolean $reloadUra Sera necessario excutar o Dialplan reload no asterisk * @param Boolean $reloadUra Sera necessario excutar o Dialplan reload no asterisk
*/ */
function Ajusta_tabelas($opcao, $acao, $conexao, $reload = true, $reloadUra = true) { function Ajusta_tabelas($opcao, $acao, $conexao, $reload = true, $reloadUra = true)
{
$path = '/var/log/asterisk/ajusta_tabelas.log'; $path = '/var/log/asterisk/ajusta_tabelas.log';
$tables = array('pbx_anuncios' => array('opcao', 'acao', 'ANUNCIOS', 'Y', 'N'), $tables = array(
'pbx_anuncios' => array('opcao', 'acao', 'ANUNCIOS', 'Y', 'N'),
'pbx_callback' => array('opcao', 'acao', 'CALLBACK', 'N', 'N'), 'pbx_callback' => array('opcao', 'acao', 'CALLBACK', 'N', 'N'),
'pbx_callback' => array('opcao1', 'acao1', 'CALLBACK', 'Y', 'N'), 'pbx_callback' => array('opcao1', 'acao1', 'CALLBACK', 'Y', 'N'),
'pbx_contextos' => array('opcao', 'acao', 'CONTEXTOS', 'N', 'N'), 'pbx_contextos' => array('opcao', 'acao', 'CONTEXTOS', 'N', 'N'),
@ -119,7 +125,8 @@ function Ajusta_tabelas($opcao, $acao, $conexao, $reload = true, $reloadUra = tr
} }
} }
function GetParamAmi($tipo, $paramAdic) { function GetParamAmi($tipo, $paramAdic)
{
$tipo = str_replace(" ", "_", $tipo); $tipo = str_replace(" ", "_", $tipo);
$acao["SIP"] = array("action" => "command", "command" => "module reload chan_sip.so"); $acao["SIP"] = array("action" => "command", "command" => "module reload chan_sip.so");
$acao["IAX"] = array("action" => "command", "command" => "module reload chan_iax2.so"); $acao["IAX"] = array("action" => "command", "command" => "module reload chan_iax2.so");
@ -192,7 +199,8 @@ function GetParamAmi($tipo, $paramAdic) {
} }
//Executa comandos via url do asterisk //Executa comandos via url do asterisk
function CommandAsterisk($conexao, $tipo, $paramAdic = array()) { function CommandAsterisk($conexao, $tipo, $paramAdic = array())
{
//$query = "select prm_sk_host_externo as prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros"; //$query = "select prm_sk_host_externo as prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros";
$query = "select prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros"; $query = "select prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
@ -216,7 +224,8 @@ function CommandAsterisk($conexao, $tipo, $paramAdic = array()) {
* Subistituida pela função acima que elimina o astman proxy * Subistituida pela função acima que elimina o astman proxy
*/ */
function _CommandAsterisk($conexao, $tipo) { function _CommandAsterisk($conexao, $tipo)
{
$query = "SELECT * FROM pbx_conf_padrao"; $query = "SELECT * FROM pbx_conf_padrao";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
@ -238,7 +247,8 @@ function _CommandAsterisk($conexao, $tipo) {
} }
//executa comandos via url do asterisk do tipo inser??o e delete de banco interno //executa comandos via url do asterisk do tipo inser??o e delete de banco interno
function CommandAsterisk2($conexao, $tipo, $chave, $valor) { function CommandAsterisk2($conexao, $tipo, $chave, $valor)
{
$paramAdic = array(); $paramAdic = array();
$chave = trim($chave); $chave = trim($chave);
@ -259,7 +269,8 @@ function CommandAsterisk2($conexao, $tipo, $chave, $valor) {
* Substituido pela função acima * Substituido pela função acima
*/ */
function _CommandAsterisk2($conexao, $tipo, $chave, $valor) { function _CommandAsterisk2($conexao, $tipo, $chave, $valor)
{
$query = "SELECT * FROM pbx_conf_padrao"; $query = "SELECT * FROM pbx_conf_padrao";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
@ -286,7 +297,8 @@ function _CommandAsterisk2($conexao, $tipo, $chave, $valor) {
} }
//tratamento de upload de arquivos para o sistema, verificar o arquivo php.ini para o tamanho maximo de upload de arquivo //tratamento de upload de arquivos para o sistema, verificar o arquivo php.ini para o tamanho maximo de upload de arquivo
function upload($arquivo, $caminho) { function upload($arquivo, $caminho)
{
if (!(empty($arquivo))) { if (!(empty($arquivo))) {
$arquivo1 = $arquivo; $arquivo1 = $arquivo;
$arquivo_minusculo = strtolower($arquivo1['name']); $arquivo_minusculo = strtolower($arquivo1['name']);
@ -303,7 +315,8 @@ function upload($arquivo, $caminho) {
} }
//REALIZA BACKUP BO BANCO //REALIZA BACKUP BO BANCO
function backup($conexao, $tabela, $tipo, $registro, $comando, $reload) { function backup($conexao, $tabela, $tipo, $registro, $comando, $reload)
{
return true; return true;
$ins = ''; $ins = '';
$data = date("Y-m-d"); $data = date("Y-m-d");
@ -396,8 +409,10 @@ function backup($conexao, $tabela, $tipo, $registro, $comando, $reload) {
//FUNC�O RESPONSAVEL PARA GERAR TODOS OS ARQUIVOS NECESS�RIOS PELO ASTERISK //FUNC�O RESPONSAVEL PARA GERAR TODOS OS ARQUIVOS NECESS�RIOS PELO ASTERISK
//SER� TRATADO PARTICULARIDADES ARQUIVO � ARQUIVO //SER� TRATADO PARTICULARIDADES ARQUIVO � ARQUIVO
//EM TODA GERA��O DE ARQUIVO, CASO O CAMPO DO BANCO ESTEJA EM BRANCO, O PARAMETRO NO ASTERISK IR� SEM O "CAMPO = VALOR" //EM TODA GERA��O DE ARQUIVO, CASO O CAMPO DO BANCO ESTEJA EM BRANCO, O PARAMETRO NO ASTERISK IR� SEM O "CAMPO = VALOR"
function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) { function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1)
{
$org_id = GetOrganizacao();
$query = "SELECT * FROM pbx_conf_padrao"; $query = "SELECT * FROM pbx_conf_padrao";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
@ -777,20 +792,22 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$dados2 = array(); $dados2 = array();
$x = 0; $x = 0;
while ($dados = pg_fetch_array($result)) { while ($dados = pg_fetch_array($result)) {
$dados2[] = $dados; $dados2[] = $dados;
$numero = $org_id . $dados['numero'];
$x++; $x++;
fwrite($escreve, 'exten => _' . $dados['numero'] . ',1,' . ( ($dados['m_espera'] == 'N') ? 'Ringing()' : 'Answer()' ) . "\n"); fwrite($escreve, 'exten => _' . $numero . ',1,' . (($dados['m_espera'] == 'N') ? 'Ringing()' : 'Answer()') . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,AGI(pbx_complemento.php,ext-fila,' . trim($dados['nome']) . ')' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-fila,' . trim($dados['nome']) . ')' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,AGI(indisponibilidade.php,' . trim($dados['nome']) . ')' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,AGI(indisponibilidade.php,' . trim($dados['nome']) . ')' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,AGI(prioridade_fila.php,${CALLERID(NUM):-13},' . trim($dados['nome']) . ')' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,AGI(prioridade_fila.php,${CALLERID(NUM):-13},' . trim($dados['nome']) . ')' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(UNICO=${RAND(0000000000,9999999999)})' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(UNICO=${RAND(0000000000,9999999999)})' . "\n");
//fwrite($escreve,'exten => _'.$dados['numero'].',n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)'. "\n"); //fwrite($escreve,'exten => _' . $numero .',n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)'. "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(MONITOR_FILENAME=${EXTEN}-${UNICO}-${UNIQUEID})' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(MONITOR_FILENAME=${EXTEN}-${UNICO}-${UNIQUEID})' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(__DAC=' . trim($dados['nome']) . ')' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(__DAC=' . trim($dados['nome']) . ')' . "\n");
$monitorFormat = strtoupper($dados['monitor-format']); $monitorFormat = strtoupper($dados['monitor-format']);
if (!empty($monitorFormat)) { if (!empty($monitorFormat)) {
@ -801,30 +818,30 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
else if ($monitorFormat == 'WAV49') else if ($monitorFormat == 'WAV49')
$ext = 'WAV'; $ext = 'WAV';
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(CDR(userfield)=${EXTEN}-${UNICO}-${UNIQUEID}.' . $ext . ')' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(CDR(userfield)=${EXTEN}-${UNICO}-${UNIQUEID}.' . $ext . ')' . "\n");
} }
if ($dados['m_espera'] == 'N') { if ($dados['m_espera'] == 'N') {
fwrite($escreve, sprintf('exten => _' . $dados['numero'] . ',n,Queue(' . trim($dados['nome']) . ',%s,,${ANUNCIO},' . $dados['timeout2'] . ',agente_fila.php,,,,)' . "\n",$dados['id_pesquisa_liberacao'] ? 'trc': 'tr')); fwrite($escreve, sprintf('exten => _' . $numero . ',n,Queue(' . trim($dados['nome']) . ',%s,,${ANUNCIO},' . $dados['timeout2'] . ',agente_fila.php,,,,)' . "\n", $dados['id_pesquisa_liberacao'] ? 'trc' : 'tr'));
} else { } else {
//Asterisk 1.4 //Asterisk 1.4
//fwrite($escreve,'exten => _'.$dados['numero'].',n,SetMusicOnHold('.$dados['musicclass'].')'. "\n"); //fwrite($escreve,'exten => _'.$dados['numero'].',n,SetMusicOnHold('.$dados['musicclass'].')'. "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?' . $dados['musicclass'] . ':${CHANNEL(musicclass)})})' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?' . $dados['musicclass'] . ':${CHANNEL(musicclass)})})' . "\n");
//fwrite($escreve,'exten => _'.$dados['numero'].',n,Queue('.trim($dados['nome']).',t,,${ANUNCIO},'.$dados['timeout2'].',agente_fila.php,'.trim($dados['nome']).')'. "\n"); //fwrite($escreve,'exten => _'.$dados['numero'].',n,Queue('.trim($dados['nome']).',t,,${ANUNCIO},'.$dados['timeout2'].',agente_fila.php,'.trim($dados['nome']).')'. "\n");
fwrite($escreve, sprintf('exten => _' . $dados['numero'] . ',n,Queue(' . trim($dados['nome']) . ',%s,,${ANUNCIO},' . $dados['timeout2'] . ',agente_fila.php,,,,)' . "\n", $dados['id_pesquisa_liberacao'] ? 'tc': 't')); fwrite($escreve, sprintf('exten => _' . $numero . ',n,Queue(' . trim($dados['nome']) . ',%s,,${ANUNCIO},' . $dados['timeout2'] . ',agente_fila.php,,,,)' . "\n", $dados['id_pesquisa_liberacao'] ? 'tc' : 't'));
} }
if (!empty($dados['opcao'])) { if (!empty($dados['opcao'])) {
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao'], '', $dados['numero']); $dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao'], '', $numero);
fwrite($escreve, sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?AGI(transbordo.php,%s,%s,%s,%s,%s))' . "\n", $dados['numero'], trim($dados['nome']), $dados['numero'], $dados['opcao'], $dados['acao'], '${UNIQUEID}')); fwrite($escreve, sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?AGI(transbordo.php,%s,%s,%s,%s,%s))' . "\n", $numero, trim($dados['nome']), $numero, $dados['opcao'], $dados['acao'], '${UNIQUEID}'));
$dispAcao = sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?%s)%s', $dados['numero'], $dispAcao, "\n"); $dispAcao = sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?%s)%s', $numero, $dispAcao, "\n");
fwrite($escreve, $dispAcao); fwrite($escreve, $dispAcao);
} }
if ($dados['id_pesquisa_liberacao']) { if ($dados['id_pesquisa_liberacao']) {
fwrite($escreve,"exten => _{$dados['numero']},n,Macro(hangup,PESQUISA) \n"); fwrite($escreve, "exten => _{$numero},n,Macro(hangup,PESQUISA) \n");
fwrite($escreve,"exten => _{$dados['numero']},n,Goto(psq-{$dados['id_pesquisa_liberacao']}-ini,s,1) \n"); fwrite($escreve, "exten => _{$numero},n,Goto(psq-{$dados['id_pesquisa_liberacao']}-ini,s,1) \n");
} }
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n");
} }
fclose($escreve); fclose($escreve);
@ -835,17 +852,17 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
fwrite($escreve, '[ext-fila-login]' . "\n"); fwrite($escreve, '[ext-fila-login]' . "\n");
foreach ($dados2 as $dados) { foreach ($dados2 as $dados) {
fwrite($escreve, 'exten => **' . $dados['numero'] . ',1,AddQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',1,AddQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Goto(${AQMSTATUS})' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',n,Goto(${AQMSTATUS})' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n(ADDED),Playback(agent-loginok)' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',n(ADDED),Playback(agent-loginok)' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n(MEMBERALREADY),Playback(agent-alreadyon)' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',n(MEMBERALREADY),Playback(agent-alreadyon)' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n(NOSUCHQUEUE),Playback(agent-incorrect)' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',n(NOSUCHQUEUE),Playback(agent-incorrect)' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => *0' . $dados['numero'] . ',1,RemoveQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n"); fwrite($escreve, 'exten => *0' . $numero . ',1,RemoveQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n");
fwrite($escreve, 'exten => *0' . $dados['numero'] . ',n,Playback(agent-loggedoff)' . "\n"); fwrite($escreve, 'exten => *0' . $numero . ',n,Playback(agent-loggedoff)' . "\n");
fwrite($escreve, 'exten => *0' . $dados['numero'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => *0' . $numero . ',n,Hangup()' . "\n");
} }
fclose($escreve); fclose($escreve);
@ -1041,8 +1058,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
if (pg_field_name($result, $i) == "ports") { if (pg_field_name($result, $i) == "ports") {
if (trim($dados[pg_field_name($result, $i)]) != "") if (trim($dados[pg_field_name($result, $i)]) != "")
fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n"); fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n");
} } else {
else {
if (trim($dados[pg_field_name($result, $i)]) != "") if (trim($dados[pg_field_name($result, $i)]) != "")
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n");
} }
@ -1292,7 +1308,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Agi(pbx_complemento.php,ext-disa)' . "\n"); fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Agi(pbx_complemento.php,ext-disa)' . "\n");
$sql_conta = pg_query("SELECT * FROM pbx_disa_numeros where id_disa=" . $dados['id'] . " order by id asc"); $sql_conta = pg_query($dbcon, "SELECT * FROM pbx_disa_numeros where id_disa=" . $dados['id'] . " order by id asc");
$quantreg = pg_num_rows($sql_conta); $quantreg = pg_num_rows($sql_conta);
if ($quantreg > 0) { if ($quantreg > 0) {
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Agi(disa.php,${CALLERID(NUM):-13})' . "\n"); fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Agi(disa.php,${CALLERID(NUM):-13})' . "\n");
@ -1340,34 +1356,37 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$query = "SELECT id,permite_ligacao,tempo_espera,som_ura,teste FROM pbx_ura where teste <> '' order by id asc"; $query = "SELECT id,permite_ligacao,tempo_espera,som_ura,teste FROM pbx_ura where teste <> '' order by id asc";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
while ($dados = pg_fetch_array($result)) { while ($dados = pg_fetch_array($result)) {
fwrite($escreve, 'exten => _' . $dados['teste'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); $numero = $org_id . $dados['teste'];
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n");
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n");
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,Goto(ura-' . $dados['id'] . ',s,1)' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n");
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Goto(ura-' . $dados['id'] . ',s,1)' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n");
} }
$query2 = "SELECT * FROM pbx_horarios where discar <> '' order by id asc"; $query2 = "SELECT * FROM pbx_horarios where discar <> '' order by id asc";
$result2 = pg_query($dbcon, $query2); $result2 = pg_query($dbcon, $query2);
while ($dados2 = pg_fetch_array($result2)) { while ($dados2 = pg_fetch_array($result2)) {
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); $numero = $org_id . $dados2['discar'];
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n");
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n");
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,Goto(ext-horarios,' . $dados2['id'] . ',1)' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n");
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Goto(ext-horarios,' . $dados2['id'] . ',1)' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n");
} }
$query2 = "select * from pbx_anuncios where teste <> '' order by id asc"; $query2 = "SELECT * FROM pbx_anuncios WHERE teste <> '' ORDER BY id ASC";
$result2 = pg_query($dbcon, $query2); $result2 = pg_query($dbcon, $query2);
while ($dados2 = pg_fetch_array($result2)) { while ($dados2 = pg_fetch_array($result2)) {
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); $numero = $org_id . $dados2['teste'];
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n");
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n");
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,Goto(ext-anuncios,a' . $dados2['id'] . ',1)' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n");
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,Hangup()' . "\n"); fwrite($escreve, 'exten => _' . $numero . ',n,Goto(ext-anuncios,a' . $dados2['id'] . ',1)' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n");
} }
@ -2803,12 +2822,14 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
//fim gera arquivo //fim gera arquivo
} }
function grava_log() { function grava_log()
{
$arq = $caminho_producao . "log_sistema.txt"; $arq = $caminho_producao . "log_sistema.txt";
$escreve = fopen($arq, 'w'); $escreve = fopen($arq, 'w');
} }
function GetAcao($opcao) { function GetAcao($opcao)
{
if (trim($opcao) == 'ura') { if (trim($opcao) == 'ura') {
return 'ura-'; return 'ura-';
} else if (trim($opcao) == 'grupo') { } else if (trim($opcao) == 'grupo') {
@ -2835,7 +2856,8 @@ function GetAcao($opcao) {
return ''; return '';
} }
function GetOpcaoAcao($opcao, $acao, $tipo = '', $modelo = '') { function GetOpcaoAcao($opcao, $acao, $tipo = '', $modelo = '')
{
// A variável $tipo foi criadada para tratar retorno não padrao // A variável $tipo foi criadada para tratar retorno não padrao
// atualmente usado apenas na cofiguração dos horários. // atualmente usado apenas na cofiguração dos horários.
@ -2871,7 +2893,8 @@ function GetOpcaoAcao($opcao, $acao, $tipo = '', $modelo = '') {
return $ret; return $ret;
} }
function GetAcaoOpcaoRotas($opcao, $acao){ function GetAcaoOpcaoRotas($opcao, $acao)
{
// A variável $tipo foi criadada para tratar retorno não padrao // A variável $tipo foi criadada para tratar retorno não padrao
// atualmente usado apenas na cofiguração dos horários. // atualmente usado apenas na cofiguração dos horários.
@ -2899,7 +2922,8 @@ function GetAcaoOpcaoRotas($opcao, $acao){
return $ret; return $ret;
} }
function GetMascara() { function GetMascara()
{
return '<option value="">MODELOS</option> return '<option value="">MODELOS</option>
<option value="[2-5]XXXXXXX">FIXO LOCAL</option> <option value="[2-5]XXXXXXX">FIXO LOCAL</option>
<option value="9XXXXXXXX">MOVEL LOCAL</option> <option value="9XXXXXXXX">MOVEL LOCAL</option>
@ -2920,7 +2944,8 @@ function GetMascara() {
<option value="00XXXXXXXXXX.">INTERNACIONAL</option>'; <option value="00XXXXXXXXXX.">INTERNACIONAL</option>';
} }
function ApagaUrl($dbcon, $ramal) { function ApagaUrl($dbcon, $ramal)
{
CommandAsterisk2($dbcon, 'DEL ESPERA', $ramal, ''); //executa inser��o na base interna do asterisk CommandAsterisk2($dbcon, 'DEL ESPERA', $ramal, ''); //executa inser��o na base interna do asterisk
CommandAsterisk2($dbcon, 'DEL SIGAME-INTERNO', $ramal, ''); //executa inser��o na base interna do asterisk CommandAsterisk2($dbcon, 'DEL SIGAME-INTERNO', $ramal, ''); //executa inser��o na base interna do asterisk
CommandAsterisk2($dbcon, 'DEL SIGAME-EXTERNO', $ramal, ''); //executa inser��o na base interna do asterisk CommandAsterisk2($dbcon, 'DEL SIGAME-EXTERNO', $ramal, ''); //executa inser��o na base interna do asterisk
@ -2939,14 +2964,16 @@ function ApagaUrl($dbcon, $ramal) {
CommandAsterisk2($dbcon, 'DEL TEMPO-RING-RAMAL', $ramal, ''); CommandAsterisk2($dbcon, 'DEL TEMPO-RING-RAMAL', $ramal, '');
} }
function GetIdGrupoUser($dbcon, $idUser) { function GetIdGrupoUser($dbcon, $idUser)
{
$query = "select gp_id from pbx_grupo_usuario where user_id = '$idUser' limit 1"; $query = "select gp_id from pbx_grupo_usuario where user_id = '$idUser' limit 1";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
return $row[0]; return $row[0];
} }
function GeraExtRamais($dbcon) { function GeraExtRamais($dbcon)
{
try { try {
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
if (empty($conf)) if (empty($conf))
@ -2999,7 +3026,8 @@ function GeraExtRamais($dbcon) {
} }
} }
function GeraException($source, $message, $silent = 0) { function GeraException($source, $message, $silent = 0)
{
if (!$source) { if (!$source) {
if ($silent) if ($silent)
return $message; return $message;
@ -3008,12 +3036,14 @@ function GeraException($source, $message, $silent = 0) {
} }
} }
function WriteFile($handle, $string, $silent = 0) { function WriteFile($handle, $string, $silent = 0)
{
$result = fwrite($handle, $string); $result = fwrite($handle, $string);
GeraException($result, "Não foi possível \"Gravar o Arquivo\"!", $silent); GeraException($result, "Não foi possível \"Gravar o Arquivo\"!", $silent);
} }
function GeraCallback($dbcon, $reloadUra = true, $silent = 0) { function GeraCallback($dbcon, $reloadUra = true, $silent = 0)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
@ -3075,7 +3105,8 @@ function GeraCallback($dbcon, $reloadUra = true, $silent = 0) {
CommandAsterisk($dbcon, 'URA'); CommandAsterisk($dbcon, 'URA');
} }
function GeraDisa($dbcon, $reload = true, $silent = 0) { function GeraDisa($dbcon, $reload = true, $silent = 0)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
@ -3125,7 +3156,8 @@ function GeraDisa($dbcon, $reload = true, $silent = 0) {
} }
} }
function GeraSip($dbcon, $reload) { function GeraSip($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
@ -3227,7 +3259,8 @@ function GeraSip($dbcon, $reload) {
} }
} }
function GeraIax($dbcon, $reload) { function GeraIax($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
@ -3313,7 +3346,8 @@ function GeraIax($dbcon, $reload) {
} }
} }
function GeraDgv($dbcon, $reload) { function GeraDgv($dbcon, $reload)
{
GeraExtRamais($dbcon); GeraExtRamais($dbcon);
if ($reload) { if ($reload) {
@ -3322,7 +3356,8 @@ function GeraDgv($dbcon, $reload) {
} }
} }
function GeraPBX($dbcon, $reload) { function GeraPBX($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
@ -3335,7 +3370,8 @@ function GeraPBX($dbcon, $reload) {
} }
} }
function GeraDahdi($dbcon, $reload) { function GeraDahdi($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
/* /*
@ -3419,8 +3455,7 @@ function GeraDahdi($dbcon, $reload) {
fwrite($escChanDahdi, sprintf("%s\n", $value)); fwrite($escChanDahdi, sprintf("%s\n", $value));
} }
} }
} } else {
else {
if (array_key_exists($key, $dados)) { if (array_key_exists($key, $dados)) {
$value = $dados[$key] ? $dados[$key] : GetDahdiDefaultValue($interface, $key, false); $value = $dados[$key] ? $dados[$key] : GetDahdiDefaultValue($interface, $key, false);
} }
@ -3450,7 +3485,8 @@ function GeraDahdi($dbcon, $reload) {
} }
} }
function GravaDispositivoDahdi($dbcon, $file) { function GravaDispositivoDahdi($dbcon, $file)
{
$arqSystemDahdi = $file; $arqSystemDahdi = $file;
$pathFileDahdi = dirname($arqSystemDahdi); $pathFileDahdi = dirname($arqSystemDahdi);
if (!file_exists($pathFileDahdi)) { if (!file_exists($pathFileDahdi)) {
@ -3617,25 +3653,29 @@ function GravaDispositivoDahdi($dbcon, $file) {
fclose($escSystemDahdi); fclose($escSystemDahdi);
} }
function GetDahdiDefault($interface, $dispo = true) { function GetDahdiDefault($interface, $dispo = true)
{
if ($dispo) { if ($dispo) {
if ($interface == "r2") if ($interface == "r2")
return array("language" => "br", "usecallerid" => "yes", "callwaiting" => "yes", "usecallingpres" => "yes", return array(
"language" => "br", "usecallerid" => "yes", "callwaiting" => "yes", "usecallingpres" => "yes",
"callwaitingcallerid" => "yes", "threewaycalling" => "yes", "transfer" => "yes", "canpark" => "yes", "cancallforward" => "yes", "callwaitingcallerid" => "yes", "threewaycalling" => "yes", "transfer" => "yes", "canpark" => "yes", "cancallforward" => "yes",
"callreturn" => "yes", "signalling" => "mfcr2", "mfcr2_variant" => "br", "echocancel" => "yes", "echocancelwhenbridged" => "no", "callreturn" => "yes", "signalling" => "mfcr2", "mfcr2_variant" => "br", "echocancel" => "yes", "echocancelwhenbridged" => "no",
"echotraining" => "no", "mfcr2_get_ani_first" => "yes", "mfcr2_max_ani" => "20", "mfcr2_max_dnis" => "4", "mfcr2_category" => "national_subscriber", "echotraining" => "no", "mfcr2_get_ani_first" => "yes", "mfcr2_max_ani" => "20", "mfcr2_max_dnis" => "4", "mfcr2_category" => "national_subscriber",
"mfcr2_allow_collect_calls" => "yes", "mfcr2_double_answer" => "no", "rxgain" => "1,0%", "txgain" => "1,0%", "context" => "padrao", "group" => "1", "mfcr2_allow_collect_calls" => "yes", "mfcr2_double_answer" => "no", "rxgain" => "1,0%", "txgain" => "1,0%", "context" => "padrao", "group" => "1",
"channel" => "", "timing" => "0", "coding" => "hdb3"); "channel" => "", "timing" => "0", "coding" => "hdb3"
);
if ($interface == "isdn") if ($interface == "isdn")
return array("switchtype" => "national", "signalling" => "pri_net", "pridialplan" => "euroisdn", "prilocaldialplan" => "euroisdn", "overlapdial" => "yes", "echocancel" => "yes", "echocancelwhenbridged" => "no", "echotraining" => "no", "context" => "", "channel" => "", "group" => "", "txgain" => "-1,0%", "rxgain" => "-1,0%", "coding" => "hdb3"); return array("switchtype" => "national", "signalling" => "pri_net", "pridialplan" => "euroisdn", "prilocaldialplan" => "euroisdn", "overlapdial" => "yes", "echocancel" => "yes", "echocancelwhenbridged" => "no", "echotraining" => "no", "context" => "", "channel" => "", "group" => "", "txgain" => "-1,0%", "rxgain" => "-1,0%", "coding" => "hdb3");
if ($interface == "anl") if ($interface == "anl")
return array('busycount' => '4', 'busydetect' => 'yes', 'callerid' => '', 'channel' => '', 'cidsignalling' => 'dtmf', return array(
'busycount' => '4', 'busydetect' => 'yes', 'callerid' => '', 'channel' => '', 'cidsignalling' => 'dtmf',
'cidstart' => 'ring', 'context' => '', 'echocancel' => 'yes', 'echocancelwhenbridged' => 'no', 'echotraining' => 'no', 'group' => '1', 'cidstart' => 'ring', 'context' => '', 'echocancel' => 'yes', 'echocancelwhenbridged' => 'no', 'echotraining' => 'no', 'group' => '1',
'rxgain' => '-1,0%', 'txgain' => '-1,0%',); 'rxgain' => '-1,0%', 'txgain' => '-1,0%',
} );
else { } else {
if ($interface == "r2") if ($interface == "r2")
@ -3648,12 +3688,14 @@ function GetDahdiDefault($interface, $dispo = true) {
return array(); return array();
} }
function GetDahdiDefaultValue($interface, $field, $dispo = true) { function GetDahdiDefaultValue($interface, $field, $dispo = true)
{
$ar = GetDahdiDefault($interface, $dispo); $ar = GetDahdiDefault($interface, $dispo);
return isset($ar[$field]) ? $ar[$field] : ""; return isset($ar[$field]) ? $ar[$field] : "";
} }
function GetValueSystemDahdi($dados, $field) { function GetValueSystemDahdi($dados, $field)
{
if (($field == 'r2') || ($field == 'isdn')) { if (($field == 'r2') || ($field == 'isdn')) {
$crc4 = trim($dados["crc4"]); $crc4 = trim($dados["crc4"]);
$crc4 = $crc4 != 'no' ? ",$crc4" : ""; $crc4 = $crc4 != 'no' ? ",$crc4" : "";
@ -3701,7 +3743,8 @@ function GetValueSystemDahdi($dados, $field) {
} }
} }
function GeraKhomp($dbcon, $reload) { function GeraKhomp($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
/* /*
@ -3797,7 +3840,8 @@ function GeraKhomp($dbcon, $reload) {
} }
} }
function GeraVoicemail($dbcon, $reload) { function GeraVoicemail($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
@ -3842,7 +3886,8 @@ function GeraVoicemail($dbcon, $reload) {
CommandAsterisk($dbcon, 'VOICE'); CommandAsterisk($dbcon, 'VOICE');
} }
function GeraDigivoice($dbcon, $reload) { function GeraDigivoice($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon); $conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"]; $caminho_producao = $conf["caminho_producao"];
@ -3900,8 +3945,7 @@ function GeraDigivoice($dbcon, $reload) {
if (pg_field_name($result, $i) == "ports") { if (pg_field_name($result, $i) == "ports") {
if (trim($dados[pg_field_name($result, $i)]) != "") if (trim($dados[pg_field_name($result, $i)]) != "")
fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n"); fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n");
} } else {
else {
if (trim($dados[pg_field_name($result, $i)]) != "") if (trim($dados[pg_field_name($result, $i)]) != "")
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n");
} }
@ -3965,7 +4009,8 @@ function GeraDigivoice($dbcon, $reload) {
} }
} }
function GetConfPadrao($dbcon) { function GetConfPadrao($dbcon)
{
$query = "SELECT * FROM pbx_conf_padrao"; $query = "SELECT * FROM pbx_conf_padrao";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
@ -3978,7 +4023,8 @@ function GetConfPadrao($dbcon) {
$url_asterisk = $dados['url_asterisk']; $url_asterisk = $dados['url_asterisk'];
} }
function aupdArq($texto, $qtd) { function aupdArq($texto, $qtd)
{
$a = 0; $a = 0;
foreach ($texto as $key => $value) { foreach ($texto as $key => $value) {
if ($a < $qtd) { if ($a < $qtd) {
@ -3989,7 +4035,8 @@ function aupdArq($texto, $qtd) {
return $param; return $param;
} }
function GetSequencias($nomeTable) { function GetSequencias($nomeTable)
{
$existeTable = 0; $existeTable = 0;
$result = pg_query('begin'); $result = pg_query('begin');
@ -4016,7 +4063,8 @@ function GetSequencias($nomeTable) {
return $seq; return $seq;
} }
function VerDependenciaTronco($id) { function VerDependenciaTronco($id)
{
try { try {
$query = "select count(*) from pbx_rotas_saida_canais where canal = (select nome from pbx_troncos_sip where id = '$id')"; $query = "select count(*) from pbx_rotas_saida_canais where canal = (select nome from pbx_troncos_sip where id = '$id')";
$result = pg_query($query); $result = pg_query($query);
@ -4045,7 +4093,8 @@ function VerDependenciaTronco($id) {
} }
} }
function GetDependenciaTronco($id) { function GetDependenciaTronco($id)
{
try { try {
$query = "select 'Rota de Saída' as dep, c.id, c.nome from pbx_rotas_saida_canais a, pbx_troncos b, pbx_rotas_saida c where a.canal = b.nome and a.id_rota = c.id and b.id = '$id' $query = "select 'Rota de Saída' as dep, c.id, c.nome from pbx_rotas_saida_canais a, pbx_troncos b, pbx_rotas_saida c where a.canal = b.nome and a.id_rota = c.id and b.id = '$id'
union union
@ -4069,11 +4118,10 @@ select 'Contextos' as dep, c.id, c.nome from pbx_contextos_canais a, pbx_tronco
} }
} }
function GetSetUra($db, $id) { function GetSetUra($db, $id)
{
$query = sprintf("select '' from pbx_ura_destino where id_ura = %s and trim(tipo) = 'integativa' and trim(numero) = '_X.'", QuotedStr($id)); $query = sprintf("select '' from pbx_ura_destino where id_ura = %s and trim(tipo) = 'integativa' and trim(numero) = '_X.'", QuotedStr($id));
$result = pg_query($db, $query); $result = pg_query($db, $query);
return pg_num_rows($result) ? true : false; return pg_num_rows($result) ? true : false;
} }
?>

4
admin/popula.php

@ -4,6 +4,7 @@ if (isset($_GET["tipo"])) {
session_start(); session_start();
include('bd.php'); include('bd.php');
include('util/funcoesApl.php'); include('util/funcoesApl.php');
include('util/util.php');
} }
define("PROTO_XML", "XML"); define("PROTO_XML", "XML");
define("PROTO_TXT", "TEXT"); define("PROTO_TXT", "TEXT");
@ -88,8 +89,9 @@ function _GetAcoes($dbcon, $force, $id, $tipo, $tipo2, $id_ura, $proto = PROTO_X
$query2 = "SELECT * FROM pbx_queues_grupos where status='A' and org_id = {$org_id} order by nome asc"; $query2 = "SELECT * FROM pbx_queues_grupos where status='A' and org_id = {$org_id} order by nome asc";
$result2 = pg_query($dbcon, $query2); $result2 = pg_query($dbcon, $query2);
while ($dados2 = pg_fetch_array($result2)) { while ($dados2 = pg_fetch_array($result2)) {
$fila = GravaNomeOrganizacao($dados2['nome']);
$dadosArq[$idxArq][0] = $dados2['numero']; $dadosArq[$idxArq][0] = $dados2['numero'];
$dadosArq[$idxArq][1] = $dados2['nome']; $dadosArq[$idxArq][1] = $fila;
$idxArq++; $idxArq++;
} }
} else if ($tipo == "horarios") { } else if ($tipo == "horarios") {

75
admin/queues.php

@ -9,7 +9,7 @@ $org_id = GetOrganizacao();
$status = isset($_REQUEST["status"]) ? trim($_REQUEST["status"]) : 'A'; $status = isset($_REQUEST["status"]) ? trim($_REQUEST["status"]) : 'A';
if ($acao == "deleta") { if ($acao == "deleta") {
$query = "select numero, nome from pbx_queues_grupos where id=$id"; $query = "SELECT numero, nome FROM pbx_queues_grupos WHERE id=$id";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
if ($dados = pg_fetch_array($result)) { if ($dados = pg_fetch_array($result)) {
@ -18,19 +18,19 @@ if ($acao == "deleta") {
} }
//Remove o dac da interface de supervisao //Remove o dac da interface de supervisao
$query = "update pbx_queues_grupos set status='I', opcao = null, acao = null, context = null where id='$id'"; $query = "UPDATE pbx_queues_grupos set status='I', opcao = null, acao = null, context = null where id='$id'";
pg_query($dbcon, $query); pg_query($dbcon, $query);
$query = "delete from pbx_supervisor_dacs where trim(dac) = trim((select nome from pbx_dacs where id = '$id'))"; $query = "DELETE FROM pbx_supervisor_dacs WHERE trim(dac) = trim((select nome from pbx_dacs where id = '$id'))";
pg_query($dbcon, $query); pg_query($dbcon, $query);
$query = "delete from pbx_fila_audios where id = '$id' "; $query = "DELETE FROM pbx_fila_audios WHERE id = '$id' ";
pg_query($dbcon, $query); pg_query($dbcon, $query);
$query = "delete from pbx_queues_membros where id_fila = '$id'"; $query = "DELETE FROM pbx_queues_membros WHERE id_fila = '$id'";
pg_query($dbcon, $query); pg_query($dbcon, $query);
$query = "delete from pbx_prioridades_atendimento where dac = '$nomeFila'"; $query = "DELETE FROM pbx_prioridades_atendimento WHERE dac = '$nomeFila'";
pg_query($dbcon, $query); pg_query($dbcon, $query);
// //gera arquivos e executa o reload dos dados no asterisk // //gera arquivos e executa o reload dos dados no asterisk
@ -53,7 +53,6 @@ if ($acao == "deleta") {
<input name="numRamal" type="text" id="numRamal" value="<?php echo $_REQUEST["numRamal"]; ?>" size="20"> <?php //onkeyup="ConsultaRamal('index.php?idProg=10002&pbxRequest=1', event);" <input name="numRamal" type="text" id="numRamal" value="<?php echo $_REQUEST["numRamal"]; ?>" size="20"> <?php //onkeyup="ConsultaRamal('index.php?idProg=10002&pbxRequest=1', event);"
?> ?>
</td> </td>
<td align="left" nowrap="nowrap"> <td align="left" nowrap="nowrap">
<div class="geral" nowrap="nowrap"> <div class="geral" nowrap="nowrap">
<input name="status" class="clean" type="radio" value="A" <?= $status == "A" ? 'checked' : ''; ?>>Ativa <input name="status" class="clean" type="radio" value="A" <?= $status == "A" ? 'checked' : ''; ?>>Ativa
@ -61,10 +60,8 @@ if ($acao == "deleta") {
<input name="status" class="clean" type="radio" value="T" <?= $status == "T" ? 'checked' : ''; ?>>Todos <input name="status" class="clean" type="radio" value="T" <?= $status == "T" ? 'checked' : ''; ?>>Todos
</div> </div>
</td> </td>
<td> <td>
<input name="locaRamal" type="submit" id="locaRamal" value="Localizar"> <?php //onClick="ConsultaRamal('index.php?idProg=10002&pbxRequest=1&pesquisa=1', 0);" <input name="locaRamal" type="submit" id="locaRamal" value="Localizar">
?>
</td> </td>
</tr> </tr>
</table> </table>
@ -74,7 +71,6 @@ if ($acao == "deleta") {
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2"> <table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2">
@ -129,7 +125,11 @@ if ($acao == "deleta") {
?> ?>
<tr> <tr>
<td width="50" align="center"><?php echo $dados['id']; ?></td> <td width="50" align="center"><?php echo $dados['id']; ?></td>
<td><a href="#" style="color: #000" onclick="abre_janela('780', '560', 'index.php?idProg=11002&pbxRequest=1&acao=edita&id=<?php echo $dados['id']; ?><?= $params; ?>');"><?php echo $dados['nome']; ?></a></td> <td>
<a href="#" style="color: #000" onclick="abre_janela('780', '560', 'index.php?idProg=11002&pbxRequest=1&acao=edita&id=<?php echo $dados['id']; ?><?= $params; ?>');">
<?= GravaNomeOrganizacao($dados['nome']); ?>
</a>
</td>
<td width="120"><?php echo $dados['numero']; ?></td> <td width="120"><?php echo $dados['numero']; ?></td>
<td width="250"><?php echo $strategia[$dados['strategy']]; ?></td> <td width="250"><?php echo $strategia[$dados['strategy']]; ?></td>
<td width="80"><?php echo $dados['timeout2']; ?></td> <td width="80"><?php echo $dados['timeout2']; ?></td>
@ -173,19 +173,15 @@ if ($acao == "deleta") {
</table> </table>
</td> </td>
</tr> </tr>
<?php <?php $z++; ?>
$z++; <?php } ?>
} <?php if ($z == 0) { ?>
if ($z == 0) {
?>
<tr align="center" valign="middle" bordercolor="#999999" class="labels"> <tr align="center" valign="middle" bordercolor="#999999" class="labels">
<td colspan="8"> <td colspan="8">
<div align="center" class="info"><img src="images/shutdown.gif" width="24" height="24" border="0" align="absmiddle" /> Não foram encontrados registros </div> <div align="center" class="info"><img src="images/shutdown.gif" width="24" height="24" border="0" align="absmiddle" /> Não foram encontrados registros </div>
</td> </td>
</tr> </tr>
<?php <?php } ?>
}
?>
<tr> <tr>
<th align="center" colspan="8"> <th align="center" colspan="8">
<table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2"> <table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2">
@ -200,49 +196,10 @@ if ($acao == "deleta") {
</td> </td>
</tr> </tr>
</table> </table>
<div id="campos" style="display:none" align="center"> <div id="campos" style="display:none" align="center">
<iframe src="" frameborder="0" scrolling="no" name="geral" id="geral" align="middle"></iframe> <iframe src="" frameborder="0" scrolling="no" name="geral" id="geral" align="middle"></iframe>
</div> </div>
<div id="mensagem" style="display:none;width:300;height:auto">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr bordercolor="#FFFFFF" bgcolor="#FFFFFF" style="border-color:#FFFFFF">
<td width="5%" align="center" style="border: none;font-family: Arial, Helvetica, sans-serif;font-size: 16px;color: #990000;background-color: #FFFFFF;">
</td>
<td width="95%" align="center" bgcolor="#FFFFFF" style="border: none;font-family: Arial, Helvetica, sans-serif;font-size: 16px;color: #990000;background-color: #FFFFFF;">
<div align="center">
<input name="mens" type="button" value="mens" style="border: none;font-family: Arial, Helvetica, sans-serif;font-size: 14px;color: #990000;background-color: #FFFFFF;" id="mens">
</div>
</td>
</tr>
<tr bordercolor="#FFFFFF" bgcolor="#FFFFFF" style="border-color:#FFFFFF">
<td colspan="2" align="center" bordercolor="#FFFFFF" bgcolor="#FFFFFF" style="border-color:#FFFFFF"><span style="color: #FFFFFF"> _
</span>
</td>
</tr>
<tr bordercolor="#FFFFFF" bgcolor="#FFFFFF" style="border-color:#FFFFFF">
<td colspan="2" bordercolor="#FFFFFF" bgcolor="#FFFFFF" style="border-color:#FFFFFF">
<table width="100%" border="0" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" style="border-color:#FFFFFF">
<tr>
<td width="50%" align="center" bordercolor="#FFFFFF" bgcolor="#FFFFFF" style="border-color:#FFFFFF">
<div align="center">
<button id="todos" class="botoes">Sim</button>
</div>
</td>
<td width="50%" align="center" bordercolor="#FFFFFF" bgcolor="#FFFFFF" style="border-color:#FFFFFF">
<div align="center"> <button id="cancela" class="botoes">N&atilde;o</button>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body> </body>
</html> </html>

2
admin/uraOpcoes.php

@ -161,7 +161,7 @@ $nome_ura = $_GET['nome_ura'];
<tr> <tr>
<td> <td>
<div align="center"> <div align="center">
<input name="numero" type="text" class="validate[required,length[0,100]] caixas" id="opcao2" size="10" maxlength="10" value="<?= ($acao2 == 'edita') ? $numero : $proximo_numero; ?>" /> <input name="numero" type="text" class="validate[required] caixas" id="opcao2" size="10" maxlength="10" value="<?= ($acao2 == 'edita') ? $numero : $proximo_numero; ?>" />
</div> </div>
</td> </td>
<td> <td>

11
ajaxPhp.php

@ -22,4 +22,13 @@ if (isset($_GET['GetUser'])) {
echo empty($ret) ? "Registro não encontrado!" : $ret; echo empty($ret) ? "Registro não encontrado!" : $ret;
} }
} }
?>
if(isset($_GET['org_id'])){
$organizacao = GetAllOrganizacao();
foreach($organizacao as $v){
if($v['id'] == $_GET['org_id']){
$_SESSION['SSEmpresaPadrao'] = $v['id'];
break;
}
}
}

4
asterisk/etc_asterisk/editado_manual/extensions_padrao.conf

@ -326,7 +326,9 @@ exten => _X.,1,Macro(planodediscagem,${EXTEN},${DAC},${CONTEXT:0:3})
exten => _X.,n,Hangup() exten => _X.,n,Hangup()
[macro-planodediscagem] [macro-planodediscagem]
exten => s,1,Set(EXTENDESTINO=${ARG1}) exten => s,1,AGI(ramal_empresa.php,${CALLERID(num)})
exten => s,n,ExecIf($["${ISNULL(${ID_EMPRESA})}" = "0"]?Set(CDR(org_id)=${ID_EMPRESA}))
exten => s,n,ExecIf($["${ISNULL(${ID_EMPRESA})}" = "0"]?Set(EXTENDESTINO=${ID_EMPRESA}${ARG1}))
exten => s,n,Macro(callerid,INTERNO) exten => s,n,Macro(callerid,INTERNO)
exten => s,n,GotoIf($["${ARG3}" = "ura"]?discadireto) exten => s,n,GotoIf($["${ARG3}" = "ura"]?discadireto)
exten => s,n,GotoIf($["${ISNULL(${ARG2})}" = "0"]?chamadadac) exten => s,n,GotoIf($["${ISNULL(${ARG2})}" = "0"]?chamadadac)

50
asterisk/var_lib_asterisk/agi-bin/agente_fila.php

@ -5,6 +5,9 @@ include_once('util/constantes.php');
include_once('util/util.php'); include_once('util/util.php');
include_once('funcoes/shared.php'); include_once('funcoes/shared.php');
error_reporting(E_ALL);
ini_set('display_errors', 0);
ob_implicit_flush(true); ob_implicit_flush(true);
set_time_limit(6); set_time_limit(6);
$in = fopen("php://stdin", "r"); $in = fopen("php://stdin", "r");
@ -13,7 +16,8 @@ $stdlog = fopen("/var/log/asterisk/agente_fila.log", "w");
// toggle debugging output (more verbose) // toggle debugging output (more verbose)
$debug = true; $debug = true;
function read() { function read()
{
global $in, $debug, $stdlog; global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096)); $input = str_replace("\n", "", fgets($in, 4096));
if ($debug) if ($debug)
@ -21,12 +25,14 @@ function read() {
return $input; return $input;
} }
function errlog($line) { function errlog($line)
{
global $err; global $err;
echo "VERBOSE \"$line\"\n"; echo "VERBOSE \"$line\"\n";
} }
function write($line) { function write($line)
{
global $debug, $stdlog; global $debug, $stdlog;
if ($debug) if ($debug)
fputs($stdlog, "write: $line\n"); fputs($stdlog, "write: $line\n");
@ -55,10 +61,12 @@ if ($DISPOSITIVO != 'app-callcenter/n') {
exit; exit;
} }
write("GET VARIABLE DAC"); write("GET VARIABLE DAC");
$fila = substr(strrchr(read(), "("), 1, -1); $fila = substr(strrchr(read(), "("), 1, -1);
write("GET VARIABLE ID_EMPRESA");
$id_empresa = substr(strrchr(read(), "("), 1, -1);
//Verifica se a ligacao atendida foi realizada por um agente //Verifica se a ligacao atendida foi realizada por um agente
//write("GET VARIABLE CONSULTA"); //write("GET VARIABLE CONSULTA");
//$consulta = substr(strrchr(read(), "("), 1, -1); //$consulta = substr(strrchr(read(), "("), 1, -1);
@ -138,8 +146,8 @@ $protocolo=GeraProtocolo($conexao, $UNIQUEID);
* Pesquisa se existe informaçoes retornadas pela integração ativa. * Pesquisa se existe informaçoes retornadas pela integração ativa.
*/ */
$identificador = ''; $identificador = '';
$query = "select retorno_cliente from pbx_integracao_reg where (reg_uniqueid = '$UNIQUEID' or reg_uniqueid_old = '$UNIQUEID_CALLBACK')"; $query = "SELECT retorno_cliente FROM pbx_integracao_reg WHERE (reg_uniqueid = '$UNIQUEID' OR reg_uniqueid_old = '$UNIQUEID_CALLBACK')";
$result = pg_query($query); $result = pg_query($conexao, $query);
if (pg_num_rows($result)) { if (pg_num_rows($result)) {
$dados = pg_fetch_array($result); $dados = pg_fetch_array($result);
$identificador = $dados['retorno_cliente']; $identificador = $dados['retorno_cliente'];
@ -148,8 +156,10 @@ if (pg_num_rows($result)) {
/* /*
* Modo de atendimento * Modo de atendimento
*/ */
$query = "select upper(a.modo_atendimento) as modo_atendimento, a.ramal, b.id as fila_id, a.canal_agente from pbx_supervisor_agentes a, pbx_dacs b where b.nome = a.dac and matricula = '$MATRICULA'"; $query = "SELECT upper(a.modo_atendimento) AS modo_atendimento, a.ramal, b.id as fila_id, a.canal_agente
$result = pg_query($query); FROM pbx_supervisor_agentes a, pbx_dacs b
WHERE b.nome = a.dac AND matricula = '$MATRICULA'";
$result = pg_query($conexao, $query);
$dados = pg_fetch_array($result); $dados = pg_fetch_array($result);
$automatico = $dados[0] != 'MANUAL'; $automatico = $dados[0] != 'MANUAL';
$ramalAgente = $dados['ramal']; $ramalAgente = $dados['ramal'];
@ -157,8 +167,13 @@ $filaId = $dados['fila_id'];
$displayFone = $FONE . '-' . $TRONCO; $displayFone = $FONE . '-' . $TRONCO;
$canalAgente = $dados['canal_agente']; $canalAgente = $dados['canal_agente'];
$query = "update pbx_supervisor_agentes set status = 'OCUPADO', duracao = 'now()', origem_destino = '$displayFone', canal = '$CANAL', uniqueid = '$UNIQUEID', uniqueid2 = '$UNIQUEID', cont_identificador = '$identificador', tipo_ligacao = 'E', protocolo = '$protocolo' where matricula = '$MATRICULA' and dac = '$fila'"; $query = "UPDATE pbx_supervisor_agentes SET status = 'OCUPADO', duracao = 'now()', origem_destino = '$displayFone',
pg_query($query); canal = '$CANAL', uniqueid = '$UNIQUEID', uniqueid2 = '$UNIQUEID', cont_identificador = '$identificador',
tipo_ligacao = 'E', protocolo = '$protocolo'
WHERE matricula = '$MATRICULA'
AND dac = '$fila'";
pg_query($conexao, $query);
write("GET VARIABLE MATRICULA-ORIGEM"); write("GET VARIABLE MATRICULA-ORIGEM");
$MATRICULAORIGEM = substr(strrchr(read(), "("), 1, -1); $MATRICULAORIGEM = substr(strrchr(read(), "("), 1, -1);
@ -179,9 +194,11 @@ if ($MATRICULAORIGEM) {
// pg_query($query); // pg_query($query);
} }
$query = "select itgm_id from pbx_integracao_reg a, pbx_integracao_metodo b where b.itgm_id_pai = a.reg_id_metodo and b.evento = 3 and a.reg_uniqueid = '$UNIQUEID'"; $query = "SELECT itgm_id FROM pbx_integracao_reg a, pbx_integracao_metodo b
$result = pg_query($query); WHERE b.itgm_id_pai = a.reg_id_metodo
write($query); AND b.evento = 3
AND a.reg_uniqueid = '$UNIQUEID'";
$result = pg_query($conexao, $query);
if (pg_num_rows($result)) { if (pg_num_rows($result)) {
/* /*
@ -199,8 +216,8 @@ if (pg_num_rows($result)) {
$str = sprintf("/var/lib/asterisk/scripts/integracao/eventoIntegra.php %s %s %s %s %s %s %s %s %s %s %s > /dev/null &", $idMetodo, $UNIQUEID, $MATRICULA, $ramalAgente, $FONE, $TRONCO, $filaId, $protoAgente, $URA, $dataBilhete, 'E'); $str = sprintf("/var/lib/asterisk/scripts/integracao/eventoIntegra.php %s %s %s %s %s %s %s %s %s %s %s > /dev/null &", $idMetodo, $UNIQUEID, $MATRICULA, $ramalAgente, $FONE, $TRONCO, $filaId, $protoAgente, $URA, $dataBilhete, 'E');
write($str); write($str);
@exec($str); @exec($str);
$query = "update pbx_integracao_reg set reg_ramal = '$ramalAgente' where reg_uniqueid = '$UNIQUEID'"; $query = "UPDATE pbx_integracao_reg SET reg_ramal = '$ramalAgente' WHERE reg_uniqueid = '$UNIQUEID'";
$result = pg_query($query); $result = pg_query($conexao, $query);
} }
//Identifica o ramal que atendeu a fila //Identifica o ramal que atendeu a fila
@ -217,10 +234,9 @@ if (!$RAMAL) {
$RAMAL = $RAMAL[0]; $RAMAL = $RAMAL[0];
} }
$query = "insert into ast_bilhetes_complemento (uniqueid2,direcao,destino) values ('$UNIQUEID','fila-ramal','$RAMAL')"; $query = "INSERT INTO ast_bilhetes_complemento (uniqueid2,direcao,destino,org_id) VALUES ('$UNIQUEID','fila-ramal','$RAMAL',$id_empresa)";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
write("SET VARIABLE __RAMALAGENTE $RAMAL"); //PARA O QUE EH UTILIZADO??? write("SET VARIABLE __RAMALAGENTE $RAMAL"); //PARA O QUE EH UTILIZADO???
read(); read();

206
asterisk/var_lib_asterisk/agi-bin/pbx_complemento.php

@ -13,7 +13,8 @@ $stdlog = fopen("/var/log/asterisk/pbx_complemento.log", "w");
$debug = true; $debug = true;
// Do function definitions before we start the main loop // Do function definitions before we start the main loop
function read() { function read()
{
global $in, $debug, $stdlog; global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096)); $input = str_replace("\n", "", fgets($in, 4096));
if ($debug) { if ($debug) {
@ -22,10 +23,12 @@ function read() {
return $input; return $input;
} }
function write($line) { function write($line)
{
global $debug, $stdlog; global $debug, $stdlog;
if ($debug) if ($debug) {
fputs($stdlog, "write: $line\n"); fputs($stdlog, "write: $line\n");
}
echo $line . "\n"; echo $line . "\n";
} }
@ -64,7 +67,7 @@ if (!$consulta) {
$contextoramal = 'padrao'; $contextoramal = 'padrao';
} }
$query = "select matricula,dac,status,chamada_classificado from pbx_supervisor_agentes where ramal = '$origem' and coalesce(trim(uniqueid), '') = ''"; $query = "SELECT matricula, dac, status, chamada_classificado FROM pbx_supervisor_agentes WHERE ramal = '$origem' AND coalesce(trim(uniqueid), '') = ''";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
$row = @pg_fetch_array($result); $row = @pg_fetch_array($result);
$resultado = pg_num_rows($result); $resultado = pg_num_rows($result);
@ -85,14 +88,9 @@ if (!$consulta) {
$accountcode = $agi['accountcode']; $accountcode = $agi['accountcode'];
if (!$accountcode) { if (!$accountcode) {
// write("EXEC PauseQueueMember |Agent/$matricula");
write("EXEC PauseQueueMember ,Local/$origem@app-callcenter/n"); write("EXEC PauseQueueMember ,Local/$origem@app-callcenter/n");
read(); read();
// write("SET VARIABLE __PAUSA $status");
// read();
if (strtoupper($status) == 'PAUSA') { if (strtoupper($status) == 'PAUSA') {
write("EXEC Playback appsounds/atendente_em_pausa_retire_da_pausa"); write("EXEC Playback appsounds/atendente_em_pausa_retire_da_pausa");
read(); read();
@ -106,53 +104,14 @@ if (!$consulta) {
* Verifica se a classificao esta ativa * Verifica se a classificao esta ativa
* Verifica se e exigida a classificao * Verifica se e exigida a classificao
*/ */
VerificaClassificacao($conexao, $fila, $matricula, $origem, $uniqueid, $classifica, "SAINTE"); VerificaClassificacao($conexao, $fila, $matricula, $origem, $uniqueid, $classifica, "SAINTE");
// $query = "select b.prm_agente_classifica, a.exige_classificacao as prm_exige_classificacao
// from pbx_queues_grupos a, pbx_parametros b
// where nome = '$fila'";
//
// $result = pg_query($conexao, $query);
// $dados = pg_fetch_row($result);
// if ($dados[0] && $dados[1]) {
// //verifica se a chamada ja esta classificada
// if ($classifica == 0) {
// write("EXEC Playback appsounds/chamada_nao_classificada");
// read();
// write("HANGUP");
// read();
// exit;
// }
// else {
// $query = "update pbx_supervisor_agentes set origem_destino = '$destino',canal_agente = '$canal_agente' , status = 'OCUPADO',duracao = 'now()',tipo_ligacao = 'S',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$origem'";
// $result = pg_query($conexao, $query);
// }
//}
// else {
// $query = "update pbx_supervisor_agentes set origem_destino = '$destino',canal_agente = '$canal_agente' , status = 'OCUPADO',duracao = 'now()',tipo_ligacao = 'S',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$origem'";
// $result = pg_query($conexao, $query);
// }
/* /*
* Função retorna numero de Protocolo de Atendimento para o agente * Função retorna numero de Protocolo de Atendimento para o agente
*/ */
$protocolo = GeraProtocolo($conexao, $uniqueid); $protocolo = GeraProtocolo($conexao, $uniqueid);
// $tentativa = 0;
// while (true) { $query = "UPDATE pbx_supervisor_agentes SET protocolo = '$protocolo', origem_destino = '$destino',canal_agente = '$canal_agente' , status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'S',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' WHERE ramal = '$origem'";
// $proto = @GetProto($conexao, $uniqueid);
// if ($proto == '99') {
// $proto = '0000-000000';
// break;
// }
//
// if (!empty($proto) || $tentativa >= NUM_TENTATIVAS_GERA_PROTO) {
// break;
// }
// $tentativa++;
// }
$query = "update pbx_supervisor_agentes set protocolo = '$protocolo', origem_destino = '$destino',canal_agente = '$canal_agente' , status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'S',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$origem'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
// write("EXEC PauseQueueMember |Agent/$matricula"); // write("EXEC PauseQueueMember |Agent/$matricula");
@ -198,11 +157,14 @@ $uniqueid = $agi['uniqueid'];
$contexto = $argv[1]; $contexto = $argv[1];
$destino = $agi['extension']; $destino = $agi['extension'];
write("GET VARIABLE ID_EMPRESA");
$id_empresa = substr(strrchr(read(), "("), 1, -1);
if (strtolower($contexto) == 'ext-transferencia') { if (strtolower($contexto) == 'ext-transferencia') {
mostra_parametro("EXT_TRANSFERENCIA"); mostra_parametro("EXT_TRANSFERENCIA");
write("GET VARIABLE IDORIGEM"); write("GET VARIABLE IDORIGEM");
$idorigem = substr(strrchr(read(), "("), 1, -1); $idorigem = substr(strrchr(read(), "("), 1, -1);
$result = insert_padrao($conexao, $uniqueid, 'transfer', $destino); $result = insert_padrao($conexao, $uniqueid, 'transfer', $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else if (strtolower($contexto) == 'macro-dial-interno') { } else if (strtolower($contexto) == 'macro-dial-interno') {
mostra_parametro("MACRO_DIAL_INTERNO"); mostra_parametro("MACRO_DIAL_INTERNO");
write("GET VARIABLE IDORIGEM"); write("GET VARIABLE IDORIGEM");
@ -211,30 +173,31 @@ if (strtolower($contexto) == 'ext-transferencia') {
$destino = $argv[3]; $destino = $argv[3];
if ($idorigem) { if ($idorigem) {
$result = insert_padrao($conexao, $idorigem, $direcao, $destino); $result = insert_padrao($conexao, $idorigem, $direcao, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
$result = insert_padrao($conexao, $uniqueid, $direcao, $destino); $result = insert_padrao($conexao, $uniqueid, $direcao, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} else if (strtolower($contexto) == 'app-conta-senha') { } else if (strtolower($contexto) == 'app-conta-senha') {
mostra_parametro("APP_CONTA_SENHA"); mostra_parametro("APP_CONTA_SENHA");
write("GET VARIABLE IDORIGEM"); write("GET VARIABLE IDORIGEM");
$idorigem = substr(strrchr(read(), "("), 1, -1); $idorigem = substr(strrchr(read(), "("), 1, -1);
$conta = $argv[2]; $conta = $argv[2];
$destino = $argv[3]; $destino = $argv[3];
$query = "select id from pbx_cs_usuarios where matricula = '$conta' and upper(status) = upper('a')"; $query = "SELECT id FROM pbx_cs_usuarios WHERE matricula = '$conta' AND upper(status) = upper('a')";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
$row = @pg_fetch_array($result); $row = @pg_fetch_array($result);
$id_usuario = $row['id']; $id_usuario = $row['id'];
if ($idorigem) { if ($idorigem) {
$result = insert_padrao($conexao, $idorigem, $contexto, $destino, $conta, $id_usuario); $result = insert_padrao($conexao, $idorigem, $contexto, $destino, $conta, $id_usuario, 'null', 'null', $id_empresa);
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
$result = insert_padrao($conexao, $uniqueid, $contexto, $destino, $conta, $id_usuario); $result = insert_padrao($conexao, $uniqueid, $contexto, $destino, $conta, $id_usuario, 'null', 'null', $id_empresa);
} }
} else if (strtolower($contexto) == 'saida-pstn') { } else if (strtolower($contexto) == 'saida-pstn') {
mostra_parametro("SAIDA_PSTN"); mostra_parametro("SAIDA_PSTN");
@ -242,7 +205,7 @@ if (strtolower($contexto) == 'ext-transferencia') {
$idorigem = substr(strrchr(read(), "("), 1, -1); $idorigem = substr(strrchr(read(), "("), 1, -1);
$ramal = strtolower($agi["callerid"]); $ramal = strtolower($agi["callerid"]);
$query = "select matricula,dac from pbx_supervisor_agentes where ramal = '$ramal'"; $query = "SELECT matricula,dac FROM pbx_supervisor_agentes WHERE ramal = '$ramal'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
$row = @pg_fetch_array($result); $row = @pg_fetch_array($result);
$matricula = $row['matricula']; $matricula = $row['matricula'];
@ -251,27 +214,27 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) { if ($idorigem) {
if ($matricula) { if ($matricula) {
//$query = "select count(*) from ast_bilhetes_complemento where uniqueid2 = '$idorigem' and conta = '$matricula' and direcao = 'app-conta-senha'"; //$query = "select count(*) from ast_bilhetes_complemento where uniqueid2 = '$idorigem' and conta = '$matricula' and direcao = 'app-conta-senha'";
$query = "select conta from ast_bilhetes_complemento where uniqueid2 = '$idorigem' and direcao = 'app-conta-senha'"; $query = "SELECT conta FROM ast_bilhetes_complemento WHERE uniqueid2 = '$idorigem' AND direcao = 'app-conta-senha'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
$row = @pg_fetch_array($result); $row = @pg_fetch_array($result);
$conta = $row['conta']; $conta = $row['conta'];
if ($conta) { if ($conta) {
if ($conta == $matricula) { if ($conta == $matricula) {
$result = insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', $matricula, $dac); $result = insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', $matricula, $dac, $id_empresa);
} else { } else {
insert_padrao($conexao, $idorigem, $contexto, $destino); insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} else { } else {
$result = insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', $matricula, $dac); $result = insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', $matricula, $dac, $id_empresa);
} }
} else { } else {
insert_padrao($conexao, $idorigem, $contexto, $destino); insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} else { } else {
if ($matricula) { if ($matricula) {
$query = "select conta from ast_bilhetes_complemento where uniqueid2 = '$uniqueid' and direcao = 'app-conta-senha'"; $query = "SELECT conta FROM ast_bilhetes_complemento WHERE uniqueid2 = '$uniqueid' AND direcao = 'app-conta-senha'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
$row = @pg_fetch_array($result); $row = @pg_fetch_array($result);
$conta = $row['conta']; $conta = $row['conta'];
@ -280,21 +243,21 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($conta == $matricula) { if ($conta == $matricula) {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
$result = insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', $matricula, $dac); $result = insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', $matricula, $dac, $id_empresa);
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
insert_padrao($conexao, $idorigem, $contexto, $destino); insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
$result = insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', $matricula, $dac); $result = insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', $matricula, $dac, $id_empresa);
} }
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} }
} else if (strtolower($contexto) == 'ext-ramais') { } else if (strtolower($contexto) == 'ext-ramais') {
@ -320,22 +283,22 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) { if ($idorigem) {
if ($idorigem == $uniqueid) { if ($idorigem == $uniqueid) {
insert_padrao($conexao, $idorigem, $tipo, $destino); insert_padrao($conexao, $idorigem, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else { } else {
if ($monitorado) { if ($monitorado) {
insert_padrao($conexao, $idorigem, $tipo, $destino); insert_padrao($conexao, $idorigem, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else { } else {
insert_padrao($conexao, $uniqueid, $tipo, $destino); insert_padrao($conexao, $uniqueid, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} }
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
insert_padrao($conexao, $uniqueid, $tipo, $destino); insert_padrao($conexao, $uniqueid, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
//Monitoramento Ligações Recebidas CallCenter //Monitoramento Ligações Recebidas CallCenter
//$query = "select matricula,dac,status from pbx_supervisor_agentes where ramal = '$destino' and upper(status) in ('LIVRE','PAUSA')"; //$query = "select matricula,dac,status from pbx_supervisor_agentes where ramal = '$destino' and upper(status) in ('LIVRE','PAUSA')";
$query = "select matricula,dac,status,chamada_classificado,upper(modo_atendimento) as modo_atendimento from pbx_supervisor_agentes where ramal = '$destino'"; $query = "SELECT matricula,dac,status,chamada_classificado,upper(modo_atendimento) AS modo_atendimento FROM pbx_supervisor_agentes WHERE ramal = '$destino'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
$row = @pg_fetch_array($result); $row = @pg_fetch_array($result);
$resultado = pg_num_rows($result); $resultado = pg_num_rows($result);
@ -346,7 +309,6 @@ if (strtolower($contexto) == 'ext-transferencia') {
$modo_atendimento = $row['modo_atendimento']; $modo_atendimento = $row['modo_atendimento'];
$origem = $agi['callerid']; $origem = $agi['callerid'];
if ($modo_atendimento == 'MANUAL') { if ($modo_atendimento == 'MANUAL') {
$canal_agente = $agi['channel']; $canal_agente = $agi['channel'];
} else { } else {
@ -355,8 +317,6 @@ if (strtolower($contexto) == 'ext-transferencia') {
read(); read();
} }
//Se houver agente logado //Se houver agente logado
if ($resultado) { if ($resultado) {
switch (strtoupper($status)) { switch (strtoupper($status)) {
@ -373,51 +333,13 @@ if (strtolower($contexto) == 'ext-transferencia') {
* Verifica se e exigida a classificao * Verifica se e exigida a classificao
*/ */
VerificaClassificacao($conexao, $fila, $matricula, $destino, $uniqueid, $classifica, "ENTRANTE"); VerificaClassificacao($conexao, $fila, $matricula, $destino, $uniqueid, $classifica, "ENTRANTE");
// $query = "select b.prm_agente_classifica, a.exige_classificacao as prm_exige_classificacao
// from pbx_queues_grupos a, pbx_parametros b
// where nome = '$fila'";
//
// $result = pg_query($conexao, $query);
// $dados = pg_fetch_row($result);
// if ($dados[0] && $dados[1]) {
// //verifica se a chamada já está classificada
// if ($classifica == 0) {
// write("SET VARIABLE __CLASSIFICADA NAO");
// read();
// exit;
// break;
// }
// else {
// $query = "update pbx_supervisor_agentes set origem_destino = '$origem',status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'E',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$destino'";
// $result = pg_query($conexao, $query);
// }
//}
// else {
// $query = "update pbx_supervisor_agentes set origem_destino = '$origem',status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'E',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$destino'";
// $result = pg_query($conexao, $query);
// }
/* /*
* Função retorna numero de Protocolo de Atendimento para o agente * Função retorna numero de Protocolo de Atendimento para o agente
*/ */
$protocolo = GeraProtocolo($conexao, $uniqueid); $protocolo = GeraProtocolo($conexao, $uniqueid);
// $tentativa = 0;
// while (true) { $query = "UPDATE pbx_supervisor_agentes SET protocolo = '$protocolo', canal = '$canal', origem_destino = '$origem',status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'E',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$destino'";
// $proto = @GetProto($conexao, $uniqueid, $agente);
// if ($proto == '99') {
// $proto = '0000-000000';
// break;
// }
//
// if (!empty($proto) || $tentativa >= NUM_TENTATIVAS_GERA_PROTO) {
// break;
// }
// $tentativa++;
// }
$query = "update pbx_supervisor_agentes set protocolo = '$protocolo', canal = '$canal', origem_destino = '$origem',status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'E',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$destino'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
write("EXEC PauseQueueMember ,Local/$destino@app-callcenter/n"); write("EXEC PauseQueueMember ,Local/$destino@app-callcenter/n");
@ -450,18 +372,18 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) { if ($idorigem) {
if ($tipo == 'interna') { if ($tipo == 'interna') {
insert_padrao($conexao, $idorigem, $tipo, $destino); insert_padrao($conexao, $idorigem, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else { } else {
insert_padrao($conexao, $idorigem, $contexto, $destino); insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
if ($tipo == 'interna') { if ($tipo == 'interna') {
insert_padrao($conexao, $uniqueid, $tipo, $destino); insert_padrao($conexao, $uniqueid, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else { } else {
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} }
} else if (strtolower($contexto) == 'ext-fila') { } else if (strtolower($contexto) == 'ext-fila') {
@ -480,21 +402,21 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) { if ($idorigem) {
if ($transfer) { if ($transfer) {
mostra_parametro("TEM_TRANSFER"); mostra_parametro("TEM_TRANSFER");
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
insert_padrao($conexao, $idorigem, $contexto, $destino); insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} else if (strtolower($contexto) == 'transfer-saida') { } else if (strtolower($contexto) == 'transfer-saida') {
mostra_parametro("TRANSFER_SAIDA"); mostra_parametro("TRANSFER_SAIDA");
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else if (strtolower($contexto) == 'fila-ramal') { } else if (strtolower($contexto) == 'fila-ramal') {
mostra_parametro("FILA_RAMAL"); mostra_parametro("FILA_RAMAL");
$destino = $argv[2]; $destino = $argv[2];
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else if (strtolower($contexto) == 'ura') { } else if (strtolower($contexto) == 'ura') {
/* /*
* Executa noop para cli do asterisk, mostrando a passagem para ura. * Executa noop para cli do asterisk, mostrando a passagem para ura.
@ -513,7 +435,6 @@ if (strtolower($contexto) == 'ext-transferencia') {
$upd = ''; $upd = '';
//$log = sprintf("Contexto: %s Tipo: %s Id: %s OpcUra: %s Opcao: %s Acao: %s", $contexto, $tipo, $idUra, $opcUra, $opcao, $acao ); //$log = sprintf("Contexto: %s Tipo: %s Id: %s OpcUra: %s Opcao: %s Acao: %s", $contexto, $tipo, $idUra, $opcUra, $opcao, $acao );
/* /*
* Tenta recuperar o identificador da chamada pela origem, ou seja * Tenta recuperar o identificador da chamada pela origem, ou seja
* o identificador atribuido a chamada no momento da recepcao da mesma, * o identificador atribuido a chamada no momento da recepcao da mesma,
@ -545,19 +466,18 @@ if (strtolower($contexto) == 'ext-transferencia') {
if (GetInteraUra($uid)) { if (GetInteraUra($uid)) {
$tipo = 'seq'; $tipo = 'seq';
} }
$query = "insert into pbx_ura_movimento(uniqueid,umv_tipo,umv_ura_id,reg_proc,umv_ura_nome)values(%s,%s,%s,%s,(SELECT nome FROM pbx_ura WHERE id = $idUra))"; $query = "INSERT INTO pbx_ura_movimento(uniqueid,umv_tipo,umv_ura_id,reg_proc,umv_ura_nome) VALUES(%s,%s,%s,%s,(SELECT nome FROM pbx_ura WHERE id = $idUra))";
$query = sprintf($query, QuotedStr($uid), QuotedStr($tipo), QuotedStr($idUra), QuotedStr($identProc)); $query = sprintf($query, QuotedStr($uid), QuotedStr($tipo), QuotedStr($idUra), QuotedStr($identProc));
} else if (($tipo == 'opc') or ($tipo == 'def')) { } else if (($tipo == 'opc') or ($tipo == 'def')) {
$query = "insert into pbx_ura_movimento(uniqueid,umv_tipo,umv_ura_id,umv_ura_opcao,umv_opcao,umv_acao,reg_proc,umv_ura_nome)values(%s,%s,%s,%s,%s,%s,%s,(SELECT nome FROM pbx_ura WHERE id = $idUra))"; $query = "INSERT INTO pbx_ura_movimento(uniqueid,umv_tipo,umv_ura_id,umv_ura_opcao,umv_opcao,umv_acao,reg_proc,umv_ura_nome) VALUES(%s,%s,%s,%s,%s,%s,%s,(SELECT nome FROM pbx_ura WHERE id = $idUra))";
$query = sprintf($query, QuotedStr($uid), QuotedStr($tipo), QuotedStr($idUra), QuotedStr($opcUra), QuotedStr($opcao), QuotedStr($acao), QuotedStr($identProc)); $query = sprintf($query, QuotedStr($uid), QuotedStr($tipo), QuotedStr($idUra), QuotedStr($opcUra), QuotedStr($opcao), QuotedStr($acao), QuotedStr($identProc));
$upd = sprintf("UPDATE pbx_ura_movimento SET umv_ult_atend_ura = %s, umv_ult_atend_opcao = %s WHERE uniqueid = %s AND umv_tipo = 'ini'", QuotedStr($idUra), (($tipo == 'opc') ? QuotedStr($opcUra) : QuotedStr('99')), QuotedStr($uid));
$upd = sprintf("update pbx_ura_movimento set umv_ult_atend_ura = %s, umv_ult_atend_opcao = %s where uniqueid = %s and umv_tipo = 'ini'", QuotedStr($idUra), (($tipo == 'opc') ? QuotedStr($opcUra) : QuotedStr('99')), QuotedStr($uid));
} }
try { try {
$erro = ''; $erro = '';
$inTran = 0; $inTran = 0;
$result = pg_query('begin'); $result = pg_query($conexao, 'begin');
if (!$result) { if (!$result) {
RaiseExcept('Erro ao iniciar uma transação.', true); RaiseExcept('Erro ao iniciar uma transação.', true);
} }
@ -569,18 +489,17 @@ if (strtolower($contexto) == 'ext-transferencia') {
} }
if ($upd) { if ($upd) {
$result = pg_query($upd); $result = pg_query($conexao, $upd);
if (!$result) { if (!$result) {
RaiseExcept('Erro ao atualizar pbx_ura_movimento.', true); RaiseExcept('Erro ao atualizar pbx_ura_movimento.', true);
} }
} }
$result = pg_query('commit'); $result = pg_query($conexao, 'commit');
if (!$result) { if (!$result) {
RaiseExcept('Erro ao finalizar uma transação.', true); RaiseExcept('Erro ao finalizar uma transação.', true);
} }
} catch (Exception $ex) { } catch (Exception $ex) {
$log = sprintf("Data: %s Cmd: %s Cmd2: %s Sys: %s [ERRO]\n", date('Y-m-d H:i:s'), $query, $upd, $ex->getMessage()); $log = sprintf("Data: %s Cmd: %s Cmd2: %s Sys: %s [ERRO]\n", date('Y-m-d H:i:s'), $query, $upd, $ex->getMessage());
WriteLog($log, '/var/log/asterisk/pbx_complemento_reg.log'); WriteLog($log, '/var/log/asterisk/pbx_complemento_reg.log');
write("EXEC Playback appsounds/erro_operacao"); write("EXEC Playback appsounds/erro_operacao");
@ -589,7 +508,7 @@ if (strtolower($contexto) == 'ext-transferencia') {
read(); read();
if ($inTran) { if ($inTran) {
pg_query('rollback'); pg_query($conexao, 'rollback');
} }
exit; exit;
} }
@ -603,34 +522,37 @@ if (strtolower($contexto) == 'ext-transferencia') {
/* /*
* Realiza insert padrao na tabela pbx_complemento. * Realiza insert padrao na tabela pbx_complemento.
*/ */
insert_padrao($conexao, $uid, $contexto, $destino); insert_padrao($conexao, $uid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
if (!$idorigem) { if (!$idorigem) {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} else { } else {
write("GET VARIABLE IDORIGEM"); write("GET VARIABLE IDORIGEM");
$idorigem = substr(strrchr(read(), "("), 1, -1); $idorigem = substr(strrchr(read(), "("), 1, -1);
if ($idorigem) { if ($idorigem) {
insert_padrao($conexao, $idorigem, $contexto, $destino); insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else { } else {
write("SET VARIABLE __IDORIGEM $uniqueid"); write("SET VARIABLE __IDORIGEM $uniqueid");
read(); read();
insert_padrao($conexao, $uniqueid, $contexto, $destino); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} }
} }
function mostra_parametro($parametro) { function mostra_parametro($parametro)
{
write("EXEC Noop PARAMETRO:$parametro"); write("EXEC Noop PARAMETRO:$parametro");
read(); read();
} }
function GetInteraUra($uid) { function GetInteraUra($uid)
$query = "select '' from pbx_ura_movimento where uniqueid = '$uid' and umv_tipo = 'ini'"; {
$result = pg_query($query); global $dbcon;
$query = "SELECT '' FROM pbx_ura_movimento WHERE uniqueid = '$uid' AND umv_tipo = 'ini'";
$result = pg_query($dbcon, $query);
return pg_num_rows($result) ? true : false; return pg_num_rows($result) ? true : false;
} }

59
asterisk/var_lib_asterisk/agi-bin/ramal_empresa.php

@ -0,0 +1,59 @@
#!/usr/bin/php -q
<?php
include('util/util.php');
include('bd.php');
ob_implicit_flush(true);
set_time_limit(6);
error_reporting(0);
$in = fopen("php://stdin", "r");
$stdlog = fopen("/var/log/asterisk/ramal_empresa.log", "w");
// Habilita modo debugging (mais verbose)
$debug = true;
// Do function definitions before we start the main loop
function read()
{
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug) {
fputs($stdlog, "read: $input\n");
}
return $input;
}
function write($line)
{
global $debug, $stdlog;
if ($debug) {
fputs($stdlog, "write: $line\n");
}
echo $line . "\n";
}
// Colocamos headers AGI dentro de um array
while ($env = read()) {
$s = explode(": ", $env);
$agi[str_replace("agi_", "", $s[0])] = trim($s[1]);
if (($env == "") || ($env == "\n")) {
break;
}
}
//parametro vindo do dialplan
$ramal = $argv[1];
$query = "SELECT nome, org_id FROM pbx_ramais WHERE nome = '$ramal'";
$result = pg_query($conexao, $query);
$row = pg_fetch_assoc($result);
$org_id = $row['org_id'];
write("SET VARIABLE ID_EMPRESA $org_id");
read();
pg_close();
fclose($in);
fclose($stdlog);
exit;
?>

100
asterisk/var_lib_asterisk/agi-bin/tarifaFinaliza.php

@ -4,6 +4,8 @@ include('bd.php');
include('util/util.php'); include('util/util.php');
include('funcoes/shared.php'); include('funcoes/shared.php');
error_reporting(E_ALL);
ini_set('display_errors', 0);
$uniqueId = trim($argv[1]); $uniqueId = trim($argv[1]);
$final = isset($argv[2]) ? trim($argv[2]) : ''; $final = isset($argv[2]) ? trim($argv[2]) : '';
@ -19,18 +21,18 @@ $result = 0;
//$final = ''; //$final = '';
if ($final == 'FINALTRANSFER') { if ($final == 'FINALTRANSFER') {
$query = "select trr_destino from pbx_tarif_registra where uniqueid = '$uniqueIdOrig'\n"; $query = "SELECT trr_destino FROM pbx_tarif_registra WHERE uniqueid = '$uniqueIdOrig'\n";
$result = pg_query($query); $result = pg_query($conexao, $query);
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
$destino = $row[0]; $destino = $row[0];
if ($result) { if ($result) {
$query = "update pbx_tarif_registra set trr_fim = now(), trr_origem = trr_destino, trr_destino = '$destino', trr_duracao = (extract(epoch from (now() - trr_inicio))::int ) where uniqueid = '$uniqueId' and coalesce(trr_duracao, 0) = 0\n"; $query = "UPDATE pbx_tarif_registra SET trr_fim = now(), trr_origem = trr_destino, trr_destino = '$destino', trr_duracao = (extract(epoch FROM (now() - trr_inicio))::int ) WHERE uniqueid = '$uniqueId' AND coalesce(trr_duracao, 0) = 0\n";
$result = pg_query($query); $result = pg_query($conexao, $query);
} }
} else { } else {
$query = "update pbx_tarif_registra set trr_fim = now(), trr_duracao = (extract(epoch from (now() - trr_inicio))::int ) where uniqueid = '$uniqueId' and coalesce(trr_duracao, 0) = 0\n"; $query = "UPDATE pbx_tarif_registra SET trr_fim = now(), trr_duracao = (extract(epoch FROM (now() - trr_inicio))::int ) WHERE uniqueid = '$uniqueId' AND coalesce(trr_duracao, 0) = 0\n";
$result = pg_query($query); $result = pg_query($conexao, $query);
} }
$log[] = $query; $log[] = $query;
__Prepago($uniqueId); __Prepago($uniqueId);
@ -46,13 +48,13 @@ __Prepago($uniqueId);
* contrato. * contrato.
*/ */
$query = "select a.trr_tipo_dispositivo, b.contr_tipo_franquia $query = "SELECT a.trr_tipo_dispositivo, b.contr_tipo_franquia
from pbx_tarif_registra a, pbx_tarif_contrato b FROM pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id WHERE b.contr_id = a.contr_id
and uniqueid = '$uniqueId'\n"; AND uniqueid = '$uniqueId'\n";
$log[] = $query; $log[] = $query;
$result = pg_query($query); $result = pg_query($conexao, $query);
$row = pg_fetch_array($result); $row = pg_fetch_array($result);
$tipoDispo = $row['trr_tipo_dispositivo']; $tipoDispo = $row['trr_tipo_dispositivo'];
$tipoFranquia = $row['contr_tipo_franquia']; $tipoFranquia = $row['contr_tipo_franquia'];
@ -63,23 +65,22 @@ $tipoFranquia = $row['contr_tipo_franquia'];
* faz o restante do trabalho. * faz o restante do trabalho.
*/ */
if ($result && __InsereFranquia($tipoDispo, $tipoFranquia)) { if ($result && __InsereFranquia($tipoDispo, $tipoFranquia)) {
$query = "insert $query = "INSERT INTO pbx_tarif_franquia_movimento
into pbx_tarif_franquia_movimento
(prc_id, contr_id, tfm_mes, uniqueid, tfm_data, tfm_lanc, tfm_tipo_lanc, tfm_motivo, tfm_user, tfm_tipo_franquia, tmf_tipo_saldo, tfm_preco_tipo) (prc_id, contr_id, tfm_mes, uniqueid, tfm_data, tfm_lanc, tfm_tipo_lanc, tfm_motivo, tfm_user, tfm_tipo_franquia, tmf_tipo_saldo, tfm_preco_tipo)
select a.prc_id, a.contr_id, date_part('month', a.trr_data) as tfm_mes, a.uniqueid, now(), case when((a.trr_duracao = 0) or (b.contr_tipo_franquia = 0) or (a.trr_tarifa_zero = 1) )then 0 else -a.trr_duracao end as tfm_lanc, SELECT a.prc_id, a.contr_id, date_part('month', a.trr_data) as tfm_mes, a.uniqueid, now(),
CASE WHEN((a.trr_duracao = 0) OR (b.contr_tipo_franquia = 0) OR (a.trr_tarifa_zero = 1) )THEN 0 ELSE -a.trr_duracao END AS tfm_lanc,
'D' as tfm_tipo_lanc, 'D' as tfm_tipo_lanc,
case when(b.contr_tipo_franquia = 0)then 'Franquia Zero' else case when(a.trr_tarifa_zero = 1)then 'Tarifa Zero' else 'Chamada de saida' end end as tfm_motivo, case when(a.trr_conta_senha = 1)then trr_conta else a.trr_origem end as tfm_user, b.contr_tipo_franquia as tfm_tipo_franquia, CASE WHEN(b.contr_tipo_franquia = 0) THEN 'Franquia Zero' ELSE CASE WHEN(a.trr_tarifa_zero = 1) THEN 'Tarifa Zero' ELSE 'Chamada de saida' END END AS tfm_motivo,
case when(a.trr_vc in('vc3', 'vc4')) then 'M' else 'F' end as tmf_tipo_saldo, a.trr_preco_tipo CASE WHEN(a.trr_conta_senha = 1)THEN trr_conta ELSE a.trr_origem END AS tfm_user, b.contr_tipo_franquia AS tfm_tipo_franquia,
from pbx_tarif_registra a, pbx_tarif_contrato b CASE WHEN(a.trr_vc IN('vc3', 'vc4')) THEN 'M' ELSE 'F' END AS tmf_tipo_saldo, a.trr_preco_tipo
where b.contr_id = a.contr_id FROM pbx_tarif_registra a, pbx_tarif_contrato b
and a.uniqueid = '$uniqueId'\n"; WHERE b.contr_id = a.contr_id
pg_query($query); AND a.uniqueid = '$uniqueId'\n";
pg_query($conexao, $query);
} }
$log[] = $query; $log[] = $query;
//Final: Finaliza: 1383258798.101 Final: FINALTRANSFER Arg3: 1383258762.93 Arg4: 1004 Data: 2013-10-31 19:33:28 //Final: Finaliza: 1383258798.101 Final: FINALTRANSFER Arg3: 1383258762.93 Arg4: 1004 Data: 2013-10-31 19:33:28
$err = error_get_last(); $err = error_get_last();
if (count($err)) { if (count($err)) {
@ -91,49 +92,51 @@ if ($gravaLog) {
} }
//exten => h,1,DeadAgi(tarifaFinaliza.php,${UNIQUEID}) //exten => h,1,DeadAgi(tarifaFinaliza.php,${UNIQUEID})
function __Prepago($uniqueId) { function __Prepago($uniqueId)
{
include('util/funcoesApl.php'); include('util/funcoesApl.php');
global $log; global $log;
$queryPrepago = "select case when(a.trr_conta_senha = 0)then a.trr_origem else a.trr_conta end as prm_ramal_conta, $queryPrepago = "SELECT CASE WHEN(a.trr_conta_senha = 0)THEN a.trr_origem ELSE a.trr_conta END AS prm_ramal_conta,
a.trr_conta_senha, a.trr_tarifa_zero, a.trr_franquia, b.contr_tipo_franquia, a.trr_preco_tipo, a.trr_conta_senha, a.trr_tarifa_zero, a.trr_franquia, b.contr_tipo_franquia, a.trr_preco_tipo,
a.trr_vc_cad, a.trr_vc_ext, 0.0 as prm_valor, a.trr_vc_cad, a.trr_vc_ext, 0.0 AS prm_valor,
a.trr_id, a.trr_id,
a.trr_preco, a.trr_preco,
a.trr_duracao, a.trr_duracao,
a.trr_destino, a.trr_destino,
now()::date as prm_data, now()::date AS prm_data,
now() as prm_data_lanc, now() AS prm_data_lanc,
'D' as prm_tipo_lancamento, 'D' AS prm_tipo_lancamento,
'Chamada Efetuada' as prm_historico 'Chamada Efetuada' AS prm_historico
from pbx_tarif_registra a, pbx_tarif_contrato b FROM pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id and a.uniqueid = '%s'"; WHERE b.contr_id = a.contr_id
AND a.uniqueid = '%s'";
$queryPrepagoIns = "insert
into pbx_prepago_movimento $queryPrepagoIns = "INSERT INTO pbx_prepago_movimento
(prm_ramal_conta, prm_conta_senha, trr_id, prm_valor_minuto, prm_tempo, prm_destino, prm_valor, prm_data, prm_data_lanc, prm_tipo_lancamento, prm_historico) (prm_ramal_conta, prm_conta_senha, trr_id, prm_valor_minuto, prm_tempo, prm_destino, prm_valor, prm_data, prm_data_lanc, prm_tipo_lancamento, prm_historico)
values({prm_ramal_conta}, {trr_conta_senha}, {trr_id}, {trr_preco}, {trr_duracao}, {trr_destino}, {prm_valor}, {prm_data}, {prm_data_lanc}, {prm_tipo_lancamento}, {prm_historico})"; VALUES({prm_ramal_conta}, {trr_conta_senha}, {trr_id}, {trr_preco}, {trr_duracao}, {trr_destino}, {prm_valor}, {prm_data}, {prm_data_lanc}, {prm_tipo_lancamento}, {prm_historico})";
$prepagoIncluso = 0; $prepagoIncluso = 0;
/* /*
* Verifica se o ramal/conta esta incluso no pre-pago * Verifica se o ramal/conta esta incluso no pre-pago
*/ */
$query = "select count(*) $query = "SELECT count(*)
from pbx_prepago a, pbx_tarif_registra b FROM pbx_prepago a, pbx_tarif_registra b
where a.tipo = b.trr_conta_senha WHERE a.tipo = b.trr_conta_senha
and a.id = case when(b.trr_conta_senha = 0)then b.trr_origem else b.trr_conta end AND a.id = CASE WHEN(b.trr_conta_senha = 0)THEN b.trr_origem ELSE b.trr_conta END
and a.habilita_prepago = '1' AND a.habilita_prepago = '1'
and b.uniqueid = '%s'"; AND b.uniqueid = '%s'";
$query = sprintf($query, $uniqueId); $query = sprintf($query, $uniqueId);
$result = pg_query($query); $result = pg_query($conexao, $query);
if (!$result) if (!$result) {
$log[] = sprintf('Ver. Pre-pago: %s', $query); $log[] = sprintf('Ver. Pre-pago: %s', $query);
}
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
$prepagoIncluso = $row[0]; $prepagoIncluso = $row[0];
if ($prepagoIncluso) { if ($prepagoIncluso) {
$queryPrepago = sprintf($queryPrepago, $uniqueId); $queryPrepago = sprintf($queryPrepago, $uniqueId);
$result = pg_query($queryPrepago); $result = pg_query($conexao, $queryPrepago);
$row = pg_fetch_array($result); $row = pg_fetch_array($result);
$tipoFranquia = $row["contr_tipo_franquia"]; $tipoFranquia = $row["contr_tipo_franquia"];
@ -147,18 +150,19 @@ function __Prepago($uniqueId) {
$dura = $franquiaParcial ? $row["trr_franquia"] : (int) $row["trr_duracao"]; $dura = $franquiaParcial ? $row["trr_franquia"] : (int) $row["trr_duracao"];
$row['prm_valor'] = $tarifaZero ? 0 : - (TarifaChamada($tipoTarifa, $dura, $precoMinuto, $fator, $cadencia)); $row['prm_valor'] = $tarifaZero ? 0 : - (TarifaChamada($tipoTarifa, $dura, $precoMinuto, $fator, $cadencia));
foreach ($row as $key => $value) { foreach ($row as $key => $value) {
$queryPrepagoIns = str_replace('{' . $key . '}', QuotedStr($value), $queryPrepagoIns); $queryPrepagoIns = str_replace('{' . $key . '}', QuotedStr($value), $queryPrepagoIns);
} }
$result = pg_query($queryPrepagoIns); $result = pg_query($conexao, $queryPrepagoIns);
if (!$result) if (!$result) {
$log[] = sprintf('Ins. Pre-pago: %s', $queryPrepagoIns); $log[] = sprintf('Ins. Pre-pago: %s', $queryPrepagoIns);
} }
} }
}
function __InsereFranquia($disp, $franquia) { function __InsereFranquia($disp, $franquia)
{
/* /*
* Tipos de franquia: Fixo/Móvel -> 4, Móvel -> 3, Fixo -> 2, Compartilhada -> 1, Desbilidadta -> 0 * Tipos de franquia: Fixo/Móvel -> 4, Móvel -> 3, Fixo -> 2, Compartilhada -> 1, Desbilidadta -> 0
*/ */

46
asterisk/var_lib_asterisk/agi-bin/verifica_rota.php

@ -13,7 +13,8 @@ $stdlog = fopen("/var/log/asterisk/verifica_rota.log", "w");
$debug = true; $debug = true;
// Do function definitions before we start the main loop // Do function definitions before we start the main loop
function read() { function read()
{
global $in, $debug, $stdlog; global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096)); $input = str_replace("\n", "", fgets($in, 4096));
if ($debug) if ($debug)
@ -21,7 +22,8 @@ function read() {
return $input; return $input;
} }
function write($line) { function write($line)
{
global $debug, $stdlog; global $debug, $stdlog;
if ($debug) if ($debug)
fputs($stdlog, "write: $line\n"); fputs($stdlog, "write: $line\n");
@ -41,26 +43,17 @@ while ($env = read()) {
$ramal = $argv[1]; $ramal = $argv[1];
$destino = $argv[2]; $destino = $argv[2];
/* $query = "SELECT a.id_rota, a.tipo_acesso, a.ramal,b.modelo,c.recorte, c.acrescenta, c.org_id,
$query = "select a.id_rota, a.tipo_acesso, a.ramal,b.modelo from pbx_rotas_saida_ramais a inner join pbx_rotas_saida_modelos b on a.id_rota = b.id_rota CASE WHEN (substring(modelo FROM '.$') <> '.') THEN length(replace(replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]'))
where ramal = '$ramal' WHEN (substring(modelo FROM '.$') = '.') THEN length(replace(replace(replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]'),'.',REPEAT('[0-9]', 100))) END AS prioridade
and '$destino' ~ case when (substring(modelo from '.$') <> '.') then replace('^'||replace(replace(modelo||'$','X','[0-9]'),'Z','[1-9]'),'N','[2-9]') FROM pbx_rotas_saida_ramais a
when (substring(modelo from '.$') = '.') then replace('^'||replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]') end INNER JOIN pbx_rotas_saida_modelos b ON a.id_rota = b.id_rota
and tipo_acesso <> '0' INNER JOIN pbx_rotas_saida c ON a.id_rota = c.id
order by id_rota limit 1"; WHERE ramal = '$ramal'
* AND '$destino' ~ CASE WHEN (substring(modelo FROM '.$') <> '.') THEN replace('^'||replace(replace(modelo||'$','X','[0-9]'),'Z','[1-9]'),'N','[2-9]')
*/ WHEN (substring(modelo FROM '.$') = '.') THEN replace('^'||replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]') END
AND tipo_acesso <> '0'
$query = "select a.id_rota, a.tipo_acesso, a.ramal,b.modelo,c.recorte, c.acrescenta, ORDER BY prioridade LIMIT 1";
case when (substring(modelo from '.$') <> '.') then length(replace(replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]'))
when (substring(modelo from '.$') = '.') then length(replace(replace(replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]'),'.',REPEAT('[0-9]', 100))) end as prioridade
from pbx_rotas_saida_ramais a inner join pbx_rotas_saida_modelos b on a.id_rota = b.id_rota
inner join pbx_rotas_saida c on a.id_rota = c.id
where ramal = '$ramal'
and '$destino' ~ case when (substring(modelo from '.$') <> '.') then replace('^'||replace(replace(modelo||'$','X','[0-9]'),'Z','[1-9]'),'N','[2-9]')
when (substring(modelo from '.$') = '.') then replace('^'||replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]') end
and tipo_acesso <> '0'
order by prioridade limit 1";
WriteLog($query, '/var/log/asterisk/rotas_saida.log'); WriteLog($query, '/var/log/asterisk/rotas_saida.log');
@ -72,14 +65,12 @@ $ramal = $row['ramal'];
$modelo = $row['modelo']; $modelo = $row['modelo'];
$recorte = $row['recorte']; $recorte = $row['recorte'];
$acrescenta = $row['acrescenta']; $acrescenta = $row['acrescenta'];
$org_id = $row['org_id'];
if (!$tipo_acesso) { if (!$tipo_acesso) {
$tipo_acesso = 0; $tipo_acesso = 0;
} } else if ($tipo_acesso == '3') {
//Libera ligacao caso tenha agente logado no ramal //Libera ligacao caso tenha agente logado no ramal
else if ($tipo_acesso == '3') {
$query = "select count(*) from pbx_supervisor_agentes where ramal = '$ramal'"; $query = "select count(*) from pbx_supervisor_agentes where ramal = '$ramal'";
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
$row = pg_fetch_array($result); $row = pg_fetch_array($result);
@ -102,6 +93,9 @@ read();
write("SET VARIABLE MODELO $modelo"); write("SET VARIABLE MODELO $modelo");
read(); read();
write("SET VARIABLE ID_EMPRESA $org_id");
read();
if ($recorte) { if ($recorte) {
write("SET VARIABLE RECORTAROTA $recorte"); write("SET VARIABLE RECORTAROTA $recorte");
read(); read();

29
asterisk/var_lib_asterisk/scripts/callcenter/atualizar-dacs.php

@ -39,19 +39,24 @@ $comando = "action: logoff\r\n";
exec_cmd($comando, $socket, "Message: Thanks for all the fish."); exec_cmd($comando, $socket, "Message: Thanks for all the fish.");
fclose($socket); fclose($socket);
print_r($colas);
foreach ($colas as $key => $cola) { foreach ($colas as $key => $cola) {
$query = sprintf("select dac from pbx_supervisor_dacs WHERE dac = %s", QuotedStr($key)); $query = sprintf("SELECT dac FROM pbx_supervisor_dacs WHERE dac = %s", QuotedStr($key));
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$exists = pg_num_rows($result); $exists = pg_num_rows($result);
$info = GetNomeOrganizacao($key);
$nome = $info['nome'];
$org_id = $info['org_id'];
if ($exists) { if ($exists) {
$query = "update pbx_supervisor_dacs set atendidas = %s, abandonadas = %s, espera = %s, tempo_espera = %s, tempo_nivel_servico = %s, percentual_nivel_servico = %s where dac = %s"; $query = "UPDATE pbx_supervisor_dacs set atendidas = %s, abandonadas = %s, espera = %s, tempo_espera = %s, tempo_nivel_servico = %s, percentual_nivel_servico = %s WHERE dac = %s";
$query = sprintf($query, QuotedStr($cola['Completed']), QuotedStr($cola['Abandoned']), QuotedStr($cola['Calls']), QuotedStr(($cola['Calls'] ? $cola['Holdtime'] : 0)), QuotedStr($cola['ServiceLevel']), QuotedStr($cola['ServicelevelPerf']), QuotedStr($key)); $query = sprintf($query, QuotedStr($cola['Completed']), QuotedStr($cola['Abandoned']), QuotedStr($cola['Calls']), QuotedStr(($cola['Calls'] ? $cola['Holdtime'] : 0)), QuotedStr($cola['ServiceLevel']), QuotedStr($cola['ServicelevelPerf']), QuotedStr($nome));
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
} else { } else {
$query = "insert into pbx_supervisor_dacs (atendidas, abandonadas, espera, tempo_espera, tempo_nivel_servico,percentual_nivel_servico, dac)values(%s,%s,%s,%s,%s,%s,%s)"; $query = "INSERT INTO pbx_supervisor_dacs (atendidas, abandonadas, espera, tempo_espera, tempo_nivel_servico, percentual_nivel_servico, dac, org_id) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)";
$query = sprintf($query, QuotedStr($cola['Completed']), QuotedStr($cola['Abandoned']), QuotedStr($cola['Calls']), QuotedStr(($cola['Calls'] ? $cola['Holdtime'] : 0)), QuotedStr($cola['ServiceLevel']), QuotedStr($cola['ServicelevelPerf']), QuotedStr($key)); $query = sprintf($query, QuotedStr($cola['Completed']), QuotedStr($cola['Abandoned']), QuotedStr($cola['Calls']), QuotedStr(($cola['Calls'] ? $cola['Holdtime'] : 0)), QuotedStr($cola['ServiceLevel']), QuotedStr($cola['ServicelevelPerf']), QuotedStr($nome), $org_id);
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
} }
@ -67,7 +72,8 @@ foreach ($colas as $key => $cola) {
@FechaPendenciaDiscador(); @FechaPendenciaDiscador();
pg_close($dbcon); pg_close($dbcon);
function exec_cmd($comando, $socket, $evento_fin) { function exec_cmd($comando, $socket, $evento_fin)
{
$actionid = rand(000000000, 9999999999); $actionid = rand(000000000, 9999999999);
$actionid = "actionid: " . $actionid . "\r\n"; $actionid = "actionid: " . $actionid . "\r\n";
$comando .= $actionid . "\r\n"; $comando .= $actionid . "\r\n";
@ -102,7 +108,8 @@ function exec_cmd($comando, $socket, $evento_fin) {
} }
} }
function arma_paquete($data) { function arma_paquete($data)
{
$items = preg_split("/[\n\r]/", $data); $items = preg_split("/[\n\r]/", $data);
foreach ($items as $item) { foreach ($items as $item) {
if (strlen($item) > 0) { if (strlen($item) > 0) {
@ -115,7 +122,8 @@ function arma_paquete($data) {
return $evento; return $evento;
} }
function ArmaArrayColas($qs_response) { function ArmaArrayColas($qs_response)
{
$events = $qs_response['eventos']; $events = $qs_response['eventos'];
$queues = array(); $queues = array();
@ -131,9 +139,10 @@ function ArmaArrayColas($qs_response) {
return $queues; return $queues;
} }
function GravaLogAtuDacs($msg) { function GravaLogAtuDacs($msg)
{
$fp = fopen('/var/log/atualiza-dacs.log', 'a'); $fp = fopen('/var/log/atualiza-dacs.log', 'a');
$data = date(); $data = date('Y-m-d');
fwrite($fp, $data); fwrite($fp, $data);
fwrite($fp, $msg); fwrite($fp, $msg);
fclose($fp); fclose($fp);

117
asterisk/var_lib_asterisk/scripts/manutencaoDB/importaBilhetes.php

@ -1,7 +1,7 @@
#!/usr/bin/php -q #!/usr/bin/php -q
<?php <?php
error_reporting(E_ERROR); error_reporting(E_ALL);
ini_set('display_errors', 0); ini_set('display_errors', 1);
include("util/util.php"); include("util/util.php");
include("funcoes/shared.php"); include("funcoes/shared.php");
include("util/Pid.php"); include("util/Pid.php");
@ -57,7 +57,7 @@ try {
if (!pg_query($dbcon, 'commit')) { if (!pg_query($dbcon, 'commit')) {
ibRaiseExcept("Nao foi possivel finalizar a transacao com o banco de dados!"); ibRaiseExcept("Nao foi possivel finalizar a transacao com o banco de dados!");
} }
$log = sprintf("Importados Dacs: %s Bilhetes: %s Excluidos %s Registros Duplicados %s OK\n", $numDacs, $numBilhetes, $numDuplic, date('Y-m-d H:i:s')); $log = sprintf("\nImportados Dacs: %s Bilhetes: %s Excluidos: %s Registros Duplicados %s OK\n", $numDacs, $numBilhetes, $numDuplic, date('Y-m-d H:i:s'));
WriteLog($log, $pathLog); WriteLog($log, $pathLog);
} catch (Exception $ex) { } catch (Exception $ex) {
if ($inTran) { if ($inTran) {
@ -69,14 +69,17 @@ try {
$pid->PidRemove(); $pid->PidRemove();
function ibRaiseExcept($msg, $dbError = true) { function ibRaiseExcept($msg, $dbError = true)
{
if ($dbError) { if ($dbError) {
$msg .= " DB: " . pg_last_error(); $msg .= " DB: " . pg_last_error();
} }
GeraExcept($msg); GeraExcept($msg);
} }
function AtualizaFlagFila($minutes, $status = 'I') { function AtualizaFlagFila($minutes, $status = 'I')
{
global $dbcon;
/* /*
* Atualiza flag_fila pendente.Observe que o "status = 'I'" indica * Atualiza flag_fila pendente.Observe que o "status = 'I'" indica
* que o registro esta pendende de verificação, a consulta é feita * que o registro esta pendende de verificação, a consulta é feita
@ -88,8 +91,8 @@ function AtualizaFlagFila($minutes, $status = 'I') {
* do log por um script que roda de 1 em 1 minuto. * do log por um script que roda de 1 em 1 minuto.
* *
*/ */
$sql = sprintf("select id_bilhetes, uniqueid from pbx_bilhetes where calldate < (now() - (interval '%s minutes')) and flag_fila = 'I'", StrToIntDef($minutes)); $sql = sprintf("SELECT id_bilhetes, uniqueid FROM pbx_bilhetes WHERE calldate < (NOW() - (interval '%s minutes')) AND flag_fila = 'I'", StrToIntDef($minutes));
$result = pg_query($sql); $result = pg_query($dbcon, $sql);
if (!$result) { if (!$result) {
ibRaiseExcept("Nao possivel selecionar registros com flag_fila pendente!"); ibRaiseExcept("Nao possivel selecionar registros com flag_fila pendente!");
} }
@ -106,15 +109,16 @@ function AtualizaFlagFila($minutes, $status = 'I') {
$conFlag = ChamadaFila($row['uniqueid'], 0); $conFlag = ChamadaFila($row['uniqueid'], 0);
$flagFila = !$conFlag ? "flag_fila = '$status'" : sprintf("flag_fila = 'S', billsec = '%s'", $conFlag); $flagFila = !$conFlag ? "flag_fila = '$status'" : sprintf("flag_fila = 'S', billsec = '%s'", $conFlag);
$sql = sprintf("update pbx_bilhetes set %s where id_bilhetes = '%s' ", $flagFila, $id); $sql = sprintf("UPDATE pbx_bilhetes SET %s WHERE id_bilhetes = '%s' ", $flagFila, $id);
$resultUpd = pg_query($sql); $resultUpd = pg_query($dbcon, $sql);
if (!$resultUpd) { if (!$resultUpd) {
ibRaiseExcept("Nao possivel alterar a identificacao do registro!"); ibRaiseExcept("Nao possivel alterar a identificacao do registro!");
} }
} }
} }
function impGetConnection() { function impGetConnection()
{
/* /*
* Se precisar de uma conexão diferente da padrão, espcifique sua propria connection string. * Se precisar de uma conexão diferente da padrão, espcifique sua propria connection string.
* $connStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL'); * $connStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL');
@ -129,16 +133,16 @@ function impGetConnection() {
return $conn; return $conn;
} }
function ImportaAstEventosDacs($dbcon) { function ImportaAstEventosDacs($dbcon)
{
global $numDacs; global $numDacs;
/* /*
* Importa a tabela ast_eventos_dacs. * Importa a tabela ast_eventos_dacs.
*/ */
$sql = "insert $sql = "INSERT INTO pbx_eventos_dacs (id, uid1, uid2, fila, agente, evento, param1, param2, param3, param4)
into pbx_eventos_dacs (id,uid1, uid2, fila, agente, evento, param1, param2, param3, param4) SELECT id, uid1, uid2, fila, agente, evento, param1, param2, param3, param4
select id, uid1, uid2, fila, agente, evento, param1, param2, param3, param4 FROM ast_eventos_dacs a
from ast_eventos_dacs a WHERE NOT EXISTS(SELECT '' FROM pbx_eventos_dacs WHERE id = a.id)";
where not exists(select '' from pbx_eventos_dacs where id = a.id)";
if (!$result = pg_query($dbcon, $sql)) { if (!$result = pg_query($dbcon, $sql)) {
ibRaiseExcept("Nao possivel importar a tabela ast_eventos_dacs!"); ibRaiseExcept("Nao possivel importar a tabela ast_eventos_dacs!");
} }
@ -146,17 +150,25 @@ function ImportaAstEventosDacs($dbcon) {
$numDacs = pg_affected_rows($result); $numDacs = pg_affected_rows($result);
} }
function ImportaAstBilhetes($dbcon) { function ImportaAstBilhetes($dbcon)
{
global $numBilhetes; global $numBilhetes;
$query = "drop table if exists tb_parametros;
$sql = "SELECT org_id FROM pbx_parametros;";
$res = pg_query($dbcon, $sql);
$data = pg_fetch_all($res);
$query = "DROP TABLE IF exists tb_parametros;
create temporary table tb_parametros as create temporary table tb_parametros as
select (select min(id) mun_padrao from pbx_municipios where to_ascii(nome_localidade) = (select to_ascii(prm_mun_padrao) from pbx_parametros) select (select min(id) mun_padrao from pbx_municipios where to_ascii(nome_localidade) = (select to_ascii(prm_mun_padrao) from pbx_parametros where org_id = %s)
and uf = (select prm_uf_padrao from pbx_parametros)) as mun_padrao, (select prm_ddd_padrao from pbx_parametros) as prm_ddd_padrao; and uf = (select prm_uf_padrao from pbx_parametros where org_id = %s)) as mun_padrao, (select prm_ddd_padrao from pbx_parametros where org_id = %s) as prm_ddd_padrao;
-- MELHOR DESEMPENHO EM PESQUISA DE MUNICIPIO PARA CELULAR -- MELHOR DESEMPENHO EM PESQUISA DE MUNICIPIO PARA CELULAR
drop table if exists tb_municipios; create temporary table tb_municipios as select min(id) as id, codigo_ddd from pbx_municipios group by codigo_ddd; drop table if exists tb_municipios; create temporary table tb_municipios as select min(id) as id, codigo_ddd from pbx_municipios group by codigo_ddd;
drop table if exists tb_tipo_ligacao; create temporary table tb_tipo_ligacao as drop table if exists tb_tipo_ligacao;
create temporary table tb_tipo_ligacao as
select id_bilhetes, uniqueid, dst, tipo_chamada, flag_fila, case when(ast.prefixo = 0)then 0 else select id_bilhetes, uniqueid, dst, tipo_chamada, flag_fila, case when(ast.prefixo = 0)then 0 else
case ast.tipo_chamada case ast.tipo_chamada
when(21)then (select mun_padrao from tb_parametros) when(21)then (select mun_padrao from tb_parametros)
@ -179,22 +191,19 @@ function ImportaAstBilhetes($dbcon) {
when(32)then strtoint(substring(substring(prf.dst,'..........$'), 1,6)) when(32)then strtoint(substring(substring(prf.dst,'..........$'), 1,6))
when(33)then (select prm_ddd_padrao from tb_parametros) when(33)then (select prm_ddd_padrao from tb_parametros)
when(34)then strtoint(substring(substring(prf.dst,'...........$'), 1,2)) when(34)then strtoint(substring(substring(prf.dst,'...........$'), 1,2))
else else 0
0
end as prefixo, end as prefixo,
strtoint(substring(prf.dst,'....$')) as sufixo, case when(exists(select '' from ast_eventos_dacs where uid2 = prf.uniqueid))then 'S' else 'N' end as flag_fila strtoint(substring(prf.dst,'....$')) as sufixo, case when(exists(select '' from ast_eventos_dacs where uid2 = prf.uniqueid))then 'S' else 'N' end as flag_fila
from ( from (select id_bilhetes, direcao,
select id_bilhetes, direcao,
case direcao case direcao
when('E')then sonumero(src) when('E')then sonumero(src)
when('S')then sonumero(dst) when('S')then sonumero(dst)
else else '-'
'-'
end as dst, end as dst,
uniqueid, uniqueid,
case when(direcao = 'I')then 1 case when(direcao = 'I')then 1
else else
tipoligacao(trim(case when(direcao = 'E')then sonumero(src) else sonumero(dst) end), case when(direcao = 'E')then true else false end) tipoligacao(trim(case when(direcao = 'E')then sonumero(src) else sonumero(dst) end), case when(direcao = 'E')then true else false end, %s)
end as tipo_chamada end as tipo_chamada
from ast_bilhetes a from ast_bilhetes a
where not exists(select '' from pbx_bilhetes where id_bilhetes = a.id_bilhetes) where not exists(select '' from pbx_bilhetes where id_bilhetes = a.id_bilhetes)
@ -203,9 +212,9 @@ function ImportaAstBilhetes($dbcon) {
create index \"tb_tipo_ligacaoIdBilhetes\" on tb_tipo_ligacao(id_bilhetes); create index \"tb_tipo_ligacaoIdBilhetes\" on tb_tipo_ligacao(id_bilhetes);
insert into pbx_bilhetes( INSERT INTO pbx_bilhetes(
id_bilhetes, calldate, clid, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, tipo_chamada, accountcode, uniqueid, userfield, data_bilhete, id_municipio, ramal_origem, fora_horario, flag_fila, src) id_bilhetes, calldate, clid, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, tipo_chamada, accountcode, uniqueid, userfield, data_bilhete, id_municipio, ramal_origem, fora_horario, flag_fila, src, org_id)
select a.id_bilhetes, calldate, clid, a.dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, b.tipo_chamada, accountcode, a.uniqueid, userfield, calldate::date, b.id_municipio, ramal_origem, fora_horario, b.flag_fila, CASE WHEN(direcao = 'S')THEN coalesce(ramal_origem, src) ELSE src END AS src select a.id_bilhetes, calldate, clid, a.dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, b.tipo_chamada, accountcode, a.uniqueid, userfield, calldate::date, b.id_municipio, ramal_origem, fora_horario, b.flag_fila, CASE WHEN(direcao = 'S')THEN coalesce(ramal_origem, src) ELSE src END AS src, org_id
from ast_bilhetes a, tb_tipo_ligacao b from ast_bilhetes a, tb_tipo_ligacao b
where b.id_bilhetes = a.id_bilhetes; where b.id_bilhetes = a.id_bilhetes;
@ -216,18 +225,21 @@ function ImportaAstBilhetes($dbcon) {
from tb_tipo_ligacao b from tb_tipo_ligacao b
where b.id_bilhetes = a.id_bilhetes;"; where b.id_bilhetes = a.id_bilhetes;";
foreach ($data as $v) {
$query = sprintf($query, $v['org_id'], $v['org_id'], $v['org_id'], $v['org_id']);
if (!$result = pg_query($dbcon, $query)) { if (!$result = pg_query($dbcon, $query)) {
ibRaiseExcept("Nao possivel importar a tabela ast_bilhetes!"); ibRaiseExcept("Nao possivel importar a tabela ast_bilhetes!");
} }
$numBilhetes += pg_affected_rows($result);
$numBilhetes = pg_affected_rows($result); }
} }
function ImportaAstBilhetesComplemento($dbcon) { function ImportaAstBilhetesComplemento($dbcon)
{
/* /*
* INICIO DA IM?ORTACAO DA TABELA "ast_bilhetes_complemento". * INICIO DA IM?ORTACAO DA TABELA "ast_bilhetes_complemento".
*/ */
$sql = "select coalesce(max(id),0) from pbx_bilhetes_complemento"; $sql = "SELECT coalesce(max(id),0) FROM pbx_bilhetes_complemento";
$result = pg_query($dbcon, $sql); $result = pg_query($dbcon, $sql);
if (!$result) { if (!$result) {
ibRaiseExcept("Nao possivel consultar o id na tabela pbx_eventos_dacs!"); ibRaiseExcept("Nao possivel consultar o id na tabela pbx_eventos_dacs!");
@ -238,17 +250,17 @@ function ImportaAstBilhetesComplemento($dbcon) {
/* /*
* Importa a tabela ast_bilhetes_complemento. * Importa a tabela ast_bilhetes_complemento.
*/ */
$sql = "insert $sql = "INSERT INTO pbx_bilhetes_complemento (uniqueid2,direcao,id,conta,fone,destino,data_registro,id_usuario,agente,dac)
into pbx_bilhetes_complemento (uniqueid2,direcao,id,conta,fone,destino,data_registro,id_usuario,agente,dac) SELECT uniqueid2,direcao,id,conta,fone,destino,data_registro,id_usuario,agente,dac
select uniqueid2,direcao,id,conta,fone,destino,data_registro,id_usuario,agente,dac FROM ast_bilhetes_complemento
from ast_bilhetes_complemento WHERE id > $maxIdComplemento";
where id > $maxIdComplemento";
if (!$result = pg_query($dbcon, $sql)) { if (!$result = pg_query($dbcon, $sql)) {
ibRaiseExcept("Nao possivel importar a tabela ast_bilhetes_complemento!"); ibRaiseExcept("Nao possivel importar a tabela ast_bilhetes_complemento!");
} }
} }
function CorrigeNumeroDestino($dbcon) { function CorrigeNumeroDestino($dbcon)
{
$query = "DROP TABLE IF EXISTS ast_corrige_destino; $query = "DROP TABLE IF EXISTS ast_corrige_destino;
CREATE TEMPORARY TABLE ast_corrige_destino(uid VARCHAR(32) NOT NULL PRIMARY KEY, dst VARCHAR(80)); CREATE TEMPORARY TABLE ast_corrige_destino(uid VARCHAR(32) NOT NULL PRIMARY KEY, dst VARCHAR(80));
@ -355,20 +367,21 @@ function CorrigeNumeroDestinoImportados($dbcon)
} }
} }
function AtualizaPreVenda($dbcon) { function AtualizaPreVenda($dbcon)
{
$pathLog = '/var/log/asterisk/atrualiza_prevenda.log'; $pathLog = '/var/log/asterisk/atrualiza_prevenda.log';
/* /*
* Lista os contatos que estao sendo discados na campanha de pre-venda e sincroniza com a * Lista os contatos que estao sendo discados na campanha de pre-venda e sincroniza com a
* base de clientes * base de clientes
*/ */
$sql = "select d.cmp_id, d.list_id, d.cont_id, d.conf_id, a.client_id as cont_identificador,d.conf_id, d.conf_uid, d.conf_status $sql = "SELECT d.cmp_id, d.list_id, d.cont_id, d.conf_id, a.client_id AS cont_identificador,d.conf_id, d.conf_uid, d.conf_status
from pbx_cliente a, pbx_campanha_contato_fone d FROM pbx_cliente a, pbx_campanha_contato_fone d
where d.cmp_id = a.cmp_id WHERE d.cmp_id = a.cmp_id
and d.list_id = a.list_id AND d.list_id = a.list_id
and d.cont_id = a.cont_id AND d.cont_id = a.cont_id
and d.conf_discado = 1 AND d.conf_discado = 1
and strtoint(d.conf_status) > 0 AND strtoint(d.conf_status) > 0
and d.conf_protocolo is null"; AND d.conf_protocolo IS NULL";
$result = pg_query($dbcon, $sql); $result = pg_query($dbcon, $sql);
if (!$result) { if (!$result) {
ibRaiseExcept("Nao possivel consultar contatos discados no pre-venda!"); ibRaiseExcept("Nao possivel consultar contatos discados no pre-venda!");
@ -390,13 +403,13 @@ function AtualizaPreVenda($dbcon) {
/* /*
* Atualiza o status dos contatos na tabela pbx_cliente * Atualiza o status dos contatos na tabela pbx_cliente
*/ */
$sql = "update pbx_cliente set client_status = '{$clientStatus}' where client_id = '{$clientId}'\n"; $sql = "UPDATE pbx_cliente SET client_status = '{$clientStatus}' WHERE client_id = '{$clientId}'\n";
if (!pg_query($dbcon, $sql)) { if (!pg_query($dbcon, $sql)) {
ibRaiseExcept("Nao possível atualizar o registro do contato."); ibRaiseExcept("Nao possível atualizar o registro do contato.");
} }
WriteLog($sql, $pathLog); WriteLog($sql, $pathLog);
$sql = "update pbx_campanha_contato_fone set conf_protocolo = '1' where conf_id = '{$confId}'\n"; $sql = "UPDATE pbx_campanha_contato_fone SET conf_protocolo = '1' WHERE conf_id = '{$confId}'\n";
if (!pg_query($dbcon, $sql)) { if (!pg_query($dbcon, $sql)) {
ibRaiseExcept("Nao possível atualizar o registro do contato."); ibRaiseExcept("Nao possível atualizar o registro do contato.");
} }

46
asterisk/var_lib_asterisk/scripts/manutencaoDB/importaEmpresa.php

@ -7,6 +7,7 @@ include('util/util.php');
include('bd.php'); include('bd.php');
define("MAX_LOOP_FK", 1000); define("MAX_LOOP_FK", 1000);
define("CONF_EMPRESA_LOG", '/var/log/asterisk/importa_empresa.log');
/* /*
-- Table: pbx_organizacao -- Table: pbx_organizacao
@ -86,7 +87,8 @@ function CriaCampo($dbcon)
$tables = pg_fetch_all($result); $tables = pg_fetch_all($result);
$except = ['pbx_organizacao', 'pbx_organizacao_usuarios', 'pbx_usuarios']; $except = ['pbx_organizacao', 'pbx_organizacao_usuarios', 'pbx_usuarios', 'pbx_municipios'];
foreach ($tables as $table) { foreach ($tables as $table) {
if (in_array($table["table_name"], $except)) { if (in_array($table["table_name"], $except)) {
continue; continue;
@ -261,3 +263,45 @@ function ModificaIdx($dbcon)
} }
} }
} }
function importIdTables($dbcon)
{
$tables = [
'pbx_parametros' => 'id',
'pbx_features_featuremap' => 'id',
'pbx_features_general' => 'id',
'pbx_iax_general' => 'id',
'pbx_facilidades' => 'id',
'pbx_voicemail_general' => 'id',
'pbx_sip_general' => 'id',
'pbx_workflow_parametros' => 'wkf_id'
];
$org_id = GetOrganizacao();
foreach ($tables as $table => $column) {
if (!$column) {
$column = 'id';
}
$sql = "SELECT MAX($column) AS id FROM {$table};";
$result = pg_query($dbcon, $sql);
$resp = pg_fetch_assoc($result);
if ($resp['id']) {
___Gravalog("Não foi possível o ID da tabela {$table};");
}
$id = $resp['id'];
$query = "CREATE TEMPORARY TABLE t{$table} AS SELECT * FROM {$table} WHERE $column = 1;";
$query .= "ALTER TABLE t{$table} DROP COLUMN $column;";
$query .= "INSERT INTO {$table} SELECT * FROM t{$table};";
$query .= "UPDATE {$table} SET org_id = $org_id WHERE $column = $id";
}
}
function ___Gravalog($message)
{
$line = "\n----------------------------------------------\n";
$line .= sprintf("[ %s ] %s \n", date('Y-m-d H:i:s'), $message);
$line = "----------------------------------------------";
file_put_contents(CONF_EMPRESA_LOG, $message);
}

281
asterisk/var_lib_asterisk/scripts/supervisor/ssupervisor.php

@ -15,8 +15,8 @@
* -sGravaLog -> Grava log de erros gerados pelo serviço. * -sGravaLog -> Grava log de erros gerados pelo serviço.
* -sCreateMemory -> Aloca memoria para sincronização de dados. * -sCreateMemory -> Aloca memoria para sincronização de dados.
* ***************************************************************************************** */ * ***************************************************************************************** */
error_reporting(E_ERROR); error_reporting(E_ALL);
ini_set('display_errors', 0); ini_set('display_errors', 1);
ini_set("memory_limit", "512M"); ini_set("memory_limit", "512M");
/* /*
@ -70,6 +70,7 @@ $inTransaction = 0;
$numCiclos = 0; $numCiclos = 0;
try { try {
declare(ticks=1); declare(ticks=1);
$statusSignal = 0; $statusSignal = 0;
if (!$notDaemon) { if (!$notDaemon) {
@ -140,13 +141,13 @@ try {
/* /*
* Encerra a conexao com banco de dados. * Encerra a conexao com banco de dados.
*/ */
pg_close($conn); // pg_close($conn);
$conn = false; $conn = null;
} catch (Exception $ex) { } catch (Exception $ex) {
/* /*
* Garante que a conexao ao banco seja reiniciada. * Garante que a conexao ao banco seja reiniciada.
*/ */
pg_close($conn); //pg_close($conn);
$conn = false; $conn = false;
/** /**
@ -185,7 +186,8 @@ try {
sGravaLog($ex->getMessage()); sGravaLog($ex->getMessage());
} }
function sGravaLog($log) { function sGravaLog($log)
{
global $gUltMsg, $patLog, $shmKeyCtrl; global $gUltMsg, $patLog, $shmKeyCtrl;
/* /*
@ -203,7 +205,8 @@ function sGravaLog($log) {
} }
} }
function GetDaemon($notDaemon) { function GetDaemon($notDaemon)
{
/* /*
* Se o script não for chamado com daemon sai sem executar nada. * Se o script não for chamado com daemon sai sem executar nada.
*/ */
@ -229,7 +232,8 @@ function GetDaemon($notDaemon) {
// posix_setsid(); // posix_setsid();
} }
function GetSupervisorHelp() { function GetSupervisorHelp()
{
global $argc, $argv; global $argc, $argv;
$arg = isset($argv[1]) ? $argv[1] : ''; $arg = isset($argv[1]) ? $argv[1] : '';
@ -239,7 +243,8 @@ function GetSupervisorHelp() {
} }
} }
function displayUsage() { function displayUsage()
{
echo "-------------------------------------------------------------------------------------------------------\n"; echo "-------------------------------------------------------------------------------------------------------\n";
echo "- Servico de sincronizacao de dados para o supervisor! -\n"; echo "- Servico de sincronizacao de dados para o supervisor! -\n";
echo "-------------------------------------------------------------------------------------------------------\n"; echo "-------------------------------------------------------------------------------------------------------\n";
@ -252,7 +257,8 @@ function displayUsage() {
//end displayUsage() //end displayUsage()
function sGetConnection() { function sGetConnection()
{
/* /*
* Se precisar de uma conexão diferente da padrão, espcifique sua propria connection string. * Se precisar de uma conexão diferente da padrão, espcifique sua propria connection string.
* $connStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL'); * $connStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL');
@ -268,7 +274,8 @@ function sGetConnection() {
return $conn; return $conn;
} }
function sSetTransaction($conn, $isolation = 'READ UNCOMMITTED') { function sSetTransaction($conn, $isolation = 'READ UNCOMMITTED')
{
/* /*
* Muda o isolamento da transação. * Muda o isolamento da transação.
*/ */
@ -281,7 +288,8 @@ function sSetTransaction($conn, $isolation = 'READ UNCOMMITTED') {
} }
} }
function sBeginTransaction($conn) { function sBeginTransaction($conn)
{
global $inTransaction; global $inTransaction;
/* /*
* Define o isolamento padrão para as transações. * Define o isolamento padrão para as transações.
@ -300,7 +308,8 @@ function sBeginTransaction($conn) {
$inTransaction = 1; $inTransaction = 1;
} }
function sCommitTransaction($conn) { function sCommitTransaction($conn)
{
global $inTransaction; global $inTransaction;
/* /*
* Fianaliza a Transacao corrente. * Fianaliza a Transacao corrente.
@ -314,7 +323,8 @@ function sCommitTransaction($conn) {
$inTransaction = 0; $inTransaction = 0;
} }
function sRollbackTransaction($conn) { function sRollbackTransaction($conn)
{
global $inTransaction; global $inTransaction;
/* /*
* Cancela a transasação corrente. * Cancela a transasação corrente.
@ -324,7 +334,8 @@ function sRollbackTransaction($conn) {
} }
} }
function SetDadosDac($conn, $shmKeyDac, $oldDac = array()) { function SetDadosDac($conn, $shmKeyDac, $oldDac = array())
{
try { try {
/* /*
* Inicia uma transação com o banco de dados. * Inicia uma transação com o banco de dados.
@ -392,12 +403,14 @@ function SetDadosDac($conn, $shmKeyDac, $oldDac = array()) {
} }
} }
function GetDataSize($tipoDados) { function GetDataSize($tipoDados)
{
global $arDadosControle; global $arDadosControle;
return $arDadosControle[$tipoDados]; return $arDadosControle[$tipoDados];
} }
function GetAbdsr($conn) { function GetAbdsr($conn)
{
global $gOldAbdsr, $numCiclos; global $gOldAbdsr, $numCiclos;
/* /*
@ -413,22 +426,20 @@ function GetAbdsr($conn) {
$diasAbandon = GetDiasAbandonada($conn); $diasAbandon = GetDiasAbandonada($conn);
$abdsr = array(); $abdsr = array();
$query = "select b.fila, count(distinct a.abdsr_uniqueid) as qtde_fila $query = "SELECT b.fila, count(DISTINCT a.abdsr_uniqueid) AS qtde_fila
from pbx_abandonadas_semretorno a FROM pbx_abandonadas_semretorno a
inner join ast_eventos_dacs b on b.uid2 = a.abdsr_uniqueid and b.fila = a.abdsr_fila and b.evento = 'ABANDON' INNER JOIN ast_eventos_dacs b ON b.uid2 = a.abdsr_uniqueid AND b.fila = a.abdsr_fila AND b.evento = 'ABANDON'
inner join ast_bilhetes c on c.uniqueid = b.uid2 INNER JOIN ast_bilhetes c ON c.uniqueid = b.uid2
where a.abdsr_data_hora_retorno is null WHERE a.abdsr_data_hora_retorno IS NULL
and a.abdsr_data >= (now()::date - $diasAbandon) AND a.abdsr_data >= (now()::date - $diasAbandon)
group by b.fila GROUP BY b.fila
order by 1"; ORDER BY 1";
$result = pg_query($conn, $query); $result = pg_query($conn, $query);
if (!$result) { if (!$result) {
return array(); return array();
} }
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
$fila = trim($dados['fila']); $fila = trim($dados['fila']);
$abdsr[$fila] = $dados['qtde_fila']; $abdsr[$fila] = $dados['qtde_fila'];
@ -437,18 +448,21 @@ function GetAbdsr($conn) {
return $abdsr; return $abdsr;
} }
function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) { function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array())
{
global $gOlDac; global $gOlDac;
try { try {
/* /*
* Esta variavel devera conter informações para atualizar o agente. * Esta variavel devera conter informações para atualizar o agente.
*/ */
$dadosMonitor = array("dac" => "", "qtde_fila" => 0, "duracao" => '00:00:00', "fone" => '-', "abandonadas" => '0', "tme" => '0', "tma" => '0', "atendidas_pa" => '0', $dadosMonitor = array(
"dac" => "", "qtde_fila" => 0, "duracao" => '00:00:00', "fone" => '-', "abandonadas" => '0', "tme" => '0', "tma" => '0', "atendidas_pa" => '0',
"num_protocolo" => '-', "ramal_monitor" => '', "dac_logado" => '-', "status_agente" => 'OFF', "tempo_logado" => '-', "uniqueid2" => 0, "tempo_atualiza" => 0, "num_protocolo" => '-', "ramal_monitor" => '', "dac_logado" => '-', "status_agente" => 'OFF', "tempo_logado" => '-', "uniqueid2" => 0, "tempo_atualiza" => 0,
"pausa_motivo_rt" => '-', "pausa_motivo_ausente" => 0, "uniqueid" => 0, 'matricula' => '-', "disponivel_atendimento" => 1, "uf_origem" => '', "mun_origem" => '', "pausa_motivo_rt" => '-', "pausa_motivo_ausente" => 0, "uniqueid" => 0, 'matricula' => '-', "disponivel_atendimento" => 1, "uf_origem" => '', "mun_origem" => '',
"mun_id" => '0', "prefixo_fone" => '', "disponivelFila" => '1', "originadas_pa" => '0', "agente_anota_key" => "", "txt_cliente" => "", "chamada_classificado" => '2', "mun_id" => '0', "prefixo_fone" => '', "disponivelFila" => '1', "originadas_pa" => '0', "agente_anota_key" => "", "txt_cliente" => "", "chamada_classificado" => '2',
"chamada_classificado_txt" => '...', "chamada_classificado_exige" => '0', "prm_obs_pausaprod" => '0', "exibePesquisa" => '0', 'canal_transfer' => '', "abandonadasRet" => '0', "chamada_classificado_txt" => '...', "chamada_classificado_exige" => '0', "prm_obs_pausaprod" => '0', "exibePesquisa" => '0', 'canal_transfer' => '', "abandonadasRet" => '0',
"tipo_ligacao" => '', "cont_identificador" => "", "status_discador" => 0, 'media' => 0, 'pa_fixo' => 0); "tipo_ligacao" => '', "cont_identificador" => "", "status_discador" => 0, 'media' => 0, 'pa_fixo' => 0
);
$arDadosAgente = array(); $arDadosAgente = array();
@ -474,7 +488,6 @@ function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
$agente = $dados["matricula"]; $agente = $dados["matricula"];
$arDadosMonitor = $dadosMonitor; $arDadosMonitor = $dadosMonitor;
foreach ($dados as $key => $value) { foreach ($dados as $key => $value) {
$arDadosMonitor[$key] = $value; $arDadosMonitor[$key] = $value;
@ -495,7 +508,6 @@ function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
$dac = $infoAgt["dac"]; $dac = $infoAgt["dac"];
if (!empty($gOlDac[$dac])) { if (!empty($gOlDac[$dac])) {
$arDac = $gOlDac[$dac]; $arDac = $gOlDac[$dac];
foreach ($arInfoDac as $keyParam => $valParam) { foreach ($arInfoDac as $keyParam => $valParam) {
$infoAgt[$valParam] = $arDac[$keyParam]; $infoAgt[$valParam] = $arDac[$keyParam];
} }
@ -529,66 +541,67 @@ function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
} }
} }
function GetQueryAgenteRt() { function GetQueryAgenteRt()
{
return "select a.dac, return "SELECT a.dac,
a.ramal as ramal_monitor, a.ramal AS ramal_monitor,
a.matricula, a.matricula,
a.nome, a.nome,
a.monitorar as statusmonitorar, a.monitorar AS statusmonitorar,
a.intercalar as statusintercalar, a.intercalar AS statusintercalar,
( (EXTRACT(EPOCH FROM (now() - a.duracao)) / 60)) as status_time, ( (EXTRACT(EPOCH FROM (now() - a.duracao)) / 60)) AS status_time,
a.disponivel_atendimento, a.disponivel_atendimento,
chamada_classificado, chamada_classificado,
(LOCALTIMESTAMP(0) - a.tempo_login) as tempo_logado, (LOCALTIMESTAMP(0) - a.tempo_login) AS tempo_logado,
a.modo_atendimento, a.modo_atendimento,
a.origem_destino as fone, a.origem_destino AS fone,
trim(status) as status_agente, trim(status) AS status_agente,
case when((a.status = 'PAUSA') and (coalesce(a.motivo_pausa, '') <> ''))then a.status || '-' || upper(a.motivo_pausa) else a.status end as status, CASE WHEN((a.status = 'PAUSA') AND (coalesce(a.motivo_pausa, '') <> ''))THEN a.status || '-' || upper(a.motivo_pausa) ELSE a.status END AS status,
(LOCALTIMESTAMP(0) - a.duracao) as duracao, (LOCALTIMESTAMP(0) - a.duracao) AS duracao,
protocolo as num_protocolo, protocolo AS num_protocolo,
uniqueid2, uniqueid2,
extract(epoch from (now() - logado))::int as tempo_atualiza, extract(epoch FROM (NOW() - logado))::int AS tempo_atualiza,
trim(motivo_pausa) as pausa_motivo_rt, trim(motivo_pausa) AS pausa_motivo_rt,
trim(uniqueid) as uniqueid, trim(uniqueid) AS uniqueid,
disponivel_atendimento, disponivel_atendimento,
chamada_classificado, chamada_classificado,
coalesce(canal_transfer, '') as canal_transfer, coalesce(canal_transfer, '') AS canal_transfer,
media, org_id,
tipo_ligacao, cont_identificador, status_discador, tipo_ligacao, cont_identificador, status_discador,
( SELECT count(*) (SELECT COUNT(*)
FROM ast_bilhetes x, ast_eventos_dacs y FROM ast_bilhetes x, ast_eventos_dacs y
where y.uid2 = x.uniqueid WHERE y.uid2 = x.uniqueid
and x.data_bilhete in(a.tempo_login::date, now()::date) AND x.data_bilhete IN(a.tempo_login::date, NOW()::date)
and y.fila = a.dac AND y.fila = a.dac
and y.agente = ('Agent/' || a.matricula) AND y.agente = ('Agent/' || a.matricula)
and y.evento in('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS') AND y.evento IN('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS')
and x.lastapp <> 'Transferred Call' ) as originadas_pa, AND x.lastapp <> 'Transferred Call' ) AS originadas_pa,
( SELECT count(*) (SELECT COUNT(*)
FROM ast_bilhetes x, ast_eventos_dacs y, ast_bilhetes_complemento z FROM ast_bilhetes x, ast_eventos_dacs y, ast_bilhetes_complemento z
where y.uid2 = x.uniqueid WHERE y.uid2 = x.uniqueid
and x.uniqueid = z.uniqueid2 AND x.uniqueid = z.uniqueid2
and z.direcao = 'fila-ramal' AND z.direcao = 'fila-ramal'
and x.data_bilhete in(a.tempo_login::date, now()::date) AND x.data_bilhete IN(a.tempo_login::date, NOW()::date)
and y.fila = a.dac AND y.fila = a.dac
and y.agente = ('Agent/' || a.matricula) AND y.agente = ('Agent/' || a.matricula)
and y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') AND y.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL')
and x.lastapp <> 'Transferred Call' ) AS atendidas_pa, AND x.lastapp <> 'Transferred Call' ) AS atendidas_pa,
( SELECT sum( (SELECT SUM(CASE WHEN ((y.evento = 'TRANSFER') OR (y.evento = 'TRANSFERORIG')) THEN strtoint(y.param4) ELSE strtoint(y.param2) END)
CASE WHEN ((y.evento = 'TRANSFER') or (y.evento = 'TRANSFERORIG')) THEN strtoint(y.param4)
ELSE strtoint(y.param2) END
)
FROM ast_bilhetes x, ast_eventos_dacs y FROM ast_bilhetes x, ast_eventos_dacs y
where y.uid2 = x.uniqueid WHERE y.uid2 = x.uniqueid
and x.data_bilhete in(a.tempo_login::date, now()::date) AND x.data_bilhete IN(a.tempo_login::date, NOW()::date)
and y.fila = a.dac AND y.fila = a.dac
and y.agente = ('Agent/' || a.matricula) AND y.agente = ('Agent/' || a.matricula)
and y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG') AND y.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG')
and x.lastapp <> 'Transferred Call') AS tempo_atendimento, (select coalesce(pa_fixo, 0) from pbx_usuarios where matricula = a.matricula) as pa_fixo AND x.lastapp <> 'Transferred Call') AS tempo_atendimento, (SELECT coalesce(pa_fixo, 0) FROM pbx_usuarios WHERE matricula = a.matricula) AS pa_fixo
FROM pbx_supervisor_agentes a where 1=1 order by a.dac, a.nome"; FROM pbx_supervisor_agentes a
} WHERE 1=1
ORDER BY a.dac, a.nome";
function SeTinfoControle($tipoDados, $dados, $silent = false) { }
function SeTinfoControle($tipoDados, $dados, $silent = false)
{
global $shmKeyCtrl, $arDadosControle, $gNumErros, $gArMsg, $idMsg; global $shmKeyCtrl, $arDadosControle, $gNumErros, $gArMsg, $idMsg;
if ($tipoDados != TIPO_DADOS_MSG) { if ($tipoDados != TIPO_DADOS_MSG) {
@ -613,30 +626,33 @@ function SeTinfoControle($tipoDados, $dados, $silent = false) {
*/ */
ShmClear($shmKeyCtrl, 0, Malloc(array(TAM_SEGMENTO_CONTROLE, 0, 0))); ShmClear($shmKeyCtrl, 0, Malloc(array(TAM_SEGMENTO_CONTROLE, 0, 0)));
if (!ShmWriteVar($shmKeyCtrl, $arDadosControle, 0)) { if (!ShmWriteVar($shmKeyCtrl, $arDadosControle, 0)) {
if (!$silent) if (!$silent) {
GeraExcept("Não foi possível gravar os dados do controle!"); GeraExcept("Não foi possível gravar os dados do controle!");
} }
} }
}
function GetQueryDac() { function GetQueryDac()
return "select distinct coalesce(sel, 0) as sel, {
e.dac, coalesce(originadas_pa,0) as originadas, return "SELECT DISTINCT coalesce(sel, 0) AS sel,
coalesce(a.atendidas, 0) as atendidas, e.dac, coalesce(originadas_pa,0) AS originadas,
coalesce(a.abandonadas::int, 0) as abandonadas, coalesce(a.atendidas, 0) AS atendidas,
coalesce(e.espera::int, 0) as espera, coalesce(a.abandonadas::int, 0) AS abandonadas,
( coalesce(e.tempo_espera::int, 0) * INTERVAL '1 SECOND') as tempo_espera, coalesce(e.espera::int, 0) AS espera,
coalesce(e.tempo_espera::int, 0) as tempo_espera_int, ( coalesce(e.tempo_espera::int, 0) * INTERVAL '1 SECOND') AS tempo_espera,
( round(coalesce(a.inb,0),0)::text || '%') as tempo_nivel_servico, coalesce(e.tempo_espera::int, 0) AS tempo_espera_int,
'D' as tipo, ( round(coalesce(a.inb,0),0)::text || '%') AS tempo_nivel_servico,
'D' AS tipo,
transbordando, transbordando,
transbordada, transbordada,
tme, tme,
tma, tma,
nao_classificado, nao_classificado,
id_dac, id_dac,
(select count(*) from pbx_supervisor_agentes where dac = e.dac) as num_agente, 1 as ord (SELECT count(*) FROM pbx_supervisor_agentes WHERE dac = e.dac) AS num_agente, 1 AS ord,
from pbx_supervisor_dacs e org_id
left join ( FROM pbx_supervisor_dacs e
LEFT JOIN (
SELECT 0 as sel, DAC, ID_DAC, SELECT 0 as sel, DAC, ID_DAC,
DATA, DATA,
ABANDONADAS ABANDONADAS
@ -656,7 +672,7 @@ function GetQueryDac() {
,NAO_CLASSIFICADO ,NAO_CLASSIFICADO
FROM ( FROM (
SELECT DATA, SELECT DATA,
DAC, ID_DAC DAC, ID_DAC, org_id
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS OFERECIDAS ,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS OFERECIDAS
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS ATENDIDAS_URA ,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS ATENDIDAS_URA
,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS ,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS
@ -673,85 +689,26 @@ function GetQueryDac() {
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') THEN nao_classificado ELSE 0 END) AS nao_classificado ,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') THEN nao_classificado ELSE 0 END) AS nao_classificado
FROM ( FROM (
SELECT a.data_bilhete as data, b.fila as dac, d.id as id_dac, b.fila,b.evento,b.param1,b.param2,b.param3,b.param4, SELECT a.data_bilhete as data, b.fila as dac, d.id as id_dac, b.fila,b.evento,b.param1,b.param2,b.param3,b.param4,
case when(evento = 'TRANSBORDADO')then 1 else 0 end as transbordada, case when( exists( select '' from pbx_classifica_reg WHERE id_bilhetes = a.uniqueid) )then 0 else 1 end as nao_classificado case when(evento = 'TRANSBORDADO')then 1 else 0 end as transbordada, case when( exists( select '' from pbx_classifica_reg WHERE id_bilhetes = a.uniqueid) )then 0 else 1 end as nao_classificado,
d.org_id
FROM (select data_bilhete, uniqueid from ast_bilhetes where data_bilhete = now()::date and lastapp <> 'Transferred Call') a FROM (select data_bilhete, uniqueid from ast_bilhetes where data_bilhete = now()::date and lastapp <> 'Transferred Call') a
INNER JOIN ast_eventos_dacs b on a.uniqueid = b.uid2 INNER JOIN ast_eventos_dacs b on a.uniqueid = b.uid2
INNER JOIN pbx_dacs d on d.nome = b.fila and d.status = 'A' INNER JOIN pbx_queues_grupos d on d.nome = b.fila and d.status = 'A'
WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER', 'CONNECT','ENTERQUEUE','TRANSFER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG', 'TRANSBORDANDO', 'TRANSBORDADO','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','BUSYS','NOANSWERS')
) AS DADOS
GROUP BY DATA, DAC, ID_DAC
) AS DADOS ORDER BY 1
) a on e.dac = a.dac order by 2";
return " select distinct coalesce(sel, 0) as sel,
e.dac, coalesce(originadas_pa,0) as originadas,
coalesce(a.atendidas, 0) as atendidas,
coalesce(a.abandonadas::int, 0) as abandonadas,
coalesce(e.espera::int, 0) as espera,
( coalesce(e.tempo_espera::int, 0) * INTERVAL '1 SECOND') as tempo_espera,
coalesce(e.tempo_espera::int, 0) as tempo_espera_int,
( round(coalesce(a.inb,0),0)::text || '%') as tempo_nivel_servico,
'D' as tipo,
transbordando,
transbordada,
tme,
tma,
(select count(*) from pbx_nao_classificado where fila = a.dac and data_bilhete = a.data) as nao_classificado, id_dac,
(select count(*) from pbx_supervisor_agentes where dac = e.dac) as num_agente, 1 as ord
from pbx_supervisor_dacs e
left join (
SELECT 0 as sel, DAC, ID_DAC,
DATA,
ABANDONADAS
,ATENDIDAS_PA AS ATENDIDAS
,ORIGINADAS_PA
,ESPERA
,round( CASE WHEN(ESPERA = 0)THEN 0 ELSE (TEMPO_ESPERA / ESPERA) END ) * INTERVAL '1 SECOND' AS TME
,round( CASE WHEN(ATENDIDAS_PA = 0)THEN 0 ELSE (TEMPO_ATENDIMENTO / (ATENDIDAS_PA + ORIGINADAS_PA))END) * INTERVAL '1 SECOND' AS TMA
,round(CASE WHEN(ABANDONADAS = 0)THEN 0 ELSE (TEMPO_ABANDONO / ABANDONADAS) END) * INTERVAL '1 SECOND' AS TMAB
,(CASE WHEN((ATENDIDAS_PA::FLOAT + ABANDONADAS::FLOAT) = 0)THEN 0 ELSE ATENDIDAS_30::FLOAT / (ATENDIDAS_PA::FLOAT + ABANDONADAS::FLOAT) END * 100)::numeric(5,2) as INB
,(CASE WHEN(OFERECIDAS::FLOAT = 0)THEN 0 ELSE (ABANDONADAS::FLOAT / OFERECIDAS::FLOAT) END * 100)::numeric(5,2) as IAB
,TEMPO_ESPERA
,TEMPO_ATENDIMENTO
,TEMPO_ABANDONO
,TRANSBORDANDO
,TRANSBORDADA
FROM (
SELECT DATA,
DAC, ID_DAC
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS OFERECIDAS
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS ATENDIDAS_URA
,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') THEN 1 ELSE 0 END) AS ATENDIDAS_PA
,SUM (CASE WHEN EVENTO IN ('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS') THEN 1 ELSE 0 END) AS ORIGINADAS_PA
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') AND strtoint(param1) <= (SELECT a.tempo_nivel_servico FROM pbx_supervisor_dacs a WHERE a.dac = fila)::FLOAT THEN 1 ELSE 0 END) AS ATENDIDAS_30
,SUM (CASE WHEN EVENTO IN ('TRANSFER') THEN 1 ELSE 0 END) AS TRANSFERIDAS
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND strtoint(param1) > '3' THEN 1 ELSE 0 END) AS ESPERA
,SUM (CASE WHEN (EVENTO IN ('CONNECT') AND strtoint(param1) > '3') THEN strtoint(param1) ELSE 0 END) AS TEMPO_ESPERA
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER','TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') AND strtoint((case when(param2 = '')then '0' else param2 end)) > '1' THEN strtoint((case when(param2 = '')then '0' else param2 end)) ELSE 0 END) AS TEMPO_ATENDIMENTO
,SUM (CASE WHEN EVENTO IN ('ABANDON') THEN strtoint(param3) ELSE 0 END) AS TEMPO_ABANDONO
,SUM (CASE WHEN EVENTO IN('TRANSBORDANDO') THEN 1 ELSE 0 END) AS TRANSBORDANDO
,SUM (transbordada) AS TRANSBORDADA
FROM (
SELECT D.NOME AS DAC, d.id as ID_DAC, a.calldate::date AS DATA, a.calldate,b.fila,b.evento,b.param1,b.param2,b.param3,b.param4,
case when(evento = 'TRANSBORDADO')then 1 else 0 end as transbordada
FROM ast_eventos_dacs b INNER JOIN ast_bilhetes a on a.uniqueid = b.uid2 and a.lastapp <> 'Transferred Call'
INNER JOIN pbx_dacs d on d.nome = b.fila and d.status = 'A'
WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER', 'CONNECT','ENTERQUEUE','TRANSFER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG', 'TRANSBORDANDO', 'TRANSBORDADO','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','BUSYS','NOANSWERS') WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER', 'CONNECT','ENTERQUEUE','TRANSFER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG', 'TRANSBORDANDO', 'TRANSBORDADO','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','BUSYS','NOANSWERS')
AND a.data_bilhete = now()::date
) AS DADOS ) AS DADOS
GROUP BY DATA, DAC, ID_DAC GROUP BY DATA, DAC, ID_DAC, org_id
) AS DADOS ORDER BY 1 ) AS DADOS ORDER BY 1
) a on e.dac = a.dac order by 2 "; ) a ON e.dac = a.dac ORDER BY 2";
} }
function sig_handler($signo) { function sig_handler($signo)
{
global $statusSignal; global $statusSignal;
$statusSignal = 1; $statusSignal = 1;
} }
function sig_status() { function sig_status()
{
global $statusSignal; global $statusSignal;
pcntl_signal_dispatch(); pcntl_signal_dispatch();
return $statusSignal; return $statusSignal;

10
asterisk/var_lib_asterisk/scripts/supervisor/teste.php

@ -1,10 +0,0 @@
#!/usr/bin/php -q
<?php
echo "Teste de script\n";
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

129
cadastros/organizacao/atribuirOrganizacao.php

@ -0,0 +1,129 @@
<?php
require('funcoesFormulario.php');
$templateName = 'cadastros/organizacao/atribuirOrganizacao.tpl';
//define tipo de formulario
$tpLayout = 1;
$fieldsForm = IsPostBack() ? $_POST : $_GET;
$idOrg = $_GET['id'] ? $_GET['id'] : $_POST['id'];
/**
* INFORMAÇÕES DO HTML DO SELECT
*/
$infos = [
'size' => 8,
'name' => 'usuarioEmpresa',
'width' => '200',
'disable' => '0',
'multiple' => '1'
];
if (isset($fieldsForm['btInclui'])) {
AtualizaEmpresa($dbcon, $fieldsForm['usuarioEmpresainc'], 1, $idOrg);
} else if (isset($fieldsForm['btRemove'])) {
AtualizaEmpresa($dbcon, $fieldsForm['usuarioEmpresarm'], 0, $idOrg);
}
$fieldsForm['listagrupos'] = GetUser($dbcon, 1, $infos, $idOrg);
$fieldsForm['gruposinc'] = GetEmpresaUser($dbcon, 1, $infos, $idOrg);
/*
* Atualiza templates templates
*/
foreach ($fieldsForm as $key => $value) {
$smarty->assign($key, $value);
}
GetTemplate($smarty, $templateName);
function GetUser($dbcon, $codSel, $infos, $idOrg)
{
$sel = "";
$infos['name'] = $infos['name'] . "inc";
$query = "SELECT DISTINCT id, apelido
FROM pbx_usuarios WHERE id
NOT IN (SELECT id_usuario FROM pbx_organizacao_usuarios WHERE id_organizacao = $idOrg)
AND id NOT IN (341,356,357,462,466,467);";
$result = pg_query($dbcon, $query);
$lista = '<select name="%s%s" id="%s" size="%s" style="width:%spx" %s >%s';
$lista = sprintf($lista, $infos['name'], ($infos['multiple'] ? "[]" : ""), $infos['name'], $infos['size'], $infos['width'], ($infos['multiple'] ? 'multiple="multiple"' : ''), "\n");
while ($row = pg_fetch_array($result)) {
$sel = ($codSel == $row["apelido"]) ? "selected" : "";
$lista .= "<option value=\"{$row["id"]}\" $sel>{$row["apelido"]}</option>\n";
}
$lista .= "</select>\n";
return $lista;
}
function GetEmpresaUser($dbcon, $codSel, $infos, $idOrg)
{
$sel = "";
$infos['name'] = $infos['name'] . "rm";
$query = "SELECT DISTINCT pu.id, pu.apelido
FROM pbx_usuarios pu
INNER JOIN pbx_organizacao_usuarios pou on pou.id_usuario = pu.id
INNER JOIN pbx_organizacao po on po.id = pou.id_organizacao
WHERE pu.id NOT IN (341,356,357,462,466,467)
AND pu.id IN (SELECT id_usuario FROM pbx_organizacao_usuarios WHERE id_organizacao = {$idOrg});";
$result = pg_query($dbcon, $query);
$lista = '<select name="%s%s" id="%s" size="%s" style="width:%spx;" %s>%s';
$lista = sprintf($lista, $infos['name'], ($infos['multiple'] ? "[]" : ""), $infos['name'], $infos['size'], $infos['width'], ($infos['multiple'] ? 'multiple="multiple"' : ''), "\n");
while (($row = @pg_fetch_array($result))) {
$sel = ($codSel == $row["id"]) ? "selected" : "";
$lista .= "<option value=\"{$row["id"]}\" $sel>{$row["apelido"]}</option>\n";
}
$lista .= "</select>";
return $lista;
}
function AtualizaEmpresa($dbcon, $field, $status, $idOrg)
{
try {
if (!$field) {
throw new Exception('Selecione um usuário');
}
pg_query($dbcon, 'begin');
foreach ($field as $idUser) {
$query = sprintf("SELECT *, NOW() as current_time FROM pbx_usuarios where id = %d ", $idUser);
$result = pg_query($dbcon, $query);
if ($result && pg_num_rows($result) > 0) {
$result = pg_fetch_assoc($result);
if ($status == 1) {
$query = sprintf("INSERT INTO pbx_organizacao_usuarios (id_usuario, id_organizacao) VALUES (%s, %s); ", $idUser, $idOrg);
$resposta = pg_query($dbcon, $query);
if ($resposta) {
$resposta = pg_query($dbcon, "commit");
} else {
throw new Exception("Erro ao inserir!");
}
}
if ($status == 0) {
$query = sprintf("DELETE FROM pbx_organizacao_usuarios WHERE id_usuario = %s AND id_organizacao = %s;", $idUser, $idOrg);
$resposta = pg_query($dbcon, $query);
if ($resposta) {
$resposta = pg_query($dbcon, "commit");
} else {
throw new Exception("Erro ao remover!$idUser, $idOrg");
}
}
}
}
if (!@pg_query($dbcon, 'commit')) {
throw new Exception('A operação não pode ser realizada!');
}
} catch (Exception $e) {
@pg_query($dbcon, 'rollback');
fmtErro($e->getMessage(), pg_last_error($dbcon));
}
}

120
cadastros/organizacao/cadOrganizacao.php

@ -0,0 +1,120 @@
<?php
require_once("util/constantes.php");
$tpLayout = 1;
$id = isset($_GET["id"]) ? $_GET["id"] : $_POST["id"];
$nome = isset($_POST["nome"]) ? $_POST["nome"] : null;
$status = isset($_POST["status"]) ? $_POST["status"] : "checked";
$master = isset($_POST["master"]) ? "checked" : 0;
try {
if (isset($_POST["btGravar"])) {
$ret = setOrganizacao($dbcon, ['nome' => $nome, 'status' => $status, 'master' => $master], $id);
}
if ($id || $ret) {
$dados = getOrganizacaoById($dbcon, $id ? $id : $ret);
list('id' => $id, 'nome' => $nome, 'status' => $status, 'master' => $master) = $dados;
}
if ($ret) {
$jsStartup[] = "alert('Empresa: $nome foi salva com sucesso!');";
$jsStartup[] = "window.opener.ResetForm();";
$jsStartup[] = 'window.close()';
}
} catch (Exception $e) {
$jsStartup[] = $msg = sprintf("alert('%s');", $e->getMessage());
}
$smarty->assign("id", $id);
$smarty->assign("nome", $nome);
$smarty->assign("status", $status ? "checked" : "");
$smarty->assign("master", $master ? "checked" : "");
$smarty->assign("acaoUser", $acaoUser);
GetTemplate($smarty, 'cadastros/organizacao/cadOrganizacao.tpl');
function setOrganizacao($dbcon, $dados, $id = null)
{
$isExists = ExisteRegistro($dbcon, "pbx_organizacao", "nome", strtoupper($dados['nome']), ($id ? " id <> $id" : null));
if (!$dados['nome'] || $isExists) {
throw new Exception($isExists ? "O nome da organização já existe!" : "Por favor, preencha o campo nome!");
}
if ($id) {
$query = "UPDATE pbx_organizacao
SET nome = %s,
status = %s,
master = %s
WHERE id = %s ";
$query = sprintf($query, QuotedStr($dados['nome']), $dados['status'], $dados['master'], $id);
} else {
$query = "INSERT INTO pbx_organizacao (nome, status, master) VALUES(%s, %s, %s) RETURNING id";
$query = sprintf($query, QuotedStr($dados['nome']), $dados['status'], $dados['master']);
}
$result = pg_query($dbcon, $query);
if (!$result) {
throw new Exception("Não foi possível gravar as informações da organização!");
}
$ret = pg_fetch_assoc($result);
return $id == null ? $ret['id'] : $id;
}
function getOrganizacaoById($dbcon, $id)
{
$query = "SELECT id, nome, status, master FROM pbx_organizacao WHERE id = $id;";
$result = pg_query($dbcon, $query);
if (!$result) {
throw new Exception("Não foi possível buscar a organização selecionada!");
}
$dados = pg_fetch_assoc($result);
return $dados;
}
function importIdTables($dbcon, $organizacao)
{
$tables = [
'pbx_parametros' => 'id',
'pbx_features_featuremap' => 'id',
'pbx_features_general' => 'id',
'pbx_iax_general' => 'id',
'pbx_facilidades' => 'id',
'pbx_voicemail_general' => 'id',
'pbx_sip_general' => 'id',
'pbx_workflow_parametros' => 'wkf_id'
];
foreach ($tables as $table => $column) {
if (!$column) {
$column = 'id';
}
$sql = "SELECT MAX($column) AS id FROM {$table};";
$result1 = pg_query($dbcon, $sql);
$resp = pg_fetch_assoc($result1);
$id = $resp['id'];
if (!$resp['id']) {
$id = 1;
___Gravalog(" [ $sql ] - Não foi possível o ID da tabela {$table};");
}
$query = "CREATE TEMPORARY TABLE t{$table} AS SELECT * FROM {$table} WHERE $column = 1;";
$query .= "ALTER TABLE t{$table} DROP COLUMN $column;";
$query .= "INSERT INTO {$table} SELECT * FROM t{$table};";
$query .= "UPDATE {$table} SET org_id = $organizacao WHERE $column = $id;";
pg_query($dbcon, $query);
pg_query($dbcon, "DROP TABLE IF EXISTS t{$table};");
}
}
function ___Gravalog($message)
{
$line = "\n----------------------------------------------\n";
$line .= sprintf("[ %s ] > %s \n", date('Y-m-d H:i:s'), $message);
$line .= "----------------------------------------------";
file_put_contents('/var/log/asterisk/cadOrganizacao.log', $line, FILE_APPEND);
}

86
cadastros/organizacao/organizacao.php

@ -0,0 +1,86 @@
<?php
$param = '';
$erro = '';
$janW = 500;
$janH = 285;
$tpl = 'cadastros/organizacao/organizacao.tpl';
$paramPesquisa = isset($_REQUEST['paramPesquisa']) ? $_REQUEST['paramPesquisa'] : '';
$filtro = isset($_REQUEST["paramPesquisa"]) ? trim($_REQUEST["paramPesquisa"]) : '';
$filtroNovo = !isset($_REQUEST["pgn"]) ? '' : sprintf("&paramPesquisa%s&pgn=%s&bloco=%s&pg=%s&status=%s", $_REQUEST["paramPesquisa"], $_REQUEST["pgn"], $_REQUEST["bloco"], $_REQUEST["pg"], $_REQUEST["status"]);
$recontaPag = (GetFormAcao() == FORM_DELETE) || isset($_POST['pesquisa']);
$statusAtivo = isset($_REQUEST["status"]) ? $_REQUEST["status"] : 1;
$imgNovo = "<img src=\"images/novo.gif\" width=\"16\" height=\"16\" align=\"absmiddle\" border=\"0\" title=\"Inclui nova empresa\">";
$imgNovo = "<a href=\"javaScript:NovaJanela('index.php?idProg=370&id=$filtroNovo', 'empresasCad', '$janW', '$janH', 'resizable=NO,scrollbars=NO');\">$imgNovo Nova empresa</a>";
$id = isset($_GET["id"]) ? $_GET["id"] : '';
$idDelete = isset($_GET["idDelete"]) ? $_GET["idDelete"] : null;
if ($idDelete) {
try {
$query = "UPDATE pbx_organizacao SET status = 0 WHERE id = {$idDelete}";
$ret = pg_query($dbcon, $query);
if (!$ret) {
GeraExcept("Não foi possível iniciar a operação de exclusão da organização!");
}
} catch (Exception $ex) {
$msg = sprintf("alert('%s');", $ex->getMessage());
}
$jsStartup[] = $msg;
}
//Complete para buscar parâmetros (no caso multiempresas terá somente 1 que é nome)
$compl = '';
if (isset($_REQUEST['paramPesquisa']) && $_REQUEST['paramPesquisa']) {
$compl = PreparaLike($filtro, true);
$compl = sprintf("AND (nome ILIKE %s )", $compl);
}
$statusAtv = $statusAtivo ? "AND status = 1" : "AND status = 0";
$query = "SELECT id, nome, status, master, 0 as org_id FROM pbx_organizacao po ";
$query .= "WHERE nome <> 'sinccontasenha' $statusAtv $compl AND upper(nome) <> 'ADMIN' ORDER BY id, nome";
$params = "&paramPesquisa={$filtro}&status=$statusAtivo";
$links = PaginaDados($idProg, $query, $params, $regPagina, $offSet, $pagMostra, true);
$query .= " LIMIT $regPagina OFFSET $offSet";
$result = pg_query($dbcon, $query);
$linha = "";
while ($dados = @pg_fetch_array($result)) {
$id = $dados["id"];
$nome = $dados["nome"];
$imgEdit = "<img src=\"imgSite/editaUser.png\" width=\"16\" height=\"16\" border=\"0\" title=\"Editar empresa: $nome\">";
$imgAtribuir = "<img src=\"admin/images/usuarios.gif\" width=\"16\" height=\"16\" border=\"0\" title=\"Atribuir usuários a $nome\">";
$imgDelete = sprintf("<img src=\"imgSite/%s\" width=\"16\" height=\"16\" border=\"0\" title=\" %s\">", ($dados['status'] == 1 ? 'deletaUser.png' : 'deletaUserOff.png'), ($dados['status'] == 1 ? "Desabilitar e remover a organização $nome" : "A organização $nome foi desativada!"));
$imgEdit = "<a href=\"javaScript:NovaJanela('index.php?idProg=370&id=$id', 'empresaCad', '$janW', '$janH', 'resizable=NO,scrollbars=NO');\"> $imgEdit</a>";
$imgAtribuir = "<a href=\"javaScript:NovaJanela('index.php?idProg=371&id=$id', 'empresasCad', '$janW', '$janH', 'resizable=NO,scrollbars=NO');\">$imgAtribuir</a>";
$nome = "<a style=\"color: #000;\" href=\"javaScript:NovaJanela('index.php?idProg=370&id=$id', 'empresaCad', '$janW', '$janH', 'resizable=NO,scrollbars=NO');\"> $nome</a>";
$empresaMaster = ($dados["master"]) == 1 ? 'Master' : 'Não Master';
$status = GetStatusModulo($dados['status'], true);
$delete = $dados['status'] == 1 ? "<a href='index.php?idProg=369&idDelete=$id'>{$imgDelete}</a>" : $imgDelete;
$linha .= " <tr>
<td align=\"center\">$id</td>
<td align=\"left\" nowrap>$nome</td>
<td width=\"20\" align=\"center\">$empresaMaster</td>
<td width=\"20\" align=\"center\">$status</td>
<td width=\"20\" align=\"center\" style=\"border-right: 0\">$imgEdit</td>
<td width=\"20\" align=\"center\" style=\"border-left: 0; border-right: 0\">$imgAtribuir</td>
<td width=\"20\" align=\"center\" style=\"border-left: 0\">$delete</td>
</tr>";
}
$smarty->assign('erro', $erro);
$smarty->assign("linhas", $linha);
$smarty->assign("paramPesquisa", $paramPesquisa);
$smarty->assign("imgNovo", $imgNovo);
$smarty->assign("imgLcFixo", $imgLcFixo);
$smarty->assign("links", $links);
$smarty->assign("pagMostra", $pagMostra);
$smarty->assign("totalReg", $totalReg);
$smarty->assign("status", $statusAtivo);
$smarty->assign("pgn", $_REQUEST["pgn"]);
$smarty->assign("bloco", $_REQUEST["bloco"]);
$smarty->assign("pg", $_REQUEST["pg"]);
GetTemplate($smarty, $tpl);

27
configGeral.php

@ -116,20 +116,19 @@ if ($idSubProg == CONFIG_BASE_DADOS) {
'prm_ativa_complemento_campanha', "prm_tempo_sessao", "prm_registro_pagina", "prm_use_vendas", "prm_nome_vendas", "prm_exige_proto_vendas", 'prm_ativa_complemento_campanha', "prm_tempo_sessao", "prm_registro_pagina", "prm_use_vendas", "prm_nome_vendas", "prm_exige_proto_vendas",
"prm_bloqueio", "prm_bloqueio_data", "prm_abandonada_semretorno", "prm_max_licenca", "prm_max_ramal", "prm_bloqueio", "prm_bloqueio_data", "prm_abandonada_semretorno", "prm_max_licenca", "prm_max_ramal",
"prm_normaliza_agenda", 'prm_max_dias_relatorio', 'prm_log_dias', 'prm_ocultar_telefone', 'prm_ocultar_email', 'prm_ocultar_documento', 'prm_max_licenca_fixo', "prm_normaliza_agenda", 'prm_max_dias_relatorio', 'prm_log_dias', 'prm_ocultar_telefone', 'prm_ocultar_email', 'prm_ocultar_documento', 'prm_max_licenca_fixo',
"prm_relatorio_servico"); "prm_relatorio_servico"
);
$default = array("prm_atende_auto" => 0, "prm_atende_manual" => 0, "prm_tempo_sessao" => 20, "prm_normaliza_agenda" => 0, "prm_max_dias_relatorio" => 0, 'prm_log_dias' => 0, 'prm_ocultar_telefone' => 0); $default = array("prm_atende_auto" => 0, "prm_atende_manual" => 0, "prm_tempo_sessao" => 20, "prm_normaliza_agenda" => 0, "prm_max_dias_relatorio" => 0, 'prm_log_dias' => 0, 'prm_ocultar_telefone' => 0);
$values = array(); $values = array();
if (isset($_POST["btGravar"])) { if (isset($_POST["btGravar"])) {
if (!ExisteRegistro($dbcon, 'pbx_parametros', 'id', '1')) { if (!ExisteRegistro($dbcon, 'pbx_parametros', 'id', '1')) {
$query = "insert $query = "INSERT INTO pbx_parametros (prm_slogan, prm_path_audio, prm_path_arq_agente, prm_logo_relatorio, prm_relatorio_head, prm_relatorio_linha1, prm_relatorio_linha2, prm_msg_senha_def, prm_msg_senha_exp, prm_url_asterisk, prm_ddd_padrao, prm_mun_padrao, prm_uf_padrao, prm_cadastro_atendido, prm_digitos_conta, prm_digitos_senhas, prm_gera_conta, prm_pausa_grupo, prm_atende_auto, prm_atende_manual, prm_atende_preferencial, prm_prefixo_sennha_ramal, prm_modulo_pesquisa, prm_contasenha_sinc, prm_contasenha_master, prm_portabilidade, prm_tarifacao, prm_prepago, prm_use_discador, prm_tempo_sessao, prm_registro_pagina, prm_use_vendas, prm_nome_vendas, prm_exige_proto_vendas, prm_bloqueio, prm_bloqueio_data, prm_abandonada_semretorno, prm_max_licenca, prm_max_ramal, prm_normaliza_agenda, prm_max_dias_relatorio, prm_ocultar_telefone, prm_ocultar_email, prm_ocultar_documento, prm_max_licenca_fixo, prm_relatorio_servico, org_id)
into pbx_parametros VALUES({prm_slogan},{prm_path_audio},{prm_path_arq_agente}, {prm_logo_relatorio},{prm_relatorio_head},{prm_relatorio_linha1},{prm_relatorio_linha2},{prm_msg_senha_def},{prm_msg_senha_exp},{prm_url_asterisk},{prm_ddd_padrao},{prm_mun_padrao},{prm_uf_padrao},{prm_cadastro_atendidos},{prm_digitos_conta},{prm_digitos_senha},{prm_gera_conta},{prm_pausa_grupo},{prm_atende_auto},{prm_atende_manual},{prm_atende_preferencial},{prm_prefixo_sennha_ramal},{prm_modulo_pesquisa},{prm_contasenha_sinc},{prm_contasenha_master},{prm_portabilidade},{prm_tarifacao},{prm_prepago},{prm_use_discador},{prm_tempo_sessao},{prm_registro_pagina},{prm_use_vendas},{prm_nome_vendas}, {prm_exige_proto_vendas}, {prm_bloqueio}, {prm_bloqueio_data}, {prm_abandonada_semretorno}, {prm_max_licenca}, {prm_max_ramal}, {prm_normaliza_agenda},{prm_max_dias_relatorio}, {prm_ocultar_telefone}, {prm_ocultar_email}, {prm_ocultar_documento}, {prm_max_licenca_fixo}, {prm_relatorio_servico}, $org_id)";
(id, prm_slogan, prm_path_audio, prm_path_arq_agente, prm_logo_relatorio, prm_relatorio_head, prm_relatorio_linha1, prm_relatorio_linha2, prm_msg_senha_def, prm_msg_senha_exp, prm_url_asterisk, prm_ddd_padrao, prm_mun_padrao, prm_uf_padrao, prm_cadastro_atendido, prm_digitos_conta, prm_digitos_senhas, prm_gera_conta, prm_pausa_grupo, prm_atende_auto, prm_atende_manual, prm_atende_preferencial, prm_prefixo_sennha_ramal, prm_modulo_pesquisa, prm_contasenha_sinc, prm_contasenha_master, prm_portabilidade, prm_tarifacao, prm_prepago, prm_use_discador, prm_tempo_sessao, prm_registro_pagina, prm_use_vendas, prm_nome_vendas, prm_exige_proto_vendas, prm_bloqueio, prm_bloqueio_data, prm_abandonada_semretorno, prm_max_licenca, prm_max_ramal, prm_normaliza_agenda, prm_max_dias_relatorio, prm_ocultar_telefone, prm_ocultar_email, prm_ocultar_documento, prm_max_licenca_fixo, prm_relatorio_servico)
values(1, {prm_slogan},{prm_path_audio},{prm_path_arq_agente}, {prm_logo_relatorio},{prm_relatorio_head},{prm_relatorio_linha1},{prm_relatorio_linha2},{prm_msg_senha_def},{prm_msg_senha_exp},{prm_url_asterisk},{prm_ddd_padrao},{prm_mun_padrao},{prm_uf_padrao},{prm_cadastro_atendidos},{prm_digitos_conta},{prm_digitos_senha},{prm_gera_conta},{prm_pausa_grupo},{prm_atende_auto},{prm_atende_manual},{prm_atende_preferencial},{prm_prefixo_sennha_ramal},{prm_modulo_pesquisa},{prm_contasenha_sinc},{prm_contasenha_master},{prm_portabilidade},{prm_tarifacao},{prm_prepago},{prm_use_discador},{prm_tempo_sessao},{prm_registro_pagina},{prm_use_vendas},{prm_nome_vendas}, {prm_exige_proto_vendas}, {prm_bloqueio}, {prm_bloqueio_data}, {prm_abandonada_semretorno}, {prm_max_licenca}, {prm_max_ramal}, {prm_normaliza_agenda},{prm_max_dias_relatorio}, {prm_ocultar_telefone}, {prm_ocultar_email}, {prm_ocultar_documento}, {prm_max_licenca_fixo}, {prm_relatorio_servico})";
} else { } else {
$query = "update pbx_parametros $query = "UPDATE pbx_parametros
set prm_slogan = {prm_slogan}, prm_path_audio = {prm_path_audio}, prm_path_arq_agente = {prm_path_arq_agente}, SET prm_slogan = {prm_slogan}, prm_path_audio = {prm_path_audio}, prm_path_arq_agente = {prm_path_arq_agente},
prm_logo_relatorio = {prm_logo_relatorio}, prm_relatorio_head = {prm_relatorio_head}, prm_logo_relatorio = {prm_logo_relatorio}, prm_relatorio_head = {prm_relatorio_head},
prm_relatorio_linha1 = {prm_relatorio_linha1}, prm_relatorio_linha2 = {prm_relatorio_linha2}, prm_relatorio_linha1 = {prm_relatorio_linha1}, prm_relatorio_linha2 = {prm_relatorio_linha2},
prm_msg_senha_def = {prm_msg_senha_def}, prm_msg_senha_exp = {prm_msg_senha_exp}, prm_url_asterisk = {prm_url_asterisk}, prm_msg_senha_def = {prm_msg_senha_def}, prm_msg_senha_exp = {prm_msg_senha_exp}, prm_url_asterisk = {prm_url_asterisk},
@ -146,7 +145,7 @@ if ($idSubProg == CONFIG_BASE_DADOS) {
prm_abandonada_semretorno = {prm_abandonada_semretorno}, prm_max_licenca = {prm_max_licenca}, prm_max_ramal = {prm_max_ramal}, prm_abandonada_semretorno = {prm_abandonada_semretorno}, prm_max_licenca = {prm_max_licenca}, prm_max_ramal = {prm_max_ramal},
prm_normaliza_agenda = {prm_normaliza_agenda}, prm_max_dias_relatorio = {prm_max_dias_relatorio}, prm_ocultar_telefone = {prm_ocultar_telefone}, prm_normaliza_agenda = {prm_normaliza_agenda}, prm_max_dias_relatorio = {prm_max_dias_relatorio}, prm_ocultar_telefone = {prm_ocultar_telefone},
prm_ocultar_email = {prm_ocultar_email}, prm_ocultar_documento = {prm_ocultar_documento}, prm_max_licenca_fixo = {prm_max_licenca_fixo}, prm_relatorio_servico = {prm_relatorio_servico} prm_ocultar_email = {prm_ocultar_email}, prm_ocultar_documento = {prm_ocultar_documento}, prm_max_licenca_fixo = {prm_max_licenca_fixo}, prm_relatorio_servico = {prm_relatorio_servico}
where id = 1"; WHERE id = {$_SESSION['prm_id']}";
} }
$fileLogo = MoveLogo(); $fileLogo = MoveLogo();
@ -237,7 +236,7 @@ if ($idSubProg == CONFIG_BASE_DADOS) {
} }
} }
$query = "select id, prm_slogan, prm_path_audio, prm_path_arq_agente, prm_logo_relatorio, prm_relatorio_head, prm_relatorio_linha1, $query = "SELECT id as prm_id, prm_slogan, prm_path_audio, prm_path_arq_agente, prm_logo_relatorio, prm_relatorio_head, prm_relatorio_linha1,
prm_relatorio_linha2, prm_msg_senha_def, prm_msg_senha_exp, prm_url_asterisk, prm_ddd_padrao, prm_mun_padrao, prm_relatorio_linha2, prm_msg_senha_def, prm_msg_senha_exp, prm_url_asterisk, prm_ddd_padrao, prm_mun_padrao,
prm_uf_padrao, prm_cadastro_atendidos, prm_digitos_conta, prm_digitos_senha, prm_gera_conta, prm_pausa_grupo, prm_uf_padrao, prm_cadastro_atendidos, prm_digitos_conta, prm_digitos_senha, prm_gera_conta, prm_pausa_grupo,
prm_atende_auto, prm_atende_manual, prm_atende_preferencial, prm_prefixo_sennha_ramal, prm_modulo_pesquisa, prm_atende_auto, prm_atende_manual, prm_atende_preferencial, prm_prefixo_sennha_ramal, prm_modulo_pesquisa,
@ -246,7 +245,7 @@ if ($idSubProg == CONFIG_BASE_DADOS) {
prm_exige_proto_vendas, prm_bloqueio, prm_bloqueio_data, prm_abandonada_semretorno, prm_max_licenca, prm_exige_proto_vendas, prm_bloqueio, prm_bloqueio_data, prm_abandonada_semretorno, prm_max_licenca,
prm_max_ramal,prm_normaliza_agenda, prm_max_dias_relatorio, prm_ocultar_telefone, prm_ocultar_email, prm_max_ramal,prm_normaliza_agenda, prm_max_dias_relatorio, prm_ocultar_telefone, prm_ocultar_email,
prm_ocultar_documento,prm_max_licenca_fixo, prm_relatorio_servico prm_ocultar_documento,prm_max_licenca_fixo, prm_relatorio_servico
from pbx_parametros where id = 1"; FROM pbx_parametros WHERE id = 1";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$dados = @pg_fetch_array($result); $dados = @pg_fetch_array($result);
foreach ($fields as $value) { foreach ($fields as $value) {
@ -647,3 +646,11 @@ function VerificaRamaisCriados($prmMaxRamal)
$dados = pg_fetch_row($result1); $dados = pg_fetch_row($result1);
return $prmMaxRamal >= $dados[0]; return $prmMaxRamal >= $dados[0];
} }
function ValidaDiasArmazenaLog($dias)
{
if ($dias != 0 && $dias < 30) {
return false;
}
return true;
}

6
contacteFunc.php

@ -74,7 +74,8 @@ function GetDac($dbcon, $codDac, $disableb = "", $incTodos = 0, $soAtivo = 1, $i
} else { } else {
$sel = ""; $sel = "";
} }
$dacs .= "<option value=\"$dados[0]\" $sel>$dados[1]</option>"; $fila = GravaNomeOrganizacao($dados[1]);
$dacs .= "<option value=\"$dados[0]\" $sel>$fila</option>";
$cont++; $cont++;
} }
if ((!$cont || !$i) && ($codSel != '0') && (!$useNull) && (!$incTodos)) if ((!$cont || !$i) && ($codSel != '0') && (!$useNull) && (!$incTodos))
@ -100,7 +101,8 @@ function GetDacs($dbcon, $codDac, $disableb = "", $incTodos = 1, $soAtivo = 1)
if ($codSel == $dados[0]) { if ($codSel == $dados[0]) {
$sel = "selected"; $sel = "selected";
} }
$dacs .= "<option value=\"$dados[0]\" $sel>$dados[1]</option>"; $fila = GravaNomeOrganizacao($dados[1]);
$dacs .= "<option value=\"$dados[0]\" $sel>$fila</option>";
} }
$dacs .= "</select>"; $dacs .= "</select>";

2
include/configBd.php

@ -3,7 +3,7 @@
* configuração para acesso ao banco de dados principal da aplicação. * configuração para acesso ao banco de dados principal da aplicação.
*/ */
$dbPort = getenv('DB_PORT') ? getenv('DB_PORT') : '5432'; $dbPort = getenv('DB_PORT') ? getenv('DB_PORT') : '5432';
$dbHost = getenv('DB_HOST') ? getenv('DB_HOST') : '127.0.0.1'; $dbHost = getenv('DB_HOST') ? getenv('DB_HOST') : 'postgres';
$dbName = getenv('DB_BASE') ? getenv('DB_BASE') : 'pbx'; $dbName = getenv('DB_BASE') ? getenv('DB_BASE') : 'pbx';
$dbUser = getenv('DB_USER') ? getenv('DB_USER') : 'contacte'; $dbUser = getenv('DB_USER') ? getenv('DB_USER') : 'contacte';
$dbPassword = getenv('DB_PASSWD') ? getenv('DB_PASSWD') : 'ctepgSQL'; $dbPassword = getenv('DB_PASSWD') ? getenv('DB_PASSWD') : 'ctepgSQL';

2
include/configs/config.php

@ -6,7 +6,7 @@
define('NOME_SITE', 'Simples IP'); define('NOME_SITE', 'Simples IP');
define('TITLE_SITE', 'Simples IP'); define('TITLE_SITE', 'Simples IP');
define("PRM_DEF_SLOGAN", "Simples IP"); define("PRM_DEF_SLOGAN", "Telefonia corporativa que faz a diferença no seu negócio.");
// ################################# // #################################
// ### CONFIGURAÇÕES DE ENDEREÇO ### // ### CONFIGURAÇÕES DE ENDEREÇO ###

2
include/util/display_errors.php

@ -1,7 +1,7 @@
<?php <?php
error_reporting(E_ALL); error_reporting(E_ALL);
ini_set('display_errors', 1); ini_set('display_errors', 0);
ini_set("memory_limit", "512M"); ini_set("memory_limit", "512M");

180
include/util/funcoesApl.php

@ -406,6 +406,7 @@ function VerificaCadastroMenu($conn)
$menuUsuario[] = array('219', 'mnSimplesChatAgt', '0', 'Agente SimplesChat', 'index.php?idProg=361', '', '1', '1', '0', '', '361'); $menuUsuario[] = array('219', 'mnSimplesChatAgt', '0', 'Agente SimplesChat', 'index.php?idProg=361', '', '1', '1', '0', '', '361');
$menuUsuario[] = array('220', 'mnLgpdAdm', '0', 'Administra LGPD', 'index.php?idProg=364', '', '1', '1', '0', '', '364'); $menuUsuario[] = array('220', 'mnLgpdAdm', '0', 'Administra LGPD', 'index.php?idProg=364', '', '1', '1', '0', '', '364');
$menuUsuario[] = array('221', 'mnpermEditaClassificado', '0', 'Permite Editar Classificação', 'index.php?idProg=368', '', '1', '1', '0', '', '368'); $menuUsuario[] = array('221', 'mnpermEditaClassificado', '0', 'Permite Editar Classificação', 'index.php?idProg=368', '', '1', '1', '0', '', '368');
$menuUsuario[] = array('222', 'mnOrganizacao', '1', 'Organização', 'index.php?idProg=369', '', '10', '1', '0', '', '369');
$menuUsuario[] = array('112', 'mnSair', '1', 'Sair', 'index.php?idProg=-1&DEBUG=0', '', '', '1', '1', '10', '-1'); $menuUsuario[] = array('112', 'mnSair', '1', 'Sair', 'index.php?idProg=-1&DEBUG=0', '', '', '1', '1', '10', '-1');
@ -914,22 +915,20 @@ function GetNavHeader($tpLayout = 0)
return $tpLayout == 1 ? "" : "<div id=\"nav_header\"></div>"; return $tpLayout == 1 ? "" : "<div id=\"nav_header\"></div>";
} }
function GetNavLogin($tpLayout = 0, $dispProgSel = "Simples IP") function GetNavLogin($tpLayout = 0, $dispProgSel = PRM_DEF_SLOGAN)
{ {
$ver = GetVersao();
$saudaUser = "Versão: " . $ver;
$data = date("d/m/Y");
$login = GetLogin(); $login = GetLogin();
$matricula = GetMatricula() ? "| Matricula: " . GetMatricula() : ''; $matricula = GetMatricula() ? "| Matricula: " . GetMatricula() : '';
$imgUser = IsUserConnect() ? "userOn16.png" : "userOff16.png"; $imgUser = IsUserConnect() ? "userOn16.png" : null;
$style = IsUserConnect() ? "height: 40px;" : ""; $imgAlt = IsUserConnect() ? "alt=\"Usuário Conectado\" title=\"Usuário Conectado\"" : null;
$imgAlt = IsUserConnect() ? "alt=\"Usuário Conectado\" title=\"Usuário Conectado\"" : "alt=\"Usuário Desconectado\" title=\"Usuário Desconectado\""; $img = IsUserConnect() ? "Usu&aacute;rio: <img src=\"imgSite/$imgUser\" $imgAlt align=\"absmiddle\"> $login $matricula" : '';
$selMenu = IsUserConnect() ? "Home /" : '';
return $tpLayout == 1 ? "" : "<div id=\"color_bar\" style=\"width: 100%;border-top-left-radius: 8px;border-top-right-radius: 8px;height: 40px;background: linear-gradient(45deg, #266cfa, #FF1472);\" > return $tpLayout == 1 ? "" : "<div id=\"color_bar\" style=\"width: 100%;border-top-left-radius: 8px;border-top-right-radius: 8px;height: 40px;background: linear-gradient(45deg, #266cfa, #FF1472);\" >
<table width=\"100%\" style=\"width: 100%;\" border=\"0\" cellspacing=\"7\" cellpadding=\"5\"> <table width=\"100%\" style=\"width: 100%;\" border=\"0\" cellspacing=\"7\" cellpadding=\"5\">
<tr> <tr>
<td valign=\"middle\" align=\"right\" id=\"nav_login\"> Usu&aacute;rio: <img src=\"imgSite/$imgUser\" $imgAlt align=\"absmiddle\"> $login $matricula</td> <td valign=\"middle\" align=\"right\" id=\"nav_login\">$img</td>
<td valign=\"middle\" align=\"left\" id=\"dispProg\">Home / $dispProgSel</td> <td valign=\"middle\" align=\"left\" id=\"dispProg\">$selMenu $dispProgSel</td>
</tr> </tr>
</table> </table>
</div>"; </div>";
@ -948,35 +947,35 @@ function GetDispProgSel($idProg)
} }
$dispProgSel = array(); $dispProgSel = array();
$dispProgSel[0] = "Relatório Produção/Agente"; $dispProgSel[0] = "Relatório Produção Agente";
$dispProgSel[1] = $isMenu ? "Sistema" : "Relatório de Meta Mensal Analítico"; $dispProgSel[1] = $isMenu ? "Sistema" : "Relatório de Meta Mensal Analítico";
$dispProgSel[2] = "Relatório de Meta Diária Aneel"; $dispProgSel[2] = "Relatório de Meta Diária Aneel";
$dispProgSel[3] = "Relatório Produção/Agente"; $dispProgSel[3] = "Relatório Produção Agente";
$dispProgSel[4] = "Relatório de Meta Mensal"; $dispProgSel[4] = "Relatório de Meta Mensal";
$dispProgSel[5] = "Relatório de Meta Diária"; $dispProgSel[5] = "Relatório de Meta Diária";
$dispProgSel[6] = "Supervisor"; $dispProgSel[6] = "Supervisor";
$dispProgSel[7] = "Relatório de Transferência"; $dispProgSel[7] = "Relatório de Transferência";
$dispProgSel[8] = "Relatório de Resumo/Fone"; $dispProgSel[8] = "Relatório de Resumo Fone";
$dispProgSel[9] = "Relatório de Transferência"; //ipr $dispProgSel[9] = "Relatório de Transferência"; //ipr
$dispProgSel[10] = $isMenu ? "Cadastro" : "Relatório de Resumo/Fone"; //ipr $dispProgSel[10] = $isMenu ? "Cadastro" : "Relatório de Resumo Fone"; //ipr
$dispProgSel[11] = "Resumo Transferência/Ramal"; //inativo $dispProgSel[11] = "Resumo Transferência Ramal"; //inativo
$dispProgSel[12] = "Relatório de Transferência por Agente"; $dispProgSel[12] = "Relatório de Transferência por Agente";
$dispProgSel[13] = "Relatório de Transferência por Agente"; $dispProgSel[13] = "Relatório de Transferência por Agente";
$dispProgSel[14] = "Agente"; $dispProgSel[14] = "Agente";
$dispProgSel[15] = "Agente"; //direciona para tela inicial de agente $dispProgSel[15] = "Agente"; //direciona para tela inicial de agente
$dispProgSel[16] = "Troca de Senha"; $dispProgSel[16] = "Troca de Senha";
$dispProgSel[17] = $isMenu ? "Relatório" : "Bloco de Notas"; $dispProgSel[17] = $isMenu ? "Relatório" : "Bloco de Notas";
$dispProgSel[18] = $isMenu ? "Relatório/Call Center" : "Agenda"; $dispProgSel[18] = $isMenu ? "Relatório Call Center" : "Agenda";
$dispProgSel[19] = "Histórico do Agente"; $dispProgSel[19] = "Histórico do Agente";
$dispProgSel[20] = "Configurações do Sistema"; $dispProgSel[20] = "Configurações do Sistema";
$dispProgSel[21] = "Cadastro de Usuário"; $dispProgSel[21] = "Cadastro de Usuário";
$dispProgSel[22] = "Cadastro de Usuário"; //operacoes de banco $dispProgSel[22] = "Cadastro de Usuário"; //operacoes de banco
$dispProgSel[23] = "Áudio"; $dispProgSel[23] = "Áudio";
$dispProgSel[24] = "Consulta de Dacs"; //inativo $dispProgSel[24] = "Consulta de Dacs"; //inativo
$dispProgSel[25] = "Tranferência/Agente Detalhe"; $dispProgSel[25] = "Tranferência Agente Detalhe";
$dispProgSel[26] = "Comunicação Asterisk"; $dispProgSel[26] = "Comunicação Asterisk";
$dispProgSel[27] = "Classificação de Atendimento"; $dispProgSel[27] = "Classificação de Atendimento";
$dispProgSel[28] = $isMenu ? "Relatório/Call Center/Metas" : "Classificação de Atendimento"; $dispProgSel[28] = $isMenu ? "Relatório Call Center - Metas" : "Classificação de Atendimento";
$dispProgSel[29] = "Classificação de Atendimento "; $dispProgSel[29] = "Classificação de Atendimento ";
$dispProgSel[30] = "Classificação de Atendimento "; $dispProgSel[30] = "Classificação de Atendimento ";
$dispProgSel[31] = "Classificação de Atendimento "; $dispProgSel[31] = "Classificação de Atendimento ";
@ -986,11 +985,11 @@ function GetDispProgSel($idProg)
$dispProgSel[35] = "Meta Diária"; $dispProgSel[35] = "Meta Diária";
$dispProgSel[36] = "Administração de Permissões"; $dispProgSel[36] = "Administração de Permissões";
$dispProgSel[284] = "Mesa Operadora"; $dispProgSel[284] = "Mesa Operadora";
$dispProgSel[37] = "Chamadas Saintes/Ramal"; $dispProgSel[37] = "Chamadas Saintes Ramal";
$dispProgSel[38] = "Chamadas Saintes/Ramal"; $dispProgSel[38] = "Chamadas Saintes Ramal";
$dispProgSel[39] = "Chamadas Saintes/Conta"; $dispProgSel[39] = "Chamadas Saintes Conta";
$dispProgSel[40] = "Chamadas Saintes/Conta"; $dispProgSel[40] = "Chamadas Saintes Conta";
$dispProgSel[41] = "Totalizador Chamadas Saintes/Ramal"; $dispProgSel[41] = "Totalizador Chamadas Saintes Ramal";
$dispProgSel[42] = "Menu Chamadas Saintes"; $dispProgSel[42] = "Menu Chamadas Saintes";
$dispProgSel[43] = "Chamadas Ramal a Ramal"; $dispProgSel[43] = "Chamadas Ramal a Ramal";
$dispProgSel[44] = "Chamadas Ramal a Ramal"; $dispProgSel[44] = "Chamadas Ramal a Ramal";
@ -1009,13 +1008,13 @@ function GetDispProgSel($idProg)
$dispProgSel[57] = "Chamadas Saintes"; $dispProgSel[57] = "Chamadas Saintes";
$dispProgSel[58] = "Chamadas Entrantes"; $dispProgSel[58] = "Chamadas Entrantes";
$dispProgSel[59] = "Chamadas Entrantes Geral"; $dispProgSel[59] = "Chamadas Entrantes Geral";
$dispProgSel[60] = "Chamadas Entrantes/Ramal"; $dispProgSel[60] = "Chamadas Entrantes Ramal";
$dispProgSel[61] = $isMenu ? "PABX" : "Chamadas Entrantes/Conta"; $dispProgSel[61] = $isMenu ? "PABX" : "Chamadas Entrantes Conta";
$dispProgSel[62] = $isMenu ? "PABX/Chamadas" : "Chamadas Entrantes/Conta"; $dispProgSel[62] = $isMenu ? "PABX Chamadas" : "Chamadas Entrantes Conta";
$dispProgSel[63] = "Totalizador de Chamadas Entrantes"; $dispProgSel[63] = "Totalizador de Chamadas Entrantes";
$dispProgSel[64] = "Totalizador de Chamadas Entrantes"; $dispProgSel[64] = "Totalizador de Chamadas Entrantes";
$dispProgSel[65] = "Lista Usuários"; $dispProgSel[65] = "Lista Usuários";
$dispProgSel[66] = $isMenu ? "PABX/Cadastro" : "Lista Usuários"; $dispProgSel[66] = $isMenu ? "PABX Cadastro" : "Lista Usuários";
$dispProgSel[67] = "Chamadas Saintes por Centro de Custo"; $dispProgSel[67] = "Chamadas Saintes por Centro de Custo";
$dispProgSel[68] = "Chamadas Saintes por Centro de Custo"; $dispProgSel[68] = "Chamadas Saintes por Centro de Custo";
$dispProgSel[69] = "Chamadas Saintes por Centro de Custo"; $dispProgSel[69] = "Chamadas Saintes por Centro de Custo";
@ -1027,8 +1026,8 @@ function GetDispProgSel($idProg)
$dispProgSel[73] = "Chamadas Entrantes por Tipo de Ligação"; $dispProgSel[73] = "Chamadas Entrantes por Tipo de Ligação";
$dispProgSel[74] = "Chamadas Saintes Mais Discados"; $dispProgSel[74] = "Chamadas Saintes Mais Discados";
$dispProgSel[75] = "Chamadas Entrantes Mais Discados"; $dispProgSel[75] = "Chamadas Entrantes Mais Discados";
$dispProgSel[76] = $isMenu ? "PABX/Outros" : "Chamadas Encaminhadas p/ Caixa Postal"; $dispProgSel[76] = $isMenu ? "PABX/Outros" : "Chamadas Encaminhadas Caixa Postal";
$dispProgSel[77] = "Chamadas Encaminhadas p/ Caixa Postal"; $dispProgSel[77] = "Chamadas Encaminhadas Caixa Postal";
$dispProgSel[78] = "Chamadas Entrantes Não Atendidas"; $dispProgSel[78] = "Chamadas Entrantes Não Atendidas";
$dispProgSel[79] = "Chamadas Entrantes Não Atendidas"; $dispProgSel[79] = "Chamadas Entrantes Não Atendidas";
@ -1036,24 +1035,24 @@ function GetDispProgSel($idProg)
$dispProgSel[81] = "Lista Chamadas para Siga-me Externo"; $dispProgSel[81] = "Lista Chamadas para Siga-me Externo";
$dispProgSel[82] = "Monitor de Operações"; $dispProgSel[82] = "Monitor de Operações";
$dispProgSel[83] = "..."; $dispProgSel[83] = "...";
$dispProgSel[84] = $isMenu ? "PABX/Ramais" : "Grupos de Usuários"; $dispProgSel[84] = $isMenu ? "PABX Ramais" : "Grupos de Usuários";
$dispProgSel[85] = "..."; $dispProgSel[85] = "...";
$dispProgSel[86] = "Motivos de Pausas"; $dispProgSel[86] = "Motivos de Pausas";
$dispProgSel[278] = "Serviços de Chamadas"; $dispProgSel[278] = "Serviços de Chamadas";
$dispProgSel[87] = "Totalizador Tipo de Ligação/Usuário"; $dispProgSel[87] = "Totalizador Tipo de Ligação Usuário";
$dispProgSel[88] = "Totalizador Tipo de Ligação/Usuário"; $dispProgSel[88] = "Totalizador Tipo de Ligação Usuário";
$dispProgSel[89] = $isMenu ? "PABX/Rotas" : "Chamadas Originadas por Agente"; $dispProgSel[89] = $isMenu ? "PABX Rotas" : "Chamadas Originadas por Agente";
$dispProgSel[90] = "Chamadas Originadas por Agente"; $dispProgSel[90] = "Chamadas Originadas por Agente";
$dispProgSel[91] = "Chamadas Abandonadas na Fila"; $dispProgSel[91] = "Chamadas Abandonadas na Fila";
$dispProgSel[92] = $isMenu ? "PABX/Troncos" : "Chamadas Abandonadas na Fila"; $dispProgSel[92] = $isMenu ? "PABX Troncos" : "Chamadas Abandonadas na Fila";
$dispProgSel[93] = "Chamadas Abandonadas na Ura"; $dispProgSel[93] = "Chamadas Abandonadas na Ura";
$dispProgSel[94] = "Chamadas Abandonadas na Ura"; $dispProgSel[94] = "Chamadas Abandonadas na Ura";
$dispProgSel[95] = "Chamadas Totalizadas por DDD"; $dispProgSel[95] = "Chamadas Totalizadas por DDD";
$dispProgSel[96] = "Chamadas Totalizadas por DDD"; $dispProgSel[96] = "Chamadas Totalizadas por DDD";
$dispProgSel[97] = "Desempenho de Operação"; $dispProgSel[97] = "Desempenho de Operação";
$dispProgSel[98] = "Desempenho de Operação"; $dispProgSel[98] = "Desempenho de Operação";
$dispProgSel[99] = "PABX/Configurações"; $dispProgSel[99] = "PABX Configurações";
$dispProgSel[105] = "Manutenção de Sites"; $dispProgSel[105] = "Manutenção de Sites";
$dispProgSel[108] = "Chamadas Desligadas A/B"; $dispProgSel[108] = "Chamadas Desligadas A/B";
@ -1064,13 +1063,13 @@ function GetDispProgSel($idProg)
$dispProgSel[112] = "Cadastro de Campanhas"; $dispProgSel[112] = "Cadastro de Campanhas";
$dispProgSel[121] = "Administração de Permissões"; $dispProgSel[121] = "Administração de Permissões";
$dispProgSel[125] = "Campanha/Retorno"; $dispProgSel[125] = "Campanha Retorno";
$dispProgSel[127] = "Ferramentas"; $dispProgSel[127] = "Ferramentas";
$dispProgSel[130] = "Pesquisa"; $dispProgSel[130] = "Pesquisa";
$dispProgSel[132] = "Pré-processamento de lista"; $dispProgSel[132] = "Pré-processamento de lista";
$dispProgSel[137] = "Tarifação/Portabilidade"; $dispProgSel[137] = "Tarifação Portabilidade";
$dispProgSel[139] = "Agenda/Departamentos"; $dispProgSel[139] = "Agenda Departamentos";
$dispProgSel[140] = "Agenda/Ramais"; $dispProgSel[140] = "Agenda Ramais";
$dispProgSel[150] = $isMenu ? "Pré-Pago" : "Relatório de Classificação por Agente"; $dispProgSel[150] = $isMenu ? "Pré-Pago" : "Relatório de Classificação por Agente";
$dispProgSel[152] = "Relatório de Meta Anual Analítico"; $dispProgSel[152] = "Relatório de Meta Anual Analítico";
$dispProgSel[154] = $isMenu ? "Portabilidade" : "Relatório de Classificação Mensal"; $dispProgSel[154] = $isMenu ? "Portabilidade" : "Relatório de Classificação Mensal";
@ -1092,43 +1091,43 @@ function GetDispProgSel($idProg)
$dispProgSel[193] = "Relatório de Cobrança"; $dispProgSel[193] = "Relatório de Cobrança";
$dispProgSel[181] = "Pesquisa ACW"; $dispProgSel[181] = "Pesquisa ACW";
$dispProgSel[185] = "Pesquisa/Liberação"; $dispProgSel[185] = "Pesquisa Liberação";
$dispProgSel[187] = "Relatório Pesquisa"; $dispProgSel[187] = "Relatório Pesquisa";
$dispProgSel[188] = "Relatório Pesquisa/Agente"; $dispProgSel[188] = "Relatório Pesquisa Agente";
$dispProgSel[197] = "Contratos/Operadora"; $dispProgSel[197] = "Contratos Operadora";
$dispProgSel[198] = "Tarifação/Parametros"; $dispProgSel[198] = "Tarifação Parametros";
$dispProgSel[199] = "Operadoras Disponíveis"; $dispProgSel[199] = "Operadoras Disponíveis";
$dispProgSel[205] = "Tarifação por Ramal"; $dispProgSel[205] = "Tarifação por Ramal";
$dispProgSel[206] = "Tarifação por Conta"; $dispProgSel[206] = "Tarifação por Conta";
$dispProgSel[207] = "Tarifação por Fatura"; $dispProgSel[207] = "Tarifação por Fatura";
$dispProgSel[208] = "Relatório Pesquisa/Áudio"; $dispProgSel[208] = "Relatório Pesquisa Áudio";
$dispProgSel[212] = "Pré-pago/Ramal"; $dispProgSel[212] = "Pré-pago Ramal";
$dispProgSel[213] = "Pré-pago/Conta"; $dispProgSel[213] = "Pré-pago Conta";
$dispProgSel[214] = "Pré-pago/Ramal"; $dispProgSel[214] = "Pré-pago Ramal";
$dispProgSel[215] = "Pré-pago/Conta"; $dispProgSel[215] = "Pré-pago Conta";
$dispProgSel[216] = "Portabilidade"; $dispProgSel[216] = "Portabilidade";
$dispProgSel[217] = "Monitor da Portabilidade"; $dispProgSel[217] = "Monitor da Portabilidade";
$dispProgSel[218] = "Backup"; $dispProgSel[218] = "Backup";
$dispProgSel[219] = "Backup/Destino"; $dispProgSel[219] = "Backup Destino";
$dispProgSel[220] = "Backup/Destino"; $dispProgSel[220] = "Backup Destino";
$dispProgSel[221] = "Backup/Configurações"; $dispProgSel[221] = "Backup Configurações";
$dispProgSel[222] = "Backup/Configurações"; $dispProgSel[222] = "Backup Configurações";
$dispProgSel[223] = "Backup/Monitor"; $dispProgSel[223] = "Backup Monitor";
$dispProgSel[224] = "Backup Manual"; $dispProgSel[224] = "Backup Manual";
$dispProgSel[225] = "Relatório de Chamadas/Ramal"; $dispProgSel[225] = "Relatório de Chamadas Ramal";
$dispProgSel[226] = "Relatório de Chamadas/Ramal"; $dispProgSel[226] = "Relatório de Chamadas Ramal";
$dispProgSel[229] = "Relatório de Chamadas Abandonadas na Fila"; $dispProgSel[229] = "Relatório de Chamadas Abandonadas na Fila";
$dispProgSel[227] = "Relatório de Recebidas/Agente"; $dispProgSel[227] = "Relatório de Recebidas Agente";
$dispProgSel[262] = "Relatório de Indicadores/MP"; $dispProgSel[262] = "Relatório de Indicadores MP";
$dispProgSel[266] = "Relatório Metas Dia da Semana"; $dispProgSel[266] = "Relatório Metas Dia da Semana";
$dispProgSel[270] = "Retarifação de Chamadas"; $dispProgSel[270] = "Retarifação de Chamadas";
$dispProgSel[273] = "Agentes/Horas Trabalhadas"; $dispProgSel[273] = "Agentes Horas Trabalhadas";
$dispProgSel[274] = "Status dos Contatos Discados"; $dispProgSel[274] = "Status dos Contatos Discados";
$dispProgSel[280] = "Funil de Vendas"; $dispProgSel[280] = "Funil de Vendas";
$dispProgSel[285] = "Regionais"; $dispProgSel[285] = "Regionais";
@ -1141,7 +1140,7 @@ function GetDispProgSel($idProg)
$dispProgSel[300] = "Desempenho por DAC"; $dispProgSel[300] = "Desempenho por DAC";
$dispProgSel[301] = "Desempenho por Serviço"; $dispProgSel[301] = "Desempenho por Serviço";
$dispProgSel[302] = "Relatório Geral de URA"; $dispProgSel[302] = "Relatório Geral de URA";
$dispProgSel[303] = "Entradas Fila/Contextos"; $dispProgSel[303] = "Entradas Fila e Contextos";
$dispProgSel[304] = "Consulta Atividades"; $dispProgSel[304] = "Consulta Atividades";
$dispProgSel[306] = "Detalhamento URA"; $dispProgSel[306] = "Detalhamento URA";
$dispProgSel[307] = "Monitor Chamadas"; $dispProgSel[307] = "Monitor Chamadas";
@ -1173,16 +1172,19 @@ function GetDispProgSel($idProg)
$dispProgSel[352] = 'Relatórios Comissão'; $dispProgSel[352] = 'Relatórios Comissão';
$dispProgSel[353] = 'Atendimento WhatsApp'; $dispProgSel[353] = 'Atendimento WhatsApp';
$dispProgSel[355] = 'Simples WhatsApp';
$dispProgSel[356] = 'Simples Chat'; $dispProgSel[356] = 'Simples Chat';
$dispProgSel[358] = 'Dashboard'; $dispProgSel[358] = 'Dashboard';
$dispProgSel[365] = 'Recebidas Agente/Serviços'; $dispProgSel[365] = 'Recebidas Agente e Serviços';
$dispProgSel[366] = 'Relatório Chamadas Geral'; $dispProgSel[366] = 'Relatório Chamadas Geral';
$dispProgSel[369] = 'Cadastro Organização';
$dispProgSel[10001] = "Cadastro de Agentes PBX"; $dispProgSel[10001] = "Cadastro de Agentes PBX";
$dispProgSel[10002] = "Cadastro de Filas"; $dispProgSel[10002] = "Cadastro de Filas";
$dispProgSel[10004] = "Cadastro de Agenda"; $dispProgSel[10004] = "Cadastro de Agenda";
$dispProgSel[11004] = "Cadastro de Agenda"; $dispProgSel[11004] = "Cadastro de Agenda";
$dispProgSel[10006] = "Fila/Grupos"; $dispProgSel[10006] = "Fila Grupos";
$dispProgSel[10007] = "Cadastro de Anúncios"; $dispProgSel[10007] = "Cadastro de Anúncios";
$dispProgSel[11007] = "Cadastro de Anúncios"; $dispProgSel[11007] = "Cadastro de Anúncios";
$dispProgSel[10009] = "Cadastro de Ramais Sip"; $dispProgSel[10009] = "Cadastro de Ramais Sip";
@ -1232,7 +1234,7 @@ function GetDispProgSel($idProg)
$dispProgSel[11032] = "Cadastro de Voicemail"; $dispProgSel[11032] = "Cadastro de Voicemail";
$dispProgSel[10033] = "Cadastro de Horários"; $dispProgSel[10033] = "Cadastro de Horários";
$dispProgSel[11033] = "Cadastro de Horários"; $dispProgSel[11033] = "Cadastro de Horários";
$dispProgSel[10034] = "Monitor de Ramais/Troncos"; $dispProgSel[10034] = "Monitor de Ramais Troncos";
$dispProgSel[10035] = "Cadastro de Prioridades"; $dispProgSel[10035] = "Cadastro de Prioridades";
$dispProgSel[11035] = "Cadastro de Prioridades"; $dispProgSel[11035] = "Cadastro de Prioridades";
@ -1248,8 +1250,8 @@ function GetDispProgSel($idProg)
$dispProgSel[11043] = "Cadastro de Arquivos de Som"; $dispProgSel[11043] = "Cadastro de Arquivos de Som";
//$dispProgSel[10045] = "Monitor E1"; //$dispProgSel[10045] = "Monitor E1";
$dispProgSel[10046] = "Centro de Custo/Ramais"; $dispProgSel[10046] = "Centro de Custo Ramais";
$dispProgSel[11046] = "Centro de Custo/Ramais"; $dispProgSel[11046] = "Centro de Custo Ramais";
//$dispProgSel[10047] = "Ramais Khomp"; //$dispProgSel[10047] = "Ramais Khomp";
//$dispProgSel[11047] = "Ramais Khomp"; //$dispProgSel[11047] = "Ramais Khomp";
@ -1262,7 +1264,7 @@ function GetDispProgSel($idProg)
$disp = $dispProgSel; $disp = $dispProgSel;
return (strtoupper($_SESSION["SSaut"]) == "OK") ? (isset($dispProgSel[$idProg]) ? $dispProgSel[$idProg] : "Simples IP") : GetSlogan(); return (strtoupper($_SESSION["SSaut"]) == "OK") ? (isset($dispProgSel[$idProg]) ? $dispProgSel[$idProg] : PRM_DEF_SLOGAN) : GetSlogan();
} }
function GetMenuUser($tpUser) function GetMenuUser($tpUser)
@ -1271,6 +1273,18 @@ function GetMenuUser($tpUser)
if (!IsUserConnect()) { if (!IsUserConnect()) {
return ""; return "";
} }
$empresas = GetAllOrganizacao();
$strEmpresa = null;
if (count($empresas) > 1) {
$strEmpresa = '<select id="perfil" name="perfil" class="selectPerfil">';
foreach ($empresas as $v) {
$sel = $_SESSION['SSEmpresaPadrao'] == $v['id'] ? "selected" : null;
$strEmpresa .= sprintf("<option value='%s' $sel>%s</option>", $v['id'], $v['nome']);
}
$strEmpresa .= '</select>';
}
$menu = "&nbsp;"; $menu = "&nbsp;";
$menu = "<script language=\"JavaScript\">\n"; $menu = "<script language=\"JavaScript\">\n";
$menu .= "<!--//\n"; $menu .= "<!--//\n";
@ -1280,7 +1294,11 @@ function GetMenuUser($tpUser)
$menuGeral = "<table class=\"menuGeral\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\"> $menuGeral = "<table class=\"menuGeral\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\">
<tr> <tr>
<td valign=\"middle\" style=\"height:30px;margin:0;\"><div class=\"menuGeral\" style=\"position:relative;\">$menu</div></td> <td valign=\"middle\" style=\"height:30px;margin:0;\">
<div class=\"menuGeral\" style=\"position:relative;\">$menu
$strEmpresa
</div>
</td>
</tr> </tr>
</table>"; </table>";
//<th width=\"30%\" align=\"center\" nowrap><img src=\"imgSite/setaRreen.png\" align=\"absmiddle\"> $dispProgSel</th> //<th width=\"30%\" align=\"center\" nowrap><img src=\"imgSite/setaRreen.png\" align=\"absmiddle\"> $dispProgSel</th>
@ -1305,13 +1323,13 @@ function GetDisponivelFila()
function GetLogin() function GetLogin()
{ {
return IsUserConnect() ? $_SESSION["SSlogin"] : "An&ocirc;nimo "; return IsUserConnect() ? $_SESSION["SSlogin"] : "Desconectado";
} }
function GetOrganizacao() function GetOrganizacao()
{ {
global $dbcon; global $dbcon;
if (empty($_SESSION['SSEmpresaPadrao'])) { if (empty($_SESSION['SSEmpresaPadrao']) && IsUserConnect()) {
$query = "SELECT po.id AS org_id $query = "SELECT po.id AS org_id
FROM pbx_organizacao po FROM pbx_organizacao po
INNER JOIN pbx_organizacao_usuarios pou ON po.id = pou.id_organizacao INNER JOIN pbx_organizacao_usuarios pou ON po.id = pou.id_organizacao
@ -1326,6 +1344,21 @@ function GetOrganizacao()
return $_SESSION['SSEmpresaPadrao']; return $_SESSION['SSEmpresaPadrao'];
} }
function GetAllOrganizacao()
{
global $dbcon;
$query = "SELECT po.id, po.nome, master
FROM pbx_organizacao po
INNER JOIN pbx_organizacao_usuarios pou ON pou.id_organizacao = po.id
WHERE pou.id_usuario = {$_SESSION['SSidUser']}";
$result = pg_query($dbcon, $query);
if ($result) {
return pg_fetch_all($result);
}
return false;
}
function GetExigeClas($db = null, $dac = 0) function GetExigeClas($db = null, $dac = 0)
{ {
$dacOn = empty($_SESSION[SS_DAC_CODIGO]) ? false : $_SESSION[SS_DAC_CODIGO]; $dacOn = empty($_SESSION[SS_DAC_CODIGO]) ? false : $_SESSION[SS_DAC_CODIGO];
@ -2630,14 +2663,15 @@ function RegistraLog($log, $file = "aplSimples.log")
function MaxRamaisPermite($db, $qtde) function MaxRamaisPermite($db, $qtde)
{ {
//GetModeloRamais(); //GetModeloRamais();
$result = pg_query($db, "SELECT prm_max_ramal FROM pbx_parametros"); $org_id = GetOrganizacao();
$result = pg_query($db, "SELECT prm_max_ramal FROM pbx_parametros WHERE org_id = $org_id;");
$numRamais = pg_fetch_row($result); $numRamais = pg_fetch_row($result);
if ((int) $numRamais[0] === 0) { if ((int) $numRamais[0] === 0) {
return false; return false;
} }
$query = "select count(*) as num_total_ramais from pbx_ramais"; $query = "SELECT count(*) AS num_total_ramais FROM pbx_ramais WHERE org_id = $org_id;";
$result = pg_query($db, $query); $result = pg_query($db, $query);
if ($result) { if ($result) {
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
@ -2650,7 +2684,7 @@ function MaxRamaisPermite($db, $qtde)
function GetNumeroRamalFromId($id) function GetNumeroRamalFromId($id)
{ {
$db = $GLOBALS['dbcon']; $db = $GLOBALS['dbcon'];
$query = "select nome from pbx_ramais where id = '$id'"; $query = "SELECT nome FROM pbx_ramais WHERE id = '$id'";
$result = pg_query($db, $query); $result = pg_query($db, $query);
if ($result && (pg_num_rows($result) > 0)) { if ($result && (pg_num_rows($result) > 0)) {
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
@ -2668,7 +2702,7 @@ function GetCrc32Code($tableName, $params)
function GetCrc32CodeExiste($tableName, $code) function GetCrc32CodeExiste($tableName, $code)
{ {
$db = $GLOBALS['dbcon']; $db = $GLOBALS['dbcon'];
$query = "select case when( $query = "SELECT case when(
exists(select '' from $tableName where id_rel = '$code') exists(select '' from $tableName where id_rel = '$code')
)then 1 else 0 end as existe "; )then 1 else 0 end as existe ";
$result = pg_query($db, $query); $result = pg_query($db, $query);
@ -3049,7 +3083,7 @@ function ExisteRegistro($db, $table, $where, $id, $queryParam = null)
$query = "SELECT count(*) FROM $table $join WHERE $compl $where = '$id' "; $query = "SELECT count(*) FROM $table $join WHERE $compl $where = '$id' ";
if ($queryParam) { if ($queryParam) {
$query .= " and {$queryParam} "; $query .= " AND {$queryParam} ";
} }
$result = pg_query($db, $query); $result = pg_query($db, $query);

4
include/util/funcoesInternas.php

@ -338,7 +338,9 @@ $funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_
$funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(366,'relatorios/custom/relChamadaGeral.php',366,0,0)"; $funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(366,'relatorios/custom/relChamadaGeral.php',366,0,0)";
$funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(367,'supervisao/editaClassificado.php',150,0,0)"; $funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(367,'supervisao/editaClassificado.php',150,0,0)";
$funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(368,'permEditaClassificado.php',368,0,0)"; $funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(368,'permEditaClassificado.php',368,0,0)";
$funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(369,'cadastros/organizacao/organizacao.php',369,0,0)";
$funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(370,'cadastros/organizacao/cadOrganizacao.php',369,0,0)";
$funcosInternas[] = "insert into pbx_funcoes_internas(id_prog, arquivo, id_prog_pai, status, exit)values(371,'cadastros/organizacao/atribuirOrganizacao.php',369,0,0)";

35
include/util/util.php

@ -559,6 +559,32 @@ function RemoveDddPadrao($numeroDiscar, $ddd = '')
return $numeroDiscar; return $numeroDiscar;
} }
function GravaNomeOrganizacao($nome)
{
$org_id = GetOrganizacao();
if (strpos($nome, '@') === false) {
return $nome . "@" . $org_id;
}
return explode('@', $nome)[0];
}
function GetNomeOrganizacao($nome)
{
if (strpos($nome, '@') !== false) {
$info = explode('@', $nome);
return ['nome' => $info[0], 'org_id' => $info[1]];
}
}
function GravaNumeroOrganizacao($numero)
{
$org_id = GetOrganizacao();
if (substr($numero, 0, 1) != $org_id) {
return $org_id . $numero;
}
return $numero;
}
function IsAjax() function IsAjax()
{ {
return isset($_REQUEST['ajax']) && ($_REQUEST['ajax'] = 1); return isset($_REQUEST['ajax']) && ($_REQUEST['ajax'] = 1);
@ -1686,16 +1712,16 @@ function ParseDbTimestamp($timestamp, $show = 'DT')
return $return; return $return;
} }
function insert_padrao($conexao, $uniqueid, $direcao, $destino, $conta = 'null', $id_usuario = 'null', $agente = 'null', $dac = 'null') function insert_padrao($conexao, $uniqueid, $direcao, $destino, $conta = 'null', $id_usuario = 'null', $agente = 'null', $dac = 'null', $org_id = null)
{ {
/* /*
* Verifica se a direcao ainda nao foi gravada para o uniqueid, para evitar duplicidade. * Verifica se a direcao ainda nao foi gravada para o uniqueid, para evitar duplicidade.
*/ */
$query = sprintf("select '' from ast_bilhetes_complemento where uniqueid2 = '%s' and direcao = '%s' limit 1", $uniqueid, $direcao); $query = sprintf("SELECT '' FROM ast_bilhetes_complemento WHERE uniqueid2 = '%s' AND direcao = '%s' LIMIT 1", $uniqueid, $direcao);
$result = pg_query($conexao, $query); $result = pg_query($conexao, $query);
if (!pg_num_rows($result)) { if (!pg_num_rows($result)) {
$query = "insert into ast_bilhetes_complemento (uniqueid2,direcao,destino,conta,id_usuario,agente,dac) values (%s,%s,%s,%s,%s,%s,%s)"; $query = "INSERT INTO ast_bilhetes_complemento (uniqueid2,direcao,destino,conta,id_usuario,agente,dac,org_id) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)";
$query = sprintf( $query = sprintf(
$query, $query,
get_quote($uniqueid), get_quote($uniqueid),
@ -1704,7 +1730,8 @@ function insert_padrao($conexao, $uniqueid, $direcao, $destino, $conta = 'null',
get_quote($conta), get_quote($conta),
get_quote($id_usuario), get_quote($id_usuario),
get_quote($agente), get_quote($agente),
get_quote($dac) get_quote($dac),
get_quote($org_id)
); );
return pg_query($conexao, $query) ? true : false; return pg_query($conexao, $query) ? true : false;
} }

1
iniciaCliente.php

@ -67,6 +67,7 @@ if (!IsAjax()) {
$smarty->assign('setLogo', IsUserConnect() ? 'style="height: 0;"' : ''); $smarty->assign('setLogo', IsUserConnect() ? 'style="height: 0;"' : '');
$smarty->assign('navHeader', GetNavHeader($tpLayout)); $smarty->assign('navHeader', GetNavHeader($tpLayout));
$smarty->assign('navLogin', GetNavLogin($tpLayout, GetDispProgSel($idProg))); $smarty->assign('navLogin', GetNavLogin($tpLayout, GetDispProgSel($idProg)));
$smarty->assign('displaySel', GetDispProgSel($idProg));
$smarty->assign('onLoad', $onLoad); $smarty->assign('onLoad', $onLoad);
$smarty->assign('menuGeral', GetMenuUser($tpLayout)); $smarty->assign('menuGeral', GetMenuUser($tpLayout));
$smarty->assign('idProg', $idProg); $smarty->assign('idProg', $idProg);

28
master.css

@ -1052,3 +1052,31 @@ table.gridClean td {
padding-right: 6px; padding-right: 6px;
background-color: #4F71C0; background-color: #4F71C0;
} }
.selectPerfil {
font-size: 14px;
padding: 10px;
width: 200px;
border: 1px solid #DCDCDC;
border-radius: 6px;
margin-right: 10px;
margin-top: -10px;
appearance: none;
background: #F7F7F7;
float: right;
background-image: linear-gradient(45deg, transparent 50%, #555 50%, #555), linear-gradient(135deg, #555 50%, transparent 50%);
background-position: calc(100% - 16px) calc(1em), calc(100% - 11px) calc(1em);
background-size: 5px 5px, 5px 5px;
background-repeat: no-repeat;
cursor: pointer;
}
.selectPerfil:hover {
border-color: #666;
}
.selectPerfil:focus {
outline: none;
border-color: #2196F3;
box-shadow: 0 0 5px rgba(33, 150, 243, 0.7);
}

71
projeto/base/sql/versao-1.9.0.sql

@ -23,32 +23,69 @@ REFERENCES pbx_usuarios(id) ON DELETE CASCADE;
ALTER TABLE pbx_organizacao_usuarios ADD CONSTRAINT id_organizacao FOREIGN KEY (id_organizacao) ALTER TABLE pbx_organizacao_usuarios ADD CONSTRAINT id_organizacao FOREIGN KEY (id_organizacao)
REFERENCES pbx_organizacao(id) ON DELETE CASCADE; REFERENCES pbx_organizacao(id) ON DELETE CASCADE;
CREATE OR REPLACE FUNCTION public.tipoligacao(numfone character varying, entrada boolean DEFAULT true, organizacao int default 0)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare tam integer;
declare dddfone integer;
declare ddddef integer;
declare nonoDigito integer;
declare numerofone varchar(18);
BEGIN
if(length(numfone) > 18)then
numerofone = substring(numfone, '..................$');
else
numerofone = numfone;
end if;
--create temporary table tpbx_facilidades as select * from pbx_facilidades where id = 1; ddddef = (select prm_ddd_padrao from pbx_parametros where org_id = organizacao);
--alter table tpbx_facilidades drop column id;
--insert into pbx_facilidades select * from tpbx_facilidades;
-- update from pbx_facilidades set org_id = $org_id where id = $id
create temporary table tpbx_features_featuremap as select * from pbx_features_featuremap where id = 1; tam = length(strtoint(numerofone)::text);
alter table tpbx_features_featuremap drop column id; nonoDigito = strtoint( substring(substring(numerofone, '.........$'), 1, 1) );
insert into pbx_features_featuremap select * from tpbx_features_featuremap;
update pbx_features_featuremap set org_id = $org_id where id = $id
create temporary table tpbx_features_general as select * from pbx_features_general where id = 1; if((tam = 3) and (numerofone in('100', '128', '190', '191', '192', '193', '194', '197', '198', '199')))then
alter table tpbx_features_general drop column id; return 4;
insert into pbx_features_general select * from tpbx_features_general; elsif((tam >= 8) and (substring(numerofone,1,4) in('0300','0500','0900','4000','4001','4002','4003','4004', '4005', '4006','4007','4008','4009','0800')))then
update pbx_features_general set org_id = $org_id where id = $id return 5;
elsif(tam = 8)then
return (case when(entrada)then 21 else 31 end);
elsif(tam < 8)then
return 1;
elsif((nonoDigito = 9) and (tam < 11))then /* Celular local */
return (case when(entrada)then 23 else 33 end);
elseif((not entrada) and (substring(numerofone,1,2) = '00'))then
return 35;
end if;
create temporary table tpbx_iax_general as select * from pbx_iax_general where id = 1;
alter table tpbx_iax_general drop column id;
insert into pbx_iax_general select * from tpbx_iax_general;
update pbx_iax_general set org_id = 2 where id = 4
-- pbx_parametros if(nonoDigito = 9)then
dddfone = substring(substring(numerofone, '...........$'), 1, 2);
else
dddfone = substring(substring(numerofone, '..........$'), 1, 2);
end if;
if((nonoDigito = 9) and (dddfone <> ddddef))then
return (case when(entrada)then 24 else 34 end);
elsif((nonoDigito = 9) and (dddfone = ddddef))then
return (case when(entrada)then 23 else 33 end);
elsif(dddfone <> ddddef)then
return (case when(entrada)then 22 else 32 end);
elsif(dddfone = ddddef)then
return (case when(entrada)then 21 else 31 end);
end if;
return 1;
END;
$function$
;
------------------------------------------ ------------------------------------------
----- ADICAO DE ID NAS TABELAS ----- ----- ADICAO DE ID NAS TABELAS -----
------------------------------------------ ------------------------------------------
DROP INDEX "idxSipRamaisNome";
ALTER TABLE pbx_sip_general ADD COLUMN id SERIAL PRIMARY KEY; ALTER TABLE pbx_sip_general ADD COLUMN id SERIAL PRIMARY KEY;
ALTER TABLE pbx_iax_general ADD COLUMN id SERIAL PRIMARY KEY; ALTER TABLE pbx_iax_general ADD COLUMN id SERIAL PRIMARY KEY;
ALTER TABLE pbx_facilidades ADD COLUMN id SERIAL PRIMARY KEY; ALTER TABLE pbx_facilidades ADD COLUMN id SERIAL PRIMARY KEY;

1566
scriptApl/functions15.js

File diff suppressed because it is too large Load Diff

4
scriptApl/menu.css

@ -13,7 +13,6 @@
font-weight: 600; font-weight: 600;
margin: 8px 0 0 8px; margin: 8px 0 0 8px;
color: #666666; color: #666666;
border-bottom: 4px solid #ededed;
padding: 0 0 5px; padding: 0 0 5px;
} }
.m0l0iover { .m0l0iover {
@ -24,7 +23,8 @@
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
margin: 8px 0 0 8px; margin: 8px 0 0 8px;
color: #A9A9A9 color: #A9A9A9;
border-bottom: 4px solid #ededed;
} }
/* level 0 outer */ /* level 0 outer */

276
supervisor.php

@ -22,6 +22,10 @@ $selTodos = (strtoupper($dac) == 'TODOS') || !$dac;
*/ */
$statusServer = false; $statusServer = false;
/**
* Separa as informacoes da fila conforme a organizacao
*/
$org_id = GetOrganizacao();
/* /*
* Valores para o head das tabelas de dac e agente * Valores para o head das tabelas de dac e agente
*/ */
@ -74,7 +78,7 @@ if (IsAjax() && isset($_GET["logoff"])) {
* Desliga a chamada corrente * Desliga a chamada corrente
* e desconecta o usuario do asterisk * e desconecta o usuario do asterisk
*/ */
$query = "select canal, canal_transfer, canal_agente, ramal, nome, dac, uniqueid, status from pbx_supervisor_agentes where matricula = '$matrLogoff'"; $query = "SELECT canal, canal_transfer, canal_agente, ramal, nome, dac, uniqueid, status FROM pbx_supervisor_agentes WHERE matricula = '$matrLogoff'";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
if ($result) { if ($result) {
$row = @pg_fetch_array($result); $row = @pg_fetch_array($result);
@ -86,24 +90,18 @@ if (IsAjax() && isset($_GET["logoff"])) {
$result = pg_query($dbcon, "begin"); $result = pg_query($dbcon, "begin");
//atualiza dados do supervisor //atualiza dados do supervisor
$query = "DELETE FROM pbx_supervisor_agentes WHERE matricula = '$matrLogoff'";
$query = "delete
from pbx_supervisor_agentes
where matricula = '$matrLogoff'";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$result = @pg_affected_rows($result); $result = @pg_affected_rows($result);
//registra o login do usuario //registra o login do usuario
if ($result) { if ($result) {
$query = "select coalesce(max(id),0) as id from pbx_eventos_agentes where matricula = '$matrLogoff' and cast(login as date) = cast(now() as date) and flag <> 2"; $query = "SELECT coalesce(max(id),0) AS id FROM pbx_eventos_agentes WHERE matricula = '$matrLogoff' AND cast(login as date) = cast(now() as date) AND flag <> 2";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$row = @pg_fetch_row($result); $row = @pg_fetch_row($result);
$idLogoff = $row[0]; $idLogoff = $row[0];
if ($idLogoff) { if ($idLogoff) {
$query = "update pbx_eventos_agentes $query = "UPDATE pbx_eventos_agentes SET logoff = now(), flag = 2 WHERE id = $idLogoff";
set logoff = now(),
flag = 2
where id = $idLogoff";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$result = @pg_affected_rows($result); $result = @pg_affected_rows($result);
} }
@ -134,9 +132,6 @@ if (IsAjax() && isset($_GET["logoff"])) {
$idSessao = "SSinter_" . $matricula; $idSessao = "SSinter_" . $matricula;
$intercalar = $_SESSION[$idSessao]; $intercalar = $_SESSION[$idSessao];
$_SESSION[SS_DESTINO_INTERCALAR] = $_GET["ramal"]; $_SESSION[SS_DESTINO_INTERCALAR] = $_GET["ramal"];
//$query = sprintf("select (intercalar + monitorar) as monitorar from pbx_supervisor_agentes where matricula = %s", QuotedStr($matricula));
//$intercalar = RegistroInc($dbcon, $query);
$intercalar = false; $intercalar = false;
/* /*
@ -144,9 +139,7 @@ if (IsAjax() && isset($_GET["logoff"])) {
*/ */
@GetUrl(AST_DESLIGAR_TODOS); @GetUrl(AST_DESLIGAR_TODOS);
$query = "update pbx_supervisor_agentes $query = "UPDATE pbx_supervisor_agentes SET intercalar = '{Status}' WHERE matricula = '$matricula'";
set intercalar = '{Status}'
where matricula = '$matricula'";
if (!$intercalar) { if (!$intercalar) {
$ramalIntercalar = soNumero(GetRamalMonitorar(RAMAL_MONITOR_SUPERVISOR)); $ramalIntercalar = soNumero(GetRamalMonitorar(RAMAL_MONITOR_SUPERVISOR));
@ -194,7 +187,6 @@ if (IsAjax() && isset($_GET["logoff"])) {
$nvLgpdMonitorado = GetNivelLgpd($matricula); $nvLgpdMonitorado = GetNivelLgpd($matricula);
} }
if (!GetUrl(AST_MONITORAR, GetParamMonitorar(GetAvisoLgpdMonitoria(), $ramalIntercalar, $canalIntercalar, $matricula, $nvLgpdSupervisor, $nvLgpdMonitorado))) { if (!GetUrl(AST_MONITORAR, GetParamMonitorar(GetAvisoLgpdMonitoria(), $ramalIntercalar, $canalIntercalar, $matricula, $nvLgpdSupervisor, $nvLgpdMonitorado))) {
throw new Exception("Não foipossível realzar a operação!"); throw new Exception("Não foipossível realzar a operação!");
} }
@ -210,7 +202,7 @@ if (IsAjax() && isset($_GET["logoff"])) {
* Coloca todos os atendentes em pausa * Coloca todos os atendentes em pausa
*/ */
$pausaDac = $_GET["pausaDac"]; $pausaDac = $_GET["pausaDac"];
$query = "Select matricula, ramal, dac from pbx_supervisor_agentes where dac = '$pausaDac' and upper(status) not in('PAUSA', 'OCUPADO') "; $query = "SELECT matricula, ramal, dac FROM pbx_supervisor_agentes WHERE dac = '$pausaDac' AND upper(status) NOT IN('PAUSA', 'OCUPADO') ";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
if ($result) { if ($result) {
if (pg_num_rows($result)) { if (pg_num_rows($result)) {
@ -239,12 +231,10 @@ if (IsAjax() && isset($_GET["logoff"])) {
} else if (IsAjax()) { } else if (IsAjax()) {
echo $tbDac . "#" . $tbAgente . "#" . $tbCall; echo $tbDac . "#" . $tbAgente . "#" . $tbCall;
} else { } else {
//$jsJQuery[] = GetJqTips('img');
//define arquivo de javaScript necessarios
$tempoSuperAtu = GetTempoSupervisor(); $tempoSuperAtu = GetTempoSupervisor();
$jsStartup[] = "var idSet = window.setInterval(\"GetSupervisor('$dac','')\",$tempoSuperAtu);"; $jsStartup[] = "var idSet = window.setInterval(\"GetSupervisor('$dac','')\",$tempoSuperAtu);";
//$smarty->assign('dacs', GetDac($dbcon, $dac));
$smarty->assign('tbDac', $tbDac); $smarty->assign('tbDac', $tbDac);
$smarty->assign('tbAgente', $tbAgente); $smarty->assign('tbAgente', $tbAgente);
$smarty->assign('ramal_monitor', GetRamalMonitorar(RAMAL_MONITOR_SUPERVISOR)); $smarty->assign('ramal_monitor', GetRamalMonitorar(RAMAL_MONITOR_SUPERVISOR));
@ -258,15 +248,15 @@ if (IsAjax() && isset($_GET["logoff"])) {
$smarty->assign('prm_max_ramal', $_SESSION["prm_max_ramal"]); $smarty->assign('prm_max_ramal', $_SESSION["prm_max_ramal"]);
$smarty->assign('prm_max_licenca', $_SESSION["prm_max_licenca"]); $smarty->assign('prm_max_licenca', $_SESSION["prm_max_licenca"]);
$smarty->assign('prm_max_licenca_fixo', $_SESSION["prm_max_licenca_fixo"]); $smarty->assign('prm_max_licenca_fixo', $_SESSION["prm_max_licenca_fixo"]);
$smarty->assign('nomeRamalMonitor', (RAMAL_MONITOR_SUPERVISOR)); $smarty->assign('nomeRamalMonitor', (RAMAL_MONITOR_SUPERVISOR));
$smarty->assign('canalRamallMonitor', (CANAL_MONITOR_SUPERVISOR)); $smarty->assign('canalRamallMonitor', (CANAL_MONITOR_SUPERVISOR));
GetTemplate($smarty, 'supervisor.tpl'); GetTemplate($smarty, 'supervisor.tpl');
} }
function GetDadosDac() { function GetDadosDac()
global $statusServer, $arRetornoAbandonadas; {
global $statusServer, $arRetornoAbandonadas, $dbcon;
try { try {
/* /*
* Dacs disponiveis para o usuario conectado. * Dacs disponiveis para o usuario conectado.
@ -306,7 +296,7 @@ function GetDadosDac() {
*/ */
$dadosDac = array(); $dadosDac = array();
$query = GetQueryDac(); $query = GetQueryDac();
$result = pg_query($query); $result = pg_query($dbcon, $query);
/* /*
* Lista chamadads sem retorno * Lista chamadads sem retorno
@ -324,8 +314,9 @@ function GetDadosDac() {
} }
} }
function GetDadosAgt($dac) { function GetDadosAgt($dac)
global $statusServer; {
global $statusServer, $dbcon;
try { try {
$dacAll = strtoupper($dac) == "TODOS"; $dacAll = strtoupper($dac) == "TODOS";
@ -376,7 +367,7 @@ function GetDadosAgt($dac) {
*/ */
$dadosAgt = array(); $dadosAgt = array();
$qr = GetQueryAgt($dac); $qr = GetQueryAgt($dac);
$result = pg_query($qr); $result = pg_query($dbcon, $qr);
$dadosDac = array(); $dadosDac = array();
while (($dados = @pg_fetch_array($result, null, PGSQL_ASSOC))) { while (($dados = @pg_fetch_array($result, null, PGSQL_ASSOC))) {
$dadosDac[] = $dados; $dadosDac[] = $dados;
@ -385,14 +376,13 @@ function GetDadosAgt($dac) {
return $dadosDac; return $dadosDac;
} }
function GetQueryDac() { function GetQueryDac()
global $transbordoEvento; {
$idUser = GetIdUser(); $idUser = GetIdUser();
$login = GetLogin(); $org_id = GetOrganizacao();
$dacsAcesso = GetDacsAcesso($idUser); $dacsAcesso = GetDacsAcesso($idUser);
$query = " select distinct coalesce(sel, 0) as sel, $query = "SELECT DISTINCT coalesce(sel, 0) AS sel,
e.dac, e.dac,
coalesce(originadas_pa,0) as originadas, coalesce(originadas_pa,0) as originadas,
coalesce(a.atendidas, 0) as atendidas, coalesce(a.atendidas, 0) as atendidas,
@ -408,9 +398,10 @@ function GetQueryDac() {
tma, tma,
(select count(*) from pbx_nao_classificado where fila = a.dac and data_bilhete = a.data) as nao_classificado, (select count(*) from pbx_nao_classificado where fila = a.dac and data_bilhete = a.data) as nao_classificado,
id_dac, id_dac,
(select count(*) from pbx_supervisor_agentes where dac = e.dac) as num_agente, 1 as ord (select count(*) from pbx_supervisor_agentes where dac = e.dac) as num_agente, 1 as ord,
from pbx_supervisor_dacs e org_id
left join ( FROM pbx_supervisor_dacs e
LEFT JOIN (
SELECT 0 as sel, DAC, ID_DAC, SELECT 0 as sel, DAC, ID_DAC,
DATA, DATA,
ABANDONADAS ABANDONADAS
@ -429,7 +420,7 @@ function GetQueryDac() {
,TRANSBORDADA ,TRANSBORDADA
FROM ( FROM (
SELECT DATA, SELECT DATA,
DAC, ID_DAC DAC, ID_DAC, org_id
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS OFERECIDAS ,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS OFERECIDAS
,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS ATENDIDAS_URA ,SUM (CASE WHEN EVENTO = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS ATENDIDAS_URA
,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS ,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS
@ -446,32 +437,34 @@ function GetQueryDac() {
FROM ( FROM (
SELECT D.NOME AS DAC, d.id as ID_DAC, SELECT D.NOME AS DAC, d.id as ID_DAC,
a.calldate::date AS DATA, a.calldate,b.fila,b.evento,b.param1,b.param2,b.param3,b.param4, a.calldate::date AS DATA, a.calldate,b.fila,b.evento,b.param1,b.param2,b.param3,b.param4,
case when(evento = 'TRANSBORDADO')then 1 else 0 end as transbordada case when(evento = 'TRANSBORDADO')then 1 else 0 end as transbordada,
d.org_id
FROM ast_eventos_dacs b INNER JOIN ast_bilhetes a on a.uniqueid = b.uid2 and a.lastapp <> 'Transferred Call' FROM ast_eventos_dacs b INNER JOIN ast_bilhetes a on a.uniqueid = b.uid2 and a.lastapp <> 'Transferred Call'
INNER JOIN pbx_dacs d on d.nome = b.fila and d.status = 'A' INNER JOIN pbx_queues_grupos d on d.nome = b.fila and d.status = 'A'
WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER', 'CONNECT','ENTERQUEUE','TRANSFER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG', 'TRANSBORDANDO', 'TRANSBORDADO','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','BUSYS','NOANSWERS') WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER', 'CONNECT','ENTERQUEUE','TRANSFER', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG', 'TRANSBORDANDO', 'TRANSBORDADO','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','BUSYS','NOANSWERS')
AND a.data_bilhete = now()::date AND a.data_bilhete = now()::date
) AS DADOS ) AS DADOS
GROUP BY DATA, DAC, ID_DAC GROUP BY DATA, DAC, ID_DAC, org_id
) AS DADOS ORDER BY 1 ) AS DADOS ORDER BY 1
) a on e.dac = a.dac \n"; ) a ON e.dac = a.dac \n";
$query .= " WHERE 1=1 ";
if (!IsAdmin()) { if (!IsAdmin()) {
$query .= " where e.dac in($dacsAcesso)\n"; $query .= " AND e.dac IN($dacsAcesso)\n";
} }
//select b.uid2 as uid, b.fila from pbx_eventos_dacs b where b.evento in ('ABANDON','TRANSBORDANDO') group by b.uid2, b.fila having count(*) > 1 $query .= " AND org_id = $org_id ";
$query .= " order by 2"; $query .= " ORDER BY 2";
// echo $query; exit;//if(IsAdmin())echo $query; exit;
return $query; return $query;
} }
function GetDacsAcesso($idUser, $array = false) { function GetDacsAcesso($idUser, $array = false)
$query = "select distinct b.nome from pbx_queues_grupos b {
inner join pbx_fila_grupos c on c.id = b.id global $dbcon;
inner join pbx_grupo_usuario d on d.gp_id = c.gp_id $query = "SELECT DISTINCT b.nome FROM pbx_queues_grupos b
and d.user_id = %s and b.status = 'A' "; INNER JOIN pbx_fila_grupos c ON c.id = b.id
INNER JOIN pbx_grupo_usuario d ON d.gp_id = c.gp_id
AND d.user_id = %s and b.status = 'A' ";
$query = sprintf($query, IsAdmin() ? 'd.user_id' : QuotedStr($idUser)); $query = sprintf($query, IsAdmin() ? 'd.user_id' : QuotedStr($idUser));
$result = pg_query($query); $result = pg_query($dbcon, $query);
$linha = $array ? array() : ''; $linha = $array ? array() : '';
if ($result) { if ($result) {
@ -488,80 +481,76 @@ function GetDacsAcesso($idUser, $array = false) {
return $linha; return $linha;
} }
function GetQueryAgt($dac) { function GetQueryAgt($dac)
{
global $selTodos; global $selTodos;
$idUser = GetIdUser(); $idUser = GetIdUser();
$login = GetLogin();
if ($selTodos) { if ($selTodos) {
$dacsAcesso = GetDacsAcesso($idUser); $dacsAcesso = GetDacsAcesso($idUser);
} }
$queryLocal = "select a.dac, $queryLocal = "SELECT a.dac,
a.ramal as ramal_monitor, a.ramal AS ramal_monitor,
a.matricula, a.matricula,
a.nome, a.nome,
a.monitorar as statusmonitorar, a.monitorar AS statusmonitorar,
a.intercalar as statusintercalar, a.intercalar AS statusintercalar,
((EXTRACT(EPOCH FROM (now() - a.duracao)) / 60)) as status_time, ((EXTRACT(EPOCH FROM (NOW() - a.duracao)) / 60)) AS status_time,
a.disponivel_atendimento, a.disponivel_atendimento,
chamada_classificado, chamada_classificado,
(LOCALTIMESTAMP(0) - a.tempo_login) as tempo_logado, (LOCALTIMESTAMP(0) - a.tempo_login) AS tempo_logado,
a.modo_atendimento, a.modo_atendimento,
a.origem_destino as fone, a.origem_destino as fone,
case when((a.status = 'PAUSA') and (coalesce(a.motivo_pausa, '') <> ''))then a.status || '-' || upper(a.motivo_pausa) else a.status end as status, CASE WHEN((a.status = 'PAUSA') AND (coalesce(a.motivo_pausa, '') <> ''))THEN a.status || '-' || upper(a.motivo_pausa) ELSE a.status END AS status,
(LOCALTIMESTAMP(0) - a.duracao) as duracao, (LOCALTIMESTAMP(0) - a.duracao) AS duracao,
protocolo as num_protocolo, protocolo AS num_protocolo,
uniqueid2, uniqueid2,
extract(epoch from (now() - logado))::int as tempo_atualiza, extract(epoch FROM (NOW() - logado))::int AS tempo_atualiza,
trim(motivo_pausa) as pausa_motivo_rt, trim(motivo_pausa) AS pausa_motivo_rt,
trim(uniqueid) as uniqueid, trim(uniqueid) AS uniqueid,
disponivel_atendimento, disponivel_atendimento,
chamada_classificado, chamada_classificado,
coalesce(canal_transfer, '') as canal_transfer, coalesce(canal_transfer, '') AS canal_transfer,
tipo_ligacao, cont_identificador, status_discador, tipo_ligacao, cont_identificador, status_discador,
media, media,
( SELECT count(*) (SELECT count(*) FROM ast_bilhetes x, ast_eventos_dacs y
FROM ast_bilhetes x, ast_eventos_dacs y WHERE y.uid2 = x.uniqueid
where y.uid2 = x.uniqueid AND x.data_bilhete IN(a.tempo_login::date, now()::date)
and x.data_bilhete in(a.tempo_login::date, now()::date) AND y.fila = a.dac
and y.fila = a.dac AND substring(y.agente, 7, 4) = a.matricula
and substring(y.agente, 7, 4) = a.matricula AND y.evento IN('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS')
and y.evento in('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS') AND x.lastapp <> 'Transferred Call' ) AS originadas_pa,
and x.lastapp <> 'Transferred Call' )as originadas_pa, (SELECT count(*) FROM ast_bilhetes x, ast_eventos_dacs y, pbx_bilhetes_complemento z
( SELECT count(*) WHERE y.uid2 = x.uniqueid
FROM ast_bilhetes x, ast_eventos_dacs y,pbx_bilhetes_complemento z AND x.uniqueid = z.uniqueid2
where y.uid2 = x.uniqueid AND z.direcao = 'fila-ramal'
and x.uniqueid = z.uniqueid2 AND x.data_bilhete IN(a.tempo_login::date, now()::date)
and z.direcao = 'fila-ramal' AND y.fila = a.dac
and x.data_bilhete in(a.tempo_login::date, now()::date) AND substring(y.agente, 7, 4) = a.matricula
and y.fila = a.dac AND y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL')
and substring(y.agente, 7, 4) = a.matricula AND x.lastapp <> 'Transferred Call' ) AS atendidas_pa,
and y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') (SELECT sum(CASE WHEN ((y.evento = 'TRANSFER') OR (y.evento = 'TRANSFERORIG')) THEN CASE WHEN(y.param4 = '')THEN 0 ELSE y.param4::int END
and x.lastapp <> 'Transferred Call' ) AS atendidas_pa, ELSE
CASE WHEN(y.param2 = '')THEN 0 ELSE y.param2::int END END)
( SELECT sum( CASE WHEN ((y.evento = 'TRANSFER') or (y.evento = 'TRANSFERORIG')) THEN case when(y.param4 = '')then 0 else y.param4::int end
ELSE case when(y.param2 = '')then 0 else y.param2::int end END
)
FROM ast_bilhetes x, ast_eventos_dacs y FROM ast_bilhetes x, ast_eventos_dacs y
where y.uid2 = x.uniqueid WHERE y.uid2 = x.uniqueid
and x.data_bilhete in(a.tempo_login::date, now()::date) AND x.data_bilhete in(a.tempo_login::date, NOW()::date)
and y.fila = a.dac AND y.fila = a.dac
and substring(y.agente, 7, 4) = a.matricula AND substring(y.agente, 7, 4) = a.matricula
and y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG') AND y.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG')
and x.lastapp <> 'Transferred Call' ) AS tempo_atendimento, (select coalesce(pa_fixo, 0) from pbx_usuarios where matricula = a.matricula) as pa_fixo AND x.lastapp <> 'Transferred Call' ) AS tempo_atendimento, (SELECT coalesce(pa_fixo, 0) FROM pbx_usuarios WHERE matricula = a.matricula) AS pa_fixo
FROM pbx_supervisor_agentes a FROM pbx_supervisor_agentes a
WHERE a.dac = case when(upper('$dac') = 'TODOS')then a.dac else '$dac' end\n"; WHERE a.dac = CASE WHEN(upper('$dac') = 'TODOS')THEN a.dac ELSE '$dac' END\n";
if ($selTodos && !IsAdmin()) { if ($selTodos && !IsAdmin()) {
$queryLocal .= " and a.dac in($dacsAcesso)\n"; $queryLocal .= " AND a.dac IN($dacsAcesso)\n";
} }
$queryLocal .= " order by a.dac, a.nome"; $queryLocal .= " ORDER BY a.dac, a.nome";
//if(IsAdmin ()) echo $queryLocal; // coalesce(a.calldate::date, now()::date) = now()::date
return $queryLocal; return $queryLocal;
} }
function GetHeadTable($items, $title = "", $filtro = array()) { function GetHeadTable($items, $title = "", $filtro = array())
{
global $smarty; global $smarty;
$colspan = count($items); $colspan = count($items);
$tb = "<tr>"; $tb = "<tr>";
@ -576,11 +565,13 @@ function GetHeadTable($items, $title = "", $filtro = array()) {
return $tb . "\n"; return $tb . "\n";
} }
function GetCloseTable() { function GetCloseTable()
{
return "</table>\n"; return "</table>\n";
} }
function GetLinhasDac($dac) { function GetLinhasDac($dac)
{
global $dbcon, $statusServer; global $dbcon, $statusServer;
$linha = ''; $linha = '';
$imgSet = ""; $imgSet = "";
@ -603,16 +594,15 @@ function GetLinhasDac($dac) {
array_unshift($arDados, $somaTodos); array_unshift($arDados, $somaTodos);
} }
//print_r($arDados); exit; //print_r($arDados); exit;
foreach ($arDados as $dados) { foreach ($arDados as $dados) {
$linha .= "<tr>"; $linha .= "<tr>";
$stl = ($dac == $dados["dac"]) || ($dac == -1) ? "class=\"gridSelect\"" : ""; $stl = ($dac == $dados["dac"]) || ($dac == -1) ? "class=\"gridSelect\"" : "";
$dacAtv = $dados["dac"]; $dacAtv = $dados["dac"];
$dacAll = strtoupper($dacAtv) == 'TODOS'; $dacAll = strtoupper($dacAtv) == 'TODOS';
if ($stl) if ($stl) {
$_SESSION['SSsupervisorDacAtu'] = $dacAtv; $_SESSION['SSsupervisorDacAtu'] = $dacAtv;
}
/* /*
* Seleciona o dac ativo. * Seleciona o dac ativo.
*/ */
@ -698,7 +688,6 @@ function GetLinhasDac($dac) {
*/ */
$imgVendas = ''; $imgVendas = '';
if (!$dacAll && UseModVendas()) { if (!$dacAll && UseModVendas()) {
$rejeitados = GetRejeitadosVendas($dacAtv); $rejeitados = GetRejeitadosVendas($dacAtv);
$imOn = "<img src=\"imgSite/dollar16.png\" width=\"16\" border=\"0\" height=\"16\" title=\"Existem $rejeitados Arquivo(s) Rejeitado(s) na Integração das Vendas nesta data!\" alt=\"Existem Arquivos Rejeitados na Integração das Vendas!\" align=\"absmiddle\">"; $imOn = "<img src=\"imgSite/dollar16.png\" width=\"16\" border=\"0\" height=\"16\" title=\"Existem $rejeitados Arquivo(s) Rejeitado(s) na Integração das Vendas nesta data!\" alt=\"Existem Arquivos Rejeitados na Integração das Vendas!\" align=\"absmiddle\">";
$imOff = "<img src=\"imgSite/dollar16.png\" width=\"16\" border=\"0\" height=\"16\" title=\"Não Arquivos Rejeitados!\" alt=\"Não Arquivos Rejeitados!\" align=\"absmiddle\">"; $imOff = "<img src=\"imgSite/dollar16.png\" width=\"16\" border=\"0\" height=\"16\" title=\"Não Arquivos Rejeitados!\" alt=\"Não Arquivos Rejeitados!\" align=\"absmiddle\">";
@ -707,7 +696,6 @@ function GetLinhasDac($dac) {
$imgVendas = sprintf($imgVendas, $dacAtv, ($rejeitados ? $imOn : $imOff)); $imgVendas = sprintf($imgVendas, $dacAtv, ($rejeitados ? $imOn : $imOff));
} }
/* /*
* classificação de chamadas. * classificação de chamadas.
*/ */
@ -733,7 +721,8 @@ function GetLinhasDac($dac) {
return $linha; return $linha;
} }
function FiltroAgt($status) { function FiltroAgt($status)
{
global $cklivre, $ckocupado, $ckpausa; global $cklivre, $ckocupado, $ckpausa;
if (!$cklivre && !$ckocupado && !$ckpausa) { if (!$cklivre && !$ckocupado && !$ckpausa) {
@ -743,7 +732,8 @@ function FiltroAgt($status) {
return ($cklivre === $status) || ($ckocupado === $status) || ($ckpausa === $status); return ($cklivre === $status) || ($ckocupado === $status) || ($ckpausa === $status);
} }
function GetLinhasAgt($dac) { function GetLinhasAgt($dac)
{
//ramal, matricula, nome,tempo_logado, modo_atendimento,fone, status, duracao, originadas_pa, atendidas_pa, tempo_atendimento statusmonitorar, statusintercalar, dac, status_time disponivel_atendimento, chamada_classificado //ramal, matricula, nome,tempo_logado, modo_atendimento,fone, status, duracao, originadas_pa, atendidas_pa, tempo_atendimento statusmonitorar, statusintercalar, dac, status_time disponivel_atendimento, chamada_classificado
global $selTodos; global $selTodos;
$imgSet = ""; $imgSet = "";
@ -856,17 +846,6 @@ function GetLinhasAgt($dac) {
*/ */
$atendidas_pa = 0; $atendidas_pa = 0;
$statusAgentMedia = ''; $statusAgentMedia = '';
// if($media){
// foreach($response['data'] as $v){
// if($v['matricula'] == $dados["matricula"]){
// $atendidas_pa = $v['numero_atendimento_dia'];
// $statusAgentMedia = $v['status'];
// break;
// }
// }
// } else {
// $atendidas_pa = $dados["atendidas_pa"];
// }
$atendidas_pa = $dados["atendidas_pa"]; $atendidas_pa = $dados["atendidas_pa"];
$linha .= sprintf("<td %s>%s</td>", $align, $atendidas_pa); $linha .= sprintf("<td %s>%s</td>", $align, $atendidas_pa);
@ -971,7 +950,8 @@ function GetLinhasAgt($dac) {
return $linhas; return $linhas;
} }
function GetTbDac($dbcon, $dac, $head) { function GetTbDac($dbcon, $dac, $head)
{
//tabela de dacs //tabela de dacs
$tb = ""; $tb = "";
$tb .= GetHeadTable($head); $tb .= GetHeadTable($head);
@ -979,21 +959,24 @@ function GetTbDac($dbcon, $dac, $head) {
return $tb; return $tb;
} }
function GetTbAgente($dbcon, $dac, $head) { function GetTbAgente($dbcon, $dac, $head)
{
$tb = GetHeadTable($head, "Agentes em Operação"); $tb = GetHeadTable($head, "Agentes em Operação");
$tb .= GetLinhasAgt($dac); $tb .= GetLinhasAgt($dac);
//$tb .= GetCloseTable(); //$tb .= GetCloseTable();
return $tb; return $tb;
} }
function GetTempoPausa($pausa) { function GetTempoPausa($pausa)
{
global $dbcon; global $dbcon;
$query = "SELECT tempo_alerta FROM pbx_motivos_pausas WHERE motivo ILIKE '$pausa'"; $query = "SELECT tempo_alerta FROM pbx_motivos_pausas WHERE motivo ILIKE '$pausa'";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
return pg_fetch_assoc($result); return pg_fetch_assoc($result);
} }
function GetCurrentCall($conn, $cmpId) { function GetCurrentCall($conn, $cmpId)
{
$table = ' <table cellpadding="2" cellspacing="0" border="0" width="100%" class="grid"> $table = ' <table cellpadding="2" cellspacing="0" border="0" width="100%" class="grid">
<tr> <tr>
<th>Fone</th> <th>Fone</th>
@ -1003,7 +986,7 @@ function GetCurrentCall($conn, $cmpId) {
{linha} {linha}
</table>'; </table>';
$query = "select conf_fone, conf_status, round(extract(epoch from age(now(),conf_data))) * interval '1 second' as tempo from pbx_campanha_contato_fone where conf_status_lista = '1' and upper(conf_status) = upper('discando') and round(extract(epoch from age(now(),conf_data))) <= '30' and cmp_id = (select cmp_id from pbx_campanha where cmp_descricao = '$cmpId')"; $query = "SELECT conf_fone, conf_status, round(extract(epoch from age(now(),conf_data))) * interval '1 second' as tempo from pbx_campanha_contato_fone where conf_status_lista = '1' and upper(conf_status) = upper('discando') and round(extract(epoch from age(now(),conf_data))) <= '30' and cmp_id = (select cmp_id from pbx_campanha where cmp_descricao = '$cmpId')";
$result = pg_query($conn, $query); $result = pg_query($conn, $query);
@ -1029,7 +1012,8 @@ function GetCurrentCall($conn, $cmpId) {
return $table; return $table;
} }
function PausaAgente($dbcon, $ramal, $dac, $matricula) { function PausaAgente($dbcon, $ramal, $dac, $matricula)
{
$idDac = GetDacCod($dbcon, $dac); $idDac = GetDacCod($dbcon, $dac);
$idSessao = "SSpausa_" . $matricula; $idSessao = "SSpausa_" . $matricula;
$pausa = GetPausa($dbcon, $matricula); // $_SESSION[$idSessao]; $pausa = GetPausa($dbcon, $matricula); // $_SESSION[$idSessao];
@ -1043,19 +1027,19 @@ function PausaAgente($dbcon, $ramal, $dac, $matricula) {
pg_query($dbcon, "begin"); pg_query($dbcon, "begin");
//Descricao do Motivo de pausa //Descricao do Motivo de pausa
$query = "select motivo from pbx_motivos_pausas where id = '$codMotivo'"; $query = "SELECT motivo FROM pbx_motivos_pausas WHERE id = '$codMotivo'";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
if ($result) { if ($result) {
$rowMotivo = @pg_fetch_row($result); $rowMotivo = @pg_fetch_row($result);
$descMotivo = $rowMotivo[0]; $descMotivo = $rowMotivo[0];
//atualiza dados do supervisor //atualiza dados do supervisor
$query = "update pbx_supervisor_agentes $query = "UPDATE pbx_supervisor_agentes
set status = 'PAUSA', SET status = 'PAUSA',
duracao = now(), duracao = now(),
motivo_pausa = '$descMotivo', motivo_pausa = '$descMotivo',
origem_destino = '' origem_destino = ''
where matricula = '$matricula'"; WHERE matricula = '$matricula'";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
} }
@ -1102,30 +1086,29 @@ function PausaAgente($dbcon, $ramal, $dac, $matricula) {
$result = pg_query($dbcon, "begin"); $result = pg_query($dbcon, "begin");
//atualiza dados do supervisor //atualiza dados do supervisor
$query = "select origem_destino from pbx_supervisor_agentes where matricula = '$matricula' "; $query = "SELECT origem_destino FROM pbx_supervisor_agentes WHERE matricula = '$matricula' ";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
$row = pg_fetch_row($result); $row = pg_fetch_row($result);
$statusAtual = empty($row[0]) ? 'LIVRE' : 'OCUPADO'; $statusAtual = empty($row[0]) ? 'LIVRE' : 'OCUPADO';
$query = "update pbx_supervisor_agentes $query = "UPDATE pbx_supervisor_agentes
set status = '$statusAtual', SET status = '$statusAtual', duracao = now()
duracao = now() WHERE matricula = '$matricula'";
where matricula = '$matricula'";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
if ($result) if ($result) {
$result = pg_affected_rows($result); $result = pg_affected_rows($result);
}
//registra o login do usuario //registra o login do usuario
if ($result) { if ($result) {
$query = "update pbx_eventos_agentes $query = "UPDATE pbx_eventos_agentes
set saida_pausa = now(), SET saida_pausa = NOW(),
flag = 2, flag = 2,
reg_proc = coalesce(reg_proc, '') || $regProc reg_proc = coalesce(reg_proc, '') || $regProc
where matricula = '$matricula' WHERE matricula = '$matricula'
and id_dac = (select id from pbx_dacs where nome = '$dac') AND id_dac = (SELECT id FROM pbx_dacs WHERE nome = '$dac')
and entrada_pausa = (select max(entrada_pausa) from pbx_eventos_agentes where matricula = '$matricula' and id_dac = (select id from pbx_dacs where nome = '$dac'))"; AND entrada_pausa = (SELECT max(entrada_pausa) FROM pbx_eventos_agentes WHERE matricula = '$matricula' AND id_dac = (SELECT id FROM pbx_dacs WHERE nome = '$dac'))";
$result = pg_query($dbcon, $query); $result = pg_query($dbcon, $query);
if ($result) if ($result)
@ -1140,13 +1123,14 @@ function PausaAgente($dbcon, $ramal, $dac, $matricula) {
return "OK;O agente \"Matricula: $matricula \" foi retirado de pausa!"; return "OK;O agente \"Matricula: $matricula \" foi retirado de pausa!";
} else { } else {
pg_query($db, "rollback"); pg_query($dbcon, "rollback");
return "ERRO;A operação não pode ser realizada! Erro: " + pg_last_error($dbcon); return "ERRO;A operação não pode ser realizada! Erro: " + pg_last_error($dbcon);
} }
} }
} }
function request($url, $post = []) { function request($url, $post = [])
{
$ch = curl_init(); $ch = curl_init();
$isPost = $post ? 1 : 0; $isPost = $post ? 1 : 0;
@ -1162,5 +1146,3 @@ function request($url, $post = []) {
curl_close($ch); curl_close($ch);
return $head; return $head;
} }
?>

57
templates/cadastros/organizacao/atribuirOrganizacao.tpl

@ -0,0 +1,57 @@
{capture name="display"}
<input name="id" value="{$id}" type="hidden">
<input name="gp_nome" value="{$gp_nome}" type="hidden">
<table class="filtro" border="0" cellpadding="2" cellspacing="0" width="100%">
<tbody>
<tr>
<td>
<table class="grid" border="0" cellpadding="2" cellspacing="0" width="100%">
<tbody>
<tr>
<th style="font-size: x-large;" align="center">Atribuir usuário a empresa</th>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="grid" border="0" cellpadding="2" cellspacing="0" width="100%">
<tbody>
<tr style="border: 0pt none ;" align="center">
<th width="45%">Usuários Disponíveis</th>
<td width="8%" rowspan="2" align="center" valign="middle">
<input name="btInclui" value="&gt;" type="submit">
<br>
<br>
<input name="btRemove" value="&lt;" type="submit">
</td>
<th>Usuários Pertencentes</th>
</tr>
<tr>
<td align="center">{$listagrupos}</td>
<td align="center">{$gruposinc}</td>
</tr>
<tr>
<td><input name="btClose" id="btClose" value="Fechar" onclick="window.close();" type="submit"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
{if $erro}
<table>
<tbody>
<tr>
<td>{$erro}</td>
</tr>
</tbody>
</table>
{/if}
{/capture}

45
templates/cadastros/organizacao/cadOrganizacao.tpl

@ -0,0 +1,45 @@
{capture name="display"}
<table align="center" width="100%" border="0" cellspacing="0" cellpadding="2" class="formCad">
<tr align="center" valign="middle" >
<td height="50" colspan="2" class="formHed">
<img src="imgSite/Blue tag.png" width="32" height="32" align="absmiddle">
<span class="formHed">Cadastro de Organização</span>
</td>
</tr>
<tr>
<th width="120" align="left">Nome da Empresa</th>
<td><input name="nome" type="text" id="nome" value="{$nome}" size="60" maxlength="60" ></td>
</tr>
<tr>
<th align="left">Empresa Master</th>
<td>
<input name="master" type="checkbox" id="status" value= "1" {$master}>
</td>
</tr>
<tr>
<th align="left">Status</th>
<td>
<input name="status" type="checkbox" id="status" value="1" {$status}>
</td>
</tr>
<tr>
<td>
<input name="id" type="hidden" id="id" value="{$id}">
</td>
<td>
<input name="btGravar" type="submit" id="btGravar" value="Salvar">
<input name="btClose" type="submit" id="btClose" value="Fechar" onClick="window.close();">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td height="20">&nbsp;</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="6">
<tr>
<th align="center" valign="top">
</th>
</tr>
</table>
{/capture}

70
templates/cadastros/organizacao/organizacao.tpl

@ -0,0 +1,70 @@
{capture name="display"}
<input name="pesquisa" type="hidden" value="1" />
<input name="pgn" type="hidden" value="{$pgn}" />
<input name="bloco" type="hidden" value="{$bloco}" />
<input name="pg" type="hidden" value="{$pg}" />
<table width="99%" align="center" border="0" cellspacing="0" cellpadding="2" >
<tr>
<td>
<table class="filtro" border="0" cellpadding="2" cellspacing="0">
<tr>
<td>Palavra Chave</td>
<td>Filtro Status</td>
</tr>
<tr>
<td>
<input name="paramPesquisa" type="text" id="paramPesquisa" size="20" value="{$paramPesquisa}"/>
</td>
<td align="left" nowrap="nowrap">
<div class="geral" nowrap="nowrap">
<input name="status" class="clean" type="radio" value="1" {if $status == 1 } checked {/if} autocomplete="off"/> Ativada
<input name="status" class="clean" type="radio" value="0" {if $status == 0 } checked {/if} autocomplete="off"/> Desativada
</div>
</td>
<td>
<input name="btConsulta" type="submit" id="btConsulta" value="Consultar">
</td>
<td align="right" nowrap="nowrap" width="90%">
{$imgLcFixo}
</td>
<td align="right" nowrap="nowrap" width="90%">
{$imgNovo}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2">
<tr>
<th width="50" align="center">Id</th>
<th align="left" nowrap width='70%'>Nome</th>
<th align="center">Master </th>
<th align="center">Status</th>
<th align="center" colspan='3'>Opera&ccedil;&otilde;es</th>
</tr>
{$linhas}
<tr>
<th align="center" colspan="10">
<table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2">
<tr>
<th align="center" style="width: 90%; border:0;">{$links}</th>
<th align="right" style="width: 10%; border:0;">{$pagMostra}/{$totalReg}</th>
</tr>
</table>
</th>
</tr>
</table>
</td>
</tr>
</table>
{if $erro}
<table>
<tr>
<td>{$erro}</td>
</tr>
</table>
{/if}
{/capture}

6
templates/master.tpl

@ -2,7 +2,7 @@
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>
<head> <head>
<title>{$smarty.const.TITLE_SITE} {$versaoApl}</title> <title>{$displaySel} - {$smarty.const.TITLE_SITE}</title>
{if $smarty.const.FAVICON_SITE}<link rel="shortcut icon" href="{$smarty.const.FAVICON_SITE}">{/if} {if $smarty.const.FAVICON_SITE}<link rel="shortcut icon" href="{$smarty.const.FAVICON_SITE}">{/if}
{$styleFile} {$styleFile}
{if $scriptGlobal}{$scriptGlobal}{/if} {if $scriptGlobal}{$scriptGlobal}{/if}
@ -35,7 +35,9 @@
<td {$setLogo}>{$logoPrinc}</td> <td {$setLogo}>{$logoPrinc}</td>
</tr> </tr>
<tr> <tr>
<td>{$menuGeral}</td> <td>
{$menuGeral}
</td>
</tr> </tr>
</table> </table>
</td> </td>

Loading…
Cancel
Save