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

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

$sql = "SELECT vd.factura, vd.fecha, c.nombre AS cliente, pr.titulo AS producto, vd.cantidad,
               vd.precio, vd.valor_neto, vd.valor_iva, v.nombre AS vendedor
        FROM ventas_detalle vd
        LEFT JOIN clientes c ON c.codigo_cliente = vd.codigo_cliente
        LEFT JOIN productos pr ON pr.codigo = vd.codigo_producto
        LEFT JOIN vendedores v ON v.cod_vendedor = vd.cod_vendedor
        $whereSql
        ORDER BY vd.fecha DESC, vd.factura
        LIMIT 200000";

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

exportarCsv(
    'ventas_' . date('Ymd_His') . '.csv',
    ['Factura', 'Fecha', 'Cliente', 'Producto', 'Cantidad', 'Precio', 'Valor neto', 'Valor IVA', 'Vendedor'],
    $result,
    function (array $r): array {
        return [
            $r['factura'], $r['fecha'], $r['cliente'], $r['producto'],
            number_format((float) $r['cantidad'], 2, ',', ''),
            number_format((float) $r['precio'], 2, ',', ''),
            number_format((float) $r['valor_neto'], 2, ',', ''),
            number_format((float) $r['valor_iva'], 2, ',', ''),
            $r['vendedor'],
        ];
    }
);
