Files
agent_contas/docs/FIX_CVAL_AMOUNT_AND_HOMONYM_RESOLUTION_20260829.md

1.4 KiB

Correção CVAL: valores monetários e itens homônimos

Problema

O CVAL removia todo ponto de valores textuais antes da conversão decimal. Assim, valores vindos de JSON/backend como 19.99 eram interpretados como 1999, permitindo indevidamente ajustes como 29.98.

Além disso, quando o mesmo subject aparecia mais de uma vez na fatura, a validação escolhia a primeira ocorrência após a ordenação estrutural, sem usar o valor solicitado para desambiguar a cobrança correta.

Correção

  1. _parse_amount() agora reconhece formatos decimais e de agrupamento comuns, incluindo 19.99, R$ 19,99, 1.999,99 e 1,999.99.
  2. Quando existem múltiplos candidatos com o mesmo nome, o CVAL usa o valor solicitado como evidência:
    • prefere correspondência exata;
    • para ajuste parcial, escolhe a menor ocorrência que comporte o valor solicitado;
    • se nenhuma ocorrência comportar o valor, usa a maior ocorrência para que a regra genérica validated > item_amount bloqueie a solicitação.

Nenhuma regra específica para "dobro", "triplo" ou percentual foi adicionada.

Regressões cobertas

  • 19.99 permanece 19.99;
  • R$ 19,99 vira 19.99;
  • Tamboro Mensal em 14.99 e 19.99 + solicitação 19.99 resolve a ocorrência correta;
  • Tamboro Mensal em 14.99 e 19.99 + solicitação 29.98 é bloqueada com valor_ajuste_maior_que_item.