<?php
require_once '../includes/config.php';
require_once '../includes/db.php';
//require_once '../includes/theme_only.php';



session_start();
// Verificar si el usuario está logueado y tiene los roles permitidos
if (!isset($_SESSION['usuario_id']) || 
    empty($_SESSION['usuario_id']) || 
    !in_array($_SESSION['rol'], ['admin', 'registrador_de_productos'])) {
    header('Location: ../login.php');
    exit;
}

$db = new Database();
// Obtener configuración del sitio
$config = $db->query("SELECT favicon, logo FROM configuracion WHERE id = 1")->fetch();
$favicon = $config['favicon'] ? '../uploads/config/' . $config['favicon'] : '';
$logo = $config['logo'] ? '../uploads/config/' . $config['logo'] : '';

// Procesar formulario
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ob_start();
    
    try {
        // Validar si el código ya existe
        $codigo = $_POST['codigo'] ?? '';
        $checkCodigo = $db->query("SELECT id FROM productos WHERE codigo = ?", [$codigo])->fetch();
        if ($checkCodigo) {
            throw new Exception("El código del producto ya existe en la base de datos");
        }

        // Crear directorio si no existe
        $uploadDir = '../uploads/productos/';
        if (!file_exists($uploadDir)) {
            mkdir($uploadDir, 0777, true);
        }
        
        // Procesar imágenes
        $imagenes = [];
        if (isset($_FILES['imagenes']) && is_array($_FILES['imagenes']['name'])) {
            $total = count($_FILES['imagenes']['name']);
            $maxImages = 6;
            
            for ($i = 0; $i < min($total, $maxImages); $i++) {  // Corregido el operador de comparación
                if ($_FILES['imagenes']['error'][$i] === UPLOAD_ERR_OK && 
                    !empty($_FILES['imagenes']['name'][$i])) {  // Verificar que el nombre no esté vacío
                    $tmpName = $_FILES['imagenes']['tmp_name'][$i];
                    $fileName = $_FILES['imagenes']['name'][$i];
                    $extension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
                    
                    // Validar extensión
                    if (in_array($extension, ['jpg', 'jpeg', 'png', 'gif'])) {
                        $newName = uniqid('prod_') . '.' . $extension;
                        $uploadPath = $uploadDir . $newName;
                        
                        if (move_uploaded_file($tmpName, $uploadPath)) {
                            $imagenes[] = $newName;
                        } else {
                            throw new Exception("Error al subir la imagen: " . $fileName);
                        }
                    }
                }
            }
        }

        // Asegurar que el array de imágenes sea válido incluso si está vacío
        $imagenesJson = json_encode($imagenes);
        if ($imagenesJson === false) {
            throw new Exception("Error al codificar las imágenes en JSON");
        }

        // Función auxiliar para limpiar valores numéricos
        function limpiarNumero($valor) {
            // Eliminar formato de moneda y convertir a float
            return floatval(str_replace(['.', '-', ','], ['', '', '.'], $valor));
        }

        // Limpiar campos numéricos
        $precio_compra = limpiarNumero($_POST['precio_compra']);
        $recargo1 = limpiarNumero($_POST['recargo1']);
        $recargo2 = limpiarNumero($_POST['recargo2']);
        $recargo3 = limpiarNumero($_POST['recargo3']);
        $precio_venta1 = limpiarNumero($_POST['precio_venta1']);
        $precio_venta2 = limpiarNumero($_POST['precio_venta2']);
        $precio_venta3 = limpiarNumero($_POST['precio_venta3']);
        
        // Resto de campos
        $codigo = $_POST['codigo'] ?? '';
        $titulo = $_POST['titulo'] ?? ''; // Agregar esta línea
        $descripcion = str_replace("\r\n", "\n", $_POST['descripcion'] ?? '');
        $iva = intval($_POST['iva'] ?? 0);
        $id_proveedor = intval($_POST['id_proveedor'] ?? 0);
        $stock = intval($_POST['stock'] ?? 0);
        $id_seccion = intval($_POST['id_seccion'] ?? 0);
        $id_subseccion = intval($_POST['id_subseccion'] ?? 0);
        $id_marca = intval($_POST['id_marca'] ?? 0);

        // Validar campos numéricos
        if ($precio_compra <= 0) {
            throw new Exception("El precio de compra debe ser mayor a 0");
        }

        // Insertar producto con imágenes
        $sql = "INSERT INTO productos (codigo, titulo, descripcion, iva, precio_compra, recargo1, recargo2, recargo3, 
                precio_venta1, precio_venta2, precio_venta3, id_proveedor, stock, id_seccion, id_subseccion, 
                id_marca, imagenes) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        
        $db->query($sql, [$codigo, $titulo, $descripcion, $iva, $precio_compra, $recargo1, $recargo2, $recargo3,
                         $precio_venta1, $precio_venta2, $precio_venta3, $id_proveedor, $stock, 
                         $id_seccion, $id_subseccion, $id_marca, $imagenesJson]);

        // Limpiar cualquier salida anterior
        while (ob_get_level()) {
            ob_end_clean();
        }
        
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode([
            'success' => true,
            'message' => 'Producto guardado correctamente'
        ]);
        exit;
        
    } catch (Exception $e) {
        // Limpiar cualquier salida anterior
        while (ob_get_level()) {
            ob_end_clean();
        }
        
        header('HTTP/1.1 500 Internal Server Error');
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode([
            'success' => false,
            'message' => $e->getMessage()
        ]);
        exit;
    }
}

