<?php
/**
 * API: Filtrar Ventas para Admin
 * Obtiene ventas y sus detalles agrupados
 */
header('Content-Type: application/json');
require_once '../../db_connection.php';

try {
    $input = json_decode(file_get_contents('php://input'), true);
    
    $sucursal_id = $input['sucursal_id'] ?? '';
    $fecha_inicio = $input['fecha_inicio'] ?? date('Y-m-d');
    $fecha_fin = $input['fecha_fin'] ?? date('Y-m-d');
    $solo_facturables = $input['solo_facturables'] ?? false;

    // Construcción de consulta
    $sql = "SELECT 
                v.id as venta_id,
                v.fecha_y_hora,
                v.total as total_venta,
                c.nombre as cliente_nombre,
                c.nit as cliente_nit,
                u.nombre as usuario_nombre,
                dv.id as detalle_id,
                dv.cantidad,
                dv.precio,
                dv.subtotal,
                dv.facturado,
                dv.exento_iva,
                dv.estado_factura,
                p.NombreComercial as producto_nombre,
                p.CodigoInterno as producto_codigo
            FROM ventas v
            JOIN detalle_ventas dv ON v.id = dv.venta_id
            JOIN productos p ON dv.producto_id = p.id
            LEFT JOIN clientes c ON v.cliente_id = c.id
            LEFT JOIN usuarios u ON v.usuario_id = u.id
            WHERE DATE(v.fecha_y_hora) BETWEEN ? AND ?";
    
    $params = [$fecha_inicio, $fecha_fin];

    if (!empty($sucursal_id)) {
        $sql .= " AND v.sucursal_id = ?";
        $params[] = $sucursal_id;
    }

    // Si pide solo facturables, filtramos ventas que tengan al menos un item para facturar
    // Opcional: filtrar también que no estén ya facturados (estado_factura != 'FACTURADO')
    if ($solo_facturables) {
        $sql .= " AND dv.facturado = 1"; 
    }

    $sql .= " ORDER BY v.fecha_y_hora DESC";

    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    $raw_data = $stmt->fetchAll();

    // Agrupar resultados por Venta
    $ventas = [];
    foreach ($raw_data as $row) {
        $id = $row['venta_id'];
        
        if (!isset($ventas[$id])) {
            $ventas[$id] = [
                'id' => $id,
                'fecha' => $row['fecha_y_hora'],
                'total' => $row['total_venta'],
                'cliente' => $row['cliente_nombre'] ?: 'Consumidor Final',
                'nit' => $row['cliente_nit'] ?: 'CF',
                'vendedor' => $row['usuario_nombre'],
                'items' => [],
                'tiene_pendientes_facturar' => false
            ];
        }

        // Agregar detalle
        $ventas[$id]['items'][] = [
            'id' => $row['detalle_id'],
            'nombre' => $row['producto_nombre'],
            'cantidad' => $row['cantidad'],
            'precio' => $row['precio'],
            'subtotal' => $row['subtotal'],
            'facturado' => (bool)$row['facturado'],
            'exento_iva' => (bool)$row['exento_iva'],
            'estado_factura' => $row['estado_factura']
        ];

        if ($row['facturado'] == 1 && $row['estado_factura'] !== 'FACTURADO') {
            $ventas[$id]['tiene_pendientes_facturar'] = true;
        }
    }

    echo json_encode(['success' => true, 'data' => array_values($ventas)]);

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'error' => $e->getMessage()]);
}
?>