ERP – Manutenção de Parcelas – Como fazer para que o identificador de regras FIN-501MPNRE00 consista todas as linhas da grid
Dúvida
Como fazer para que o identificador de regras FIN-501MPNRE00 consista todas as linhas da grid, no módulo Gestão de Contas a Pagar?
Solução
Para que o identificador de regras FIN-501MPNRE00 consista as informações a cada linha da tela, verifique o conceito da função e realize os passos a seguir:
Este identificador de regras utiliza a função "VerificaValor" conforme consta na documentação, esta função é universal e não tem a possibilidade de leitura de cada linha da grid:
A finalidade da função é única exclusivamente de indicar se, algum registro existe ou não na grid, conforme o que for passado de parâmetros na função. Veja exemplo abaixo:
Se (VerificaValor("GRIDTicket","NomeVariavel","ValorVariavel") = 1) // 1=> Significa que encontrou esse valor
Mensagem(retorna, "Encontrou");
Se (VerificaValor("GRIDTicket","NomeVariavel","ValorVariavel") = 0) // 0 => Significa que não encontrou esse valor
Mensagem(retorna, "Não encontrou");
1. Ou seja, diante do que foi contextualizado, para tratar a necessidade de verificar toda a grid é necessário utilizar a lógica para encontrar o valor = 1 e não o contrário;
1.1. No exemplo regra que segue abaixo, é feito um cursor buscando todos os registros da tabela de grupos com exceção do registro retornado da variável "xCodCrp" e do registro de código "999", isso está condicionado no select no comando "NOT IN".
Definir Numero VSCodFil;
Definir Alfa aCodFil;
Definir Alfa aCodCrp;
Definir Alfa xCodCrp;
Definir Alfa aMgs;
Definir Alfa vSQL;
Definir Alfa xCursor;
Definir Funcao DefinirCodCrp();
nCodEmp = CodEmp;
INTPARAALFA(VSCodFil,aCodfil);
Se(nCodEmp = 1)
Inicio
DefinirCodCrp();
vSQL = "SELECT CODCRP \
FROM E023CRP \
WHERE CODCRP NOT IN (:xCodCrp,'999')";
SQL_Criar(xCursor);
SQL_DefinirComando(xCursor,vSQL);
SQL_DefinirAlfa(xCursor,"xCodCrp",xCodCrp);
SQL_AbrirCursor(xCursor);
Enquanto (SQL_EOF(xCursor) = 0){
SQL_RetornarAlfa(xCursor,"CODCRP",aCodCrp);
Se (VerificaValor("GridPar","CODCRP",aCodCrp) = 1)
Inicio
aMgs = "Grupo de Contas a Pagar " + aCodCrp + " não pode ser utilizado para a Filial " + aCodFil + "." + " Deverá ser " + xCodCrp + " ou 999. Por Favor, Verifique.";
GeraLog(aMgs);
Fim;
SQL_Proximo(xCursor);
}
SQL_FecharCursor(xCursor);
SQL_Destruir(xCursor);
Fim;
Funcao DefinirCodCrp();
Inicio
Se(nCodfil <= 9)
Inicio
xCodCrp = "A0" + aCodFil;
Fim;
Senao
xCodCrp = "A" + aCodFil;
Fim;
1.2. Neste exemplo da regra podemos verificar que, enquanto o cursor achar registros da tabela E023CRP, é verificado na função "VerificaValor" se o registro existe (pois está sendo passado na condição o valor = 1). Desta forma, caso encontrar o valor, é retornado a mensagem, conforme abaixo:
1.3. Caso não existir nenhum valor retornado do cursor e validado na função "VerificaValor", então o processamento segue normalmente: