Browse Source

cadastro de organizacao e ajustes nos arquivos asterisk

spr_change_address_bd
Lucas Awade 10 months ago
parent
commit
4f97fcf11b
  1. 79
      admin/cadQgrupos.php
  2. 34
      admin/cadRamais.php
  3. 2
      admin/cadUraOpcoes.php
  4. 320
      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. 82
      asterisk/var_lib_asterisk/agi-bin/agente_fila.php
  11. 222
      asterisk/var_lib_asterisk/agi-bin/pbx_complemento.php
  12. 59
      asterisk/var_lib_asterisk/agi-bin/ramal_empresa.php
  13. 120
      asterisk/var_lib_asterisk/agi-bin/tarifaFinaliza.php
  14. 56
      asterisk/var_lib_asterisk/agi-bin/verifica_rota.php
  15. 31
      asterisk/var_lib_asterisk/scripts/callcenter/atualizar-dacs.php
  16. 199
      asterisk/var_lib_asterisk/scripts/manutencaoDB/importaBilhetes.php
  17. 46
      asterisk/var_lib_asterisk/scripts/manutencaoDB/importaEmpresa.php
  18. 361
      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. 61
      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. 182
      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. 1612
      scriptApl/functions15.js
  35. 4
      scriptApl/menu.css
  36. 372
      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

79
admin/cadQgrupos.php

