<?php
require_once 'includes/header.php';

// Lógica para manejar el formulario de actualización
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['precios'])) {
    $pdo = db();
    $success = false;

    // Actualizar precios de liquidación
    if (isset($_POST['precios'])) {
        $stmt_precio = $pdo->prepare("UPDATE movimientos SET precio_liquidacion = :precio WHERE id = :id AND tipo = 'Salida'");
        foreach ($_POST['precios'] as $movimiento_id => $precio) {
            if (!empty($precio)) {
                $stmt_precio->execute([':precio' => $precio, ':id' => $movimiento_id]);
                $success = true;
            }
        }
    }

    // Actualizar cantidad de pedidos
    if (isset($_POST['pedidos'])) {
        $stmt_pedidos = $pdo->prepare("UPDATE movimientos SET cantidad_pedidos = :pedidos WHERE id = :id AND tipo = 'Salida'");
        foreach ($_POST['pedidos'] as $movimiento_id => $pedidos) {
            if (!empty($pedidos)) {
                $stmt_pedidos->execute([':pedidos' => $pedidos, ':id' => $movimiento_id]);
                $success = true;
            }
        }
    }

    if ($success) {
        echo '<div class="alert alert-success">Liquidaciones actualizadas correctamente.</div>';
    }
}

// Obtener todos los movimientos de salida
$pdo = db();
$stmt = $pdo->query("
    SELECT 
        m.id, 
        m.fecha, 
        p.nombre as producto, 
        m.cantidad, 
        c.nombre as ciudad, 
        m.precio_liquidacion,
        m.cantidad_pedidos
    FROM movimientos m
    JOIN productos p ON m.producto_id = p.id
    JOIN ciudades c ON m.ciudad_origen_id = c.id
    WHERE m.tipo = 'Salida'
    ORDER BY DATE(m.fecha) DESC, c.nombre, p.nombre
");

$salidas = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Agrupar salidas por fecha
$salidas_por_fecha = [];
foreach ($salidas as $salida) {
    $fecha = date('Y-m-d', strtotime($salida['fecha']));
    $salidas_por_fecha[$fecha][] = $salida;
}

// Obtener productos y ciudades para el formulario
$productos = $pdo->query("SELECT id, nombre FROM productos ORDER BY nombre")->fetchAll();
$ciudades = $pdo->query("SELECT id, nombre FROM ciudades ORDER BY nombre")->fetchAll();

$user_rol = $_SESSION['user_rol'] ?? '';

?>

<h1 class="mb-4">Liquidaciones de Salidas</h1>

<?php
if (isset($_GET['success']) && $_GET['success'] === 'added') {
    echo '<div class="alert alert-success">Liquidación agregada correctamente.</div>';
}
if (isset($_GET['error'])) {
    $error_msg = 'Ocurrió un error.';
    if ($_GET['error'] === 'missing_fields') {
        $error_msg = 'Por favor, complete todos los campos.';
    } elseif ($_GET['error'] === 'db_error') {
        $error_msg = 'Error al guardar en la base de datos.';
    } elseif ($_GET['error'] === 'no_stock') {
        $error_msg = 'No hay stock suficiente para realizar esta operación.';
    }
    echo '<div class="alert alert-danger">'.$error_msg.'</div>';
}
?>

<p>Aquí puedes ver todas las salidas de productos y asignar un precio de liquidación y la cantidad de pedidos a cada una.</p>

<?php if ($user_rol === 'admin' || $user_rol === 'administrador'): ?>
    <!-- Botón para abrir el modal -->
    <button type="button" class="btn btn-success mb-3" data-bs-toggle="modal" data-bs-target="#agregarLiquidacionModal">
        <i class="fas fa-plus"></i> Agregar Liquidación
    </button>

    <!-- Modal para agregar liquidación -->
    <div class="modal fade" id="agregarLiquidacionModal" tabindex="-1" aria-labelledby="agregarLiquidacionModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="agregarLiquidacionModalLabel">Agregar Nueva Liquidación</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <form action="handle_agregar_liquidacion.php" method="POST">
                        <div class="mb-3">
                            <label for="producto_id" class="form-label">Producto</label>
                            <select class="form-control" id="producto_id" name="producto_id" required>
                                <option value="">Seleccione un producto</option>
                                <?php foreach ($productos as $producto): ?>
                                    <option value="<?php echo $producto['id']; ?>"><?php echo htmlspecialchars($producto['nombre']); ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="mb-3">
                            <label for="ciudad_id" class="form-label">Ciudad</label>
                            <select class="form-control" id="ciudad_id" name="ciudad_id" required>
                                <option value="">Seleccione una ciudad</option>
                                <?php foreach ($ciudades as $ciudad): ?>
                                    <option value="<?php echo $ciudad['id']; ?>"><?php echo htmlspecialchars($ciudad['nombre']); ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="mb-3">
                            <label for="cantidad" class="form-label">Cantidad</label>
                            <input type="number" class="form-control" id="cantidad" name="cantidad" required>
                        </div>
                        <div class="mb-3">
                            <label for="cantidad_pedidos" class="form-label">Cantidad de Pedidos</label>
                            <input type="number" class="form-control" id="cantidad_pedidos" name="cantidad_pedidos" required>
                        </div>
                        <div class="mb-3">
                            <label for="precio_liquidacion" class="form-label">Precio Liquidación</label>
                            <input type="number" step="0.01" class="form-control" id="precio_liquidacion" name="precio_liquidacion" required>
                        </div>
                        <button type="submit" class="btn btn-primary">Guardar Liquidación</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
<?php endif; ?>


<form method="POST" action="liquidaciones.php">
    <?php if (empty($salidas_por_fecha)): ?>
        <div class="alert alert-info">No hay salidas registradas para liquidar.</div>
    <?php else: ?>
        <div class="accordion" id="accordionLiquidaciones">
            <?php foreach ($salidas_por_fecha as $fecha => $salidas_del_dia): ?>
                <div class="accordion-item">
                    <h2 class="accordion-header" id="heading-<?php echo $fecha; ?>">
                        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-<?php echo $fecha; ?>" aria-expanded="false" aria-controls="collapse-<?php echo $fecha; ?>">
                            <?php echo date('d/m/Y', strtotime($fecha)); ?> (<?php echo count($salidas_del_dia); ?> salidas)
                        </button>
                    </h2>
                    <div id="collapse-<?php echo $fecha; ?>" class="accordion-collapse collapse" aria-labelledby="heading-<?php echo $fecha; ?>" data-bs-parent="#accordionLiquidaciones">
                        <div class="accordion-body">
                            <table class="table table-bordered table-striped">
                                <thead>
                                    <tr>
                                        <th>Producto</th>
                                        <th>Ciudad</th>
                                        <th>Cantidad de Pedidos</th>
                                        <th>Cantidad</th>
                                        <th>Precio Liquidación</th>
                                        <th>Acciones</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php 
                                    $total_pedidos_dia = 0;
                                    $total_precio_dia = 0;
                                    $totales_por_ciudad = [];

                                    foreach ($salidas_del_dia as $salida): 
                                        $total_pedidos_dia += (int)$salida['cantidad_pedidos'];
                                        $total_precio_dia += (float)$salida['precio_liquidacion'];

                                        if (!isset($totales_por_ciudad[$salida['ciudad']])) {
                                            $totales_por_ciudad[$salida['ciudad']] = ['pedidos' => 0, 'precio' => 0];
                                        }
                                        $totales_por_ciudad[$salida['ciudad']]['pedidos'] += (int)$salida['cantidad_pedidos'];
                                        $totales_por_ciudad[$salida['ciudad']]['precio'] += (float)$salida['precio_liquidacion'];
                                    ?>
                                        <tr>
                                            <td><?php echo htmlspecialchars($salida['producto']); ?></td>
                                            <td><?php echo htmlspecialchars($salida['ciudad']); ?></td>
                                            <td>
                                                <input type="number" step="1" name="pedidos[<?php echo $salida['id']; ?>]" class="form-control" value="<?php echo htmlspecialchars($salida['cantidad_pedidos']); ?>">
                                            </td>
                                            <td><?php echo $salida['cantidad']; ?></td>
                                            <td>
                                                <input type="number" step="0.01" name="precios[<?php echo $salida['id']; ?>]" class="form-control" value="<?php echo htmlspecialchars($salida['precio_liquidacion']); ?>">
                                            </td>
                                            <td>
                                                <a href="editar_liquidacion.php?id=<?php echo $salida['id']; ?>" class="btn btn-sm btn-warning">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                                <tfoot>
                                    <tr>
                                        <td colspan="2" class="text-end"><strong>Total del día:</strong></td>
                                        <td><strong><?php echo $total_pedidos_dia; ?></strong></td>
                                        <td></td>
                                        <td><strong><?php echo number_format($total_precio_dia, 2); ?></strong></td>
                                    </tr>
                                </tfoot>
                            </table>

                            <h5 class="mt-4">Resumen de Liquidación por Ciudad</h5>
                            <table class="table table-sm table-bordered">
                                <thead>
                                    <tr>
                                        <th>Ciudad</th>
                                        <th>Total Pedidos</th>
                                        <th>Monto Total Liquidado</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($totales_por_ciudad as $ciudad => $totales): ?>
                                        <tr>
                                            <td><?php echo htmlspecialchars($ciudad); ?></td>
                                            <td><?php echo $totales['pedidos']; ?></td>
                                            <td><?php echo number_format($totales['precio'], 2); ?></td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            <?php endforeach; ?>
        </div>
        <button type="submit" class="btn btn-primary mt-3">Guardar Cambios</button>
    <?php endif; ?>
</form>

<?php require_once 'includes/footer.php'; ?>
