1.4 KiB
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
_parse_amount()agora reconhece formatos decimais e de agrupamento comuns, incluindo19.99,R$ 19,99,1.999,99e1,999.99.- 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_amountbloqueie a solicitação.
Nenhuma regra específica para "dobro", "triplo" ou percentual foi adicionada.
Regressões cobertas
19.99permanece19.99;R$ 19,99vira19.99;Tamboro Mensalem14.99e19.99+ solicitação19.99resolve a ocorrência correta;Tamboro Mensalem14.99e19.99+ solicitação29.98é bloqueada comvalor_ajuste_maior_que_item.