@ -14,7 +14,6 @@
<script type="text/javascript">
$(document).ready(function() {
$("#form1").validationEngine({
sucess: function() {
document.form1.submit();
},
@ -22,7 +21,6 @@
});
});
function selecionados() {
//var j = form1.disponiveis.length;
var objDisp = document.getElementById("disponiveis")
@ -60,7 +58,6 @@
}
}
}
}
function _remove() {
@ -70,7 +67,6 @@
var x = document.getElementById("disponiveis"); //retorna o objeto select
var options = x.getElementsByTagName("option"); //pega a lista de options do select
var y = document.createElement('option'); //cria um novo elemento option
var sel = objRamais.options[i].text;
var pos = sel.indexOf(':');
var sel = sel.substr(0, pos);
@ -100,7 +96,6 @@
}
}
}
}
function marca_todos() {
@ -108,7 +103,6 @@
for (var i = 0; i < objRamais.length; i++) {
objRamais.options[i].selected = true;
}
}
</script>
<script type="text/javascript">
@ -135,7 +129,6 @@
alert('Selecione uma opção de Timeout!');
return false;
}
}
</script>
@ -155,8 +148,8 @@
$dateClass = '';
$org_id = GetOrganizacao();
/*
* Parametros necessarios para manter a paginação.
*/
* Parametros necessarios para manter a paginação.
*/
$param = sprintf('&numRamal=%s&pgn=%s&bloco=%s&pg=%s&status=%s', $_REQUEST['numRamal'], $_REQUEST['pgn'], isset($_REQUEST['bloco']) ? $_REQUEST['bloco'] : '', isset($_REQUEST['pg']) ? $_REQUEST['pg'] : '', isset($_REQUEST["status"]) ? $_REQUEST["status"] : '');
if ($acao2 == "salva") {
@ -165,7 +158,7 @@
$pesquisaLiberacao = $_POST["pesquisa_liberacao"];
$ativaFila = isset($_POST['ativaFila']) ? 'A' : 'I';
$disponivelfila = $_POST['disponivelfila'];
$nome = LimpaString($_POST["nome"], true);
$nome = GravaNomeOrganizacao(LimpaString($_POST["nome"], true));
$musicclass = trim($_POST["musicclass"]);
$strategy = trim($_POST["strategy"]);
$servicelevel = empty($_POST["servicelevel"]) || !is_numeric(trim($_POST["servicelevel"])) ? '0' : trim($_POST["servicelevel"]);
@ -174,7 +167,6 @@
$maxlen = trim($_POST["maxlen"]);
$joinempty = trim($_POST["joinempty"]);
$eventwhencalled = 'no'; //trim($_POST["eventwhencalled"]);
$eventmemberstatus = 'no'; //trim($_POST["eventmemberstatus"]);
$ringinuse = 'no'; // trim($_POST["ringinuse"]);
$periodic_announce_frequency = trim($_POST["periodic_announce_frequency"]);
@ -209,9 +201,9 @@
if ($acao == "inseri") {
if (strtoupper($nome) != 'TODOS') { // VERIFICA NOME DA FILA <> TODOS
$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_ramais where nome = '$numero') as numero_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_ramais WHERE nome = '$numero') as numero_exist";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
@ -232,7 +224,7 @@
$retornar_abandonadas,'$ativaFila' $dateClass,'$modoAtendimento',$pesquisaLiberacao, '$disponivelfila', $org_id)";
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);
while ($dados2 = pg_fetch_array($result2)) {
@ -242,7 +234,7 @@
$idGrupoUser = GetIdGrupoUser($dbcon, GetIdUser());
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);
}
} else {
@ -256,7 +248,7 @@
}
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";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
@ -273,7 +265,7 @@
WHERE id=$id";
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);
} else {
$filaExiste = 1;
@ -282,7 +274,6 @@
}
}
$ramais = $_POST["ramais"] ?? [];
$prio = 0; //prioridade do ramal
$ramalSel = '';
@ -293,7 +284,7 @@
$paramRamal = explode('/', $ramalSel);
$num = ($paramRamal[0] == "KHOMP") ? $paramRamal[2] : $paramRamal[1];
$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);
$qtde = pg_fetch_row($result);
if ($qtde[0] >= 1) {
@ -301,9 +292,9 @@
$a++;
} else {
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 {
$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);
}
@ -315,8 +306,6 @@
}
//gera arquivos e executa o reload dos dados no asterisk
gera_arquivos($dbcon, 'QUEUES_GRUPOS');
?>
<?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;">
<tr bordercolor="#EAEAEA" class="cabecalho" background="img/button03.gif">
<td height="18" colspan="4" class="cabecalho">
@ -419,7 +408,7 @@
<td>
<fieldset>
<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>
</td>
<td>
@ -820,11 +809,7 @@
<div align="left">
<fieldset>
<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
if ($acao == 'edita') {
echo $timeout2;
}
?>" size="20" />
<input name="timeout2" type="text" class="validate[optional,custom[onlyNumber],length[0,10]] caixas" id="timeout22" value="<?= ($acao == 'edita') ? $timeout2 : ""; ?>" size="20" />
</fieldset>
</div>
</td>
@ -832,8 +817,7 @@
<div align="left">
<fieldset>
<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
include_once("admin/opcoes.php");
echo _GetOpcoes($dbcon, $opcao);
@ -865,7 +849,6 @@
$sel = "";
}
}
echo "<option value=\"$idDac\" $sel>$nomeDac</option>";
}
?>
@ -884,7 +867,6 @@
}
?>" size="15" maxlength="3" />
</fieldset>
</td>
</tr>
</table>
@ -974,11 +956,7 @@
<td width="15%">
<fieldset>
<legend class="labels">Status Fila</legend>
<input name="ativaFila" type="checkbox" value="A" <?php
if ($ativaFila == "A") {
echo "checked=\"checked\"";
}
?> /> Ativar
<input name="ativaFila" type="checkbox" value="A" <?= ($ativaFila == "A") ? "checked=\"checked\"" : ""; ?> /> Ativar
</fieldset>
</td>
</tr>
@ -1031,7 +1009,8 @@
<td width="10%" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<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="1">1</option>
<option value="2">2</option>
@ -1042,13 +1021,13 @@
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select></td>
</select>
</td>
</tr>
<tr>
<td>
<div align="center"> <br />
<input name="marca1" type="button" class="labels" value="&gt;" onclick="selecionados();
marca_todos();" />
<input name="marca1" type="button" class="labels" value="&gt;" onclick="selecionados(); marca_todos();" />
<br />
<input name="marca2" type="button" class="labels" value="&lt;" onclick="_remove();" />
<br />
@ -1088,10 +1067,15 @@
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<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="Submit" type="submit" class="labels" value="Salvar" onclick="marca_todos();" />
</span></div>
</span>
</div>
</td>
</tr>
</table>
@ -1105,7 +1089,6 @@
<script type="text/javascript">
$(document).ready(function() {
window.resizeTo($('#form1').width() + 100, $('#form1').height());
$('#btfechar').click(function() {
var $ = window.parent.$;
var jQuery = window.parent.jQuery;
@ -1117,7 +1100,6 @@
});
HablitaMusica();
</script>
</body>
</html>
@ -1146,6 +1128,7 @@ function GetDataClassifica($classifica, $mod = null)
function GetOptModoAtendimento($modo)
{
$opt = null;
$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 == 'manual' ? "<option value='manual' selected>MANUAL</option>" : "<option value='manual'>MANUAL</option>";

34
admin/cadRamais.php

@ -146,8 +146,8 @@ if ($_GET['ajax'] == 1) {
$acao = $_GET["acao"];
$acao2 = $_GET["acao2"];
/*
* Parametros necessarios para manter a paginação.
*/
* Parametros necessarios para manter a paginação.
*/
$param = sprintf('&numRamal=%s&pgn=%s&bloco=%s&pg=%s', $_REQUEST['numRamal'], $_REQUEST['pgn'], $_REQUEST['bloco'], $_REQUEST['pg']);
if ($acao2 == "salva") {
@ -155,7 +155,7 @@ if ($_GET['ajax'] == 1) {
$senha_facilidade = $_POST['senha_facilidade'];
$rotas = $_POST['tipoRota'];
$id = $_POST["id"];
$nome = trim($_POST["nome"]);
$nome = GravaNumeroOrganizacao(trim($_POST["nome"]));
$type = trim($_POST["type"]);
$qualify = trim($_POST["qualify"]);
$port = trim($_POST["port"]);
@ -188,7 +188,10 @@ if ($_GET['ajax'] == 1) {
$musica = $_POST["musica"];
$pertube = $_POST["pertube"];
$cadeado = $_POST["cadeado"];
$dispositivo = trim($_POST["dispositivo"]);
$disp = explode('/', trim($_POST["dispositivo"]));
$dispositivo = $disp[0] . '/' . $nome;
$gravacao_saida = trim($_POST["gravacao_saida"]);
$timeout = trim($_POST["timeout"]);
$musicclass = trim($_POST["musicclass"]);
@ -229,7 +232,6 @@ if ($_GET['ajax'] == 1) {
$mes .= 'NOME' . '\n\t';
}
if ($passa == false) {
echo '<script>alert("' . $mes . '");</script>';
echo "<script>javascript:history.back();</script>";
@ -275,7 +277,13 @@ if ($_GET['ajax'] == 1) {
if ($total >= 1) {
$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) {
$z++;
@ -289,7 +297,7 @@ if ($_GET['ajax'] == 1) {
}
if ($qtde == 1) {
$nome2 = $_POST['nome'];
$nome2 = GravaNumeroOrganizacao($_POST['nome']);
}
if ((($_POST["gera_voice"] != '') or (($v_nome <> '') or ($v_email <> ''))) and ($qtde > 1)) {
@ -343,7 +351,7 @@ if ($_GET['ajax'] == 1) {
$z++;
$msg .= 'Erro ao incluir ramal ' . $nome2 . '!' . '\n';
} 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);
$id_ult = pg_fetch_row($result);
$novo = array(
@ -461,8 +469,8 @@ if ($_GET['ajax'] == 1) {
if (($v_nome != '') || ($v_email != '')) {
// Verifica se o ramal teve o numero alterado
if ($oldNome != $nome) {
$query = "update pbx_voicemail_usuarios set numero_ramal = '$nome'
where numero_ramal = '$oldNome'"; //executa insersao na base interna do asterisk
$query = "UPDATE pbx_voicemail_usuarios SET numero_ramal = '$nome'
WHERE numero_ramal = '$oldNome'"; //executa insersao na base interna do asterisk
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);
}
@ -471,8 +479,8 @@ if ($_GET['ajax'] == 1) {
$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'
where numero_ramal = '$nome'"; //executa insersao na base interna do asterisk
$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
CommandAsterisk2($dbcon, 'VOICE2', $nome, $v_numero);
pg_query($dbcon, $query);
$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
(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
$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;
}
if (!is_integer($numero)) {
if (!($numero)) {
?>
<script type="text/javascript">
$(document).ready(function() {

320
admin/funcoes.php

@ -2,17 +2,20 @@
//função para para execução de comandos no servidor
//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);
}
//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);
}
//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'";
$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
function Ajusta_troncos($nome, $conexao) {
function Ajusta_troncos($nome, $conexao)
{
$query1 = "delete from pbx_rotas_entrada_troncos where id_tronco='$nome'";
$query2 = "delete from pbx_grupos_atendimento_ramais where ramal='$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 $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';
$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('opcao1', 'acao1', 'CALLBACK', 'Y', '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);
$acao["SIP"] = array("action" => "command", "command" => "module reload chan_sip.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
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, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros";
$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
*/
function _CommandAsterisk($conexao, $tipo) {
function _CommandAsterisk($conexao, $tipo)
{
$query = "SELECT * FROM pbx_conf_padrao";
$result = pg_query($conexao, $query);
@ -229,7 +238,7 @@ function _CommandAsterisk($conexao, $tipo) {
while ($dados = pg_fetch_array($result)) {
$get = @file_get_contents($url_asterisk . eregi_replace('&actionid=100', '', $dados['endereco']) . '&actionid=' . rand(0, 99999999999999));
// echo $url_asterisk.eregi_replace('&actionid=100','',$dados['endereco']).'&actionid='.rand(0,99999999999999);
// echo $url_asterisk.eregi_replace('&actionid=100','',$dados['endereco']).'&actionid='.rand(0,99999999999999);
if ($get)
return !stripos($get, "Error");
@ -238,7 +247,8 @@ function _CommandAsterisk($conexao, $tipo) {
}
//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();
$chave = trim($chave);
@ -259,7 +269,8 @@ function CommandAsterisk2($conexao, $tipo, $chave, $valor) {
* Substituido pela função acima
*/
function _CommandAsterisk2($conexao, $tipo, $chave, $valor) {
function _CommandAsterisk2($conexao, $tipo, $chave, $valor)
{
$query = "SELECT * FROM pbx_conf_padrao";
$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
function upload($arquivo, $caminho) {
function upload($arquivo, $caminho)
{
if (!(empty($arquivo))) {
$arquivo1 = $arquivo;
$arquivo_minusculo = strtolower($arquivo1['name']);
@ -303,7 +315,8 @@ function upload($arquivo, $caminho) {
}
//REALIZA BACKUP BO BANCO
function backup($conexao, $tabela, $tipo, $registro, $comando, $reload) {
function backup($conexao, $tabela, $tipo, $registro, $comando, $reload)
{
return true;
$ins = '';
$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
//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"
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";
$result = pg_query($dbcon, $query);
@ -410,7 +425,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$url_asterisk = $dados['url_asterisk'];
}
//GERAÇÃO DO ARQUIVO DE URA
//GERAÇÃO DO ARQUIVO DE URA
if ($tipo == 'URA') {
$arq = $caminho_producao . "extensions_ura.conf";
$escreve = fopen($arq, 'w+');
@ -571,7 +586,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
while ($dados = pg_fetch_array($result)) {
$x++;
for ($i = 0; pg_num_fields($result) > $i; $i++) {
if ((pg_field_name($result, $i) != "musiconhold")and ( pg_field_name($result, $i) != "goodbye")) {
if ((pg_field_name($result, $i) != "musiconhold") and (pg_field_name($result, $i) != "goodbye")) {
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n");
} else {
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n");
@ -673,7 +688,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
if ($reloadUra)
CommandAsterisk($dbcon, 'URA');
}
//GERA O ARQUIVO DAS MUSICAS DE ESPERA
//GERA O ARQUIVO DAS MUSICAS DE ESPERA
if ($tipo == 'MUSICHOLD_GRUPOS') {
$arq = $caminho_producao . "musiconhold.conf";
$escreve = fopen($arq, 'w');
@ -777,20 +792,22 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$result = pg_query($dbcon, $query);
$dados2 = array();
$x = 0;
while ($dados = pg_fetch_array($result)) {
$dados2[] = $dados;
$numero = $org_id . $dados['numero'];
$x++;
fwrite($escreve, 'exten => _' . $dados['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 => _' . $dados['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 => _' . $dados['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 => _' . $dados['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 => _'.$dados['numero'].',n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)'. "\n");
fwrite($escreve, 'exten => _' . $dados['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 . ',1,' . (($dados['m_espera'] == 'N') ? 'Ringing()' : 'Answer()') . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\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 => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-fila,' . trim($dados['nome']) . ')' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(indisponibilidade.php,' . trim($dados['nome']) . ')' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(prioridade_fila.php,${CALLERID(NUM):-13},' . trim($dados['nome']) . ')' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Set(UNICO=${RAND(0000000000,9999999999)})' . "\n");
//fwrite($escreve,'exten => _' . $numero .',n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)'. "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Set(MONITOR_FILENAME=${EXTEN}-${UNICO}-${UNIQUEID})' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Set(__DAC=' . trim($dados['nome']) . ')' . "\n");
$monitorFormat = strtoupper($dados['monitor-format']);
if (!empty($monitorFormat)) {
@ -801,30 +818,30 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
else if ($monitorFormat == 'WAV49')
$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') {
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 {
//Asterisk 1.4
//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, 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'])) {
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao'], '', $dados['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}'));
$dispAcao = sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?%s)%s', $dados['numero'], $dispAcao, "\n");
$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", $numero, trim($dados['nome']), $numero, $dados['opcao'], $dados['acao'], '${UNIQUEID}'));
$dispAcao = sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?%s)%s', $numero, $dispAcao, "\n");
fwrite($escreve, $dispAcao);
}
if($dados['id_pesquisa_liberacao']){
fwrite($escreve,"exten => _{$dados['numero']},n,Macro(hangup,PESQUISA) \n");
fwrite($escreve,"exten => _{$dados['numero']},n,Goto(psq-{$dados['id_pesquisa_liberacao']}-ini,s,1) \n");
if ($dados['id_pesquisa_liberacao']) {
fwrite($escreve, "exten => _{$numero},n,Macro(hangup,PESQUISA) \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);
@ -835,17 +852,17 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
fwrite($escreve, '[ext-fila-login]' . "\n");
foreach ($dados2 as $dados) {
fwrite($escreve, 'exten => **' . $dados['numero'] . ',1,AddQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Goto(${AQMSTATUS})' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n(ADDED),Playback(agent-loginok)' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n(MEMBERALREADY),Playback(agent-alreadyon)' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n(NOSUCHQUEUE),Playback(agent-incorrect)' . "\n");
fwrite($escreve, 'exten => **' . $dados['numero'] . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => *0' . $dados['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' . $dados['numero'] . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',1,AddQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',n,Goto(${AQMSTATUS})' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',n(ADDED),Playback(agent-loginok)' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',n(MEMBERALREADY),Playback(agent-alreadyon)' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',n(NOSUCHQUEUE),Playback(agent-incorrect)' . "\n");
fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n");
fwrite($escreve, 'exten => *0' . $numero . ',1,RemoveQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n");
fwrite($escreve, 'exten => *0' . $numero . ',n,Playback(agent-loggedoff)' . "\n");
fwrite($escreve, 'exten => *0' . $numero . ',n,Hangup()' . "\n");
}
fclose($escreve);
@ -857,7 +874,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
if ($reloadUra)
CommandAsterisk($dbcon, 'URA');
}
//GERA O ARQUIVO DE RAMAIS SIP
//GERA O ARQUIVO DE RAMAIS SIP
if ($tipo == 'SIP_RAMAIS') {
$arq = $caminho_producao . "sip_ramais.conf";
$escreve = fopen($arq, 'w');
@ -867,12 +884,12 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_array($result)) {
//
//
// Se o ramal for marcado como PBX não escreve a linha no sip_ramais.conf
//
$ispbxTroncos = trim($dados['ispbx_tronco']);
if($ispbxTroncos){
if ($ispbxTroncos) {
continue;
}
for ($i = 0; pg_num_fields($result) > $i; $i++) {
@ -1041,8 +1058,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
if (pg_field_name($result, $i) == "ports") {
if (trim($dados[pg_field_name($result, $i)]) != "")
fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n");
}
else {
} else {
if (trim($dados[pg_field_name($result, $i)]) != "")
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n");
}
@ -1133,15 +1149,15 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$arq = $caminho_producao . "features_general.conf";
$escreve = fopen($arq, 'w');
//Asterisk 1.4
// $query = "SELECT * FROM pbx_features_general";
//Asterisk 1.4
// $query = "SELECT * FROM pbx_features_general";
$query = "SELECT courtesytone, transferdigittimeout, xfersound, xferfailsound, pickupexten, featuredigittimeout, atxfernoanswertimeout FROM pbx_features_general";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_array($result)) {
$x++;
for ($i = 0; pg_num_fields($result) > $i; $i++) {
if (trim($dados[pg_field_name($result, $i)]) != '') {
if ((pg_field_name($result, $i) == 'parkext')or ( pg_field_name($result, $i) == 'parkpos')or ( pg_field_name($result, $i) == 'parkingtime')or ( pg_field_name($result, $i) == 'transferdigittimeout')or ( pg_field_name($result, $i) == 'findslot')) {
if ((pg_field_name($result, $i) == 'parkext') or (pg_field_name($result, $i) == 'parkpos') or (pg_field_name($result, $i) == 'parkingtime') or (pg_field_name($result, $i) == 'transferdigittimeout') or (pg_field_name($result, $i) == 'findslot')) {
fwrite($escreve, pg_field_name($result, $i) . '=>' . $dados[pg_field_name($result, $i)] . "\n");
} else {
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,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);
if ($quantreg > 0) {
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";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_array($result)) {
fwrite($escreve, 'exten => _' . $dados['teste'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n");
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 => _' . $dados['teste'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n");
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,Goto(ura-' . $dados['id'] . ',s,1)' . "\n");
fwrite($escreve, 'exten => _' . $dados['teste'] . ',n,Hangup()' . "\n");
$numero = $org_id . $dados['teste'];
fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\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 => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\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";
$result2 = pg_query($dbcon, $query2);
while ($dados2 = pg_fetch_array($result2)) {
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n");
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 => _' . $dados2['discar'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n");
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,Goto(ext-horarios,' . $dados2['id'] . ',1)' . "\n");
fwrite($escreve, 'exten => _' . $dados2['discar'] . ',n,Hangup()' . "\n");
$numero = $org_id . $dados2['discar'];
fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\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 => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\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);
while ($dados2 = pg_fetch_array($result2)) {
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n");
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 => _' . $dados2['teste'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n");
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,Goto(ext-anuncios,a' . $dados2['id'] . ',1)' . "\n");
fwrite($escreve, 'exten => _' . $dados2['teste'] . ',n,Hangup()' . "\n");
$numero = $org_id . $dados2['teste'];
fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\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 => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Goto(ext-anuncios,a' . $dados2['id'] . ',1)' . "\n");
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n");
}
@ -1420,7 +1439,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$horaFim = $dados1['horario_fim'];
$diaSemana = $dados1['todos_dias_semana'] ? '*' : $dados1['semana'] . ($dados1['semana'] == $dados1['semana_fim'] ? "" : '-' . $dados1['semana_fim']);
$diaMes = $dados1['todos_dias_mes'] ? '*' : $dados1['dias_mes'] . ($dados1['dias_mes'] == $dados1['dias_mes_fim'] ? "" : '-' . $dados1['dias_mes_fim']);
$mes = $dados1['todos_mes'] ? '*' : $dados1['mes'] . ( $dados1['mes'] == $dados1['mes_fim'] ? "" : '-' . $dados1['mes_fim']);
$mes = $dados1['todos_mes'] ? '*' : $dados1['mes'] . ($dados1['mes'] == $dados1['mes_fim'] ? "" : '-' . $dados1['mes_fim']);
$strIntegra = $integraAtiva ? "integracao)\n" : "";
$linha = sprintf('exten => %s,n,GotoIfTime(%s-%s,%s,%s,%s?%s', $idHorario, $horaIni, $horaFim, $diaSemana, $diaMes, $mes, $strIntegra);
@ -1894,7 +1913,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n");
fwrite($escreve, 'exten => ' . $comando . ',n,SayDigits(${DB(ULTIMO-RECEBIDO/${CALLERID(num)})})' . "\n");
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n");
/*
/*
$comando = $dados2['app_monitoramento'];
fwrite($escreve, '[app-monitoramento]' . "\n");
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n");
@ -2400,7 +2419,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$displayOpcao = GetAcao($opcao1);
$acao1 = '${EXTEN}';
} else {
$displayOpcao = GetAcao($opcao1) . "," . (( strtolower($opcao1) == "anuncios") ? "a" : "" );
$displayOpcao = GetAcao($opcao1) . "," . ((strtolower($opcao1) == "anuncios") ? "a" : "");
$acao1 = str_replace('/', ',', $acao1);
}
@ -2410,7 +2429,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
fwrite($escreve, "exten => _$id,n(destino),Goto($displayOpcao$acao1,1)" . "\n");
}
fwrite($escreve, sprintf("exten => _%s,n%s,Hangup()", $id, $opcao1 ? '' : '(destino)' ) . "\n");
fwrite($escreve, sprintf("exten => _%s,n%s,Hangup()", $id, $opcao1 ? '' : '(destino)') . "\n");
}
fclose($escreve);
@ -2481,8 +2500,8 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
//fwrite($escreve, sprintf('exten => _%s,1,GotoIf($["X${TRANSFER}" = "X"]?inicio)%s', $dados2['modelo'], "\n"));
fwrite($escreve, sprintf('exten => _%s,1,AGI(pbx_complemento.php,saida-pstn)%s', $dados2['modelo'], "\n"));
fwrite($escreve, sprintf('exten => _%s,n,AGI(lista_negra.php,${EXTEN},%s)%s', $dados2['modelo'], $dados['id'], "\n"));
fwrite($escreve, sprintf('exten => _%s,n,Set(_TIPO=EXTERNO)%s', $dados2['modelo'], "\n"));
fwrite($escreve, sprintf('exten => _%s,n,AGI(lista_negra.php,${EXTEN},%s)%s', $dados2['modelo'], $dados['id'], "\n"));
fwrite($escreve, sprintf('exten => _%s,n,Set(_TIPO=EXTERNO)%s', $dados2['modelo'], "\n"));
//fwrite($escreve, sprintf('exten => _%s,n,Set(CHANNEL(accountcode)=${TRANSFER})%s', $dados2['modelo'], "\n"));
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(inicio),Macro(gravacao,OUT,${CALLERID(NUM)})' . "\n");
@ -2519,7 +2538,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Set(RECORTA_TRONCO=' . $recortetronco . ')' . "\n");
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Set(ACRECENTA_TRONCO=' . $acrescentatronco . ')' . "\n");
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(dial-saida-pstn,' . $dados3['nome_canal'] . '/' . $acrescenta . '${EXTEN' . $recorte . '}' . ( (($dados3['tipo_tronco'] == 'KHOMP') && $dados3['callerid']) ? ('/orig=' . $dados3['callerid']) : '' ) . ',r,' . $dados3['id_tronco'] . ',' . $dados3['max_ligacoes'] . ',' . sprintf('tarifa,%s,%s,${UNIQUEID},${CALLERID(NUM)},%s${EXTEN%s},${TIPO_ACESSO},${CONTA},${SENHA},${RECORTA_TRONCO},${ACRECENTA_TRONCO}', $dados3['id_tronco'], $dados['id'], $acrescenta, $recorte) . ')' . "\n");
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(dial-saida-pstn,' . $dados3['nome_canal'] . '/' . $acrescenta . '${EXTEN' . $recorte . '}' . ((($dados3['tipo_tronco'] == 'KHOMP') && $dados3['callerid']) ? ('/orig=' . $dados3['callerid']) : '') . ',r,' . $dados3['id_tronco'] . ',' . $dados3['max_ligacoes'] . ',' . sprintf('tarifa,%s,%s,${UNIQUEID},${CALLERID(NUM)},%s${EXTEN%s},${TIPO_ACESSO},${CONTA},${SENHA},${RECORTA_TRONCO},${ACRECENTA_TRONCO}', $dados3['id_tronco'], $dados['id'], $acrescenta, $recorte) . ')' . "\n");
}
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,GotoIf($["${LIMITE}" = "OK"]?limite)' . "\n");
@ -2537,7 +2556,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$recorte = !trim($dados['recorte']) ? '' : (':' . trim($dados['recorte']));
$acrescenta = trim($dados['acrescenta']) !== '' ? '' : trim($dados['acrescenta']);
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(dial-saida-pstn,' . $dados3['nome_canal'] . '/' . $acrescenta . '${EXTEN' . $recorte . '}' . ( (($dados3['tipo_tronco'] == 'KHOMP') && $dados3['callerid']) ? ('/orig=' . $dados3['callerid']) : '' ) . ',r,' . $dados3['id_tronco'] . ',' . $dados3['max_ligacoes'] . ',' . sprintf('tarifa,%s,%s,${UNIQUEID},${CALLERID(NUM)},%s${EXTEN%s},${TIPO_ACESSO},${CONTA},${SENHA}', $dados3['id_tronco'], $dados['id'], $acrescenta, $recorte) . ')' . "\n");
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(dial-saida-pstn,' . $dados3['nome_canal'] . '/' . $acrescenta . '${EXTEN' . $recorte . '}' . ((($dados3['tipo_tronco'] == 'KHOMP') && $dados3['callerid']) ? ('/orig=' . $dados3['callerid']) : '') . ',r,' . $dados3['id_tronco'] . ',' . $dados3['max_ligacoes'] . ',' . sprintf('tarifa,%s,%s,${UNIQUEID},${CALLERID(NUM)},%s${EXTEN%s},${TIPO_ACESSO},${CONTA},${SENHA}', $dados3['id_tronco'], $dados['id'], $acrescenta, $recorte) . ')' . "\n");
}
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,GotoIf($["${LIMITE}" = "OK"]?limite)' . "\n");
@ -2733,7 +2752,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$maxLigacoes = $dadosTronco["max_ligacoes"];
$tipoTronco = $dadosTronco["tipo"] . "/" . $dadosTronco["username"];
$linha = sprintf('exten => _%s,n,Macro(dial-saida-pstn,%s/%s${EXTEN%s}%s,r,%s,%s)%s', $modelo, $tipoTronco, $acrescenta, $recorte, ( (($dadosTronco['tipo'] == 'KHOMP') && $dadosTronco['callerid']) ? ('/orig=' . $dadosTronco['callerid']) : ''), $idTronco, $maxLigacoes, "\n");
$linha = sprintf('exten => _%s,n,Macro(dial-saida-pstn,%s/%s${EXTEN%s}%s,r,%s,%s)%s', $modelo, $tipoTronco, $acrescenta, $recorte, ((($dadosTronco['tipo'] == 'KHOMP') && $dadosTronco['callerid']) ? ('/orig=' . $dadosTronco['callerid']) : ''), $idTronco, $maxLigacoes, "\n");
fwrite($escreve, $linha);
}
if ($existeTronco) {
@ -2778,7 +2797,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
$dispAcao = GetAcao($opcao) . ',${EXTEN},1';
$acao = '';
} else {
$dispAcao = GetAcao($opcao) . "," . (( strtolower($opcao) == "anuncios") ? "a" : "" );
$dispAcao = GetAcao($opcao) . "," . ((strtolower($opcao) == "anuncios") ? "a" : "");
$acao = str_replace('/', ',', $acao);
$acao .= ',1';
}
@ -2800,15 +2819,17 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) {
if ($reloadUra)
CommandAsterisk($dbcon, 'URA');
}
//fim gera arquivo
//fim gera arquivo
}
function grava_log() {
function grava_log()
{
$arq = $caminho_producao . "log_sistema.txt";
$escreve = fopen($arq, 'w');
}
function GetAcao($opcao) {
function GetAcao($opcao)
{
if (trim($opcao) == 'ura') {
return 'ura-';
} else if (trim($opcao) == 'grupo') {
@ -2835,7 +2856,8 @@ function GetAcao($opcao) {
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
// atualmente usado apenas na cofiguração dos horários.
@ -2871,7 +2893,8 @@ function GetOpcaoAcao($opcao, $acao, $tipo = '', $modelo = '') {
return $ret;
}
function GetAcaoOpcaoRotas($opcao, $acao){
function GetAcaoOpcaoRotas($opcao, $acao)
{
// A variável $tipo foi criadada para tratar retorno não padrao
// atualmente usado apenas na cofiguração dos horários.
@ -2884,7 +2907,7 @@ function GetAcaoOpcaoRotas($opcao, $acao){
if (strtolower($opcao) == 'ura') {
$var = explode('-', $acao);
$ret = sprintf('%s%s,s,1', $acaoText,$var[0]);
$ret = sprintf('%s%s,s,1', $acaoText, $var[0]);
} else if (strtolower($opcao) == 'voice') {
$voice = explode('/', $acao);
$ret = sprintf('%s,%s,%s', $acaoText, $voice[0], $voice[1]);
@ -2899,7 +2922,8 @@ function GetAcaoOpcaoRotas($opcao, $acao){
return $ret;
}
function GetMascara() {
function GetMascara()
{
return '<option value="">MODELOS</option>
<option value="[2-5]XXXXXXX">FIXO LOCAL</option>
<option value="9XXXXXXXX">MOVEL LOCAL</option>
@ -2920,7 +2944,8 @@ function GetMascara() {
<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 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
@ -2939,14 +2964,16 @@ function ApagaUrl($dbcon, $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";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
return $row[0];
}
function GeraExtRamais($dbcon) {
function GeraExtRamais($dbcon)
{
try {
$conf = GetConfPadrao($dbcon);
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 ($silent)
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);
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);
$caminho_producao = $conf["caminho_producao"];
@ -3058,7 +3088,7 @@ function GeraCallback($dbcon, $reloadUra = true, $silent = 0) {
$displayOpcao = GetAcao($opcao1) . $ac[0] . ',s';
$acao1 = "";
} else {
$displayOpcao = GetAcao($opcao1) . "," . (( strtolower($opcao1) == "anuncios") ? "a" : "" );
$displayOpcao = GetAcao($opcao1) . "," . ((strtolower($opcao1) == "anuncios") ? "a" : "");
$acao1 = str_replace('/', ',', $acao1);
}
@ -3075,7 +3105,8 @@ function GeraCallback($dbcon, $reloadUra = true, $silent = 0) {
CommandAsterisk($dbcon, 'URA');
}
function GeraDisa($dbcon, $reload = true, $silent = 0) {
function GeraDisa($dbcon, $reload = true, $silent = 0)
{
$conf = GetConfPadrao($dbcon);
$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);
$caminho_producao = $conf["caminho_producao"];
@ -3227,7 +3259,8 @@ function GeraSip($dbcon, $reload) {
}
}
function GeraIax($dbcon, $reload) {
function GeraIax($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"];
@ -3313,7 +3346,8 @@ function GeraIax($dbcon, $reload) {
}
}
function GeraDgv($dbcon, $reload) {
function GeraDgv($dbcon, $reload)
{
GeraExtRamais($dbcon);
if ($reload) {
@ -3322,7 +3356,8 @@ function GeraDgv($dbcon, $reload) {
}
}
function GeraPBX($dbcon, $reload) {
function GeraPBX($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"];
@ -3335,7 +3370,8 @@ function GeraPBX($dbcon, $reload) {
}
}
function GeraDahdi($dbcon, $reload) {
function GeraDahdi($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"];
/*
@ -3419,8 +3455,7 @@ function GeraDahdi($dbcon, $reload) {
fwrite($escChanDahdi, sprintf("%s\n", $value));
}
}
}
else {
} else {
if (array_key_exists($key, $dados)) {
$value = $dados[$key] ? $dados[$key] : GetDahdiDefaultValue($interface, $key, false);
}
@ -3450,11 +3485,12 @@ function GeraDahdi($dbcon, $reload) {
}
}
function GravaDispositivoDahdi($dbcon, $file) {
function GravaDispositivoDahdi($dbcon, $file)
{
$arqSystemDahdi = $file;
$pathFileDahdi = dirname($arqSystemDahdi);
if(!file_exists($pathFileDahdi)){
mkdir($pathFileDahdi,0777,true);
if (!file_exists($pathFileDahdi)) {
mkdir($pathFileDahdi, 0777, true);
}
$escSystemDahdi = fopen($arqSystemDahdi, 'w');
@ -3617,25 +3653,29 @@ function GravaDispositivoDahdi($dbcon, $file) {
fclose($escSystemDahdi);
}
function GetDahdiDefault($interface, $dispo = true) {
function GetDahdiDefault($interface, $dispo = true)
{
if ($dispo) {
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",
"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",
"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")
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")
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',
'rxgain' => '-1,0%', 'txgain' => '-1,0%',);
}
else {
'rxgain' => '-1,0%', 'txgain' => '-1,0%',
);
} else {
if ($interface == "r2")
@ -3648,12 +3688,14 @@ function GetDahdiDefault($interface, $dispo = true) {
return array();
}
function GetDahdiDefaultValue($interface, $field, $dispo = true) {
function GetDahdiDefaultValue($interface, $field, $dispo = true)
{
$ar = GetDahdiDefault($interface, $dispo);
return isset($ar[$field]) ? $ar[$field] : "";
}
function GetValueSystemDahdi($dados, $field) {
function GetValueSystemDahdi($dados, $field)
{
if (($field == 'r2') || ($field == 'isdn')) {
$crc4 = trim($dados["crc4"]);
$crc4 = $crc4 != 'no' ? ",$crc4" : "";
@ -3701,7 +3743,8 @@ function GetValueSystemDahdi($dados, $field) {
}
}
function GeraKhomp($dbcon, $reload) {
function GeraKhomp($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"];
/*
@ -3797,7 +3840,8 @@ function GeraKhomp($dbcon, $reload) {
}
}
function GeraVoicemail($dbcon, $reload) {
function GeraVoicemail($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"];
@ -3842,7 +3886,8 @@ function GeraVoicemail($dbcon, $reload) {
CommandAsterisk($dbcon, 'VOICE');
}
function GeraDigivoice($dbcon, $reload) {
function GeraDigivoice($dbcon, $reload)
{
$conf = GetConfPadrao($dbcon);
$caminho_producao = $conf["caminho_producao"];
@ -3900,8 +3945,7 @@ function GeraDigivoice($dbcon, $reload) {
if (pg_field_name($result, $i) == "ports") {
if (trim($dados[pg_field_name($result, $i)]) != "")
fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n");
}
else {
} else {
if (trim($dados[pg_field_name($result, $i)]) != "")
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";
$result = pg_query($dbcon, $query);
@ -3978,7 +4023,8 @@ function GetConfPadrao($dbcon) {
$url_asterisk = $dados['url_asterisk'];
}
function aupdArq($texto, $qtd) {
function aupdArq($texto, $qtd)
{
$a = 0;
foreach ($texto as $key => $value) {
if ($a < $qtd) {
@ -3989,7 +4035,8 @@ function aupdArq($texto, $qtd) {
return $param;
}
function GetSequencias($nomeTable) {
function GetSequencias($nomeTable)
{
$existeTable = 0;
$result = pg_query('begin');
@ -4016,7 +4063,8 @@ function GetSequencias($nomeTable) {
return $seq;
}
function VerDependenciaTronco($id) {
function VerDependenciaTronco($id)
{
try {
$query = "select count(*) from pbx_rotas_saida_canais where canal = (select nome from pbx_troncos_sip where id = '$id')";
$result = pg_query($query);
@ -4045,7 +4093,8 @@ function VerDependenciaTronco($id) {
}
}
function GetDependenciaTronco($id) {
function GetDependenciaTronco($id)
{
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'
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));
$result = pg_query($db, $query);
return pg_num_rows($result) ? true : false;
}
?>

4
admin/popula.php

@ -4,6 +4,7 @@ if (isset($_GET["tipo"])) {
session_start();
include('bd.php');
include('util/funcoesApl.php');
include('util/util.php');
}
define("PROTO_XML", "XML");
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";
$result2 = pg_query($dbcon, $query2);
while ($dados2 = pg_fetch_array($result2)) {
$fila = GravaNomeOrganizacao($dados2['nome']);
$dadosArq[$idxArq][0] = $dados2['numero'];
$dadosArq[$idxArq][1] = $dados2['nome'];
$dadosArq[$idxArq][1] = $fila;
$idxArq++;
}
} else if ($tipo == "horarios") {

75
admin/queues.php

@ -9,7 +9,7 @@ $org_id = GetOrganizacao();
$status = isset($_REQUEST["status"]) ? trim($_REQUEST["status"]) : 'A';
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);
if ($dados = pg_fetch_array($result)) {
@ -18,19 +18,19 @@ if ($acao == "deleta") {
}
//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);
$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);
$query = "delete from pbx_fila_audios where id = '$id' ";
$query = "DELETE FROM pbx_fila_audios WHERE id = '$id' ";
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);
$query = "delete from pbx_prioridades_atendimento where dac = '$nomeFila'";
$query = "DELETE FROM pbx_prioridades_atendimento WHERE dac = '$nomeFila'";
pg_query($dbcon, $query);
// //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);"
?>
</td>
<td align="left" nowrap="nowrap">
<div class="geral" nowrap="nowrap">
<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
</div>
</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>
</tr>
</table>
@ -74,7 +71,6 @@ if ($acao == "deleta") {
</td>
</tr>
<tr>
<td colspan="2">
<table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2">
@ -129,7 +125,11 @@ if ($acao == "deleta") {
?>
<tr>
<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="250"><?php echo $strategia[$dados['strategy']]; ?></td>
<td width="80"><?php echo $dados['timeout2']; ?></td>
@ -173,19 +173,15 @@ if ($acao == "deleta") {
</table>
</td>
</tr>
<?php
$z++;
}
if ($z == 0) {
?>
<?php $z++; ?>
<?php } ?>
<?php if ($z == 0) { ?>
<tr align="center" valign="middle" bordercolor="#999999" class="labels">
<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>
</td>
</tr>
<?php
}
?>
<?php } ?>
<tr>
<th align="center" colspan="8">
<table width="100%" class="grid" border="0" cellspacing="0" cellpadding="2">
@ -200,49 +196,10 @@ if ($acao == "deleta") {
</td>
</tr>
</table>
<div id="campos" style="display:none" align="center">
<iframe src="" frameborder="0" scrolling="no" name="geral" id="geral" align="middle"></iframe>
</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>
</html>

2
admin/uraOpcoes.php

@ -161,7 +161,7 @@ $nome_ura = $_GET['nome_ura'];
<tr>
<td>
<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>
</td>
<td>

11
ajaxPhp.php

@ -22,4 +22,13 @@ if (isset($_GET['GetUser'])) {
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()
[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,GotoIf($["${ARG3}" = "ura"]?discadireto)
exten => s,n,GotoIf($["${ISNULL(${ARG2})}" = "0"]?chamadadac)

82
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('funcoes/shared.php');
error_reporting(E_ALL);
ini_set('display_errors', 0);
ob_implicit_flush(true);
set_time_limit(6);
$in = fopen("php://stdin", "r");
@ -13,7 +16,8 @@ $stdlog = fopen("/var/log/asterisk/agente_fila.log", "w");
// toggle debugging output (more verbose)
$debug = true;
function read() {
function read()
{
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug)
@ -21,12 +25,14 @@ function read() {
return $input;
}
function errlog($line) {
function errlog($line)
{
global $err;
echo "VERBOSE \"$line\"\n";
}
function write($line) {
function write($line)
{
global $debug, $stdlog;
if ($debug)
fputs($stdlog, "write: $line\n");
@ -49,16 +55,18 @@ $AGENTE = explode("@", $MEMBERINTERFACE);
$DISPOSITIVO = $AGENTE[1];
$RAMALLOCAL = $AGENTE[0];
$RAMALAGENTE = explode("/", $RAMALLOCAL);
$RAMAL= $RAMALAGENTE[1];
$RAMAL = $RAMALAGENTE[1];
if ($DISPOSITIVO != 'app-callcenter/n') {
exit;
}
write("GET VARIABLE DAC");
$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
//write("GET VARIABLE CONSULTA");
//$consulta = substr(strrchr(read(), "("), 1, -1);
@ -132,14 +140,14 @@ if ($dados[0]) {
/*
* Função retorna numero de Protocolo de Atendimento para o agente
*/
$protocolo=GeraProtocolo($conexao, $UNIQUEID);
$protocolo = GeraProtocolo($conexao, $UNIQUEID);
/*
* Pesquisa se existe informaçoes retornadas pela integração ativa.
*/
$identificador = '';
$query = "select retorno_cliente from pbx_integracao_reg where (reg_uniqueid = '$UNIQUEID' or reg_uniqueid_old = '$UNIQUEID_CALLBACK')";
$result = pg_query($query);
$query = "SELECT retorno_cliente FROM pbx_integracao_reg WHERE (reg_uniqueid = '$UNIQUEID' OR reg_uniqueid_old = '$UNIQUEID_CALLBACK')";
$result = pg_query($conexao, $query);
if (pg_num_rows($result)) {
$dados = pg_fetch_array($result);
$identificador = $dados['retorno_cliente'];
@ -148,8 +156,10 @@ if (pg_num_rows($result)) {
/*
* 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'";
$result = pg_query($query);
$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'";
$result = pg_query($conexao, $query);
$dados = pg_fetch_array($result);
$automatico = $dados[0] != 'MANUAL';
$ramalAgente = $dados['ramal'];
@ -157,31 +167,38 @@ $filaId = $dados['fila_id'];
$displayFone = $FONE . '-' . $TRONCO;
$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'";
pg_query($query);
$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'";
pg_query($conexao, $query);
write("GET VARIABLE MATRICULA-ORIGEM");
$MATRICULAORIGEM = substr(strrchr(read(), "("), 1, -1);
if ($MATRICULAORIGEM) {
// write("GET VARIABLE EPOCH");
// $inicio=substr(strrchr(read(),"("),1,-1);
// write("SET VARIABLE INICIO_ATENDIMENTO $inicio");
// read();
// write("DATABASE PUT INICIO_ATENDIMENTO $IDORIGEM $inicio");
// read();
// write("GET VARIABLE FILA-ORIGEM");
// $FILAORIGEM = substr(strrchr(read(), "("), 1, -1);
write("EXEC Macro eventos-conecta-agente,$canalAgente,$UNIQUEID");
read();
// $query = "update pbx_supervisor_agentes set status = 'OCUPADO', canal = (select canal_agente from pbx_supervisor_agentes where matricula = '$MATRICULA') where matricula = '$MATRICULAORIGEM' and dac = '$FILAORIGEM'";
// pg_query($query);
// write("GET VARIABLE EPOCH");
// $inicio=substr(strrchr(read(),"("),1,-1);
// write("SET VARIABLE INICIO_ATENDIMENTO $inicio");
// read();
// write("DATABASE PUT INICIO_ATENDIMENTO $IDORIGEM $inicio");
// read();
// write("GET VARIABLE FILA-ORIGEM");
// $FILAORIGEM = substr(strrchr(read(), "("), 1, -1);
write("EXEC Macro eventos-conecta-agente,$canalAgente,$UNIQUEID");
read();
// $query = "update pbx_supervisor_agentes set status = 'OCUPADO', canal = (select canal_agente from pbx_supervisor_agentes where matricula = '$MATRICULA') where matricula = '$MATRICULAORIGEM' and dac = '$FILAORIGEM'";
// 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'";
$result = pg_query($query);
write($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'";
$result = pg_query($conexao, $query);
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');
write($str);
@exec($str);
$query = "update pbx_integracao_reg set reg_ramal = '$ramalAgente' where reg_uniqueid = '$UNIQUEID'";
$result = pg_query($query);
$query = "UPDATE pbx_integracao_reg SET reg_ramal = '$ramalAgente' WHERE reg_uniqueid = '$UNIQUEID'";
$result = pg_query($conexao, $query);
}
//Identifica o ramal que atendeu a fila
@ -217,10 +234,9 @@ if (!$RAMAL) {
$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);
write("SET VARIABLE __RAMALAGENTE $RAMAL"); //PARA O QUE EH UTILIZADO???
read();

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

@ -13,7 +13,8 @@ $stdlog = fopen("/var/log/asterisk/pbx_complemento.log", "w");
$debug = true;
// Do function definitions before we start the main loop
function read() {
function read()
{
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug) {
@ -22,10 +23,12 @@ function read() {
return $input;
}
function write($line) {
function write($line)
{
global $debug, $stdlog;
if ($debug)
if ($debug) {
fputs($stdlog, "write: $line\n");
}
echo $line . "\n";
}
@ -39,7 +42,7 @@ while ($env = read()) {
}
write("GET VARIABLE EPOCH");
$inicio=substr(strrchr(read(),"("),1,-1);
$inicio = substr(strrchr(read(), "("), 1, -1);
/*
* Implementação para Monitoramento dos ramais vinculados ao serviço de Callcenter - Ativo/Receptivo
@ -64,7 +67,7 @@ if (!$consulta) {
$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);
$row = @pg_fetch_array($result);
$resultado = pg_num_rows($result);
@ -85,14 +88,9 @@ if (!$consulta) {
$accountcode = $agi['accountcode'];
if (!$accountcode) {
// write("EXEC PauseQueueMember |Agent/$matricula");
write("EXEC PauseQueueMember ,Local/$origem@app-callcenter/n");
read();
// write("SET VARIABLE __PAUSA $status");
// read();
if (strtoupper($status) == 'PAUSA') {
write("EXEC Playback appsounds/atendente_em_pausa_retire_da_pausa");
read();
@ -106,57 +104,18 @@ if (!$consulta) {
* Verifica se a classificao esta ativa
* Verifica se e exigida a classificao
*/
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
*/
$protocolo=GeraProtocolo($conexao, $uniqueid);
// $tentativa = 0;
// while (true) {
// $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'";
$protocolo = GeraProtocolo($conexao, $uniqueid);
$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);
// write("EXEC PauseQueueMember |Agent/$matricula");
// read();
// write("EXEC PauseQueueMember |Agent/$matricula");
// read();
write("SET VARIABLE __INICIO_DIAL $inicio");
read();
@ -198,11 +157,14 @@ $uniqueid = $agi['uniqueid'];
$contexto = $argv[1];
$destino = $agi['extension'];
write("GET VARIABLE ID_EMPRESA");
$id_empresa = substr(strrchr(read(), "("), 1, -1);
if (strtolower($contexto) == 'ext-transferencia') {
mostra_parametro("EXT_TRANSFERENCIA");
write("GET VARIABLE IDORIGEM");
$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') {
mostra_parametro("MACRO_DIAL_INTERNO");
write("GET VARIABLE IDORIGEM");
@ -211,30 +173,31 @@ if (strtolower($contexto) == 'ext-transferencia') {
$destino = $argv[3];
if ($idorigem) {
$result = insert_padrao($conexao, $idorigem, $direcao, $destino);
$result = insert_padrao($conexao, $idorigem, $direcao, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else {
write("SET VARIABLE __IDORIGEM $uniqueid");
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') {
mostra_parametro("APP_CONTA_SENHA");
write("GET VARIABLE IDORIGEM");
$idorigem = substr(strrchr(read(), "("), 1, -1);
$conta = $argv[2];
$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);
$row = @pg_fetch_array($result);
$id_usuario = $row['id'];
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 {
write("SET VARIABLE __IDORIGEM $uniqueid");
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') {
mostra_parametro("SAIDA_PSTN");
@ -242,7 +205,7 @@ if (strtolower($contexto) == 'ext-transferencia') {
$idorigem = substr(strrchr(read(), "("), 1, -1);
$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);
$row = @pg_fetch_array($result);
$matricula = $row['matricula'];
@ -251,27 +214,27 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) {
if ($matricula) {
//$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);
$row = @pg_fetch_array($result);
$conta = $row['conta'];
if ($conta) {
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 {
insert_padrao($conexao, $idorigem, $contexto, $destino);
insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
}
} 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 {
insert_padrao($conexao, $idorigem, $contexto, $destino);
insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
}
} else {
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);
$row = @pg_fetch_array($result);
$conta = $row['conta'];
@ -280,21 +243,21 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($conta == $matricula) {
write("SET VARIABLE __IDORIGEM $uniqueid");
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 {
write("SET VARIABLE __IDORIGEM $uniqueid");
read();
insert_padrao($conexao, $idorigem, $contexto, $destino);
insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
}
} else {
write("SET VARIABLE __IDORIGEM $uniqueid");
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 {
write("SET VARIABLE __IDORIGEM $uniqueid");
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') {
@ -320,22 +283,22 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) {
if ($idorigem == $uniqueid) {
insert_padrao($conexao, $idorigem, $tipo, $destino);
insert_padrao($conexao, $idorigem, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else {
if ($monitorado) {
insert_padrao($conexao, $idorigem, $tipo, $destino);
insert_padrao($conexao, $idorigem, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else {
insert_padrao($conexao, $uniqueid, $tipo, $destino);
insert_padrao($conexao, $uniqueid, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
}
}
} else {
write("SET VARIABLE __IDORIGEM $uniqueid");
read();
insert_padrao($conexao, $uniqueid, $tipo, $destino);
insert_padrao($conexao, $uniqueid, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
}
//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,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);
$row = @pg_fetch_array($result);
$resultado = pg_num_rows($result);
@ -346,7 +309,6 @@ if (strtolower($contexto) == 'ext-transferencia') {
$modo_atendimento = $row['modo_atendimento'];
$origem = $agi['callerid'];
if ($modo_atendimento == 'MANUAL') {
$canal_agente = $agi['channel'];
} else {
@ -355,8 +317,6 @@ if (strtolower($contexto) == 'ext-transferencia') {
read();
}
//Se houver agente logado
if ($resultado) {
switch (strtoupper($status)) {
@ -373,51 +333,13 @@ if (strtolower($contexto) == 'ext-transferencia') {
* Verifica se e exigida a classificao
*/
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
*/
$protocolo=GeraProtocolo($conexao, $uniqueid);
// $tentativa = 0;
// while (true) {
// $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'";
$protocolo = GeraProtocolo($conexao, $uniqueid);
$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);
write("EXEC PauseQueueMember ,Local/$destino@app-callcenter/n");
@ -450,18 +372,18 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) {
if ($tipo == 'interna') {
insert_padrao($conexao, $idorigem, $tipo, $destino);
insert_padrao($conexao, $idorigem, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else {
insert_padrao($conexao, $idorigem, $contexto, $destino);
insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
}
} else {
write("SET VARIABLE __IDORIGEM $uniqueid");
read();
if ($tipo == 'interna') {
insert_padrao($conexao, $uniqueid, $tipo, $destino);
insert_padrao($conexao, $uniqueid, $tipo, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} 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') {
@ -480,21 +402,21 @@ if (strtolower($contexto) == 'ext-transferencia') {
if ($idorigem) {
if ($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 {
write("SET VARIABLE __IDORIGEM $uniqueid");
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') {
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') {
mostra_parametro("FILA_RAMAL");
$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') {
/*
* Executa noop para cli do asterisk, mostrando a passagem para ura.
@ -513,7 +435,6 @@ if (strtolower($contexto) == 'ext-transferencia') {
$upd = '';
//$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
* o identificador atribuido a chamada no momento da recepcao da mesma,
@ -545,19 +466,18 @@ if (strtolower($contexto) == 'ext-transferencia') {
if (GetInteraUra($uid)) {
$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));
} 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))";
} 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 = 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 {
$erro = '';
$inTran = 0;
$result = pg_query('begin');
$result = pg_query($conexao, 'begin');
if (!$result) {
RaiseExcept('Erro ao iniciar uma transação.', true);
}
@ -569,18 +489,17 @@ if (strtolower($contexto) == 'ext-transferencia') {
}
if ($upd) {
$result = pg_query($upd);
$result = pg_query($conexao, $upd);
if (!$result) {
RaiseExcept('Erro ao atualizar pbx_ura_movimento.', true);
}
}
$result = pg_query('commit');
$result = pg_query($conexao, 'commit');
if (!$result) {
RaiseExcept('Erro ao finalizar uma transação.', true);
}
} 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());
WriteLog($log, '/var/log/asterisk/pbx_complemento_reg.log');
write("EXEC Playback appsounds/erro_operacao");
@ -589,7 +508,7 @@ if (strtolower($contexto) == 'ext-transferencia') {
read();
if ($inTran) {
pg_query('rollback');
pg_query($conexao, 'rollback');
}
exit;
}
@ -603,34 +522,37 @@ if (strtolower($contexto) == 'ext-transferencia') {
/*
* 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) {
write("SET VARIABLE __IDORIGEM $uniqueid");
read();
insert_padrao($conexao, $uniqueid, $contexto, $destino);
insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
}
} else {
write("GET VARIABLE IDORIGEM");
$idorigem = substr(strrchr(read(), "("), 1, -1);
if ($idorigem) {
insert_padrao($conexao, $idorigem, $contexto, $destino);
insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa);
} else {
write("SET VARIABLE __IDORIGEM $uniqueid");
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");
read();
}
function GetInteraUra($uid) {
$query = "select '' from pbx_ura_movimento where uniqueid = '$uid' and umv_tipo = 'ini'";
$result = pg_query($query);
function GetInteraUra($uid)
{
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;
}

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;
?>

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

@ -4,6 +4,8 @@ include('bd.php');
include('util/util.php');
include('funcoes/shared.php');
error_reporting(E_ALL);
ini_set('display_errors', 0);
$uniqueId = trim($argv[1]);
$final = isset($argv[2]) ? trim($argv[2]) : '';
@ -19,18 +21,18 @@ $result = 0;
//$final = '';
if ($final == 'FINALTRANSFER') {
$query = "select trr_destino from pbx_tarif_registra where uniqueid = '$uniqueIdOrig'\n";
$result = pg_query($query);
$query = "SELECT trr_destino FROM pbx_tarif_registra WHERE uniqueid = '$uniqueIdOrig'\n";
$result = pg_query($conexao, $query);
$row = pg_fetch_row($result);
$destino = $row[0];
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";
$result = pg_query($query);
$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($conexao, $query);
}
} 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";
$result = pg_query($query);
$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($conexao, $query);
}
$log[] = $query;
__Prepago($uniqueId);
@ -46,13 +48,13 @@ __Prepago($uniqueId);
* contrato.
*/
$query = "select a.trr_tipo_dispositivo, b.contr_tipo_franquia
from pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id
and uniqueid = '$uniqueId'\n";
$query = "SELECT a.trr_tipo_dispositivo, b.contr_tipo_franquia
FROM pbx_tarif_registra a, pbx_tarif_contrato b
WHERE b.contr_id = a.contr_id
AND uniqueid = '$uniqueId'\n";
$log[] = $query;
$result = pg_query($query);
$result = pg_query($conexao, $query);
$row = pg_fetch_array($result);
$tipoDispo = $row['trr_tipo_dispositivo'];
$tipoFranquia = $row['contr_tipo_franquia'];
@ -63,23 +65,22 @@ $tipoFranquia = $row['contr_tipo_franquia'];
* faz o restante do trabalho.
*/
if ($result && __InsereFranquia($tipoDispo, $tipoFranquia)) {
$query = "insert
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)
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,
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(a.trr_vc in('vc3', 'vc4')) then 'M' else 'F' end as tmf_tipo_saldo, a.trr_preco_tipo
from pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id
and a.uniqueid = '$uniqueId'\n";
pg_query($query);
$query = "INSERT 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)
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,
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(a.trr_vc IN('vc3', 'vc4')) THEN 'M' ELSE 'F' END AS tmf_tipo_saldo, a.trr_preco_tipo
FROM pbx_tarif_registra a, pbx_tarif_contrato b
WHERE b.contr_id = a.contr_id
AND a.uniqueid = '$uniqueId'\n";
pg_query($conexao, $query);
}
$log[] = $query;
//Final: Finaliza: 1383258798.101 Final: FINALTRANSFER Arg3: 1383258762.93 Arg4: 1004 Data: 2013-10-31 19:33:28
$err = error_get_last();
if (count($err)) {
@ -91,49 +92,51 @@ if ($gravaLog) {
}
//exten => h,1,DeadAgi(tarifaFinaliza.php,${UNIQUEID})
function __Prepago($uniqueId) {
function __Prepago($uniqueId)
{
include('util/funcoesApl.php');
global $log;
$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_vc_cad, a.trr_vc_ext, 0.0 as prm_valor,
a.trr_id,
a.trr_preco,
a.trr_duracao,
a.trr_destino,
now()::date as prm_data,
now() as prm_data_lanc,
'D' as prm_tipo_lancamento,
'Chamada Efetuada' as prm_historico
from pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id and a.uniqueid = '%s'";
$queryPrepagoIns = "insert
into pbx_prepago_movimento
$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_vc_cad, a.trr_vc_ext, 0.0 AS prm_valor,
a.trr_id,
a.trr_preco,
a.trr_duracao,
a.trr_destino,
now()::date AS prm_data,
now() AS prm_data_lanc,
'D' AS prm_tipo_lancamento,
'Chamada Efetuada' AS prm_historico
FROM pbx_tarif_registra a, pbx_tarif_contrato b
WHERE b.contr_id = a.contr_id
AND a.uniqueid = '%s'";
$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)
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;
/*
* Verifica se o ramal/conta esta incluso no pre-pago
*/
$query = "select count(*)
from pbx_prepago a, pbx_tarif_registra b
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.habilita_prepago = '1'
and b.uniqueid = '%s'";
$query = "SELECT count(*)
FROM pbx_prepago a, pbx_tarif_registra b
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.habilita_prepago = '1'
AND b.uniqueid = '%s'";
$query = sprintf($query, $uniqueId);
$result = pg_query($query);
if (!$result)
$result = pg_query($conexao, $query);
if (!$result) {
$log[] = sprintf('Ver. Pre-pago: %s', $query);
}
$row = pg_fetch_row($result);
$prepagoIncluso = $row[0];
if ($prepagoIncluso) {
$queryPrepago = sprintf($queryPrepago, $uniqueId);
$result = pg_query($queryPrepago);
$result = pg_query($conexao, $queryPrepago);
$row = pg_fetch_array($result);
$tipoFranquia = $row["contr_tipo_franquia"];
@ -145,20 +148,21 @@ function __Prepago($uniqueId) {
$fator = $row["trr_vc_cad"];
$cadencia = $row["trr_vc_ext"];
$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) {
$queryPrepagoIns = str_replace('{' . $key . '}', QuotedStr($value), $queryPrepagoIns);
}
$result = pg_query($queryPrepagoIns);
if (!$result)
$result = pg_query($conexao, $queryPrepagoIns);
if (!$result) {
$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
*/
@ -166,9 +170,9 @@ function __InsereFranquia($disp, $franquia) {
return false;
} else if ($franquia == 4) {
return true;
} else if (($franquia == 3) and ( $disp == 'movel')) {
} else if (($franquia == 3) and ($disp == 'movel')) {
return true;
} else if (($franquia == 2) and ( $disp == 'fixo')) {
} else if (($franquia == 2) and ($disp == 'fixo')) {
return true;
}

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

@ -13,7 +13,8 @@ $stdlog = fopen("/var/log/asterisk/verifica_rota.log", "w");
$debug = true;
// Do function definitions before we start the main loop
function read() {
function read()
{
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug)
@ -21,7 +22,8 @@ function read() {
return $input;
}
function write($line) {
function write($line)
{
global $debug, $stdlog;
if ($debug)
fputs($stdlog, "write: $line\n");
@ -41,26 +43,17 @@ while ($env = read()) {
$ramal = $argv[1];
$destino = $argv[2];
/*
$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
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 id_rota limit 1";
*
*/
$query = "select a.id_rota, a.tipo_acesso, a.ramal,b.modelo,c.recorte, c.acrescenta,
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";
$query = "SELECT a.id_rota, a.tipo_acesso, a.ramal,b.modelo,c.recorte, c.acrescenta, c.org_id,
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');
@ -72,14 +65,12 @@ $ramal = $row['ramal'];
$modelo = $row['modelo'];
$recorte = $row['recorte'];
$acrescenta = $row['acrescenta'];
$org_id = $row['org_id'];
if (!$tipo_acesso) {
$tipo_acesso = 0;
}
//Libera ligacao caso tenha agente logado no ramal
else if ($tipo_acesso == '3') {
} else if ($tipo_acesso == '3') {
//Libera ligacao caso tenha agente logado no ramal
$query = "select count(*) from pbx_supervisor_agentes where ramal = '$ramal'";
$result = pg_query($conexao, $query);
$row = pg_fetch_array($result);
@ -102,13 +93,16 @@ read();
write("SET VARIABLE MODELO $modelo");
read();
write("SET VARIABLE ID_EMPRESA $org_id");
read();
if ($recorte) {
write("SET VARIABLE RECORTAROTA $recorte");
read();
write("SET VARIABLE RECORTAROTA $recorte");
read();
}
if ($acrescenta) {
write("SET VARIABLE ACRESCENTAROTA $acrescenta");
read();
write("SET VARIABLE ACRESCENTAROTA $acrescenta");
read();
}
pg_close();

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

@ -21,7 +21,7 @@ if ($socket) {
break;
} elseif (stristr($bufer, "Authentication failed")) {
fclose($socket);
echo("Usuário ou senha inválidos.");
echo ("Usuário ou senha inválidos.");
GravaLogAtuDacs("Não foi possível se conectar ao manager!!!\n");
exit();
}
@ -39,19 +39,24 @@ $comando = "action: logoff\r\n";
exec_cmd($comando, $socket, "Message: Thanks for all the fish.");
fclose($socket);
print_r($colas);
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);
$exists = pg_num_rows($result);
$info = GetNomeOrganizacao($key);
$nome = $info['nome'];
$org_id = $info['org_id'];
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 = 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 = "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($nome));
$result = pg_query($dbcon, $query);
} 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 = 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 = "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($nome), $org_id);
$result = pg_query($dbcon, $query);
}
@ -67,7 +72,8 @@ foreach ($colas as $key => $cola) {
@FechaPendenciaDiscador();
pg_close($dbcon);
function exec_cmd($comando, $socket, $evento_fin) {
function exec_cmd($comando, $socket, $evento_fin)
{
$actionid = rand(000000000, 9999999999);
$actionid = "actionid: " . $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);
foreach ($items as $item) {
if (strlen($item) > 0) {
@ -115,7 +122,8 @@ function arma_paquete($data) {
return $evento;
}
function ArmaArrayColas($qs_response) {
function ArmaArrayColas($qs_response)
{
$events = $qs_response['eventos'];
$queues = array();
@ -131,9 +139,10 @@ function ArmaArrayColas($qs_response) {
return $queues;
}
function GravaLogAtuDacs($msg) {
function GravaLogAtuDacs($msg)
{
$fp = fopen('/var/log/atualiza-dacs.log', 'a');
$data = date();
$data = date('Y-m-d');
fwrite($fp, $data);
fwrite($fp, $msg);
fclose($fp);

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

@ -1,7 +1,7 @@
#!/usr/bin/php -q
<?php
error_reporting(E_ERROR);
ini_set('display_errors', 0);
error_reporting(E_ALL);
ini_set('display_errors', 1);
include("util/util.php");
include("funcoes/shared.php");
include("util/Pid.php");
@ -57,7 +57,7 @@ try {
if (!pg_query($dbcon, 'commit')) {
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);
} catch (Exception $ex) {
if ($inTran) {
@ -69,14 +69,17 @@ try {
$pid->PidRemove();
function ibRaiseExcept($msg, $dbError = true) {
function ibRaiseExcept($msg, $dbError = true)
{
if ($dbError) {
$msg .= " DB: " . pg_last_error();
}
GeraExcept($msg);
}
function AtualizaFlagFila($minutes, $status = 'I') {
function AtualizaFlagFila($minutes, $status = 'I')
{
global $dbcon;
/*
* Atualiza flag_fila pendente.Observe que o "status = 'I'" indica
* 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.
*
*/
$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);
$sql = sprintf("SELECT id_bilhetes, uniqueid FROM pbx_bilhetes WHERE calldate < (NOW() - (interval '%s minutes')) AND flag_fila = 'I'", StrToIntDef($minutes));
$result = pg_query($dbcon, $sql);
if (!$result) {
ibRaiseExcept("Nao possivel selecionar registros com flag_fila pendente!");
}
@ -106,15 +109,16 @@ function AtualizaFlagFila($minutes, $status = 'I') {
$conFlag = ChamadaFila($row['uniqueid'], 0);
$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);
$resultUpd = pg_query($sql);
$sql = sprintf("UPDATE pbx_bilhetes SET %s WHERE id_bilhetes = '%s' ", $flagFila, $id);
$resultUpd = pg_query($dbcon, $sql);
if (!$resultUpd) {
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.
* $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;
}
function ImportaAstEventosDacs($dbcon) {
function ImportaAstEventosDacs($dbcon)
{
global $numDacs;
/*
* Importa a tabela ast_eventos_dacs.
*/
$sql = "insert
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
from ast_eventos_dacs a
where not exists(select '' from pbx_eventos_dacs where id = a.id)";
$sql = "INSERT 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
FROM ast_eventos_dacs a
WHERE NOT EXISTS(SELECT '' FROM pbx_eventos_dacs WHERE id = a.id)";
if (!$result = pg_query($dbcon, $sql)) {
ibRaiseExcept("Nao possivel importar a tabela ast_eventos_dacs!");
}
@ -146,88 +150,96 @@ function ImportaAstEventosDacs($dbcon) {
$numDacs = pg_affected_rows($result);
}
function ImportaAstBilhetes($dbcon) {
function ImportaAstBilhetes($dbcon)
{
global $numBilhetes;
$query = "drop table if exists tb_parametros;
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)
and uf = (select prm_uf_padrao from pbx_parametros)) as mun_padrao, (select prm_ddd_padrao from pbx_parametros) as prm_ddd_padrao;
$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
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 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
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
case ast.tipo_chamada
when(21)then (select mun_padrao from tb_parametros)
when(22)then (select min(id) from pbx_municipios where prefixo = ast.prefixo and ast.sufixo >= faixa_inicial and ast.sufixo <= faixa_final)
when(23)then (select mun_padrao from tb_parametros)
when(24)then (select min(id) from tb_municipios where codigo_ddd = ast.prefixo)
when(31)then (select mun_padrao from tb_parametros)
when(32)then (select min(id) from pbx_municipios where prefixo = ast.prefixo and ast.sufixo >= faixa_inicial and ast.sufixo <= faixa_final)
when(33)then (select mun_padrao from tb_parametros)
when(34)then (select min(id) from tb_municipios where codigo_ddd = ast.prefixo)
else 0 end
end as id_municipio
from ( select *,
case prf.tipo_chamada
when(21)then strtoint(((select prm_ddd_padrao::text from tb_parametros) || substring(prf.dst,1,4)))
when(22)then strtoint(substring(substring(prf.dst,'..........$'), 1,6))
when(23)then (select prm_ddd_padrao from tb_parametros)
when(24)then strtoint(substring(substring(prf.dst,'...........$'), 1,2))
when(31)then strtoint(((select prm_ddd_padrao::text from tb_parametros) || substring(prf.dst,1,4)))
when(32)then strtoint(substring(substring(prf.dst,'..........$'), 1,6))
when(33)then (select prm_ddd_padrao from tb_parametros)
when(34)then strtoint(substring(substring(prf.dst,'...........$'), 1,2))
when(21)then (select mun_padrao from tb_parametros)
when(22)then (select min(id) from pbx_municipios where prefixo = ast.prefixo and ast.sufixo >= faixa_inicial and ast.sufixo <= faixa_final)
when(23)then (select mun_padrao from tb_parametros)
when(24)then (select min(id) from tb_municipios where codigo_ddd = ast.prefixo)
when(31)then (select mun_padrao from tb_parametros)
when(32)then (select min(id) from pbx_municipios where prefixo = ast.prefixo and ast.sufixo >= faixa_inicial and ast.sufixo <= faixa_final)
when(33)then (select mun_padrao from tb_parametros)
when(34)then (select min(id) from tb_municipios where codigo_ddd = ast.prefixo)
else 0 end
end as id_municipio
from (select *,
case prf.tipo_chamada
when(21)then strtoint(((select prm_ddd_padrao::text from tb_parametros) || substring(prf.dst,1,4)))
when(22)then strtoint(substring(substring(prf.dst,'..........$'), 1,6))
when(23)then (select prm_ddd_padrao from tb_parametros)
when(24)then strtoint(substring(substring(prf.dst,'...........$'), 1,2))
when(31)then strtoint(((select prm_ddd_padrao::text from tb_parametros) || substring(prf.dst,1,4)))
when(32)then strtoint(substring(substring(prf.dst,'..........$'), 1,6))
when(33)then (select prm_ddd_padrao from tb_parametros)
when(34)then strtoint(substring(substring(prf.dst,'...........$'), 1,2))
else 0
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
from (select id_bilhetes, direcao,
case direcao
when('E')then sonumero(src)
when('S')then sonumero(dst)
else '-'
end as dst,
uniqueid,
case when(direcao = 'I')then 1
else
0
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
from (
select id_bilhetes, direcao,
case direcao
when('E')then sonumero(src)
when('S')then sonumero(dst)
else
'-'
end as dst,
uniqueid,
case when(direcao = 'I')then 1
else
tipoligacao(trim(case when(direcao = 'E')then sonumero(src) else sonumero(dst) end), case when(direcao = 'E')then true else false end)
end as tipo_chamada
from ast_bilhetes a
where not exists(select '' from pbx_bilhetes where id_bilhetes = a.id_bilhetes)
) as prf
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
from ast_bilhetes a
where not exists(select '' from pbx_bilhetes where id_bilhetes = a.id_bilhetes)
) as prf
) as ast;
create index \"tb_tipo_ligacaoIdBilhetes\" on tb_tipo_ligacao(id_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)
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
from ast_bilhetes a, tb_tipo_ligacao b
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, 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, org_id
from ast_bilhetes a, tb_tipo_ligacao b
where b.id_bilhetes = a.id_bilhetes;
update ast_bilhetes a
set tipo_chamada = b.tipo_chamada,
flag_fila = b.flag_fila,
id_municipio = b.id_municipio
from tb_tipo_ligacao b
where b.id_bilhetes = a.id_bilhetes;";
if (!$result = pg_query($dbcon, $query)) {
ibRaiseExcept("Nao possivel importar a tabela ast_bilhetes!");
flag_fila = b.flag_fila,
id_municipio = b.id_municipio
from tb_tipo_ligacao b
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)) {
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".
*/
$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);
if (!$result) {
ibRaiseExcept("Nao possivel consultar o id na tabela pbx_eventos_dacs!");
@ -238,17 +250,17 @@ function ImportaAstBilhetesComplemento($dbcon) {
/*
* Importa a tabela ast_bilhetes_complemento.
*/
$sql = "insert
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
from ast_bilhetes_complemento
where id > $maxIdComplemento";
$sql = "INSERT 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
FROM ast_bilhetes_complemento
WHERE id > $maxIdComplemento";
if (!$result = pg_query($dbcon, $sql)) {
ibRaiseExcept("Nao possivel importar a tabela ast_bilhetes_complemento!");
}
}
function CorrigeNumeroDestino($dbcon) {
function CorrigeNumeroDestino($dbcon)
{
$query = "DROP TABLE IF EXISTS ast_corrige_destino;
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';
/*
* Lista os contatos que estao sendo discados na campanha de pre-venda e sincroniza com a
* 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
from pbx_cliente a, pbx_campanha_contato_fone d
where d.cmp_id = a.cmp_id
and d.list_id = a.list_id
and d.cont_id = a.cont_id
and d.conf_discado = 1
and strtoint(d.conf_status) > 0
and d.conf_protocolo is null";
$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
WHERE d.cmp_id = a.cmp_id
AND d.list_id = a.list_id
AND d.cont_id = a.cont_id
AND d.conf_discado = 1
AND strtoint(d.conf_status) > 0
AND d.conf_protocolo IS NULL";
$result = pg_query($dbcon, $sql);
if (!$result) {
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
*/
$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)) {
ibRaiseExcept("Nao possível atualizar o registro do contato.");
}
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)) {
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');
define("MAX_LOOP_FK", 1000);
define("CONF_EMPRESA_LOG", '/var/log/asterisk/importa_empresa.log');
/*
-- Table: pbx_organizacao
@ -86,7 +87,8 @@ function CriaCampo($dbcon)
$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) {
if (in_array($table["table_name"], $except)) {
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);
}

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

@ -15,8 +15,8 @@
* -sGravaLog -> Grava log de erros gerados pelo serviço.
* -sCreateMemory -> Aloca memoria para sincronização de dados.
* ***************************************************************************************** */
error_reporting(E_ERROR);
ini_set('display_errors', 0);
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set("memory_limit", "512M");
/*
@ -29,7 +29,7 @@ include("util/funcoesSsupervisor.php");
/*
* Para rodar como um processo normal é preciso passar "N" como primeiro parametro.
*/
$notDaemon = isset($argv[1]) && ( strtoupper($argv[1]) === 'N');
$notDaemon = isset($argv[1]) && (strtoupper($argv[1]) === 'N');
/*
* Mostra o help quando passodo --help no primeiro argumento.
@ -70,6 +70,7 @@ $inTransaction = 0;
$numCiclos = 0;
try {
declare(ticks=1);
$statusSignal = 0;
if (!$notDaemon) {
@ -140,13 +141,13 @@ try {
/*
* Encerra a conexao com banco de dados.
*/
pg_close($conn);
$conn = false;
// pg_close($conn);
$conn = null;
} catch (Exception $ex) {
/*
* Garante que a conexao ao banco seja reiniciada.
*/
pg_close($conn);
//pg_close($conn);
$conn = false;
/**
@ -185,7 +186,8 @@ try {
sGravaLog($ex->getMessage());
}
function sGravaLog($log) {
function sGravaLog($log)
{
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.
*/
@ -219,17 +222,18 @@ function GetDaemon($notDaemon) {
/* PIDFile SYSTEMD
* SYSTEMD irá monitorar esse pid para verificar se ainda ativo
*/
$PIDFile = fopen( "/var/lock/subsys/supervisor.pid", "w+" );
$pid = getmypid( );
if( $pid == false ){
exit( 1 );
$PIDFile = fopen("/var/lock/subsys/supervisor.pid", "w+");
$pid = getmypid();
if ($pid == false) {
exit(1);
}
fwrite( $PIDFile, $pid);
fclose( $PIDFile );
fwrite($PIDFile, $pid);
fclose($PIDFile);
// posix_setsid();
}
function GetSupervisorHelp() {
function GetSupervisorHelp()
{
global $argc, $argv;
$arg = isset($argv[1]) ? $argv[1] : '';
@ -239,7 +243,8 @@ function GetSupervisorHelp() {
}
}
function displayUsage() {
function displayUsage()
{
echo "-------------------------------------------------------------------------------------------------------\n";
echo "- Servico de sincronizacao de dados para o supervisor! -\n";
echo "-------------------------------------------------------------------------------------------------------\n";
@ -252,7 +257,8 @@ function displayUsage() {
//end displayUsage()
function sGetConnection() {
function sGetConnection()
{
/*
* 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');
@ -268,7 +274,8 @@ function sGetConnection() {
return $conn;
}
function sSetTransaction($conn, $isolation = 'READ UNCOMMITTED') {
function sSetTransaction($conn, $isolation = 'READ UNCOMMITTED')
{
/*
* Muda o isolamento da transação.
*/
@ -281,7 +288,8 @@ function sSetTransaction($conn, $isolation = 'READ UNCOMMITTED') {
}
}
function sBeginTransaction($conn) {
function sBeginTransaction($conn)
{
global $inTransaction;
/*
* Define o isolamento padrão para as transações.
@ -300,7 +308,8 @@ function sBeginTransaction($conn) {
$inTransaction = 1;
}
function sCommitTransaction($conn) {
function sCommitTransaction($conn)
{
global $inTransaction;
/*
* Fianaliza a Transacao corrente.
@ -314,7 +323,8 @@ function sCommitTransaction($conn) {
$inTransaction = 0;
}
function sRollbackTransaction($conn) {
function sRollbackTransaction($conn)
{
global $inTransaction;
/*
* 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 {
/*
* 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;
return $arDadosControle[$tipoDados];
}
function GetAbdsr($conn) {
function GetAbdsr($conn)
{
global $gOldAbdsr, $numCiclos;
/*
@ -413,22 +426,20 @@ function GetAbdsr($conn) {
$diasAbandon = GetDiasAbandonada($conn);
$abdsr = array();
$query = "select b.fila, count(distinct a.abdsr_uniqueid) as qtde_fila
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_bilhetes c on c.uniqueid = b.uid2
where a.abdsr_data_hora_retorno is null
and a.abdsr_data >= (now()::date - $diasAbandon)
group by b.fila
order by 1";
$query = "SELECT b.fila, count(DISTINCT a.abdsr_uniqueid) AS qtde_fila
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_bilhetes c ON c.uniqueid = b.uid2
WHERE a.abdsr_data_hora_retorno IS NULL
AND a.abdsr_data >= (now()::date - $diasAbandon)
GROUP BY b.fila
ORDER BY 1";
$result = pg_query($conn, $query);
if (!$result) {
return array();
}
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
$fila = trim($dados['fila']);
$abdsr[$fila] = $dados['qtde_fila'];
@ -437,18 +448,21 @@ function GetAbdsr($conn) {
return $abdsr;
}
function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array())
{
global $gOlDac;
try {
/*
* 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,
"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',
"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();
@ -474,7 +488,6 @@ function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
$agente = $dados["matricula"];
$arDadosMonitor = $dadosMonitor;
foreach ($dados as $key => $value) {
$arDadosMonitor[$key] = $value;
@ -495,7 +508,6 @@ function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
$dac = $infoAgt["dac"];
if (!empty($gOlDac[$dac])) {
$arDac = $gOlDac[$dac];
foreach ($arInfoDac as $keyParam => $valParam) {
$infoAgt[$valParam] = $arDac[$keyParam];
}
@ -529,66 +541,67 @@ function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
}
}
function GetQueryAgenteRt() {
return "select a.dac,
a.ramal as ramal_monitor,
a.matricula,
a.nome,
a.monitorar as statusmonitorar,
a.intercalar as statusintercalar,
( (EXTRACT(EPOCH FROM (now() - a.duracao)) / 60)) as status_time,
a.disponivel_atendimento,
chamada_classificado,
(LOCALTIMESTAMP(0) - a.tempo_login) as tempo_logado,
a.modo_atendimento,
a.origem_destino as fone,
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,
(LOCALTIMESTAMP(0) - a.duracao) as duracao,
protocolo as num_protocolo,
uniqueid2,
extract(epoch from (now() - logado))::int as tempo_atualiza,
trim(motivo_pausa) as pausa_motivo_rt,
trim(uniqueid) as uniqueid,
disponivel_atendimento,
chamada_classificado,
coalesce(canal_transfer, '') as canal_transfer,
media,
tipo_ligacao, cont_identificador, status_discador,
( SELECT count(*)
FROM ast_bilhetes x, ast_eventos_dacs y
where y.uid2 = x.uniqueid
and x.data_bilhete in(a.tempo_login::date, now()::date)
and y.fila = a.dac
and y.agente = ('Agent/' || a.matricula)
and y.evento in('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS')
and x.lastapp <> 'Transferred Call' ) as originadas_pa,
( SELECT count(*)
FROM ast_bilhetes x, ast_eventos_dacs y, ast_bilhetes_complemento z
where y.uid2 = x.uniqueid
and x.uniqueid = z.uniqueid2
and z.direcao = 'fila-ramal'
and x.data_bilhete in(a.tempo_login::date, now()::date)
and y.fila = a.dac
and y.agente = ('Agent/' || a.matricula)
and y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL')
and x.lastapp <> 'Transferred Call' ) AS atendidas_pa,
( SELECT sum(
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
where y.uid2 = x.uniqueid
and x.data_bilhete in(a.tempo_login::date, now()::date)
and y.fila = a.dac
and y.agente = ('Agent/' || a.matricula)
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
FROM pbx_supervisor_agentes a where 1=1 order by a.dac, a.nome";
function GetQueryAgenteRt()
{
return "SELECT a.dac,
a.ramal AS ramal_monitor,
a.matricula,
a.nome,
a.monitorar AS statusmonitorar,
a.intercalar AS statusintercalar,
( (EXTRACT(EPOCH FROM (now() - a.duracao)) / 60)) AS status_time,
a.disponivel_atendimento,
chamada_classificado,
(LOCALTIMESTAMP(0) - a.tempo_login) AS tempo_logado,
a.modo_atendimento,
a.origem_destino AS fone,
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,
(LOCALTIMESTAMP(0) - a.duracao) AS duracao,
protocolo AS num_protocolo,
uniqueid2,
extract(epoch FROM (NOW() - logado))::int AS tempo_atualiza,
trim(motivo_pausa) AS pausa_motivo_rt,
trim(uniqueid) AS uniqueid,
disponivel_atendimento,
chamada_classificado,
coalesce(canal_transfer, '') AS canal_transfer,
org_id,
tipo_ligacao, cont_identificador, status_discador,
(SELECT COUNT(*)
FROM ast_bilhetes x, ast_eventos_dacs y
WHERE y.uid2 = x.uniqueid
AND x.data_bilhete IN(a.tempo_login::date, NOW()::date)
AND y.fila = a.dac
AND y.agente = ('Agent/' || a.matricula)
AND y.evento IN('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS')
AND x.lastapp <> 'Transferred Call' ) AS originadas_pa,
(SELECT COUNT(*)
FROM ast_bilhetes x, ast_eventos_dacs y, ast_bilhetes_complemento z
WHERE y.uid2 = x.uniqueid
AND x.uniqueid = z.uniqueid2
AND z.direcao = 'fila-ramal'
AND x.data_bilhete IN(a.tempo_login::date, NOW()::date)
AND y.fila = a.dac
AND y.agente = ('Agent/' || a.matricula)
AND y.evento IN('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL')
AND x.lastapp <> 'Transferred Call' ) AS atendidas_pa,
(SELECT SUM(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
WHERE y.uid2 = x.uniqueid
AND x.data_bilhete IN(a.tempo_login::date, NOW()::date)
AND y.fila = a.dac
AND y.agente = ('Agent/' || a.matricula)
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
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;
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)));
if (!ShmWriteVar($shmKeyCtrl, $arDadosControle, 0)) {
if (!$silent)
if (!$silent) {
GeraExcept("Não foi possível gravar os dados do controle!");
}
}
}
function GetQueryDac() {
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,
function GetQueryDac()
{
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,
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 count(*) FROM pbx_supervisor_agentes WHERE dac = e.dac) AS num_agente, 1 AS ord,
org_id
FROM pbx_supervisor_dacs e
LEFT JOIN (
SELECT 0 as sel, DAC, ID_DAC,
DATA,
ABANDONADAS
@ -655,103 +671,44 @@ function GetQueryDac() {
,TRANSBORDADA
,NAO_CLASSIFICADO
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
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') THEN nao_classificado ELSE 0 END) AS nao_classificado
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,
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
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 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')
) 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')
AND a.data_bilhete = now()::date
) AS DADOS
GROUP BY DATA, DAC, ID_DAC
) AS DADOS ORDER BY 1
) a on e.dac = a.dac order by 2 ";
SELECT DATA,
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 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
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL') THEN nao_classificado ELSE 0 END) AS nao_classificado
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,
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
INNER JOIN ast_eventos_dacs b on a.uniqueid = b.uid2
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, org_id
) AS DADOS ORDER BY 1
) a ON e.dac = a.dac ORDER BY 2";
}
function sig_handler($signo) {
function sig_handler($signo)
{
global $statusSignal;
$statusSignal = 1;
}
function sig_status() {
function sig_status()
{
global $statusSignal;
pcntl_signal_dispatch();
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);

61
configGeral.php

@ -115,38 +115,37 @@ if ($idSubProg == CONFIG_BASE_DADOS) {
'prm_contasenha_master', 'prm_portabilidade', 'prm_tarifacao', 'prm_prepago', 'prm_use_discador',
'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_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_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"
);
$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();
if (isset($_POST["btGravar"])) {
if (!ExisteRegistro($dbcon, 'pbx_parametros', 'id', '1')) {
$query = "insert
into pbx_parametros
(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})";
$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)
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)";
} else {
$query = "update pbx_parametros
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_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_ddd_padrao = {prm_ddd_padrao}, prm_mun_padrao = {prm_mun_padrao}, prm_uf_padrao = {prm_uf_padrao},
prm_cadastro_atendidos = {prm_cadastro_atendidos}, prm_digitos_conta = {prm_digitos_conta},
prm_digitos_senha = {prm_digitos_senha}, prm_gera_conta = {prm_gera_conta}, prm_pausa_grupo = {prm_pausa_grupo},
prm_atende_auto = {prm_atende_auto}, prm_atende_manual = {prm_atende_manual},
prm_atende_preferencial = {prm_atende_preferencial}, prm_modulo_pesquisa = {prm_modulo_pesquisa},
prm_prefixo_sennha_ramal = {prm_prefixo_sennha_ramal}, prm_contasenha_sinc = {prm_contasenha_sinc},
prm_contasenha_master = {prm_contasenha_master}, prm_portabilidade = {prm_portabilidade}, prm_tarifacao = {prm_tarifacao},
prm_prepago = {prm_prepago}, prm_use_discador = {prm_use_discador},prm_ativa_complemento_campanha = {prm_ativa_complemento_campanha}, prm_tempo_sessao = {prm_tempo_sessao},
prm_registro_pagina = {prm_registro_pagina}, prm_use_vendas = {prm_use_vendas}, prm_nome_vendas = {prm_nome_vendas},
prm_exige_proto_vendas = {prm_exige_proto_vendas}, prm_bloqueio = {prm_bloqueio}, prm_bloqueio_data = {prm_bloqueio_data},
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_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";
$query = "UPDATE pbx_parametros
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_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_ddd_padrao = {prm_ddd_padrao}, prm_mun_padrao = {prm_mun_padrao}, prm_uf_padrao = {prm_uf_padrao},
prm_cadastro_atendidos = {prm_cadastro_atendidos}, prm_digitos_conta = {prm_digitos_conta},
prm_digitos_senha = {prm_digitos_senha}, prm_gera_conta = {prm_gera_conta}, prm_pausa_grupo = {prm_pausa_grupo},
prm_atende_auto = {prm_atende_auto}, prm_atende_manual = {prm_atende_manual},
prm_atende_preferencial = {prm_atende_preferencial}, prm_modulo_pesquisa = {prm_modulo_pesquisa},
prm_prefixo_sennha_ramal = {prm_prefixo_sennha_ramal}, prm_contasenha_sinc = {prm_contasenha_sinc},
prm_contasenha_master = {prm_contasenha_master}, prm_portabilidade = {prm_portabilidade}, prm_tarifacao = {prm_tarifacao},
prm_prepago = {prm_prepago}, prm_use_discador = {prm_use_discador},prm_ativa_complemento_campanha = {prm_ativa_complemento_campanha}, prm_tempo_sessao = {prm_tempo_sessao},
prm_registro_pagina = {prm_registro_pagina}, prm_use_vendas = {prm_use_vendas}, prm_nome_vendas = {prm_nome_vendas},
prm_exige_proto_vendas = {prm_exige_proto_vendas}, prm_bloqueio = {prm_bloqueio}, prm_bloqueio_data = {prm_bloqueio_data},
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_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 = {$_SESSION['prm_id']}";
}
$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_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,
@ -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_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
from pbx_parametros where id = 1";
FROM pbx_parametros WHERE id = 1";
$result = pg_query($dbcon, $query);
$dados = @pg_fetch_array($result);
foreach ($fields as $value) {
@ -647,3 +646,11 @@ function VerificaRamaisCriados($prmMaxRamal)
$dados = pg_fetch_row($result1);
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 {
$sel = "";
}
$dacs .= "<option value=\"$dados[0]\" $sel>$dados[1]</option>";
$fila = GravaNomeOrganizacao($dados[1]);
$dacs .= "<option value=\"$dados[0]\" $sel>$fila</option>";
$cont++;
}
if ((!$cont || !$i) && ($codSel != '0') && (!$useNull) && (!$incTodos))
@ -100,7 +101,8 @@ function GetDacs($dbcon, $codDac, $disableb = "", $incTodos = 1, $soAtivo = 1)
if ($codSel == $dados[0]) {
$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>";

2
include/configBd.php

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

2
include/configs/config.php

@ -6,7 +6,7 @@
define('NOME_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 ###

2
include/util/display_errors.php

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

182
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('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('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');
@ -914,22 +915,20 @@ function GetNavHeader($tpLayout = 0)
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();
$matricula = GetMatricula() ? "| Matricula: " . GetMatricula() : '';
$imgUser = IsUserConnect() ? "userOn16.png" : "userOff16.png";
$style = IsUserConnect() ? "height: 40px;" : "";
$imgAlt = IsUserConnect() ? "alt=\"Usuário Conectado\" title=\"Usuário Conectado\"" : "alt=\"Usuário Desconectado\" title=\"Usuário Desconectado\"";
$imgUser = IsUserConnect() ? "userOn16.png" : null;
$imgAlt = IsUserConnect() ? "alt=\"Usuário Conectado\" title=\"Usuário Conectado\"" : null;
$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);\" >
<table width=\"100%\" style=\"width: 100%;\" border=\"0\" cellspacing=\"7\" cellpadding=\"5\">
<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=\"left\" id=\"dispProg\">Home / $dispProgSel</td>
<td valign=\"middle\" align=\"right\" id=\"nav_login\">$img</td>
<td valign=\"middle\" align=\"left\" id=\"dispProg\">$selMenu $dispProgSel</td>
</tr>
</table>
</div>";
@ -948,35 +947,35 @@ function GetDispProgSel($idProg)
}
$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[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[5] = "Relatório de Meta Diária";
$dispProgSel[6] = "Supervisor";
$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[10] = $isMenu ? "Cadastro" : "Relatório de Resumo/Fone"; //ipr
$dispProgSel[11] = "Resumo Transferência/Ramal"; //inativo
$dispProgSel[10] = $isMenu ? "Cadastro" : "Relatório de Resumo Fone"; //ipr
$dispProgSel[11] = "Resumo Transferência Ramal"; //inativo
$dispProgSel[12] = "Relatório de Transferência por Agente";
$dispProgSel[13] = "Relatório de Transferência por Agente";
$dispProgSel[14] = "Agente";
$dispProgSel[15] = "Agente"; //direciona para tela inicial de agente
$dispProgSel[16] = "Troca de Senha";
$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[20] = "Configurações do Sistema";
$dispProgSel[21] = "Cadastro de Usuário";
$dispProgSel[22] = "Cadastro de Usuário"; //operacoes de banco
$dispProgSel[23] = "Áudio";
$dispProgSel[24] = "Consulta de Dacs"; //inativo
$dispProgSel[25] = "Tranferência/Agente Detalhe";
$dispProgSel[25] = "Tranferência Agente Detalhe";
$dispProgSel[26] = "Comunicação Asterisk";
$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[30] = "Classificação de Atendimento ";
$dispProgSel[31] = "Classificação de Atendimento ";
@ -986,11 +985,11 @@ function GetDispProgSel($idProg)
$dispProgSel[35] = "Meta Diária";
$dispProgSel[36] = "Administração de Permissões";
$dispProgSel[284] = "Mesa Operadora";
$dispProgSel[37] = "Chamadas Saintes/Ramal";
$dispProgSel[38] = "Chamadas Saintes/Ramal";
$dispProgSel[39] = "Chamadas Saintes/Conta";
$dispProgSel[40] = "Chamadas Saintes/Conta";
$dispProgSel[41] = "Totalizador Chamadas Saintes/Ramal";
$dispProgSel[37] = "Chamadas Saintes Ramal";
$dispProgSel[38] = "Chamadas Saintes Ramal";
$dispProgSel[39] = "Chamadas Saintes Conta";
$dispProgSel[40] = "Chamadas Saintes Conta";
$dispProgSel[41] = "Totalizador Chamadas Saintes Ramal";
$dispProgSel[42] = "Menu Chamadas Saintes";
$dispProgSel[43] = "Chamadas Ramal a Ramal";
$dispProgSel[44] = "Chamadas Ramal a Ramal";
@ -1009,13 +1008,13 @@ function GetDispProgSel($idProg)
$dispProgSel[57] = "Chamadas Saintes";
$dispProgSel[58] = "Chamadas Entrantes";
$dispProgSel[59] = "Chamadas Entrantes Geral";
$dispProgSel[60] = "Chamadas Entrantes/Ramal";
$dispProgSel[61] = $isMenu ? "PABX" : "Chamadas Entrantes/Conta";
$dispProgSel[62] = $isMenu ? "PABX/Chamadas" : "Chamadas Entrantes/Conta";
$dispProgSel[60] = "Chamadas Entrantes Ramal";
$dispProgSel[61] = $isMenu ? "PABX" : "Chamadas Entrantes Conta";
$dispProgSel[62] = $isMenu ? "PABX Chamadas" : "Chamadas Entrantes Conta";
$dispProgSel[63] = "Totalizador de Chamadas Entrantes";
$dispProgSel[64] = "Totalizador de Chamadas Entrantes";
$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[68] = "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[74] = "Chamadas Saintes Mais Discados";
$dispProgSel[75] = "Chamadas Entrantes Mais Discados";
$dispProgSel[76] = $isMenu ? "PABX/Outros" : "Chamadas Encaminhadas p/ Caixa Postal";
$dispProgSel[77] = "Chamadas Encaminhadas p/ Caixa Postal";
$dispProgSel[76] = $isMenu ? "PABX/Outros" : "Chamadas Encaminhadas Caixa Postal";
$dispProgSel[77] = "Chamadas Encaminhadas Caixa Postal";
$dispProgSel[78] = "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[82] = "Monitor de Operações";
$dispProgSel[83] = "...";
$dispProgSel[84] = $isMenu ? "PABX/Ramais" : "Grupos de Usuários";
$dispProgSel[84] = $isMenu ? "PABX Ramais" : "Grupos de Usuários";
$dispProgSel[85] = "...";
$dispProgSel[86] = "Motivos de Pausas";
$dispProgSel[278] = "Serviços de Chamadas";
$dispProgSel[87] = "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[87] = "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[90] = "Chamadas Originadas por Agente";
$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[94] = "Chamadas Abandonadas na Ura";
$dispProgSel[95] = "Chamadas Totalizadas por DDD";
$dispProgSel[96] = "Chamadas Totalizadas por DDD";
$dispProgSel[97] = "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[108] = "Chamadas Desligadas A/B";
@ -1064,13 +1063,13 @@ function GetDispProgSel($idProg)
$dispProgSel[112] = "Cadastro de Campanhas";
$dispProgSel[121] = "Administração de Permissões";
$dispProgSel[125] = "Campanha/Retorno";
$dispProgSel[125] = "Campanha Retorno";
$dispProgSel[127] = "Ferramentas";
$dispProgSel[130] = "Pesquisa";
$dispProgSel[132] = "Pré-processamento de lista";
$dispProgSel[137] = "Tarifação/Portabilidade";
$dispProgSel[139] = "Agenda/Departamentos";
$dispProgSel[140] = "Agenda/Ramais";
$dispProgSel[137] = "Tarifação Portabilidade";
$dispProgSel[139] = "Agenda Departamentos";
$dispProgSel[140] = "Agenda Ramais";
$dispProgSel[150] = $isMenu ? "Pré-Pago" : "Relatório de Classificação por Agente";
$dispProgSel[152] = "Relatório de Meta Anual Analítico";
$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[181] = "Pesquisa ACW";
$dispProgSel[185] = "Pesquisa/Liberação";
$dispProgSel[185] = "Pesquisa Liberação";
$dispProgSel[187] = "Relatório Pesquisa";
$dispProgSel[188] = "Relatório Pesquisa/Agente";
$dispProgSel[188] = "Relatório Pesquisa Agente";
$dispProgSel[197] = "Contratos/Operadora";
$dispProgSel[198] = "Tarifação/Parametros";
$dispProgSel[197] = "Contratos Operadora";
$dispProgSel[198] = "Tarifação Parametros";
$dispProgSel[199] = "Operadoras Disponíveis";
$dispProgSel[205] = "Tarifação por Ramal";
$dispProgSel[206] = "Tarifação por Conta";
$dispProgSel[207] = "Tarifação por Fatura";
$dispProgSel[208] = "Relatório Pesquisa/Áudio";
$dispProgSel[208] = "Relatório Pesquisa Áudio";
$dispProgSel[212] = "Pré-pago/Ramal";
$dispProgSel[213] = "Pré-pago/Conta";
$dispProgSel[214] = "Pré-pago/Ramal";
$dispProgSel[215] = "Pré-pago/Conta";
$dispProgSel[212] = "Pré-pago Ramal";
$dispProgSel[213] = "Pré-pago Conta";
$dispProgSel[214] = "Pré-pago Ramal";
$dispProgSel[215] = "Pré-pago Conta";
$dispProgSel[216] = "Portabilidade";
$dispProgSel[217] = "Monitor da Portabilidade";
$dispProgSel[218] = "Backup";
$dispProgSel[219] = "Backup/Destino";
$dispProgSel[220] = "Backup/Destino";
$dispProgSel[221] = "Backup/Configurações";
$dispProgSel[222] = "Backup/Configurações";
$dispProgSel[223] = "Backup/Monitor";
$dispProgSel[219] = "Backup Destino";
$dispProgSel[220] = "Backup Destino";
$dispProgSel[221] = "Backup Configurações";
$dispProgSel[222] = "Backup Configurações";
$dispProgSel[223] = "Backup Monitor";
$dispProgSel[224] = "Backup Manual";
$dispProgSel[225] = "Relatório de Chamadas/Ramal";
$dispProgSel[226] = "Relatório de Chamadas/Ramal";
$dispProgSel[225] = "Relatório de Chamadas Ramal";
$dispProgSel[226] = "Relatório de Chamadas Ramal";
$dispProgSel[229] = "Relatório de Chamadas Abandonadas na Fila";
$dispProgSel[227] = "Relatório de Recebidas/Agente";
$dispProgSel[262] = "Relatório de Indicadores/MP";
$dispProgSel[227] = "Relatório de Recebidas Agente";
$dispProgSel[262] = "Relatório de Indicadores MP";
$dispProgSel[266] = "Relatório Metas Dia da Semana";
$dispProgSel[270] = "Retarifação de Chamadas";
$dispProgSel[273] = "Agentes/Horas Trabalhadas";
$dispProgSel[273] = "Agentes Horas Trabalhadas";
$dispProgSel[274] = "Status dos Contatos Discados";
$dispProgSel[280] = "Funil de Vendas";
$dispProgSel[285] = "Regionais";
@ -1141,7 +1140,7 @@ function GetDispProgSel($idProg)
$dispProgSel[300] = "Desempenho por DAC";
$dispProgSel[301] = "Desempenho por Serviço";
$dispProgSel[302] = "Relatório Geral de URA";
$dispProgSel[303] = "Entradas Fila/Contextos";
$dispProgSel[303] = "Entradas Fila e Contextos";
$dispProgSel[304] = "Consulta Atividades";
$dispProgSel[306] = "Detalhamento URA";
$dispProgSel[307] = "Monitor Chamadas";
@ -1173,16 +1172,19 @@ function GetDispProgSel($idProg)
$dispProgSel[352] = 'Relatórios Comissão';
$dispProgSel[353] = 'Atendimento WhatsApp';
$dispProgSel[356] = 'SimplesChat';
$dispProgSel[355] = 'Simples WhatsApp';
$dispProgSel[356] = 'Simples Chat';
$dispProgSel[358] = 'Dashboard';
$dispProgSel[365] = 'Recebidas Agente/Serviços';
$dispProgSel[365] = 'Recebidas Agente e Serviços';
$dispProgSel[366] = 'Relatório Chamadas Geral';
$dispProgSel[369] = 'Cadastro Organização';
$dispProgSel[10001] = "Cadastro de Agentes PBX";
$dispProgSel[10002] = "Cadastro de Filas";
$dispProgSel[10004] = "Cadastro de Agenda";
$dispProgSel[11004] = "Cadastro de Agenda";
$dispProgSel[10006] = "Fila/Grupos";
$dispProgSel[10006] = "Fila Grupos";
$dispProgSel[10007] = "Cadastro de Anúncios";
$dispProgSel[11007] = "Cadastro de Anúncios";
$dispProgSel[10009] = "Cadastro de Ramais Sip";
@ -1232,7 +1234,7 @@ function GetDispProgSel($idProg)
$dispProgSel[11032] = "Cadastro de Voicemail";
$dispProgSel[10033] = "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[11035] = "Cadastro de Prioridades";
@ -1248,8 +1250,8 @@ function GetDispProgSel($idProg)
$dispProgSel[11043] = "Cadastro de Arquivos de Som";
//$dispProgSel[10045] = "Monitor E1";
$dispProgSel[10046] = "Centro de Custo/Ramais";
$dispProgSel[11046] = "Centro de Custo/Ramais";
$dispProgSel[10046] = "Centro de Custo Ramais";
$dispProgSel[11046] = "Centro de Custo Ramais";
//$dispProgSel[10047] = "Ramais Khomp";
//$dispProgSel[11047] = "Ramais Khomp";
@ -1262,7 +1264,7 @@ function GetDispProgSel($idProg)
$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)
@ -1271,6 +1273,18 @@ function GetMenuUser($tpUser)
if (!IsUserConnect()) {
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 = "<script language=\"JavaScript\">\n";
$menu .= "<!--//\n";
@ -1280,7 +1294,11 @@ function GetMenuUser($tpUser)
$menuGeral = "<table class=\"menuGeral\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\">
<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>
</table>";
//<th width=\"30%\" align=\"center\" nowrap><img src=\"imgSite/setaRreen.png\" align=\"absmiddle\"> $dispProgSel</th>
@ -1305,13 +1323,13 @@ function GetDisponivelFila()
function GetLogin()
{
return IsUserConnect() ? $_SESSION["SSlogin"] : "An&ocirc;nimo ";
return IsUserConnect() ? $_SESSION["SSlogin"] : "Desconectado";
}
function GetOrganizacao()
{
global $dbcon;
if (empty($_SESSION['SSEmpresaPadrao'])) {
if (empty($_SESSION['SSEmpresaPadrao']) && IsUserConnect()) {
$query = "SELECT po.id AS org_id
FROM pbx_organizacao po
INNER JOIN pbx_organizacao_usuarios pou ON po.id = pou.id_organizacao
@ -1326,6 +1344,21 @@ function GetOrganizacao()
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)
{
$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)
{
//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);
if ((int) $numRamais[0] === 0) {
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);
if ($result) {
$row = pg_fetch_row($result);
@ -2650,7 +2684,7 @@ function MaxRamaisPermite($db, $qtde)
function GetNumeroRamalFromId($id)
{
$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);
if ($result && (pg_num_rows($result) > 0)) {
$row = pg_fetch_row($result);
@ -2668,7 +2702,7 @@ function GetCrc32Code($tableName, $params)
function GetCrc32CodeExiste($tableName, $code)
{
$db = $GLOBALS['dbcon'];
$query = "select case when(
$query = "SELECT case when(
exists(select '' from $tableName where id_rel = '$code')
)then 1 else 0 end as existe ";
$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' ";
if ($queryParam) {
$query .= " and {$queryParam} ";
$query .= " AND {$queryParam} ";
}
$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(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(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;
}
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()
{
return isset($_REQUEST['ajax']) && ($_REQUEST['ajax'] = 1);
@ -1686,16 +1712,16 @@ function ParseDbTimestamp($timestamp, $show = 'DT')
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.
*/
$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);
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,
get_quote($uniqueid),
@ -1704,7 +1730,8 @@ function insert_padrao($conexao, $uniqueid, $direcao, $destino, $conta = 'null',
get_quote($conta),
get_quote($id_usuario),
get_quote($agente),
get_quote($dac)
get_quote($dac),
get_quote($org_id)
);
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('navHeader', GetNavHeader($tpLayout));
$smarty->assign('navLogin', GetNavLogin($tpLayout, GetDispProgSel($idProg)));
$smarty->assign('displaySel', GetDispProgSel($idProg));
$smarty->assign('onLoad', $onLoad);
$smarty->assign('menuGeral', GetMenuUser($tpLayout));
$smarty->assign('idProg', $idProg);

28
master.css

@ -1052,3 +1052,31 @@ table.gridClean td {
padding-right: 6px;
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)
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;
--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
ddddef = (select prm_ddd_padrao from pbx_parametros where org_id = organizacao);
create temporary table tpbx_features_featuremap as select * from pbx_features_featuremap where id = 1;
alter table tpbx_features_featuremap drop column id;
insert into pbx_features_featuremap select * from tpbx_features_featuremap;
update pbx_features_featuremap set org_id = $org_id where id = $id
tam = length(strtoint(numerofone)::text);
nonoDigito = strtoint( substring(substring(numerofone, '.........$'), 1, 1) );
create temporary table tpbx_features_general as select * from pbx_features_general where id = 1;
alter table tpbx_features_general drop column id;
insert into pbx_features_general select * from tpbx_features_general;
update pbx_features_general set org_id = $org_id where id = $id
if((tam = 3) and (numerofone in('100', '128', '190', '191', '192', '193', '194', '197', '198', '199')))then
return 4;
elsif((tam >= 8) and (substring(numerofone,1,4) in('0300','0500','0900','4000','4001','4002','4003','4004', '4005', '4006','4007','4008','4009','0800')))then
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 -----
------------------------------------------
DROP INDEX "idxSipRamaisNome";
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_facilidades ADD COLUMN id SERIAL PRIMARY KEY;

1612
scriptApl/functions15.js

File diff suppressed because it is too large Load Diff

4
scriptApl/menu.css

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

372
supervisor.php

@ -22,6 +22,10 @@ $selTodos = (strtoupper($dac) == 'TODOS') || !$dac;
*/
$statusServer = false;
/**
* Separa as informacoes da fila conforme a organizacao
*/
$org_id = GetOrganizacao();
/*
* Valores para o head das tabelas de dac e agente
*/
@ -74,7 +78,7 @@ if (IsAjax() && isset($_GET["logoff"])) {
* Desliga a chamada corrente
* 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);
if ($result) {
$row = @pg_fetch_array($result);
@ -86,24 +90,18 @@ if (IsAjax() && isset($_GET["logoff"])) {
$result = pg_query($dbcon, "begin");
//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_affected_rows($result);
//registra o login do usuario
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);
$row = @pg_fetch_row($result);
$idLogoff = $row[0];
if ($idLogoff) {
$query = "update pbx_eventos_agentes
set logoff = now(),
flag = 2
where id = $idLogoff";
$query = "UPDATE pbx_eventos_agentes SET logoff = now(), flag = 2 WHERE id = $idLogoff";
$result = pg_query($dbcon, $query);
$result = @pg_affected_rows($result);
}
@ -134,9 +132,6 @@ if (IsAjax() && isset($_GET["logoff"])) {
$idSessao = "SSinter_" . $matricula;
$intercalar = $_SESSION[$idSessao];
$_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;
/*
@ -144,9 +139,7 @@ if (IsAjax() && isset($_GET["logoff"])) {
*/
@GetUrl(AST_DESLIGAR_TODOS);
$query = "update pbx_supervisor_agentes
set intercalar = '{Status}'
where matricula = '$matricula'";
$query = "UPDATE pbx_supervisor_agentes SET intercalar = '{Status}' WHERE matricula = '$matricula'";
if (!$intercalar) {
$ramalIntercalar = soNumero(GetRamalMonitorar(RAMAL_MONITOR_SUPERVISOR));
@ -194,7 +187,6 @@ if (IsAjax() && isset($_GET["logoff"])) {
$nvLgpdMonitorado = GetNivelLgpd($matricula);
}
if (!GetUrl(AST_MONITORAR, GetParamMonitorar(GetAvisoLgpdMonitoria(), $ramalIntercalar, $canalIntercalar, $matricula, $nvLgpdSupervisor, $nvLgpdMonitorado))) {
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
*/
$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);
if ($result) {
if (pg_num_rows($result)) {
@ -239,12 +231,10 @@ if (IsAjax() && isset($_GET["logoff"])) {
} else if (IsAjax()) {
echo $tbDac . "#" . $tbAgente . "#" . $tbCall;
} else {
//$jsJQuery[] = GetJqTips('img');
//define arquivo de javaScript necessarios
$tempoSuperAtu = GetTempoSupervisor();
$jsStartup[] = "var idSet = window.setInterval(\"GetSupervisor('$dac','')\",$tempoSuperAtu);";
//$smarty->assign('dacs', GetDac($dbcon, $dac));
$smarty->assign('tbDac', $tbDac);
$smarty->assign('tbAgente', $tbAgente);
$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_licenca', $_SESSION["prm_max_licenca"]);
$smarty->assign('prm_max_licenca_fixo', $_SESSION["prm_max_licenca_fixo"]);
$smarty->assign('nomeRamalMonitor', (RAMAL_MONITOR_SUPERVISOR));
$smarty->assign('canalRamallMonitor', (CANAL_MONITOR_SUPERVISOR));
GetTemplate($smarty, 'supervisor.tpl');
}
function GetDadosDac() {
global $statusServer, $arRetornoAbandonadas;
function GetDadosDac()
{
global $statusServer, $arRetornoAbandonadas, $dbcon;
try {
/*
* Dacs disponiveis para o usuario conectado.
@ -306,7 +296,7 @@ function GetDadosDac() {
*/
$dadosDac = array();
$query = GetQueryDac();
$result = pg_query($query);
$result = pg_query($dbcon, $query);
/*
* Lista chamadads sem retorno
@ -324,8 +314,9 @@ function GetDadosDac() {
}
}
function GetDadosAgt($dac) {
global $statusServer;
function GetDadosAgt($dac)
{
global $statusServer, $dbcon;
try {
$dacAll = strtoupper($dac) == "TODOS";
@ -353,7 +344,7 @@ function GetDadosAgt($dac) {
$arDadosDac = array();
foreach ($dados as $dadosDac) {
$dacSel = $dadosDac['dac'];
if (($dacSel == $dac) || ($dacAll && (array_search($dacSel, $dacsAcesso) !== false ))) {
if (($dacSel == $dac) || ($dacAll && (array_search($dacSel, $dacsAcesso) !== false))) {
$arDadosDac[] = $dadosDac;
}
}
@ -376,7 +367,7 @@ function GetDadosAgt($dac) {
*/
$dadosAgt = array();
$qr = GetQueryAgt($dac);
$result = pg_query($qr);
$result = pg_query($dbcon, $qr);
$dadosDac = array();
while (($dados = @pg_fetch_array($result, null, PGSQL_ASSOC))) {
$dadosDac[] = $dados;
@ -385,22 +376,21 @@ function GetDadosAgt($dac) {
return $dadosDac;
}
function GetQueryDac() {
global $transbordoEvento;
function GetQueryDac()
{
$idUser = GetIdUser();
$login = GetLogin();
$org_id = GetOrganizacao();
$dacsAcesso = GetDacsAcesso($idUser);
$query = " select distinct coalesce(sel, 0) as sel,
$query = "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) * 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,
(round(coalesce(a.inb,0),0)::text || '%') as tempo_nivel_servico,
'D' as tipo,
transbordando,
transbordada,
@ -408,70 +398,73 @@ function GetQueryDac() {
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')
AND a.data_bilhete = now()::date
) AS DADOS
GROUP BY DATA, DAC, ID_DAC
) AS DADOS ORDER BY 1
) a on e.dac = a.dac \n";
(select count(*) from pbx_supervisor_agentes where dac = e.dac) as num_agente, 1 as ord,
org_id
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, 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 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,
d.org_id
FROM ast_eventos_dacs b INNER JOIN ast_bilhetes a on a.uniqueid = b.uid2 and a.lastapp <> 'Transferred Call'
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')
AND a.data_bilhete = now()::date
) AS DADOS
GROUP BY DATA, DAC, ID_DAC, org_id
) AS DADOS ORDER BY 1
) a ON e.dac = a.dac \n";
$query .= " WHERE 1=1 ";
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 .= " order by 2";
// echo $query; exit;//if(IsAdmin())echo $query; exit;
$query .= " AND org_id = $org_id ";
$query .= " ORDER BY 2";
return $query;
}
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
inner join pbx_grupo_usuario d on d.gp_id = c.gp_id
and d.user_id = %s and b.status = 'A' ";
function GetDacsAcesso($idUser, $array = false)
{
global $dbcon;
$query = "SELECT DISTINCT b.nome FROM pbx_queues_grupos b
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));
$result = pg_query($query);
$result = pg_query($dbcon, $query);
$linha = $array ? array() : '';
if ($result) {
@ -488,80 +481,76 @@ function GetDacsAcesso($idUser, $array = false) {
return $linha;
}
function GetQueryAgt($dac) {
function GetQueryAgt($dac)
{
global $selTodos;
$idUser = GetIdUser();
$login = GetLogin();
if ($selTodos) {
$dacsAcesso = GetDacsAcesso($idUser);
}
$queryLocal = "select a.dac,
a.ramal as ramal_monitor,
$queryLocal = "SELECT a.dac,
a.ramal AS ramal_monitor,
a.matricula,
a.nome,
a.monitorar as statusmonitorar,
a.intercalar as statusintercalar,
((EXTRACT(EPOCH FROM (now() - a.duracao)) / 60)) as status_time,
a.monitorar AS statusmonitorar,
a.intercalar AS statusintercalar,
((EXTRACT(EPOCH FROM (NOW() - a.duracao)) / 60)) AS status_time,
a.disponivel_atendimento,
chamada_classificado,
(LOCALTIMESTAMP(0) - a.tempo_login) as tempo_logado,
(LOCALTIMESTAMP(0) - a.tempo_login) AS tempo_logado,
a.modo_atendimento,
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,
(LOCALTIMESTAMP(0) - a.duracao) as duracao,
protocolo as num_protocolo,
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,
protocolo AS num_protocolo,
uniqueid2,
extract(epoch from (now() - logado))::int as tempo_atualiza,
trim(motivo_pausa) as pausa_motivo_rt,
trim(uniqueid) as uniqueid,
extract(epoch FROM (NOW() - logado))::int AS tempo_atualiza,
trim(motivo_pausa) AS pausa_motivo_rt,
trim(uniqueid) AS uniqueid,
disponivel_atendimento,
chamada_classificado,
coalesce(canal_transfer, '') as canal_transfer,
coalesce(canal_transfer, '') AS canal_transfer,
tipo_ligacao, cont_identificador, status_discador,
media,
( SELECT count(*)
FROM ast_bilhetes x, ast_eventos_dacs y
where y.uid2 = x.uniqueid
and x.data_bilhete in(a.tempo_login::date, now()::date)
and y.fila = a.dac
and substring(y.agente, 7, 4) = a.matricula
and y.evento in('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS')
and x.lastapp <> 'Transferred Call' )as originadas_pa,
( SELECT count(*)
FROM ast_bilhetes x, ast_eventos_dacs y,pbx_bilhetes_complemento z
where y.uid2 = x.uniqueid
and x.uniqueid = z.uniqueid2
and z.direcao = 'fila-ramal'
and x.data_bilhete in(a.tempo_login::date, now()::date)
and y.fila = a.dac
and substring(y.agente, 7, 4) = a.matricula
and y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL')
and x.lastapp <> 'Transferred Call' ) AS atendidas_pa,
( 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
)
(SELECT count(*) FROM ast_bilhetes x, ast_eventos_dacs y
WHERE y.uid2 = x.uniqueid
AND x.data_bilhete IN(a.tempo_login::date, now()::date)
AND y.fila = a.dac
AND substring(y.agente, 7, 4) = a.matricula
AND y.evento IN('COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG','BUSYS','NOANSWERS')
AND x.lastapp <> 'Transferred Call' ) AS originadas_pa,
(SELECT count(*) FROM ast_bilhetes x, ast_eventos_dacs y, pbx_bilhetes_complemento z
WHERE y.uid2 = x.uniqueid
AND x.uniqueid = z.uniqueid2
AND z.direcao = 'fila-ramal'
AND x.data_bilhete IN(a.tempo_login::date, now()::date)
AND y.fila = a.dac
AND substring(y.agente, 7, 4) = a.matricula
AND y.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL')
AND x.lastapp <> 'Transferred Call' ) AS atendidas_pa,
(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
where y.uid2 = x.uniqueid
and x.data_bilhete in(a.tempo_login::date, now()::date)
and y.fila = a.dac
and substring(y.agente, 7, 4) = a.matricula
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
FROM pbx_supervisor_agentes a
WHERE a.dac = case when(upper('$dac') = 'TODOS')then a.dac else '$dac' end\n";
WHERE y.uid2 = x.uniqueid
AND x.data_bilhete in(a.tempo_login::date, NOW()::date)
AND y.fila = a.dac
AND substring(y.agente, 7, 4) = a.matricula
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
FROM pbx_supervisor_agentes a
WHERE a.dac = CASE WHEN(upper('$dac') = 'TODOS')THEN a.dac ELSE '$dac' END\n";
if ($selTodos && !IsAdmin()) {
$queryLocal .= " and a.dac in($dacsAcesso)\n";
$queryLocal .= " AND a.dac IN($dacsAcesso)\n";
}
$queryLocal .= " order by a.dac, a.nome";
//if(IsAdmin ()) echo $queryLocal; // coalesce(a.calldate::date, now()::date) = now()::date
$queryLocal .= " ORDER BY a.dac, a.nome";
return $queryLocal;
}
function GetHeadTable($items, $title = "", $filtro = array()) {
function GetHeadTable($items, $title = "", $filtro = array())
{
global $smarty;
$colspan = count($items);
$tb = "<tr>";
@ -576,11 +565,13 @@ function GetHeadTable($items, $title = "", $filtro = array()) {
return $tb . "\n";
}
function GetCloseTable() {
function GetCloseTable()
{
return "</table>\n";
}
function GetLinhasDac($dac) {
function GetLinhasDac($dac)
{
global $dbcon, $statusServer;
$linha = '';
$imgSet = "";
@ -603,16 +594,15 @@ function GetLinhasDac($dac) {
array_unshift($arDados, $somaTodos);
}
//print_r($arDados); exit;
foreach ($arDados as $dados) {
$linha .= "<tr>";
$stl = ($dac == $dados["dac"]) || ($dac == -1) ? "class=\"gridSelect\"" : "";
$dacAtv = $dados["dac"];
$dacAll = strtoupper($dacAtv) == 'TODOS';
if ($stl)
if ($stl) {
$_SESSION['SSsupervisorDacAtu'] = $dacAtv;
}
/*
* Seleciona o dac ativo.
*/
@ -698,7 +688,6 @@ function GetLinhasDac($dac) {
*/
$imgVendas = '';
if (!$dacAll && UseModVendas()) {
$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\">";
$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));
}
/*
* classificação de chamadas.
*/
@ -733,7 +721,8 @@ function GetLinhasDac($dac) {
return $linha;
}
function FiltroAgt($status) {
function FiltroAgt($status)
{
global $cklivre, $ckocupado, $ckpausa;
if (!$cklivre && !$ckocupado && !$ckpausa) {
@ -743,7 +732,8 @@ function FiltroAgt($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
global $selTodos;
$imgSet = "";
@ -856,17 +846,6 @@ function GetLinhasAgt($dac) {
*/
$atendidas_pa = 0;
$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"];
$linha .= sprintf("<td %s>%s</td>", $align, $atendidas_pa);
@ -930,7 +909,7 @@ function GetLinhasAgt($dac) {
}
$linha .= sprintf("<td %s>%s</td>", $align, $strTmp);
$idSessao = "SSinter_" . (isset($dados['matricula']) ? $dados['matricula'] : '' );
$idSessao = "SSinter_" . (isset($dados['matricula']) ? $dados['matricula'] : '');
if (isset($dados["statusintercalar"]) && ($dados["statusintercalar"] == 1)) {
//$_SESSION[$idSessao] = 1;
@ -971,7 +950,8 @@ function GetLinhasAgt($dac) {
return $linhas;
}
function GetTbDac($dbcon, $dac, $head) {
function GetTbDac($dbcon, $dac, $head)
{
//tabela de dacs
$tb = "";
$tb .= GetHeadTable($head);
@ -979,21 +959,24 @@ function GetTbDac($dbcon, $dac, $head) {
return $tb;
}
function GetTbAgente($dbcon, $dac, $head) {
function GetTbAgente($dbcon, $dac, $head)
{
$tb = GetHeadTable($head, "Agentes em Operação");
$tb .= GetLinhasAgt($dac);
//$tb .= GetCloseTable();
return $tb;
}
function GetTempoPausa($pausa) {
function GetTempoPausa($pausa)
{
global $dbcon;
$query = "SELECT tempo_alerta FROM pbx_motivos_pausas WHERE motivo ILIKE '$pausa'";
$result = pg_query($dbcon, $query);
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">
<tr>
<th>Fone</th>
@ -1003,7 +986,7 @@ function GetCurrentCall($conn, $cmpId) {
{linha}
</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);
@ -1029,7 +1012,8 @@ function GetCurrentCall($conn, $cmpId) {
return $table;
}
function PausaAgente($dbcon, $ramal, $dac, $matricula) {
function PausaAgente($dbcon, $ramal, $dac, $matricula)
{
$idDac = GetDacCod($dbcon, $dac);
$idSessao = "SSpausa_" . $matricula;
$pausa = GetPausa($dbcon, $matricula); // $_SESSION[$idSessao];
@ -1043,19 +1027,19 @@ function PausaAgente($dbcon, $ramal, $dac, $matricula) {
pg_query($dbcon, "begin");
//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);
if ($result) {
$rowMotivo = @pg_fetch_row($result);
$descMotivo = $rowMotivo[0];
//atualiza dados do supervisor
$query = "update pbx_supervisor_agentes
set status = 'PAUSA',
duracao = now(),
motivo_pausa = '$descMotivo',
origem_destino = ''
where matricula = '$matricula'";
$query = "UPDATE pbx_supervisor_agentes
SET status = 'PAUSA',
duracao = now(),
motivo_pausa = '$descMotivo',
origem_destino = ''
WHERE matricula = '$matricula'";
$result = pg_query($dbcon, $query);
}
@ -1094,7 +1078,7 @@ function PausaAgente($dbcon, $ramal, $dac, $matricula) {
return "ERRO;A operação não pode ser realizada! Erro: " + pg_last_error($dbcon);
}
}
}else {
} else {
$result = GetUrl(AST_REM_PAUSA, $dac, $matricula);
if ($result) {
@ -1102,30 +1086,29 @@ function PausaAgente($dbcon, $ramal, $dac, $matricula) {
$result = pg_query($dbcon, "begin");
//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);
$row = pg_fetch_row($result);
$statusAtual = empty($row[0]) ? 'LIVRE' : 'OCUPADO';
$query = "update pbx_supervisor_agentes
set status = '$statusAtual',
duracao = now()
where matricula = '$matricula'";
$query = "UPDATE pbx_supervisor_agentes
SET status = '$statusAtual', duracao = now()
WHERE matricula = '$matricula'";
$result = pg_query($dbcon, $query);
if ($result)
if ($result) {
$result = pg_affected_rows($result);
}
//registra o login do usuario
if ($result) {
$query = "update pbx_eventos_agentes
set saida_pausa = now(),
$query = "UPDATE pbx_eventos_agentes
SET saida_pausa = NOW(),
flag = 2,
reg_proc = coalesce(reg_proc, '') || $regProc
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'))";
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);
if ($result)
@ -1140,13 +1123,14 @@ function PausaAgente($dbcon, $ramal, $dac, $matricula) {
return "OK;O agente \"Matricula: $matricula \" foi retirado de pausa!";
} else {
pg_query($db, "rollback");
pg_query($dbcon, "rollback");
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();
$isPost = $post ? 1 : 0;
@ -1162,5 +1146,3 @@ function request($url, $post = []) {
curl_close($ch);
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">
<html>
<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}
{$styleFile}
{if $scriptGlobal}{$scriptGlobal}{/if}
@ -35,7 +35,9 @@
<td {$setLogo}>{$logoPrinc}</td>
</tr>
<tr>
<td>{$menuGeral}</td>
<td>
{$menuGeral}
</td>
</tr>
</table>
</td>

Loading…
Cancel
Save