<?php
declare(strict_types=1);

require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/functions.php';

$conn = db();

$where = [];
$params = [];
$types = '';

if (!empty($_GET['cod_vendedor'])) {
    $where[] = 'car.cod_vendedor = ?';
    $params[] = $_GET['cod_vendedor'];
    $types .= 's';
}
if (isset($_GET['dias_min']) && $_GET['dias_min'] !== '') {
    $where[] = 'car.dias_vencidos >= ?';
    $params[] = (int) $_GET['dias_min'];
    $types .= 'i';
}
if (isset($_GET['dias_max']) && $_GET['dias_max'] !== '') {
    $where[] = 'car.dias_vencidos <= ?';
    $params[] = (int) $_GET['dias_max'];
    $types .= 'i';
}

$whereSql = $where ? ('WHERE ' . implode(' AND ', $where)) : '';

$sql = "SELECT car.factura, c.nombre AS cliente, v.nombre AS vendedor, car.fecha_factura,
               car.valor_documento, car.saldo, car.dias_vencidos
        FROM cartera car
        LEFT JOIN clientes c ON c.codigo_cliente = car.codigo_cliente
        LEFT JOIN vendedores v ON v.cod_vendedor = car.cod_vendedor
        $whereSql
        ORDER BY car.dias_vencidos DESC, car.saldo DESC
        LIMIT 200000";

$stmt = $conn->prepare($sql);
if ($types !== '') {
    $stmt->bind_param($types, ...$params);
}
$stmt->execute();
$result = $stmt->get_result();

exportarCsv(
    'cartera_' . date('Ymd_His') . '.csv',
    ['Factura', 'Cliente', 'Vendedor', 'Fecha factura', 'Valor documento', 'Saldo', 'Días vencidos'],
    $result,
    function (array $r): array {
        return [
            $r['factura'], $r['cliente'], $r['vendedor'], $r['fecha_factura'],
            number_format((float) $r['valor_documento'], 2, ',', ''),
            number_format((float) $r['saldo'], 2, ',', ''),
            $r['dias_vencidos'],
        ];
    }
);
