Ajustes conforme relatorio de testes 2026-08-27
This commit is contained in:
24
docs/FIX_CVAL_AMOUNT_AND_HOMONYM_RESOLUTION_20260829.md
Normal file
24
docs/FIX_CVAL_AMOUNT_AND_HOMONYM_RESOLUTION_20260829.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user