Browse Source

ajuestes geral sistema de multiempresa

1.9
Lucas Awade 10 months ago
parent
commit
94868b3e8d
  1. 11
      cadastros/organizacao/cadOrganizacao.php
  2. 2
      configGeral.php
  3. 6
      contacteFunc.php
  4. 2
      projeto/base/sql/versao-1.9.0.sql
  5. 26
      seguranca/grupos/grupoSelect.php
  6. 11
      seguranca/perfil/perfilGrupo.php
  7. 1
      sites/siteInsert.php
  8. 2
      supervisor.php

11
cadastros/organizacao/cadOrganizacao.php

@ -44,7 +44,7 @@ function setOrganizacao($dbcon, $dados, $id = null)
}
$isExistsMaster = verificaMaster($dbcon);
if ($isExistsMaster == true && $dados['master'] == "checked"){
if ($isExistsMaster == true && $dados['master'] == "checked") {
throw new Exception("Já existe uma empresa master ativa!");
}
@ -144,11 +144,10 @@ function criarGruposDefault($dbcon, $org_id)
foreach ($gps as $g) {
$sql = "INSERT INTO pbx_grupo_funcoes (gp_id, fun_id, org_id)
SELECT {$g['gp_id']}, fun_id, {$org_id}
SELECT {$g['gp_id']} AS gp_id, fun_id, {$org_id} AS org_id
FROM pbx_grupo_funcoes
WHERE gp_nome = '{$g['gp_nome']}'
AND gp_system = 0
AND org_id = 1; ";
WHERE gp_id = (SELECT gp_id FROM pbx_grupo WHERE org_id = (SELECT min(id) FROM pbx_organizacao)
AND gp_nome = '{$g['gp_nome']}' AND gp_system = 0)";
pg_query($dbcon, $sql);
}
}
@ -188,7 +187,7 @@ function verificaMaster($dbcon)
$query = "SELECT id, master, status FROM pbx_organizacao;";
$result = pg_query($dbcon, $query);
$resposta = false;
if(!$result){
if (!$result) {
throw new Exception("Não foi possível verificar se existe organizaçao master!");
}
$dados = pg_fetch_all($result);

2
configGeral.php

@ -245,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 = {$_SESSION['prm_id']}";
$result = pg_query($dbcon, $query);
$dados = @pg_fetch_array($result);
foreach ($fields as $value) {

6
contacteFunc.php

@ -24,14 +24,16 @@ function GetDac($dbcon, $codDac, $disableb = "", $incTodos = 0, $soAtivo = 1, $i
}
if ($isAdm) {
$query = "SELECT DISTINCT id, nome AS nome, 'Receptivo' AS tipo FROM pbx_queues_grupos d WHERE 1=1 AND org_id = $org_id " . ($soAtivo ? " and status = 'A' " : "") . " ORDER BY 2";
$query = "SELECT DISTINCT id, nome AS nome, 'Receptivo' AS tipo
FROM pbx_queues_grupos d
WHERE 1=1 AND org_id = $org_id " . ($soAtivo ? " AND status = 'A' " : "") . " ORDER BY 2";
} else {
$query = "SELECT DISTINCT d.id, d.nome, 'Receptivo' AS tipo, 'false' AS padrao
FROM pbx_usuarios a, pbx_grupo_usuario b, pbx_fila_grupos c, pbx_dacs d
WHERE b.user_id = a.id
AND c.gp_id = b.gp_id
AND d.id = c.id
AND a.org_id = $org_id
AND c.org_id = $org_id
AND lower(a.matricula) = lower('$matricula') " . ($soAtivo ? " and d.status = 'A' " : "") . " order by 1, 2 ";
}

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

@ -90,6 +90,8 @@ DROP INDEX "idxSipRamaisNome";
DROP INDEX "pbx_usuarios_matricula_key";
DROP INDEX "idxUsuariosApelido";
DROP INDEX "idxGrupNome";
DROP INDEX "idxSiteNome";
DROP INDEX "idxUnqBase";
-----------------
ALTER TABLE pbx_grupo DROP CONSTRAINT "idxGrupNome";
ALTER TABLE pbx_usuarios DROP CONSTRAINT pbx_usuarios_new_matricula_key;

26
seguranca/grupos/grupoSelect.php

@ -37,24 +37,32 @@ if (IsUserAdmin()) {
* sem a necessidade de estar em outros grupos diretamente o que evita o bloqueio de audio.
*/
$idUser = GetIdUser();
$gpCompl = " and gp_id in( select gp_id from pbx_grupo_usuario where user_id = (select id FROM pbx_usuarios where apelido = 'administrador'))";
$permissoesAdmin = "\nunion\nselect gp_id, gp_nome, gp_status, user_id, 1 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord from pbx_grupo a where user_id > '0'\n";
//$gpCompl = " AND gp_id IN( SELECT gp_id FROM pbx_grupo_usuario WHERE user_id = (SELECT id FROM pbx_usuarios WHERE apelido = 'administrador'))";
$permissoesAdmin = "\nUNION\n";
$permissoesAdmin .= "SELECT gp_id, gp_nome, gp_status, user_id, 1 as gp_lgpd,
CASE WHEN(user_id = 0)THEN 0 ELSE 1 END AS ord
FROM pbx_grupo a WHERE user_id > '0'
AND a.org_id = {$org_id} \n";
} else if (!IsAdmin()) {
$idUser = GetIdUser();
$gpCompl = " and gp_id in( select gp_id from pbx_grupo_usuario where user_id = $idUser)";
$gpCompl = " AND gp_id IN(SELECT gp_id FROM pbx_grupo_usuario WHERE user_id = $idUser)";
}
/*
* Restringe para todos.
*/
$restringLgpd = " and a.gp_id not in(select gp_id from pbx_grupo where gp_nome ilike 'LGPD_%_%_%')";
$restringLgpd = " AND a.gp_id NOT IN(SELECT gp_id FROM pbx_grupo WHERE gp_nome ILIKE 'LGPD_%_%_%')";
/*
* Libera apenas para quem tiver acesso atribuido a administracao da lgpd.
*/
$liberaLgpd = '';
if (VerificaPerfilAcesso($dbcon, GetIdProgFromNomeMenu('mnLgpdAdm'))) {
$liberaLgpd = "\nunion\nselect gp_id, gp_nome, gp_status, user_id, 1 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord from pbx_grupo a where gp_nome ilike 'LGPD_%_%_%'\n";
$liberaLgpd = "\nUNION\n";
$liberaLgpd .= "SELECT gp_id, gp_nome, gp_status, user_id, 1 AS gp_lgpd,
CASE WHEN(user_id = 0)THEN 0 ELSE 1 END AS ord
FROM pbx_grupo a WHERE gp_nome ILIKE 'LGPD_%_%_%'
AND a.org_id = {$org_id} \n";
}
$acessoAudio = VerificaPerfilAcesso($dbcon, GetIdProgFromNomeArq('audio.php'));
@ -63,13 +71,15 @@ $colspan = $acessoAudio ? 6 : 5;
$compl = '';
if (isset($_REQUEST['paramPesquisa']) && $_REQUEST['paramPesquisa']) {
$compl = PreparaLike($filtro, true);
$compl = sprintf("and (a.gp_nome ilike %s)", $compl);
$compl = sprintf("AND (a.gp_nome ILIKE %s)", $compl);
}
$compl .= "AND org_id = $org_id ";
$query = "SELECT gp_id, gp_nome, gp_status, user_id, 0 as gp_lgpd, case when(user_id = 0)then 0 else 1 end as ord FROM pbx_grupo a\n";
$query .= "WHERE a.gp_system = '0' $compl $gpCompl $restringLgpd $liberaLgpd $permissoesAdmin order by 5, gp_nome";
$query = "SELECT gp_id, gp_nome, gp_status, user_id, 0 AS gp_lgpd, CASE WHEN(user_id = 0)THEN 0 ELSE 1 END AS ord FROM pbx_grupo a\n";
$query .= "WHERE a.gp_system = '0'
AND org_id = {$org_id}
$compl $gpCompl $restringLgpd $liberaLgpd $permissoesAdmin ORDER BY 5, gp_nome";
$params = "&paramPesquisa=$filtro";
$links = PaginaDados($idProg, $query, $params, $regPagina, $offSet, $pagMostra, true);

11
seguranca/perfil/perfilGrupo.php

@ -40,9 +40,12 @@ function GetGrupoDef($dbcon, &$codGp, &$nomeGp, $idUser)
{
$org_id = GetOrganizacao();
$flagSystem = (IsAdmin() && IsLocalServer()) ? '1=1' : " gp_system = '0' ";
$query = "SELECT gp_id, gp_nome FROM pbx_grupo g WHERE $flagSystem and gp_status = 1 {REST} AND org_id = $org_id ORDER BY gp_nome LIMIT 1";
$query = "SELECT gp_id, gp_nome
FROM pbx_grupo g
WHERE $flagSystem and gp_status = 1
AND org_id = $org_id
ORDER BY gp_nome LIMIT 1";
//restricao se o usuario nao for admin
$query = strtoupper(GetLogin()) == "ADMIN" ? str_replace("{REST}", "", $query) : str_replace("{REST}", " AND exists(SELECT '' FROM pbx_grupo_usuario WHERE gp_id = g.gp_id AND user_id = $idUser)", $query);
$result = pg_query($dbcon, $query);
$row = pg_fetch_array($result);
$codGp = $row["gp_id"];
@ -63,8 +66,8 @@ function GetGrupo($dbcon, $codGp, $size = 1)
FROM pbx_grupo g
WHERE $flagSystem
AND org_id = $org_id
AND gp_status = 1 {REST} ORDER BY 3,2";
$query = strtoupper(GetLogin()) == "ADMIN" ? str_replace("{REST}", "", $query) : str_replace("{REST}", " AND exists(SELECT '' from pbx_grupo_usuario where gp_id = g.gp_id and user_id = $idUser)", $query);
AND gp_status = 1 ORDER BY 3,2";
$result = pg_query($dbcon, $query);
$sel = "";
$cont = 0;

1
sites/siteInsert.php

@ -7,7 +7,6 @@ $org_id = GetOrganizacao();
if (IsPostBack() && empty($erro)) {
$query = "INSERT INTO pbx_sites (host, usuario, senha, basedados, porta, descricao, status, org_id) VALUES(%s, %s, %s, %s, %s, %s, %s, %s)";
$query = sprintf($query, QuotedStr($host), QuotedStr($usuario), QuotedStr($senha), QuotedStr($basedados), QuotedStr($porta), QuotedStr($descricao), $status, $org_id);
echo $query;
$result = pg_query($dbcon, $query);
if ($result) {
$erro = "Registro inserido com sucesso!";

2
supervisor.php

@ -546,7 +546,7 @@ function GetQueryAgt($dac)
FROM pbx_supervisor_agentes a
WHERE a.dac = CASE WHEN(upper('$dac') = 'TODOS')THEN a.dac ELSE '$dac' END\n";
if ($selTodos && !IsAdmin()) {
if ($selTodos && !IsAdmin() && $dacsAcesso) {
$queryLocal .= " AND a.dac IN($dacsAcesso)\n";
}
$queryLocal .= " ORDER BY a.dac, a.nome";

Loading…
Cancel
Save