Identificador de Regra

GER-000SELEF01

Módulo: GER - Gerais.

Finalidade: disponibilizar um ponto para execução de regras após a troca de empresa ou filial ativa.

Características: esse identificador é chamado em todos os momentos onde a empresa/filial ativa são trocadas, não somente pela tela "FSelEmp" ou "FSelFil". Após o logon de um usuário ocorre uma troca de empresa/filial.

Importante

Se esse identificador estiver ativo somente numa empresa "X", ele será executado quando:

  1. Ativar a empresa "X" na troca de empresa
  2. Trocar de filial, se a empresa "X" for a ativa

Para que ele seja executado na troca de qualquer empresa ou filial deve-se ativá-lo em todas as empresas.

É possível que os filtros aplicados via identificador não sejam aplicados quando é feita uma inclusão de um registro na tabela que foi filtrada. Esse recurso deve ser ativado através do retorno variável GerAValIns do tipo alfa, com o valor "N".

O comportamento normal do sistema é de não incluir registros nas tabelas que tenham um filtro aplicado e a informação do novo registro entra nesse filtro. Os filtros são ignorados no momento de uma inclusão. Após a inclusão, quando o usuário navegar nos demais registros, o novo registro não ficará mais visível, pois os filtros são aplicados, mas no momento da inclusão, ele será permitido. Isso aplica-se para todas as tabelas onde há um filtro por meio do identificador GER-000SELEF01 e da função de programador SetarFiltroSQL, não sendo possível definir o comportamento individualmente por tabela.

Quando a função de programador for utilizada no identificador, somente será possível realizar uma troca de empresa/filial saindo do sistema e logando na empresa/filial desejada, pois os filtros indicados na função de programador não são zerados quando a troca de empresa/filial ocorre através do menu do ERP.

O identificador também permite filtrar automaticamente determinadas derivações do modelo na tela Modelo (Composição do Produto/Serviço) (F700CMC). Para isso, é necessário incluir a função de programador SetarFiltroSQL na regra do identificador. Informe a tabela E084CMD - Máscara de Derivações, o campo CodDer e um filtro para mostrar as derivações desejadas. Exemplo: SetarFiltroSql("E084CMD", "CodDer", Filtro).

Tela: troca de empresa/filial e F700CMC.

Transação: não se aplica.

Regra:

Definir Alfa alfAux;
Definir Alfa msgAux;

Definir Alfa ENTER;
CaracterParaAlfa(13, ENTER);

IntParaAlfa(CodUsu, alfAux);
msgAux = "Usuário: " + alfAux + " (" + NomUsu + ")" + ENTER;
IntParaAlfa(CodEmp, alfAux);
msgAux = msgAux + "Empresa: " + alfAux + " (" + Empresa + ")" + ENTER;
IntParaAlfa(CodFil, alfAux);
msgAux = msgAux + "Filial: " + alfAux + " (" + Filial + ")";

msgAux = msgAux + "[&OK]";
Mensagem(retorna, msgAux);


***********************************************************
Exemplo de Regra para utilização do SetarFiltroSql:

@ Para definir um filtro onde somente podem ser vistos clientes que tenham definição para a empresa ativa @
Definir Alfa vAlfCodEmp;
Definir Alfa vFiltro;
IntParaAlfa(CodEmp, vAlfCodEmp);
vFiltro = "SELECT CODCLI FROM E085HCL WHERE CODEMP = " + vAlfCodEmp;
SetarFiltroSql("E085CLI", "CodCli", vFiltro);

@ Para limpar o filtro da tabela de cliente, campo código @
SetarFiltroSql("E085CLI", "CodCli", "");

************************************************************

@ Para definir um filtro onde retorne somente derivações de produtos ativas@
SetarFiltroSql("E075DER","SITDER","'A'");

Importante

Caso haja a necessidade de realizar o tratamento de filtros de uma tabela, porém a tabela que está criando o registro é a outra, é preciso considerar as duas tabelas na regra. Considerando o exemplo do cadastro do cliente, tela F085CAD e ­tabela E085CLI, onde a intenção é filtrar os dados baseado em informações das definições do cliente (tabela E085HCL), a regra deve tratar a busca dos dados em ambas as tabelas, conforme o exemplo de regra que segue abaixo, onde é filtrado os clientes que possuem um determinado representante vinculado.

VFILTRO = "SELECT CODCLI FROM E085HCL WHERE E085HCL.CODREP = 4 UNION SELECT CODCLI FROM E085CLI WHERE NOT EXISTS "+ "(SELECT 1 FROM E085HCL WHERE E085CLI.CODCLI = E085HCL.CODCLI )";

SETARFILTROSQL("E085CLI", "CODCLI", VFILTRO);

Variáveis disponibilizadas:

Nome Tipo Observações Retorna Valor
GerAValIns ALFA Opcional, e quando usada com o valor "N", indica que os filtros usados na função de programador SetarFiltroSQL não serão aplicados quando é feita a inclusão de um registro na tabela que foi filtrada S

Atenção

Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.

Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.

Este artigo ajudou você?