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:
- Ativar a empresa "X" na troca de empresa
- 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.