<?php
session_start();
include("conexion.php");

$id_usuario = $_SESSION['id_usuario'];
$usuario = $conexion->query("SELECT * FROM usuarios_sistema WHERE id_usuario = $id_usuario")->fetch_assoc();

$rol = $usuario['rol'];
$id_empresa = $usuario['id_empresa'];
$id_bodega = $usuario['id_bodega'];
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Movimiento de Series</title>
    <style>
        body {
            font-family: 'Segoe UI', sans-serif;
            background-color: #f5f7fa;
            padding: 20px;
        }
        .formulario {
            max-width: 800px;
            margin: auto;
            background: white;
            padding: 30px;
            border-radius: 12px;
            box-shadow: 0 4px 10px rgba(0,0,0,0.1);
        }
        .boton {
            padding: 10px 18px;
            background-color: #27ae60;
            color: white;
            border: none;
            border-radius: 8px;
            margin: 10px 0;
            cursor: pointer;
        }
        .boton:hover {
            background-color: #1e8449;
        }
    </style>
</head>
<body>

<h1>📦 Movimiento de Stock - Series</h1>

<div class="formulario">
    <form action="procesar_movimiento_series.php" method="POST">

        <!-- Tipo de Movimiento -->
        <label for="tipo">Tipo de Movimiento:</label>
        <select name="tipo" id="tipo" required>
            <option value="">-- Seleccionar --</option>
            <option value="ingreso">Ingreso</option>
            <option value="salida">Salida</option>
        </select><br><br>

        <!-- Fecha del Movimiento -->
        <label for="fecha_movimiento">Fecha del Movimiento:</label>
        <input type="date" name="fecha_movimiento" required><br><br>

        <!-- Fecha de Registro en el Sistema -->
        <label>Fecha de Registro (Sistema):</label>
        <input type="text" value="<?php echo date('Y-m-d H:i:s'); ?>" disabled><br><br>

        <!-- Empresa y Bodega -->
        <?php if ($rol == 'admin_general') { ?>
            <label>Empresa:</label>
            <select name="empresa" id="empresa" required>
                <option value="">Seleccionar empresa</option>
                <?php
                $empresas = $conexion->query("SELECT * FROM empresas");
                while ($emp = $empresas->fetch_assoc()) {
                    echo "<option value='{$emp['id_empresa']}'>{$emp['nombre']}</option>";
                }
                ?>
            </select><br><br>

            <label>Bodega:</label>
            <select name="bodega" id="bodega" required>
                <option value="">Seleccionar bodega</option>
            </select><br><br>

        <?php } elseif ($rol == 'admin_empresa') { 
            $empresa = $conexion->query("SELECT nombre FROM empresas WHERE id_empresa = $id_empresa")->fetch_assoc();
        ?>
            <label>Empresa:</label>
            <input type="text" value="<?php echo $empresa['nombre']; ?>" disabled><br>
            <input type="hidden" name="empresa" value="<?php echo $id_empresa; ?>"><br>

            <label>Bodega:</label>
            <select name="bodega" id="bodega" required>
                <option value="">Seleccionar bodega</option>
                <?php
                $bodegas = $conexion->query("SELECT * FROM bodegas WHERE id_empresa = $id_empresa");
                while ($b = $bodegas->fetch_assoc()) {
                    echo "<option value='{$b['id_bodega']}'>{$b['nombre']}</option>";
                }
                ?>
            </select><br><br>

        <?php } else { 
            $empresa = $conexion->query("SELECT nombre FROM empresas WHERE id_empresa = $id_empresa")->fetch_assoc();
            $bodega = $conexion->query("SELECT nombre FROM bodegas WHERE id_bodega = $id_bodega")->fetch_assoc();
        ?>
            <label>Empresa:</label>
            <input type="text" value="<?php echo $empresa['nombre']; ?>" disabled><br>
            <input type="hidden" name="empresa" value="<?php echo $id_empresa; ?>"><br>

            <label>Bodega:</label>
            <input type="text" value="<?php echo $bodega['nombre']; ?>" disabled><br>
            <input type="hidden" name="bodega" value="<?php echo $id_bodega; ?>"><br><br>
        <?php } ?>

        <!-- Detalle de Boleta -->
        <label for="detalle">Detalle de la Boleta:</label>
        <textarea name="detalle" rows="3" style="width:100%;" required></textarea><br><br>

        <!-- Series Dinámicas -->
        <div id="series">
            <label>Serie:</label>
            <select name="series[]" id="serie_1" required>
                <option value="">Seleccionar</option>
            </select>

            <label>Cantidad:</label>
            <input type="number" name="cantidades[]" required><br><br>
        </div>

        <button type="button" onclick="agregarSerie()">➕ Agregar otra serie</button><br><br>

        <button type="submit" class="boton">Guardar Movimiento</button>
    </form>