// Obtener datos relacionados
$proveedores = $db->query("SELECT id, nombre FROM proveedores")->fetchAll();
$secciones = $db->query("SELECT id, nombre FROM secciones")->fetchAll();
$subsecciones = $db->query("SELECT id, nombre FROM subsecciones")->fetchAll();
$marcas = $db->query("SELECT id, nombre FROM marcas")->fetchAll();

// Modificar la sección de consulta de productos
$where_conditions = [];
$params = [];

// Búsqueda por texto
if (isset($_GET['search']) && !empty($_GET['search'])) {
    $search = '%' . $_GET['search'] . '%';
    $where_conditions[] = "(p.titulo LIKE ? OR p.descripcion LIKE ?)";
    $params[] = $search;
    $params[] = $search;
}

// Filtros adicionales
if (!empty($_GET['id_proveedor'])) {
    $where_conditions[] = "p.id_proveedor = ?";
    $params[] = intval($_GET['id_proveedor']);
}
if (!empty($_GET['id_seccion'])) {
    $where_conditions[] = "p.id_seccion = ?";
    $params[] = intval($_GET['id_seccion']);
}
if (!empty($_GET['id_subseccion'])) {
    $where_conditions[] = "p.id_subseccion = ?";
    $params[] = intval($_GET['id_subseccion']);
}
if (!empty($_GET['id_marca'])) {
    $where_conditions[] = "p.id_marca = ?";
    $params[] = intval($_GET['id_marca']);
}

// Construir la consulta
$sql = "SELECT p.*, pr.nombre as proveedor, s.nombre as seccion, 
               ss.nombre as subseccion, m.nombre as marca 
        FROM productos p
        LEFT JOIN proveedores pr ON p.id_proveedor = pr.id
        LEFT JOIN secciones s ON p.id_seccion = s.id
        LEFT JOIN subsecciones ss ON p.id_subseccion = ss.id
        LEFT JOIN marcas m ON p.id_marca = m.id";

if (!empty($where_conditions)) {
    $sql .= " WHERE " . implode(" AND ", $where_conditions);
}

$sql .= " ORDER BY p.fecha_alta DESC";

