<?php
// ===== MISMA RUTA QUE USA EL DASHBOARD =====
include('conexion.php');

// Verificar conexión
if (!$conexion) {
    die("❌ Error de conexión: " . mysqli_connect_error());
}

// Obtener parámetros de filtro
$search = isset($_GET['search']) ? mysqli_real_escape_string($conexion, $_GET['search']) : '';
$comprobante = isset($_GET['comprobante']) ? mysqli_real_escape_string($conexion, $_GET['comprobante']) : '';

// Obtener mensajes de éxito y error
$success = isset($_GET['success']) ? $_GET['success'] : '';
$error = isset($_GET['error']) ? $_GET['error'] : '';

// Consulta ventas con cliente
$sql = "SELECT ventas.*, cliente.nombre_razon AS cliente
        FROM ventas
        LEFT JOIN cliente ON ventas.id_cliente = cliente.id_cliente
        WHERE 1=1";

if(!empty($search)){
    $sql .= " AND (
        ventas.numero LIKE '%$search%' OR
        ventas.serie LIKE '%$search%' OR
        cliente.nombre_razon LIKE '%$search%'
    )";
}

if(!empty($comprobante)){
    $sql .= " AND ventas.tipo_comprobante = '$comprobante'";
}

$sql .= " ORDER BY ventas.id_venta DESC";
$resultado = mysqli_query($conexion, $sql);

if (!$resultado) {
    die("❌ Error en la consulta: " . mysqli_error($conexion));
}

$total_registros = mysqli_num_rows($resultado);

// ===== GUARDAR DATOS EN UN ARRAY PARA EL PDF =====
$datos_ventas = array();
while($fila = mysqli_fetch_assoc($resultado)) {
    $datos_ventas[] = array(
        'id' => $fila['id_venta'],
        'fecha' => date('d/m/Y', strtotime($fila['fecha'])),
        'cliente' => $fila['cliente'],
        'comprobante' => $fila['tipo_comprobante'],
        'serie' => $fila['serie'],
        'numero' => $fila['numero'],
        'total' => number_format($fila['total'], 2)
    );
}

// Volver a ejecutar la consulta para la tabla HTML
$sql = "SELECT ventas.*, cliente.nombre_razon AS cliente
        FROM ventas
        LEFT JOIN cliente ON ventas.id_cliente = cliente.id_cliente
        WHERE 1=1";

if(!empty($search)){
    $sql .= " AND (
        ventas.numero LIKE '%$search%' OR
        ventas.serie LIKE '%$search%' OR
        cliente.nombre_razon LIKE '%$search%'
    )";
}

if(!empty($comprobante)){
    $sql .= " AND ventas.tipo_comprobante = '$comprobante'";
}

$sql .= " ORDER BY ventas.id_venta DESC";
$resultado = mysqli_query($conexion, $sql);
?>

<!-- CONTENIDO DE listar.php -->
<div class="d-flex justify-content-between align-items-center mb-4">
    <h2><i class="fas fa-file-invoice-dollar me-2 text-primary"></i>Gestión de Ventas</h2>
    <div>
        <a href="Ventas/nuevo.php" class="btn btn-primary me-2">
            <i class="fas fa-plus me-1"></i> Nueva Venta
        </a>
        <a href="menu.php" class="btn btn-secondary">
            <i class="fas fa-arrow-left me-1"></i> Volver
        </a>
    </div>
</div>

<!-- MOSTRAR TOTAL DE REGISTROS -->
<?php if($total_registros > 0): ?>
<div class="alert alert-success">
    <i class="fas fa-check-circle me-2"></i>
    <strong>✅ Conexión exitosa!</strong> Se encontraron <strong><?php echo $total_registros; ?></strong> ventas.
</div>
<?php else: ?>
<div class="alert alert-warning">
    <i class="fas fa-exclamation-triangle me-2"></i>
    <strong>⚠️ No se encontraron ventas</strong> en la base de datos.
</div>
<?php endif; ?>

<!-- ===== MENSAJES DE ÉXITO ===== -->
<?php if($success == 'creado'): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
    <i class="fas fa-check-circle me-2"></i>
    ✅ Venta creada correctamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($success == 'actualizado'): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
    <i class="fas fa-check-circle me-2"></i>
    ✅ Venta actualizada correctamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($success == 'eliminado'): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
    <i class="fas fa-check-circle me-2"></i>
    ✅ Venta eliminada correctamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<!-- ===== MENSAJES DE ERROR ===== -->
