ERP – Solicitação de Compra – Número da solicitação de compras está divergente da última solicitação gerada na regra de consistência
Incidente
Quando o identificador de regras EST-405CONSI01 está ativo, ao tentar incluir uma solicitação e o depurador do identificador estiver ativo, ao verificar o número da solicitação está divergente da última solicitação gerada.
Apesar de no banco a última solicitação ser o código 10811925, está trazendo o valor 10811930 na regra.
Causa
Confirmamos que a diferença entre o número da solicitação e o valor mostrado na regra é algo somente visual e não impacta nas comparações feitas dentro da regra.
Observação
Vamos a seguir exemplificar:
Temos o identificador EST-405CONSI02 (mas poderia ser o EST-405CONSI01 que o comportamento é o mesmo) com a seguinte regra:
Temos então a solicitação com o número 10811925. Ao ser executado o identificador, temos o seguinte comportamento:
Temos as variáveis xnumsol = 10811925 e xnumsol2 = 10811930.
Essas serão base para as comparações.
Após carregar todas as variáveis, mesmo sendo carregadas com valores diferentes, visualmente todas estão com o mesmo valor.
Para então comprovar que isso é somente visual, utilizaremos os "IFs" de comparações.
No primeiro IF, já é possível ver que a comparação é verdadeira, então as variáveis VsNumSol e xnumsol estão
iguais, porém aqui não sabemos de foi comparado 10811925 ou 10811930.
No segundo IF, a comparação é falsa, então já podemos confirmar mesmo mostrando as variáveis iguais, foi comparado 10811925 com 10811930.
No terceiro, a comparação é verdadeira, comparando que está sendo comparado 10811925 com 10811925
No quarto IF, a comparação é false, comprando que está sendo comparado 10811925 com 10811930.
Ao final, para mostrar de forma correta, é necessário para VISUALIZAR O VALOR CORRETO, converter o valor para Alfa, assim será mostrado correto.
Importante
Isso ocorre devido ao número em questão do número ser muito alto e não impacta em nada as comparações. Fica somente no âmbito visual.
Atenção
A seguir temos o exemplo da regra, caso desejem testar.
definir numero VsNumSol;
definir numero xnumsol;
definir numero xnumsol2;
Definir Alfa ValfAux;
VSNumSol = E405SOL.NUMSOL;
xnumsol = 10811925;
xnumsol2 = 10811930;
@aqui as duas estão iguais e entra no if, porém ainda não sabemos se está comparando 10811925 ou 10811930@
se (VSNumSol = xnumsol)
inicio
x=z;
fim;
@aqui as duas estão diferentes pois não entra no if, então já podemos confirmar que esta sendo comparado 10811925 com 10811930@
se (VSNumSol = xnumsol2)
inicio
x=z;
fim;
@aqui temos a conclusão, pois comparando direto VSNumSol com 10811925 entra no if, então confirmamos @
@que mesmo visualmente VSNumSol mostrando 10811930, o seu real valor é 10811925@
se (VSNumSol = 10811925)
inicio
x=z;
fim;
@aqui não entra no IF, pois os valores estão diferentes @
se (VSNumSol = 10811930)
inicio
x=z;
fim;
@aqui convertemos para String somente para mostrar que dessa forma, o valor é mostrado corretamente@
IntParaAlfa (E405SOL.NUMSOL,VAlfAux);
X=Y;