$productos = $db->query($sql, $params)->fetchAll(PDO::FETCH_ASSOC);
require_once '../includes/header.php';
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <?php
    // Modo oscuro
    require_once '../includes/dark_mode.php';
    ?>
    <meta name="color-scheme" content="light dark">
    <?php echo getDarkModeStyles(); ?>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
    <title>Gestión de Productos</title>
    <?php if ($favicon): ?>
    <link rel="icon" type="image/x-icon" href="<?= htmlspecialchars($favicon) ?>">
    <?php endif; ?>
    <link rel="stylesheet" href="../assets/css/styles.css">
    <?php //echo getThemeCSS(); ?>
    <style>
        .header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 1rem;
            background: #f8f9fa;
            margin-bottom: 2rem;
        }

        .header-title {
            margin: 0;
        }

        .header-actions {
            margin-left: auto; /* Esto empujará el botón hacia la derecha */
        }
        .form-row {
            display: flex;
            gap: 1rem;
            margin-bottom: 1rem;
        }
        @media (max-width: 768px) {
            .form-row {
                flex-direction: column;
                gap: 0;
            }
            .form-row .form-group {
                flex: 1 1 100% !important;
            }
        }
        .price-row {
            display: flex;
            gap: 1rem;
            margin-bottom: 1rem;
            flex-wrap: wrap;
        }
        .price-item {
            flex: 1;
            min-width: 150px;
        }
        @media (max-width: 768px) {
            .price-item {
                flex: 1 1 calc(50% - 5rem);
            }
        }
        @media (max-width: 480px) {
            .price-item {
                flex: 1 1 100%;
            }
        }
        .precios-flex {
            display: flex;
            gap: 1rem;
            flex-wrap: wrap;
            margin-bottom: 1rem;
        }
        .precio-item {
            flex: 1;
            min-width: 150px;
        }
        @media (max-width: 768px) {
            .precio-item {
                flex: 1 1 calc(50% - 0.5rem);
            }
        }
        @media (max-width: 480px) {
            .precio-item {
                flex: 1 1 100%;
            }
        }
        .price-group {
            display: flex;
            gap: 1rem;
            margin-bottom: 1rem;
        }
        .price-group > div {
            flex: 1;
            min-width: 150px;
        }
        .price-group .spacer {
            opacity: 0;
            pointer-events: none;
        }
        @media (max-width: 768px) {
            .price-group .spacer {
                display: none;
            }
            .price-group > div {
                flex: 1 1 calc(50% - 0.5rem);
            }
        }
        /* Estilo para ocultar filas */
        tr.hidden {
            display: none;
        }
        
        /* Estilo para resaltar coincidencias */
        .highlight {
            background-color: #fff3cd;
        }
        
        /* Estilos para el logo */
        .header-logo {
            height: 40px;
            width: auto;
            margin-right: 15px;
        }
        
        /* Ajuste del header para incluir el logo */
        .header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 1rem;
            background: #f8f9fa;
            margin-bottom: 2rem;
        }
        
        .header-left {
            display: flex;
            align-items: center;
        }

        /* Ajustar tamaño de iconos SVG */
        .btn svg, 
        .btn-back svg,
        .action-btn svg,
        .image-upload-container svg {
            width: 20px;
            height: 20px;
            margin-right: 8px;
        }

        /* Para iconos más pequeños como en botones de acción */
        .btn-add-small svg {
            width: 16px;
            height: 16px;
            margin-right: 4px;
        }

        /* Para el icono de subida de archivos */
        .image-upload-container svg {
            width: 32px;
            height: 32px;
            margin-bottom: 10px;
        }

        /* Agregar estos estilos para el texto responsive del botón */
        .btn-text-long {
            display: inline;
        }
        .btn-text-short {
            display: none;
        }
        
        @media (max-width: 768px) {
            .btn-text-long {
                display: none;
            }
            .btn-text-short {
                display: inline;
            }
        }
        .header-left {
            display: flex;
            align-items: center;
            gap: 1rem;
        }

        .btn-home {
            background: transparent;
            color: #666;
            padding: 0.75rem;  /* Aumentado de 0.5rem */
            border-radius: 4px;
            text-decoration: none;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.3s ease;
        }

        .btn-home svg {
            width: 36px;  /* Aumentado de 20px */
            height: 36px; /* Aumentado de 20px */
        }

        .btn-home:hover {
            background: rgba(0,0,0,0.05);
            color: #333;
            transform: scale(1.1); /* Efecto de escala al pasar el mouse */
        }
        .sort-options {
            display: flex;
            flex-wrap: wrap;
            gap: 1rem;
            align-items: center;
        }

        .sort-option {
            display: inline-flex;
            align-items: center;
            gap: 0.25rem;
            cursor: pointer;
            padding: 0.25rem 0.5rem;
            border-radius: 3px;
            transition: background-color 0.2s;
        }

        .sort-option:hover {
            background-color: rgba(0,0,0,0.05);
        }

        .sort-option input {
            cursor: pointer;
        }

        @media (max-width: 768px) {
            .sort-options {
                gap: 0.5rem;
            }
            .sort-option {
                font-size: 0.9rem;
            }
        }

        /* Forzar fondo blanco para el contenedor de productos existentes */
        .table-header {
            display: flex; 
            justify-content: space-between; 
            align-items: center;
            background-color: white !important;
            padding: 1rem;
        }

        /* Forzar fondo blanco para el contenedor de ordenamiento */
        .sort-options {
            margin-bottom: 1rem; 
            padding: 0.5rem; 
            background-color: white !important; 
            border-radius: 4px;
        }

        /* Forzar fondo blanco para el contenedor de búsqueda */
        .search-container {
            background-color: white !important;
        }

        /* Forzar fondo blanco para el input de búsqueda */
        #searchInput {
            background-color: white !important;
        }
    </style>
