<?php
declare(strict_types=1);

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

$conn = db();

[$whereSql, $params, $types] = construirFiltrosUtilidadVentas('');

$sql = "SELECT vd.fecha, v.cod_regional, v.nombre AS vendedor, c.ciudad, c.ruta, c.barrio,
               p.categoria, p.subcategoria, p.marca, vd.cantidad, vd.valor_neto,
               c.nombre AS cliente, c.tipologia, c.nombre_negocio AS negocio, p.titulo AS nombre,
               vd.valor_iva, vd.factura,
               CASE WHEN car.factura IS NULL OR car.saldo <= 0 THEN 'CANCELADA' ELSE 'PENDIENTE' END AS estadofactura
        FROM ventas_detalle vd
        LEFT JOIN clientes c ON c.codigo_cliente = vd.codigo_cliente
        LEFT JOIN productos p ON p.codigo = vd.codigo_producto
        LEFT JOIN vendedores v ON v.cod_vendedor = vd.cod_vendedor
        LEFT JOIN cartera car ON car.factura = vd.factura
        $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(
    'utilidad_ventas_' . date('Ymd_His') . '.csv',
    ['Fecha', 'Cod Regional', 'Vendedor', 'Ciudad', 'Ruta', 'Barrio', 'Categoria', 'Subcategoria', 'Marca',
     'Cantidad', 'Valor neto', 'Cliente', 'Tipologia', 'Negocio', 'Nombre', 'Valor IVA', 'Factura', 'Estado factura'],
    $result,
    function (array $r): array {
        return [
            $r['fecha'], $r['cod_regional'], $r['vendedor'], $r['ciudad'], $r['ruta'], $r['barrio'],
            $r['categoria'], $r['subcategoria'], $r['marca'],
            number_format((float) $r['cantidad'], 2, ',', ''),
            number_format((float) $r['valor_neto'], 2, ',', ''),
            $r['cliente'], $r['tipologia'], $r['negocio'], $r['nombre'],
            number_format((float) $r['valor_iva'], 2, ',', ''),
            $r['factura'], $r['estadofactura'],
        ];
    }
);
