# 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`.