fix(pago): valor $1,000.00 → 100000 en vez de 1000 causaba sin_coincidencia
preg_replace('/[^0-9]/', '', '1,000.00') = '100000' porque el .00 aporta 00.
Fix: primero quitar la parte decimal (/[.,]\d{1,2}$/) antes de limpiar separadores.
Aplicado en BancolombiaParser::normalizarValor() y como doble defensa en PagoValidadorService.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
595c75837f
commit
811b360939
@@ -56,7 +56,10 @@ class PagoValidadorService
|
||||
Log::info("[PagoValidador] Correo #{$i} parseado: " . json_encode($datosCorreo));
|
||||
|
||||
// ── 1. Valor ────────────────────────────────────────────
|
||||
$valorCorreo = (int) preg_replace('/[^0-9]/', '', (string) ($datosCorreo['valor'] ?? '0'));
|
||||
// Normalizar: "1,000.00" → 1000 (strip decimals first, then non-digits)
|
||||
$valorRaw = (string) ($datosCorreo['valor'] ?? '0');
|
||||
$valorRaw = preg_replace('/[.,]\d{1,2}$/', '', $valorRaw); // quitar decimales
|
||||
$valorCorreo = (int) preg_replace('/[^0-9]/', '', $valorRaw);
|
||||
|
||||
if ($valorIA <= 0 || $valorCorreo <= 0) {
|
||||
Log::info("[PagoValidador] Correo #{$i}: valor inválido (ia={$valorIA} correo={$valorCorreo})");
|
||||
|
||||
Reference in New Issue
Block a user