<?php if($error == 'venta_no_encontrada'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    La venta no existe.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'error_eliminacion'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Error al eliminar la venta. Intenta nuevamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'campos_vacios'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Por favor, completa todos los campos del formulario.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'cliente_no_existe'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    El cliente seleccionado no existe.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'usuario_no_existe'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    El usuario seleccionado no existe.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'error_creacion'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Error al crear la venta. Intenta nuevamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'error_actualizacion'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Error al actualizar la venta. Intenta nuevamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'id_invalido'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    ID de venta inválido.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'duplicado'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    ⚠️ Ya existe una venta con ese comprobante y número.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<!-- Filtros y Búsqueda -->
<div class="table-container mb-4">
    <form method="GET" action="menu.php" id="filterForm" class="row g-3">
        <input type="hidden" name="page" value="ventas">
        
        <div class="col-md-4">
            <div class="input-group">
                <span class="input-group-text bg-white border-end-0">
                    <i class="fas fa-search text-muted"></i>
                </span>
                <input type="text" name="search" class="form-control search-box"
                    placeholder="Buscar por cliente, serie o número..."
                    value="<?php echo htmlspecialchars($search); ?>">
            </div>
        </div>
        <div class="col-md-3">
            <select name="comprobante" class="form-select filter-select" onchange="this.form.submit()">
                <option value="">Todos los comprobantes</option>
                <option value="Factura" <?php echo $comprobante == 'Factura' ? 'selected' : ''; ?>>Factura</option>
                <option value="Boleta" <?php echo $comprobante == 'Boleta' ? 'selected' : ''; ?>>Boleta</option>
                <option value="Ticket" <?php echo $comprobante == 'Ticket' ? 'selected' : ''; ?>>Ticket</option>
            </select>
        </div>
        <div class="col-md-2">
            <button type="submit" class="btn btn-primary w-100">
                <i class="fas fa-filter me-1"></i> Filtrar
            </button>
        </div>
        <div class="col-md-3 text-end">
            <?php if(!empty($search) || !empty($comprobante)): ?>
            <a href="menu.php?page=ventas" class="btn btn-outline-secondary">
                <i class="fas fa-times me-1"></i> Limpiar filtros
            </a>
            <?php endif; ?>
            <button type="button" class="btn btn-pdf" id="exportPdf">
                <i class="fas fa-file-pdf me-1"></i> Exportar PDF
            </button>
        </div>
    </form>

    <?php if(!empty($search) || !empty($comprobante)): ?>
    <div class="mt-3">
        <span class="badge-filter">
            <i class="fas fa-filter"></i> Filtros activos
            <?php if(!empty($search)): ?>
            <span class="badge bg-secondary">Buscar: <?php echo htmlspecialchars($search); ?></span>
            <?php endif; ?>
            <?php if(!empty($comprobante)): ?>
            <span class="badge bg-secondary">Comprobante: <?php echo htmlspecialchars($comprobante); ?></span>
            <?php endif; ?>
            <a href="menu.php?page=ventas" class="remove-filter">
                <i class="fas fa-times-circle"></i>
            </a>
        </span>
        <span class="text-muted ms-2">
            <i class="fas fa-info-circle"></i>
            <?php echo $total_registros; ?> registro(s) encontrado(s)
        </span>
    </div>
    <?php endif; ?>
</div>

<!-- Tabla de Ventas -->
<div class="table-container">
    <?php if($total_registros > 0): ?>
    <div class="table-responsive">
        <table class="table table-hover align-middle" id="tablaVentas">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Fecha</th>
                    <th>Cliente</th>
                    <th>Comprobante</th>
                    <th>Serie</th>
                    <th>Número</th>
                    <th>Total</th>
                    <th class="text-center">Acciones</th>
                </tr>
            </thead>
            <tbody>
                <?php while($fila = mysqli_fetch_assoc($resultado)): ?>
                <tr>
                    <td><span class="badge bg-secondary">#<?php echo $fila['id_venta']; ?></span></td>
                    <td>
                        <i class="fas fa-calendar me-1 text-muted"></i>
                        <?php echo date('d/m/Y', strtotime($fila['fecha'])); ?>
                    </td>
                    <td>
                        <div class="d-flex align-items-center">
                            <div class="avatar-sm me-2">
                                <i class="fas fa-user text-secondary"></i>
                            </div>
                            <strong><?php echo htmlspecialchars($fila['cliente']); ?></strong>
                        </div>
                    </td>
                    <td>
                        <span class="badge <?php 
                            echo $fila['tipo_comprobante'] == 'Factura' ? 'bg-primary' : 
                                ($fila['tipo_comprobante'] == 'Boleta' ? 'bg-info text-dark' : 'bg-secondary');
                        ?>">
                            <?php echo htmlspecialchars($fila['tipo_comprobante']); ?>
                        </span>
                    </td>
                    <td><?php echo htmlspecialchars($fila['serie']); ?></td>
                    <td><?php echo htmlspecialchars($fila['numero']); ?></td>
                    <td>
                        <span class="badge bg-success">
                            S/. <?php echo number_format($fila['total'], 2); ?>
                        </span>
                    </td>
                    <td class="text-center action-buttons">
                        <a href="Ventas/editar.php?id=<?php echo $fila['id_venta']; ?>"
                            class="btn btn-edit btn-sm" title="Editar">
                            <i class="fas fa-edit"></i>
                        </a>
                        <a href="Ventas/eliminar.php?id=<?php echo $fila['id_venta']; ?>"
                            class="btn btn-delete btn-sm"
                            onclick="return confirm('¿Estás seguro de eliminar esta venta?')"
                            title="Eliminar">
                            <i class="fas fa-trash-alt"></i>
                        </a>
                    </td>
                </tr>
                <?php endwhile; ?>
            </tbody>
        </table>
    </div>
    <?php else: ?>
    <div class="empty-state">
        <i class="fas fa-file-invoice"></i>
        <h5>No se encontraron ventas</h5>
        <p class="text-muted">Prueba ajustando los filtros de búsqueda</p>
        <a href="Ventas/nuevo.php" class="btn btn-primary mt-2">
            <i class="fas fa-plus me-1"></i> Crear nueva venta
        </a>
    </div>
    <?php endif; ?>
</div>

<script>
$(document).ready(function() {
    // Inicializar DataTable
    $('#tablaVentas').DataTable({
        language: {
            url: '//cdn.datatables.net/plug-ins/1.13.6/i18n/es-ES.json'
        },
        pageLength: 10,
        lengthMenu: [[5, 10, 25, 50, -1], [5, 10, 25, 50, "Todos"]],
        dom: '<"d-flex justify-content-between"lf>tip'
    });

    // ===== EXPORTAR PDF =====
    $('#exportPdf').click(function() {
        // DATOS DIRECTAMENTE DESDE PHP
        var datos = <?php echo json_encode($datos_ventas, JSON_UNESCAPED_UNICODE); ?>;
        
        console.log('Datos:', datos); // Ver en consola del navegador
        
        if(datos.length === 0) {
            alert('No hay datos para exportar');
            return;
        }

        // Verificar que jsPDF existe
        if (typeof window.jspdf === 'undefined') {
            alert('Error: jsPDF no está cargado. Por favor, recarga la página.');
            return;
        }

        // Preparar datos para el PDF
        var rows = [];
        for(var i = 0; i < datos.length; i++) {
            var d = datos[i];
            rows.push([
                d.id,
                d.fecha,
                d.cliente,
                d.comprobante,
                d.serie,
                d.numero,
                'S/. ' + d.total
            ]);
        }

        const { jsPDF } = window.jspdf;
        const doc = new jsPDF({
            orientation: 'landscape',
            unit: 'mm',
            format: 'a4'
        });

        doc.setFontSize(16);
        doc.setTextColor(0, 40, 85);
        doc.text('Lista de Ventas - Sistema Web', 14, 20);

        doc.setFontSize(10);
        doc.setTextColor(100);
        doc.text('Fecha de exportación: ' + new Date().toLocaleString(), 14, 27);

        // Filtros
        let filtros = [];
        <?php if(!empty($search)): ?>
        filtros.push('Búsqueda: <?php echo addslashes($search); ?>');
        <?php endif; ?>
        <?php if(!empty($comprobante)): ?>
        filtros.push('Comprobante: <?php echo addslashes($comprobante); ?>');
        <?php endif; ?>
        if(filtros.length > 0) {
            doc.setFontSize(9);
            doc.text('Filtros: ' + filtros.join(' | '), 14, 33);
        }

        var headers = ['ID', 'Fecha', 'Cliente', 'Comprobante', 'Serie', 'Número', 'Total'];
        
        doc.autoTable({
            head: [headers],
            body: rows,
            startY: 37,
            theme: 'grid',
            headStyles: {
                fillColor: [0, 40, 85],
                textColor: [255, 255, 255],
                fontSize: 10,
                halign: 'center'
            },
            bodyStyles: {
                fontSize: 9
            },
            columnStyles: {
                0: { cellWidth: 15, halign: 'center' },
                1: { cellWidth: 25, halign: 'center' },
                2: { cellWidth: 40 },
                3: { cellWidth: 25, halign: 'center' },
                4: { cellWidth: 20, halign: 'center' },
                5: { cellWidth: 20, halign: 'center' },
                6: { cellWidth: 25, halign: 'center' }
            },
            margin: { left: 14, right: 14 }
        });

        var pageCount = doc.internal.getNumberOfPages();
        for (var i = 1; i <= pageCount; i++) {
            doc.setPage(i);
            doc.setFontSize(8);
            doc.setTextColor(150);
            doc.text('Sistema Web - Página ' + i + ' de ' + pageCount, 14, doc.internal.pageSize.height - 10);
        }

        doc.save('ventas_' + new Date().toISOString().slice(0,10) + '.pdf');
    });
});
</script>