</div>

<script>
    let seriesCargadas = [];

    // Cargar series cuando se seleccione una bodega (admin_empresa o admin_general)
    const bodegaSelect = document.getElementById('bodega');
    if (bodegaSelect) {
        bodegaSelect.addEventListener('change', function() {
            const bodegaId = this.value;
            cargarSeriesPorBodega(bodegaId);
        });
    }

    function cargarSeriesPorBodega(bodegaId) {
        const serieSelect = document.getElementById('serie_1');
        serieSelect.innerHTML = '<option>Cargando series...</option>';

        fetch('series_datos.php?bodega_id=' + bodegaId)
            .then(res => res.json())
            .then(data => {
                seriesCargadas = data; // Guardamos en memoria
                renderOpciones(serieSelect, seriesCargadas);
            })
            .catch(err => {
                console.error('Error cargando series:', err);
                serieSelect.innerHTML = '<option value="">Error al cargar</option>';
            });
    }

    function renderOpciones(selectElement, series) {
        selectElement.innerHTML = '<option value="">Seleccionar serie</option>';
        series.forEach(s => {
            selectElement.innerHTML += `<option value="${s.id_serie}" data-serie="${s.serie}">${s.serie}</option>`;
        });
    }

    // Agregar más campos de series
    function agregarSerie() {
        const container = document.getElementById("series");
        const div = document.createElement("div");
        const id = Math.floor(Math.random() * 10000); // id aleatorio para evitar duplicidad

        div.innerHTML = `
            <label>Serie:</label>
            <select name="series[]" id="serie_${id}" required>
                <option value="">Seleccionar</option>
            </select>

            <label>Cantidad:</label>
            <input type="number" name="cantidades[]" id="cantidad_${id}" min="1" required><br><br>
        `;

        container.appendChild(div);

        // Insertar series ya cargadas si existen
        const nuevoSelect = document.getElementById(`serie_${id}`);
        if (seriesCargadas.length > 0) {
            renderOpciones(nuevoSelect, seriesCargadas);
        }

        agregarListenersCantidadYSerie();
    }

    // Agrega listeners a todos los campos cantidad actuales
    function agregarListenersCantidadYSerie() {
        const contenedores = document.querySelectorAll('#series > div, #series');

        contenedores.forEach(contenedor => {
            const inputCantidad = contenedor.querySelector('input[name="cantidades[]"]');

            if (inputCantidad) {
                inputCantidad.addEventListener('input', () => {
                    generarCamposSeriales(contenedor, inputCantidad.value);
                });
            }

            const selectSerie = contenedor.querySelector('select[name="series[]"]');
            if (selectSerie) {
                selectSerie.addEventListener('change', function() {
                    const idSerie = this.value;
                    // Guardar el id_serie seleccionado, aquí es donde puedes identificar el tipo de serie
                    console.log('ID de serie seleccionado:', idSerie);
                });
            }
        });
    }

    // Genera inputs de códigos seriales según la cantidad
    function generarCamposSeriales(container, cantidad) {
        // Eliminar campos anteriores
        container.querySelectorAll('.seriales-generados').forEach(e => e.remove());

        const cantidadInt = parseInt(cantidad);
        if (isNaN(cantidadInt) || cantidadInt <= 0) return;

        const wrapper = document.createElement('div');
        wrapper.classList.add('seriales-generados');

        for (let i = 1; i <= cantidadInt; i++) {
            const input = document.createElement('input');
            input.type = 'text';
            input.name = 'codigos_seriales[]';
            input.placeholder = `Código serial ${i}`;
            input.required = true;
            input.style.marginBottom = '5px';
            input.style.display = 'block';

            wrapper.appendChild(input);
        }

        container.appendChild(wrapper);
    }

    // 🚨 Carga automática si es EMPLEADO
    document.addEventListener('DOMContentLoaded', function () {
        agregarListenersCantidadYSerie();

        <?php if ($rol != 'admin_general' && $rol != 'admin_empresa') { ?>
            const bodegaId = '<?php echo $id_bodega; ?>';
            if (bodegaId) {
                cargarSeriesPorBodega(bodegaId);
            }
        <?php } ?>
    });
</script>

</body>
</html>
