<?php
/**
 * SAC 2026 - Kernel V4.1.94 MC/MB
 * Procesador de Comisiones Banplus desde Estado de Cuenta CSV
 */

require_once 'config.php';

if (!isset($_SESSION['user_id'])) {
    response(['success' => false, 'error' => 'Sesión no iniciada'], 401);
}

if (!isset($_FILES['file'])) {
    response(['success' => false, 'error' => 'No se cargó ningún archivo'], 400);
}

$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");

if (!$handle) {
    response(['success' => false, 'error' => 'No se pudo abrir el archivo'], 500);
}

$commissions = [];
$totalAmount = 0;
$rowCount = 0;

// Usamos fgetcsv para mayor robustez con el delimitador punto y coma
while (($data = fgetcsv($handle, 0, ';')) !== false) {
    $rowCount++;
    if ($rowCount <= 2) continue; // Saltar encabezados (Cuenta y Títulos)

    if (count($data) < 10) continue;

    $fecha = trim($data[0]);
    $referencia = trim($data[1], " '");
    
    // Convertir a UTF-8 para evitar errores en json_encode con caracteres especiales
    $descripcion = mb_convert_encoding(trim($data[3]), 'UTF-8', 'UTF-8, ISO-8859-1, Windows-1252');
    $motivo = mb_convert_encoding(trim($data[5]), 'UTF-8', 'UTF-8, ISO-8859-1, Windows-1252');
    
    // Limpiar montos (vienen como +123,45 o +0,00)
    $debitoStr = str_replace(['+', '.', ','], ['', '', '.'], trim($data[6]));
    $debito = floatval($debitoStr);

    // Criterio de comisión: Basado en patrones de descripción específicos solicitados por el usuario
    $esComision = (
        strpos($descripcion, 'Nota Debito Cuenta Cte.-Cargos') !== false ||
        strpos($descripcion, 'Nota Debito Cta. Cte.- sin Aut.Sobregiro') !== false
    );

    if ($esComision && $debito > 0) {
        $commissions[] = [
            'date' => $fecha,
            'ref' => $referencia,
            'desc' => $descripcion,
            'reason' => $motivo,
            'amount' => $debito
        ];
        $totalAmount += $debito;
    }
}

fclose($handle);

response([
    'success' => true,
    'commissions' => $commissions,
    'total' => $totalAmount,
    'count' => count($commissions)
]);
?>