ERP – Mercado – Diferimento de 100%
Incidente
No módulo de Mercado, ao realizar o cálculo de diferimento através das telas F140PRE ou F140LOT, juntamente com os identificadores de regras COM-000ALSTR01 e VEN-000ALICM01, em determinado momento não traz o diferimento.
Causa
Este incidente ocorre, pois na primeira vez que o sistema executa o identificador de regras COM-000ALSTR01 o sistema ainda não possui valor para a variável VsPerIcm, pois não carregou a sugestão da filial. Nessa execução a regra do usuário não sugere CodStr ao sistema, pois o conjunto de condições implementada na regra não é atendido.
Para a segunda execução do identificador de regras COM-000ALSTR01, o sistema já carregou a sugestão do percentual de ICMS da filial e a variável VsPerIcm possui valor. Nessa execução a regra sugere CodStr ao sistema, pois o conjunto de condições implementada na regra é atendido, retornando Situação Tributária 051.
Após isso, é executado o identificador de regras VEN-000ALICM01 que retorna para o sistema o valor do % Diferimento da situação tributária 051. O mesmo ocorre na segunda chamada do identificador de regras VEN-000ALICM01.
O sistema verifica que o item contém % Diferimento igual a 100%, e por isso zera o percentual, base e valor de ICMS deste item.
Na terceira execução do identificador de regras COM-000ALSTR01 o valor da variável VsPerIcm é = 0, o que está correto, pois o item tem Diferimento = 100%. Nessa execução a regra não sugere CodStr pois o conjunto de condições implementada não é atendido (na regra está sendo verificado o percentual de icms, que nesse ponto vai estar 0-zero).
Com este retorno da 3ª execução o sistema deixa de calcular o % Diferimento.
Nesse ponto acredita-se que deve ser feito um tratamento diferente por parte do cliente. Não é necessário verificar o percentual de ICMS se toda lógica para sugerir ou não o Diferimento levar como base a UF. Realizando esse tipo de alteração a lógica ficará mais robusta, pois a UF nunca varia durante o calculo da nota, diferente do percentual de ICMS, que pode ser zerado caso houver diferimento.
Importante
O fato de que em algumas telas essa situação não ocorre se dá pela condição da própria tela, onde o identificador é chamados várias vezes em determinada tela e menos em outras.