Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  • 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.

03. PRÉ-REQUISITOS

  • 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.

...