...
Contexto
Ao cadastrar uma verba no valor de R$0,01 e consumi-la, ao tentar gerar um acordo promocional por meio da aplicação “Verba de Bonificação sem Acordo Promocional” com os Indicadores Agrupar o Valor do Acordo Por Fornecedor e/ou Família marcados, o sistema apresenta a mensagem:
“Houve divergência de valores na geração dos acordos. Não foi possível realizar a geração dos acordos.”
Com isso, a geração do acordo não é concluída.
Causa raiz
Esse comportamento ocorre devido à validação implementada na função pkg_Mrl_VerbaSellOutApuracao.fValidaApuracao, que compara os valores vnVlrTotalAcordoGerado e vnVlrTotalAcordoGeradoAux.
Como o valor da verba é inferior a R$0,01, ambos os campos são definidos como NULL. Nesse cenário, a condição NULL = NULL não é satisfeita, impedindo que a variável vsApuracaoOK seja definida como 'S'. Consequentemente, o sistema atribui vsApuracaoOK = 'N' e retorna a mensagem de erro.
Impacto
O sistema não permite a geração do acordo promocional quando o valor da verba é inferior a R$0,01Além disso, o sistema possui um trava ao selecionar a linha com valor de acordo menor que R$0,01, porém ao realizar a geração agrupada, está verificação não é realizada.
Cadastro de verba
Criar uma verba de bonificação marcada como “verba sem acordo”.
Definir um valor unitário da verba inferior a R$0,01.
Execução de venda
Realizar uma venda em que a quantidade utilizada multiplica-se pelo valor unitário da verba, de forma que o valor total de verba (vlrunitverba × qtdutilizada) não ultrapasse R$0,01.
Geração do acordo
Realizar a geração do acordo promocional por meio da pela aplicação “Verba Verba de Bonificação sem Acordo Promocional”, marcando as linhas com uma Acordo Promocional, selecionando um dos indicadores Agrupar o Valor do Acordo por Fornecedor e/ou Família, para as linhas em que a quantidade total a ser gerada seja inferior a R$0,01.
04. SOLUÇÃO
Tratamento de variáveis nulas
Aplicado NVL(0) a todas as variáveis utilizadas na validação do valor do acordo gerado na função pkg_Mrl_VerbaSellOutApuracao.fValidaApuracao.
Essa alteração garante que a condição seja corretamente atendida mesmo quando a comparação resultar em NULL = NULL.
Validação de valor mínimo
Incluída uma validação adicional na procedure pkg_Mrl_VerbaSellOutApuracao.SP_ApuraVerba.
Caso o valor do acordo gerado seja inferior a R$0,01, o sistema exibirá a mensagem:
“O valor total do acordo a ser gerado não deve ser inferior a R$0,01!”Não é possível gerar acordo para valores menores que R$0.01. Não foi possível realizar a geração dos acordos.
Abrangência da alteração
A implementação foi realizada diretamente no objeto de banco de dados.
Dessa forma, o bloqueio é aplicado tanto nas execuções realizadas via aplicação quanto nos processos executados por job.
...