</head>
<body>
    <header class="header">
        <div class="header-left">
            <h1 class="header-title">Productos</h1>
        </div>
        <div class="header-actions">
            <a href="nuevo-producto.php" class="btn btn-primary">
                <?php 
                $icon = @file_get_contents('icons/plus-circle.svg');
                echo $icon ? $icon : '<span style="margin-right:8px;">+</span>'; 
                ?><span class="btn-text-long">Nuevo Producto</span><span class="btn-text-short">Nuevo Prod.</span>
            </a>
        </div>
    </header>

    <div class="main-container">
        <div class="content-section">
            <!-- Sección de filtros -->
            <div class="form-section">

                
                <!-- Resto de los filtros... -->
                <div class="form-row">
                    <div class="form-group" style="flex: 1;">
                        <label>Proveedor</label>
                        <select name="filtro_proveedor" class="form-control filtro-select">
                            <option value="">Todos los proveedores</option>
                            <?php foreach ($proveedores as $proveedor): ?>
                                <option value="<?= $proveedor['id'] ?>"><?= htmlspecialchars($proveedor['nombre']) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="form-group" style="flex: 1;">
                        <label>Sección</label>
                        <select name="filtro_seccion" class="form-control filtro-select">
                            <option value="">Todas las secciones</option>
                            <?php foreach ($secciones as $seccion): ?>
                                <option value="<?= $seccion['id'] ?>"><?= htmlspecialchars($seccion['nombre']) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                </div>
                <div class="form-row">
                    <div class="form-group" style="flex: 1;">
                        <label>Subsección</label>
                        <select name="filtro_subseccion" class="form-control filtro-select">
                            <option value="">Todas las subsecciones</option>
                            <?php foreach ($subsecciones as $subseccion): ?>
                                <option value="<?= $subseccion['id'] ?>"><?= htmlspecialchars($subseccion['nombre']) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="form-group" style="flex: 1;">
                        <label>Marca</label>
                        <select name="filtro_marca" class="form-control filtro-select">
                            <option value="">Todas las marcas</option>
                            <?php foreach ($marcas as $marca): ?>
                                <option value="<?= $marca['id'] ?>"><?= htmlspecialchars($marca['nombre']) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                </div>
            </div>

            <!-- Tabla de productos -->
            <div class="table-container full-width">
                <div class="table-header" style="display: flex; justify-content: space-between; align-items: center;">
                    <h3>Productos Existentes</h3>
                    <div class="search-container">
                        <input type="text" 
                               id="searchInput" 
                               class="form-control" 
                               placeholder="Buscar producto..."
                               style="width: 250px;">
                        <?php 
                        $icon = @file_get_contents('icons/search.svg');
                        echo $icon ? $icon : '<span>🔍</span>'; 
                        ?>
                    </div>
                </div>

                <!-- Agregar esta nueva sección de ordenamiento -->
                <div class="sort-options" style="margin-bottom: 1rem; padding: 0.5rem; background: #f8f9fa; border-radius: 4px;">
                    <strong>Ordenar por:</strong>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="titulo_asc"> Título A-Z
                    </label>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="titulo_desc"> Título Z-A
                    </label>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="id_asc"> ID ↑
                    </label>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="id_desc"> ID ↓
                    </label>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="codigo_asc"> Código ↑
                    </label>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="codigo_desc"> Código ↓
                    </label>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="precio_asc"> Precio ↑
                    </label>
                    <label class="sort-option">
                        <input type="radio" name="sort" value="precio_desc"> Precio ↓
                    </label>
                </div>

                <div class="table-responsive">
                    <table>
                        <thead>
                            <tr>
                                <th style="width: 60px">Imagen</th>
                                <th style="width: 100px">Código</th>
                                <th style="width: 35%">Título</th>
                                <th class="hide-mobile" align="right">P.Compra</th>
                                <th align="right">Precio1</th>
                                <th align="right">Precio2</th>
                                <th align="right">Precio3</th>
                                <th align="right">Stock</th>
                                <th>Acciones</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($productos as $producto): ?>
                                <tr data-id="<?= $producto['id'] ?>"
                                    data-proveedor="<?= $producto['id_proveedor'] ?>"
                                    data-seccion="<?= $producto['id_seccion'] ?>"
                                    data-subseccion="<?= $producto['id_subseccion'] ?>"
                                    data-marca="<?= $producto['id_marca'] ?>">
                                    <td>
                                        <?php 
                                        $imagenes = json_decode($producto['imagenes'] ?? '[]', true);
                                        if (!empty($imagenes)) {
                                            $primera_imagen = $imagenes[0];
                                            echo '<a href="editar-producto.php?id=' . $producto['id'] . '">';
                                            echo '<img src="../uploads/productos/' . htmlspecialchars($primera_imagen) . '" 
                                                      class="product-thumbnail" 
                                                      alt="Miniatura">';
                                            echo '</a>';
                                        }
                                        ?>
                                    </td>
                                    <td><?= htmlspecialchars($producto['codigo']) ?></td>
                                    <td style="white-space: pre-line; line-height: 1.2;"><?= htmlspecialchars($producto['titulo']) ?></td>
                                    <td class="hide-mobile"><?= preg_match('/\.00$/', number_format($producto['precio_compra'], 2)) ? 
                                              number_format($producto['precio_compra'], 0, ',', '.') . '.-' : 
                                              number_format($producto['precio_compra'], 2, ',', '.') ?></td>
                                    <td><?= preg_match('/\.00$/', number_format($producto['precio_venta1'], 2)) ? 
                           number_format($producto['precio_venta1'], 0, ',', '.') . '.-' : 
                           number_format($producto['precio_venta1'], 2, ',', '.') ?></td>
                                    <td><?= preg_match('/\.00$/', number_format($producto['precio_venta2'], 2)) ? 
                           number_format($producto['precio_venta2'], 0, ',', '.') . '.-' : 
                           number_format($producto['precio_venta2'], 2, ',', '.') ?></td>
                                    <td><?= preg_match('/\.00$/', number_format($producto['precio_venta3'], 2)) ? 
                           number_format($producto['precio_venta3'], 0, ',', '.') . '.-' : 
                           number_format($producto['precio_venta3'], 2, ',', '.') ?></td>
                                    <td><?= $producto['stock'] ?></td>
                                    <td>
                                        <div class="actions-container">
                                            <button class="action-btn edit-btn" title="Editar" onclick="editarProducto(<?= $producto['id'] ?>)">
                                                <?php 
                                                $icon = @file_get_contents('icons/edit.svg');
                                                echo $icon ? $icon : '<span>✎</span>'; 
                                                ?>
                                            </button>
                                            <button class="action-btn delete-btn" title="Eliminar" onclick="eliminarProducto(<?= $producto['id'] ?>)">
                                                <?php 
                                                $icon = @file_get_contents('icons/trash.svg');
                                                echo $icon ? $icon : '<span>×</span>'; 
                                                ?>
                                            </button>
                                        </div>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>

    <!-- Modal de galería -->
    <div id="imageModal" class="modal">
        <button class="modal-close">&times;</button>
        <div class="modal-content">
            <img class="modal-main-image" id="modalMainImage" src="" alt="Imagen del producto">
        </div>
        <div class="modal-thumbnails" id="modalThumbnails"></div>
    </div>

    <!-- Scripts -->
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const searchInput = document.getElementById('searchInput');
            const filtros = document.querySelectorAll('.filtro-select');
            const sortOptions = document.querySelectorAll('input[name="sort"]');
            
            function ordenarTabla(rows, sortValue) {
                const rowArray = Array.from(rows);
                
                rowArray.sort((a, b) => {
                    switch(sortValue) {
                        case 'titulo_asc':
                            return a.cells[2].textContent.localeCompare(b.cells[2].textContent);
                        case 'titulo_desc':
                            return b.cells[2].textContent.localeCompare(a.cells[2].textContent);
                        case 'id_asc':
                            return a.getAttribute('data-id') - b.getAttribute('data-id');
                        case 'id_desc':
                            return b.getAttribute('data-id') - a.getAttribute('data-id');
                        case 'codigo_asc':
                            return a.cells[1].textContent.localeCompare(b.cells[1].textContent);
                        case 'codigo_desc':
                            return b.cells[1].textContent.localeCompare(a.cells[1].textContent);
                        case 'precio_asc':
                            return parseFloat(a.cells[3].textContent.replace(/[^\d,-]/g, '').replace(',', '.')) - 
                                   parseFloat(b.cells[3].textContent.replace(/[^\d,-]/g, '').replace(',', '.'));
                        case 'precio_desc':
                            return parseFloat(b.cells[3].textContent.replace(/[^\d,-]/g, '').replace(',', '.')) - 
                                   parseFloat(a.cells[3].textContent.replace(/[^\d,-]/g, '').replace(',', '.'));
                        default:
                            return 0;
                    }
                });
                
                const tbody = rows[0].parentNode;
                rowArray.forEach(row => tbody.appendChild(row));
            }
            
            function filtrarTabla() {
                const searchTerm = searchInput.value.toLowerCase();
                const rows = document.querySelectorAll('table tbody tr');
                const sortValue = document.querySelector('input[name="sort"]:checked')?.value;
                
                // Obtener valores de filtros activos
                const filtrosActivos = {};
                filtros.forEach(filtro => {
                    const tipo = filtro.name.replace('filtro_', '');
                    if (filtro.value) {
                        filtrosActivos[tipo] = filtro.value;
                    }
                });
                
                rows.forEach(row => {
                    let mostrar = true;
                    
                    // Aplicar búsqueda por texto
                    const codigo = row.cells[1].textContent.toLowerCase();
                    const titulo = row.cells[2].textContent.toLowerCase();
                    if (searchTerm && !(codigo.includes(searchTerm) || titulo.includes(searchTerm))) {
                        mostrar = false;
                    }
                    
                    // Aplicar filtros
                    if (mostrar) {
                        for (let tipo in filtrosActivos) {
                            const valorFiltro = filtrosActivos[tipo];
                            const valorColumna = row.getAttribute('data-' + tipo);
                            if (valorFiltro && valorColumna !== valorFiltro) {
                                mostrar = false;
                                break;
                            }
                        }
                    }
                    
                    row.style.display = mostrar ? '' : 'none';
                });
                
                // Aplicar ordenamiento si hay una opción seleccionada
                if (sortValue) {
                    ordenarTabla(Array.from(rows).filter(row => row.style.display !== 'none'), sortValue);
                }
            }
            
            // Eventos para búsqueda, filtros y ordenamiento
            searchInput.addEventListener('input', filtrarTabla);
            filtros.forEach(filtro => {
                filtro.addEventListener('change', filtrarTabla);
            });
            sortOptions.forEach(option => {
                option.addEventListener('change', filtrarTabla);
            });
        });

        // Funciones para acciones de productos
        function editarProducto(id) {
            if (id) {
                window.location.href = 'editar-producto.php?id=' + id;
            }
        }

        async function verificarProductoEnUso(id) {
            try {
                const response = await fetch(`../controllers/verificar_producto.php?id=${id}`);
                if (!response.ok) {
                    throw new Error(`HTTP error! status: ${response.status}`);
                }
                return await response.json();
            } catch (error) {
                console.error('Error:', error);
                throw error;
            }
        }

        async function eliminarProducto(id) {
            if (!confirm('¿Está seguro de eliminar este producto?')) {
                return;
            }

            try {
                // Primero verificar si el producto está en uso
                const verificacion = await verificarProductoEnUso(id);
                if (verificacion.enUso) {
                    alert('No se puede eliminar este producto porque tiene cuotas asociadas');
                    return;
                }

                const response = await fetch('../controllers/producto_actions.php', {
                    method: 'DELETE',
                    headers: {
                        'Content-Type': 'application/x-www-form-urlencoded',
                    },
                    body: `id=${id}`
                });

                if (!response.ok) {
                    throw new Error(`HTTP error! status: ${response.status}`);
                }

                const data = await response.json();
                
                if (data.success) {
                    alert(data.message);
                    location.reload();
                } else {
                    throw new Error(data.message || 'Error al eliminar el producto');
                }
            } catch (error) {
                console.error('Error:', error);
                alert(error.message || 'Error al intentar eliminar el producto');
            }
        }

        // ...rest of existing code...
    </script>
</body>
</html>

