Browse Source

Ajuste na verificação de licenças quando houver falha com a licença o sistema so permitirá login com usuario admin e só irá carregar o menu de configurações para inserção de uma licença e o menu de sair do sistema.

pull_11
douglas.strappasson 1 year ago
parent
commit
3c36fdadfd
  1. 2
      configGeral.php
  2. 19
      include/util/funcoesApl.php
  3. 162
      include/util/funcoesLicenca.php

2
configGeral.php

@ -562,7 +562,7 @@ if ($idSubProg == CONFIG_BASE_DADOS) {
$perfils = GetPerfilApl();
$slcOpt = "";
foreach ($perfils as $k => $v) {
$slcOpt .= "<option value='{$v['pfa_id']}'>{$v['prf_nome']} - [{$v['pfa_descricao']}]</option>";
$slcOpt .= "<option value='{$v['gp_id']}'>{$v['gp_nome']} - {$v['gp_descricao']}</option>";
}
$smarty->assign('select_perfil', $slcOpt);

19
include/util/funcoesApl.php

@ -422,22 +422,8 @@ function VerificaCadastroMenu($conn) {
}
//registro apgados com sucesso
if ($result) {
//verifica o grupo de permissoes de acordo com o tipo da licença
$query = "SELECT a.fun_id
FROM pbx_grupo_funcoes a
INNER JOIN pbx_grupo b ON a.gp_id = b.gp_id
WHERE a.gp_id IN (SELECT clto_perfil_aplicacao_id
FROM pbx_controle_licenciamento
)
GROUP BY a.fun_id
ORDER BY a.fun_id";
$result = pg_query($conn, $query);
while ($row = pg_fetch_assoc($result)) {
$permissions[] = $row['fun_id'];
}
$permissions = existLicense($conn);
foreach ($menuUsuario as $key => $value) {
if (!in_array($value[0], $permissions) && ($value[0] != '112')) {
unset($menuUsuario[$key]);
@ -496,6 +482,7 @@ function VerificaCadastroMenu($conn) {
}
}
function CriaPerfilSincronizacao($conn) {
$result = true;
$query = "delete from pbx_grupo_funcoes where gp_id = (select gp_id from pbx_grupo where gp_nome = 'SincContaSenha' )";

162
include/util/funcoesLicenca.php

@ -145,7 +145,7 @@ function DownloadArquivo($nomeArquivo) {
*/
function validarLicenca($dbcon) {
$db = __getLicencaPBX($dbcon);
if (!$db) {
return false;
}
@ -216,18 +216,12 @@ function __writeFile($file, $dados = null, $append = true) {
########################################
function __getLicencaPBX($dbcon) {
$query = sprintf("SELECT clto_cnpj, clto_data_log, clto_server_registro, clto_contrato_numero FROM pbx_controle_licenciamento;");
$query = "SELECT clto_cnpj, clto_data_log, clto_server_registro, clto_contrato_numero FROM pbx_controle_licenciamento;";
$result = pg_query($dbcon, $query);
$res = pg_fetch_assoc($result);
return $res;
}
function __getLicencaVMais($document) {
$query = sprintf("SELECT clto_cnpj, clto_data_log, clto_server_registro, clto_contrato_numero FROM sip_controle_licenciamento WHERE clto_cnpj = '$document';");
$resp = __execSQLServer($query);
return $resp;
}
/**
* INSERE AS INFORMACOES PASSADAS NO ARQUIVO DE LICENCA PARA O BANCO DO SIMPLESIP
* @param type $dbcon
@ -250,11 +244,6 @@ function __validLicenca($dbcon, $data) {
'clto_licenca_pa',
'clto_licenca_pa_fixo',
'clto_licenca_ramal',
//'clto_licenca_supervisor',
//'clto_licenca_pesquisa',
//'clto_licenca_tarifador',
//'clto_licenca_mesaoperadora',
//'clto_licenca_manager_one',
'clto_server_registro',
'clto_contrato_numero',
'clto_data_registro',
@ -310,8 +299,9 @@ function __sendLicenca($dbcon, $data, $columns, $table, $where, $filter) {
}
function GetPerfilApl() {
$query = "SELECT * FROM sip_perfil_aplicacao";
$resp = __execSQLServer($query);
$query = "SELECT * FROM pbx_grupo WHERE gp_system = 1 AND gp_id <> 43";
$resp = pg_query($query);
$resp = pg_fetch_all($resp);
return $resp;
}
@ -384,129 +374,27 @@ function generateRandomKey() {
return bin2hex(random_bytes(10));
}
########################################
#### CONEXÃO VENDA+ ####
########################################
function __dadosLicenca($document, $contracts = []) {
$ctact = implode("','", $contracts);
$data = date('Y-m-d');
$query = "select a.CGC_CPF as cnpj,
d.Numero as contrato_numero,
upper(dbo.sip_remove_acentos(RazaoSocial)) razao_social,
upper(dbo.sip_remove_acentos(Fantasia)) nome_fantasia,
c.Descricao as atividade_empresa,
f.Cidade as cidade_empresa,
f.Uf as uf_empresa,
b.ContatoId as contato_id,
upper( dbo.sip_remove_acentos(b.PrimeiroNome)) as contato_nome,
lower( dbo.sip_remove_acentos(coalesce(b.Email1, b.Email2, Email))) as contato_email,
coalesce(b.Celular, b.TelefoneComercial, b.TelefoneResidencial, a.Telefone) as contato_fone,
0 as perfil_aplicacao_id,
dbo.FormataData(d.DataAssinatura) as contrato_assinatura,
dbo.FormataData(d.DataInicio) as contrato_inicio,
dbo.FormataData(d.DataFim) as contrato_fim,
isnull((
select sum( cast(ContratosItens.Quantidade as int))
from ContratosItens
inner join Produtos on Produtos.ProdutoId = ContratosItens.ProdutoId
inner join Linhas on Linhas.LinhaId = Produtos.LinhaId and Linhas.LinhaId = 32
inner join Divisoes on Divisoes.DivisaoId = Linhas.DivisaoId and Divisoes.DivisaoId = 11
where ContratosItens.ContratoId = d.ContratoId
and Produtos.Referencia like '%AG-P%(%PA)%' OR Produtos.Referencia like '%ISP-P%(%PA)%' OR Produtos.Referencia like '%SX-P%(%PA)%' OR Produtos.Referencia like '%SMT-P%(%PA)%'
),0) as licenca_pa,
isnull((
select sum( cast(ContratosItens.Quantidade as int))
from ContratosItens
inner join Produtos on Produtos.ProdutoId = ContratosItens.ProdutoId
inner join Linhas on Linhas.LinhaId = Produtos.LinhaId and Linhas.LinhaId = 32
inner join Divisoes on Divisoes.DivisaoId = Linhas.DivisaoId and Divisoes.DivisaoId = 11
where ContratosItens.ContratoId = d.ContratoId
and Produtos.Referencia like '%AG-R%(%RAMAL)%' OR Produtos.Referencia like '%ISP-R%(%RAMAL)%' OR Produtos.Referencia like '%SX-R%(%RAMAL)%' OR Produtos.Referencia like '%SMT-R%(%RAMAL)%'), 0) as licenca_ramal,
isnull ((select sum( cast(ContratosItens.Quantidade as int))
from ContratosItens
inner join Produtos on Produtos.ProdutoId = ContratosItens.ProdutoId
inner join Linhas on Linhas.LinhaId = Produtos.LinhaId and Linhas.LinhaId = 32
inner join Divisoes on Divisoes.DivisaoId = Linhas.DivisaoId and Divisoes.DivisaoId = 11
where ContratosItens.ContratoId = d.ContratoId
and Produtos.Referencia like '%LICENCA DE SUPERVISOR%'), 0) as licenca_supervisor,
0 as licenca_discador_preview,
0 as licenca_discador_powerdial,
0 as licenca_discador_predictive,
0 as licenca_pesquisa,
0 as licenca_tarifador,
0 as licenca_whatsapp,
0 as licenca_workflow,
0 as licenca_mesaoperadora,
0 as mult_channel,
0 as licenca_helpdesk,
0 as licenca_crm,
0 as licenca_manager_one,
0 as licenca_help_custom,
'$data' as data_registro,
0 as user_registro,
0 as server_registro,
'$data' as confirma_registro
from Clientes a
inner join Contatos b on b.ClienteId = a.ClienteId
inner join RamosDeAtividade c on c.RamoDeAtividadeId = a.RamoDeAtividadeId
inner join Contratos d on d.ClienteId = a.ClienteId
inner join ClientesEnderecos f on f.ClienteId = a.ClienteId and f.TipoDeEnderecoId = (select min(TipoDeEnderecoId) from ClientesEnderecos where ClienteId = a.ClienteId)
where a.AtivoCliente = 1
and b.ContatoPrincipal = 1
and d.status = 1
and a.CGC_CPF = '$document'
and d.Numero in('$ctact')
group by a.ClienteId,
d.ContratoId,
d.Numero,
b.ContatoId,
a.CGC_CPF,
upper(dbo.sip_remove_acentos(a.RazaoSocial)),
upper(dbo.sip_remove_acentos(a.Fantasia)),
c.Descricao,
dbo.FormataData(d.DataAssinatura),
dbo.FormataData(d.DataInicio),
dbo.FormataData(d.DataFim),
f.Cidade,
f.Uf,
dbo.NumToText(isnull(d.ValorMensal,0)),
upper( dbo.sip_remove_acentos(b.PrimeiroNome)),
coalesce(b.Celular,
b.TelefoneComercial,
b.TelefoneResidencial, a.Telefone),
lower(dbo.sip_remove_acentos(coalesce(b.Email1, b.Email2, Email)));";
$resp = __execSQLServer($query);
return $resp;
}
/**
* Realiza conexao com o banco do venda+
* @return type
* VERIFICA SE EXISTE LICENÇA CADASTRADA NO BANCO DE DADOS E RETORNA AS PERMISSÕES.
*/
function ConectaMssql() {
$dbhost = "vendas.simplesip.com.br";
$dbname = "VendaMaisDB_simplesip";
$user = "sa";
$passwd = "SimpleS_root";
$conn = mssql_connect($dbhost, $user, $passwd);
mssql_select_db($dbname);
return $conn;
}
function __execSQLServer($query, $return = true) {
$msql = ConectaMssql();
$result = mssql_query($query, $msql);
if ($return) {
$resp = [];
while ($data = mssql_fetch_array($result)) {
$resp[] = $data;
function existLicense($conn){
//verifica o grupo de permissoes de acordo com o tipo da licença
$query = "SELECT a.fun_id
FROM pbx_grupo_funcoes a
INNER JOIN pbx_grupo b ON a.gp_id = b.gp_id
WHERE a.gp_id IN (SELECT clto_perfil_aplicacao_id
FROM pbx_controle_licenciamento
)
GROUP BY a.fun_id
ORDER BY a.fun_id";
$result = pg_query($conn, $query);
if (!pg_num_rows($result) || !validarLicenca($conn)){
$permissions = array('1', '4');
} else {
while ($row = pg_fetch_assoc($result)) {
$permissions[] = $row['fun_id'];
}
}
mssql_close($msql);
return $resp ? $resp : $result;
}
return $permissions;
}
Loading…
Cancel
Save