diff --git a/app/Services/BancolombiaParser.php b/app/Services/BancolombiaParser.php index e43acf4..3796349 100755 --- a/app/Services/BancolombiaParser.php +++ b/app/Services/BancolombiaParser.php @@ -142,11 +142,11 @@ class BancolombiaParser } /** - * Extrae el valor monetario como string limpio, ej: "1000.00" + * Extrae el valor monetario como entero limpio sin decimales (ej: "1000"). + * $1,000.00 → "1000" | $50.000,00 → "50000" */ private static function extraerValor(string $text): string { - // Patrones en orden de especificidad $patterns = [ '/por\s+\$\s*([0-9][0-9.,]*)/iu', '/valor[:\s]+\$?\s*([0-9][0-9.,]*)/iu', @@ -156,12 +156,23 @@ class BancolombiaParser ]; foreach ($patterns as $pat) { if (preg_match($pat, $text, $m)) { - return trim($m[1]); + return self::normalizarValor(trim($m[1])); } } return ''; } + /** + * Convierte "1,000.00" o "1.000,00" a "1000" (entero limpio). + */ + private static function normalizarValor(string $raw): string + { + // Eliminar parte decimal: ,XX o .XX al final (pesos colombianos no tienen centavos reales) + $raw = preg_replace('/[.,]\d{1,2}$/', '', $raw); + // Eliminar separadores de miles (comas, puntos) + return preg_replace('/[^0-9]/', '', $raw); + } + /** * Elimina completamente bloques