<?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['desde'])) {
    $where[] = 'r.fecha_recaudo >= ?';
    $params[] = $_GET['desde'];
    $types .= 's';
}
if (!empty($_GET['hasta'])) {
    $where[] = 'r.fecha_recaudo <= ?';
    $params[] = $_GET['hasta'];
    $types .= 's';
}
if (!empty($_GET['cod_vendedor'])) {
    $where[] = 'r.cod_vendedor = ?';
    $params[] = $_GET['cod_vendedor'];
    $types .= 's';
}

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

$sql = "SELECT r.fecha_recaudo, r.nombre_cliente, v.nombre AS vendedor, r.factura, r.valor_recaudo, r.tipo_pago
        FROM recaudos r
        LEFT JOIN vendedores v ON v.cod_vendedor = r.cod_vendedor
        $whereSql
        ORDER BY r.fecha_recaudo DESC
        LIMIT 200000";

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

exportarCsv(
    'recaudos_' . date('Ymd_His') . '.csv',
    ['Fecha', 'Cliente', 'Vendedor', 'Factura', 'Valor recaudo', 'Tipo de pago'],
    $result,
    function (array $r): array {
        return [
            $r['fecha_recaudo'], $r['nombre_cliente'], $r['vendedor'], $r['factura'],
            number_format((float) $r['valor_recaudo'], 2, ',', ''),
            $r['tipo_pago'] ?: '-',
        ];
    }
);
