ERP – Cadastros – Recurso de abrangência para usuários não funciona em rotina de Notas Fiscais de Entrada e de Inventário
Incidente
Ao definir abrangências para um usuário XX em uma filial específica, em algumas rotinas o recurso de abrangência para usuários não funciona.
- Na tela F440GNE_SRNF - Suprimentos / Gestão de Recebimento / Notas Fiscais de Entrada / Agrupada (Nota Fiscal de Entrada Agrupada), ao inserir o item e passar pelo campo depósito, ao clicar na lupa para informar o depósito, traz todos os depósitos da base, mas o usuário somente poderia ver o depósito da filial definida na sua abrangência;
- Na tela F220DAI_SEIV - Suprimentos / Gestão de Estoques / Inventário / Diferenças/Acertos (Finalização do Processo de Inventário - Acertos), ao clicar na lupa para informar o depósito, traz todos os depósitos da base, mas o usuário somente poderia ver o depósito da filial definida na sua abrangência.
Causa
Nas telas de Pedidos, Nota Fiscal de saída, Nota Fiscal de entrada, e onde na pesquisa de registro do campo de depósito a mesma é feita na tabela E210EST, a abrangência de usuário não terá influência, uma vez que na tabela E210EST não existe código de filial.
A abrangência só terá funcionalidade quando a pesquisa de registro é feita diretamente na tabela E205DEP.
Solução
Para os casos onde a abrangência não tem influência, realize os passos a seguir:
1. Cadastre o identificador de regras GER-000SELEF01 ou GER-000SELEF02, na tela F098REG - Cadastros / Identificadores e parâmetros / Identificador de Regras (Cadastro de Identificador de Regras);
Clique aqui para acessar a documentação completa do identificador de regras GER-000SELEF01
Clique aqui para acessar a documentação completa do identificador de regras GER-000SELEF02
2. Utilize a função SetarFiltroSql na customização para realizar os filtros necessários para os usuários;
Clique aqui para acessar a documentação completa da função SetarFiltroSql.
Observação:
Seguem dois exemplos de regras de utilização do identificador:
@PRODUTOS INATIVOS@
Definir Alfa vAlfCodEmp;
Definir Alfa vFiltro;
IntParaAlfa(CodEmp,vAlfCodEmp);
vFiltro = SELECT CODPRO FROM E075PRO WHERE CODEMP = + vAlfCodEmp+ And SitPro='A';
SetarFiltroSql(E075PRO, CODPRO, vFiltro);
@Filtra os clientes/pedidos de acordo com o representante ligado ao usuário, como ocorre no Sapiens WEB.@
@Identificador 000SELEF01 - Módulo: GER@
Definir Cursor Cur;
Definir Alfa vAlfCodEmp;
Definir Alfa vAlfCodRep;
Definir Alfa vFiltro;
Definir Numero vCodUsu;
Definir Numero vCodRep;
IntParaAlfa(CodEmp,vAlfCodEmp);
vCodUsu = CodUsu;
vCodRep = 0;
Cur.SQL SELECT CODREP FROM E099USU WHERE CODUSU = :vCodUsu;
Cur.AbrirCursor();
Se (Cur.Achou)
vCodRep = CUR.CODREP;
Cur.FecharCursor();
IntParaAlfa(vCodRep,vAlfCodRep);
Se (vCodRep <> 0){
vFiltro = SELECT CODCLI FROM E085CLI WHERE CODCLI IN (SELECT CODCLI FROM E085HCL WHERE CODREP = + vAlfCodRep + );
SetarFiltroSql(E085CLI,CODCLI,vFiltro);}
Senao
SetarFiltroSql(E085CLI,CODCLI,);