<?php
require_once 'includes/config.php';
require_once 'includes/db.php';
require_once 'includes/funciones_registro.php';
require_once 'includes/theme_only.php'; 
echo getThemeCSS();session_start();

// Verificar si el usuario está logueado
if (!isset($_SESSION['usuario_id'])) {
    header('Location: login.php');
    exit;
}

// Verificar el estado del usuario y la caja abierta
$db = new Database();
$pdo = $db->getPDO();

$stmt = $pdo->prepare("SELECT estado FROM usuarios WHERE id = ?");
$stmt->execute([$_SESSION['usuario_id']]);
$usuario = $stmt->fetch(PDO::FETCH_ASSOC);

// Verificar si hay actividad pendiente para este usuario
$db = new Database();
$pdo = $db->getPDO();

// Consulta combinada para verificar:
$stmt = $pdo->prepare("
    SELECT 
        (SELECT COUNT(*) FROM cajas 
         WHERE id_usuario = ? AND estado = 1) as caja_abierta,
        (SELECT COUNT(*) FROM venta_items
         WHERE vendedor_id = ? 
         AND estado = 'EN_CURSO') as ventas_pendientes
");

$stmt->execute([
    $_SESSION['usuario_id'],
    $_SESSION['usuario_id']
]);

$result = $stmt->fetch(PDO::FETCH_ASSOC);

$mensaje = '';
// Recuperar mensaje de sesión si existe
if (isset($_SESSION['mensaje'])) {
    $mensaje = $_SESSION['mensaje'];
    unset($_SESSION['mensaje']); // Limpiar mensaje
}

$stmt = $pdo->prepare("SELECT favicon, color_principal, color_secundario, con_decimales, moneda FROM configuracion WHERE id = 1");
$stmt->execute();
$config = $stmt->fetch(PDO::FETCH_ASSOC);

$favicon = $config['favicon'] ? 'uploads/config/' . $config['favicon'] : '';
$colorPrincipal = $config['color_principal'] ?? '#ff2b1c';
$colorSecundario = $config['color_secundario'] ?? '#666666';
$conDecimales = (int)$config['con_decimales'] ?? 1;
$moneda = $config['moneda'] ?? '$';

// Función auxiliar para formatear montos
function formatMonto($monto, $conDecimales, $moneda) {
    return $moneda . ' ' . number_format($monto, $conDecimales ? 2 : 0);
}

// Variables para la rendición
$diferencia = 0;
$mensajeRendicion = '';

// Obtener total de pagos pendientes
$totalEntregas = 0;
$stmt = $pdo->prepare("
    SELECT COALESCE(SUM(monto), 0) as total_pagos
    FROM pagos
    WHERE usuario_id = ? 
    AND estado = 'PENDIENTE'
");
$stmt->execute([$_SESSION['usuario_id']]);
$resultado = $stmt->fetch(PDO::FETCH_ASSOC);
$totalEntregas = floatval($resultado ? $resultado['total_pagos'] : 0);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['monto_rendicion'])) {
        // Primero calcular todos los valores
        // Obtener ventas al contado
        $stmt = $pdo->prepare("
            SELECT COALESCE(SUM(vi.subtotal), 0) as total_contado 
            FROM venta_items vi
            WHERE DATE(vi.created_at) = CURDATE() 
            AND vi.vendedor_id = ?
            AND vi.estado = 'FINALIZADA'
            AND UPPER(vi.tipo_pago) = 'CONTADO'
        ");
        $stmt->execute([$_SESSION['usuario_id']]);
        $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
        $ventasContado = floatval($resultado ? $resultado['total_contado'] : 0);

        // Obtener total de pagos pendientes - CORREGIDO
        $stmt = $pdo->prepare("
            SELECT COALESCE(SUM(monto), 0) as total_pagos
            FROM pagos
            WHERE usuario_id = ? 
            AND estado = 'PENDIENTE'
        ");
        $stmt->execute([$_SESSION['usuario_id']]);
        $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
        $totalEntregas = floatval($resultado ? $resultado['total_pagos'] : 0);

        // Obtener totales de caja
        $stmt = $pdo->prepare("
            SELECT 
                COALESCE(SUM(CASE WHEN tipo = 'ingreso' THEN monto ELSE 0 END), 0) as total_ingresos,
                COALESCE(SUM(CASE WHEN tipo = 'egreso' THEN monto ELSE 0 END), 0) as total_egresos
            FROM cajas 
            WHERE id_usuario = ? 
            AND DATE(fecha_hora) = CURDATE() 
            AND estado = 1
        ");
        $stmt->execute([$_SESSION['usuario_id']]);
        $totalesCaja = $stmt->fetch(PDO::FETCH_ASSOC);
        
        $totales = [
            'ingresos' => floatval($totalesCaja['total_ingresos']),
            'egresos' => floatval($totalesCaja['total_egresos'])
        ];

        // Calcular total esperado y diferencia
        $totalEsperado = $totales['ingresos'] + $ventasContado + $totalEntregas - $totales['egresos'];
        $montoRendicion = floatval(str_replace([',', '.'], '', $_POST['monto_rendicion']));
        $diferencia = $montoRendicion - $totalEsperado;

        // Ahora sí, guardar en sesión con los valores correctos
        $_SESSION['rendicion_datos'] = [
            'fecha' => date('Y-m-d H:i:s'),
            'monto_rendido' => $montoRendicion,
            'total_esperado' => $totalEsperado,
            'diferencia' => $diferencia,
            'ingresos' => $totales['ingresos'],
            'egresos' => $totales['egresos'],
            'ventas_contado' => $ventasContado,
            'entregas_pendientes' => $totalEntregas
        ];

        try {
            // Iniciar transacción
            $pdo->beginTransaction();
            
            // Obtener ventas al contado antes de hacer la rendición
            $stmt = $pdo->prepare("
                SELECT COALESCE(SUM(vi.subtotal), 0) as total_contado 
                FROM venta_items vi
                WHERE DATE(vi.created_at) = CURDATE()  
                AND vi.vendedor_id = ?
                AND vi.estado = 'COMPLETADO'
                AND UPPER(vi.tipo_pago) = 'CONTADO'
            ");
            $stmt->execute([$_SESSION['usuario_id']]);
            $ventasContadoResult = $stmt->fetch(PDO::FETCH_ASSOC);
            $ventasContado = floatval($ventasContadoResult['total_contado']);
            
            // Guardar datos de rendición en la sesión con el monto correcto de ventas al contado
            $_SESSION['rendicion_datos'] = [
                'monto_rendido' => $montoRendicion,
                'total_esperado' => $totalEsperado,
                'diferencia' => $diferencia,
                'ingresos' => $totales['ingresos'],
                'egresos' => $totales['egresos'],
                'ventas_contado' => $ventasContado, // Aseguramos que se use el valor correcto
                'entregas_pendientes' => $totalEntregas,
                'fecha' => date('Y-m-d H:i:s')
            ];

            // 1. Marcar pagos como rendidos - CORREGIDO
            $stmt = $pdo->prepare("
                UPDATE pagos
                SET estado = 'RENDIDO'
                WHERE usuario_id = ? 
                AND estado = 'PENDIENTE'
            ");
            $stmt->execute([$_SESSION['usuario_id']]);
            
            // 2. Actualizar ventas relacionadas a los pagos
            $stmt = $pdo->prepare("
                UPDATE venta_items vi
                JOIN pagos p ON vi.id = p.venta_id
                SET vi.estado = 'RENDIDO'
                WHERE vi.vendedor_id = ? 
                AND vi.estado = 'FINALIZADA'
                AND p.estado = 'RENDIDO'
            ");
            $stmt->execute([$_SESSION['usuario_id']]);
            
            // NUEVO: Actualizar ventas al contado como rendidas
            $stmt = $pdo->prepare("
                UPDATE venta_items 
                SET estado = 'RENDIDO'
                WHERE DATE(created_at) = CURDATE()
                AND vendedor_id = ?
                AND estado = 'COMPLETADO'
                AND UPPER(tipo_pago) = 'CONTADO'
            ");
            $stmt->execute([$_SESSION['usuario_id']]);
            
            // 3. Marcar movimientos de caja como rendidos
            $stmt = $pdo->prepare("
                UPDATE cajas 
                SET estado = 2
                WHERE id_usuario = ? 
                AND DATE(fecha_hora) = CURDATE() 
                AND estado = 1
            ");
            $stmt->execute([$_SESSION['usuario_id']]);
            
            // 4. Registrar la rendición
            $stmt = $pdo->prepare("
                INSERT INTO rendiciones (
                    usuario_id, 
                    monto_rendido, 
                    monto_esperado, 
                    diferencia,
                    fecha_rendicion
                ) VALUES (?, ?, ?, ?, NOW())
            ");
            $stmt->execute([
                $_SESSION['usuario_id'],
                $montoRendicion,
                $totalEsperado,
                $diferencia
            ]);
            
            // Actualizar el estado del usuario a 0 (cerrado)
            $stmt = $pdo->prepare("UPDATE usuarios SET estado = 0 WHERE id = ?");
            $stmt->execute([$_SESSION['usuario_id']]);
            $pdo->commit();
            
            // Guardar datos de rendición en la sesión
            $_SESSION['rendicion_datos'] = [
                'monto_rendido' => $montoRendicion,
                'total_esperado' => $totalEsperado,
                'diferencia' => $diferencia,
                'ingresos' => $totales['ingresos'],
                'egresos' => $totales['egresos'],
                'ventas_contado' => $ventasContado,
                'entregas_pendientes' => $totalEntregas,
                'fecha' => date('Y-m-d H:i:s')
            ];
            
            // Marcar que después de imprimir debe cerrar sesión
            $_SESSION['cerrar_sesion'] = true;
            
            // Redirigir primero a la impresión
            header('Location: imprimir_rendicion.php');
            exit;
        } catch (Exception $e) {
            $pdo->rollBack();
            $_SESSION['mensaje'] = [
                'tipo' => 'danger',
                'texto' => 'Error al procesar la rendición: ' . $e->getMessage()
            ];
            
            // Registrar el error en la actividad
            try {
                registrarActividadUsuario(
                    $_SESSION['usuario_id'],
                    'error_rendicion',
                    'Error al procesar la rendición: ' . $e->getMessage()
                );
            } catch (Exception $err) {
                error_log("Error al registrar actividad de error: " . $err->getMessage());
            }
            
            header('Location: ' . $_SERVER['PHP_SELF']);
            exit;
        }
    } elseif (isset($_POST['tipo'])) {
        $tipo = $_POST['tipo'];
        $monto = $_POST['monto'];
        $motivo = $_POST['motivo'];
        $observaciones = $_POST['observaciones'];
        // Procesar archivo de comprobante
        $comprobante = '';
        if (isset($_FILES['comprobante']) && $_FILES['comprobante']['error'] === 0) {
            $upload_dir = 'uploads/comprobantes/';
            if (!file_exists($upload_dir)) {
                mkdir($upload_dir, 0777, true);
            }
            
            $filename = time() . '_' . $_FILES['comprobante']['name'];
            move_uploaded_file($_FILES['comprobante']['tmp_name'], $upload_dir . $filename);
            $comprobante = $filename;
        }

        $stmt = $pdo->prepare("INSERT INTO cajas (id_usuario, tipo, monto, motivo, observaciones, comprobante) 
                              VALUES (?, ?, ?, ?, ?, ?)");
        try {
            $stmt->execute([
                $_SESSION['usuario_id'],
                $tipo,
                $monto,
                $motivo,
                $observaciones,
                $comprobante,
            ]);
            
            // Registrar la operación en la actividad del usuario
            $tipoAccion = $tipo == 'ingreso' ? 'ingreso_caja' : 'egreso_caja';
            
            // Obtener símbolo de moneda desde configuración
            $simbolo_moneda = $moneda; // Usamos el valor ya cargado previamente
            
            // Crear detalle de la actividad
            $detalles = ($tipo == 'ingreso' ? "Ingreso" : "Egreso") . " de " . 
                       $simbolo_moneda . number_format($monto, $conDecimales ? 2 : 0) . 
                       " - Motivo: " . $motivo;
            
            if (!empty($observaciones)) {
                $detalles .= " - " . $observaciones;
            }
            
            // Registrar la actividad
            registrarActividadUsuario(
                $_SESSION['usuario_id'],
                $tipoAccion,
                $detalles
            );
            
            $_SESSION['mensaje'] = [
                'tipo' => 'success',
                'texto' => 'Movimiento registrado exitosamente'
            ];
        } catch (Exception $e) {
            $_SESSION['mensaje'] = [
                'tipo' => 'danger',
                'texto' => 'Error al registrar el movimiento: ' . $e->getMessage()
            ];
            
            // Registrar el error en la actividad
            try {
                registrarActividadUsuario(
                    $_SESSION['usuario_id'],
                    'error_movimiento_caja',
                    'Error al registrar movimiento de caja: ' . $e->getMessage()
                );
            } catch (Exception $err) {
                error_log("Error al registrar actividad de error: " . $err->getMessage());
            }
        }
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    }
}

// Determinar si el usuario es admin
$isAdmin = $_SESSION['rol'] === 'admin';

// Obtener movimientos del día según el rol usando PDO
$query = "
    SELECT c.*, u.nombre as usuario
    FROM cajas c 
    JOIN usuarios u ON c.id_usuario = u.id 
    WHERE DATE(c.fecha_hora) = CURDATE() 
    AND c.estado = 1"; // Solo mostrar movimientos no rendidos

// Si no es admin, solo mostrar sus propios movimientos
if (!$isAdmin) {
    $query .= " AND c.id_usuario = ? ORDER BY c.fecha_hora DESC";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$_SESSION['usuario_id']]);
    $movimientos = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
    $query .= " ORDER BY c.fecha_hora DESC";
    $stmt = $pdo->prepare($query);
    $stmt->execute();
    $movimientos = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

// Calcular totales del día
$totales = [
    'ingresos' => 0,
    'egresos' => 0
];

foreach ($movimientos as $mov) {
    if ($mov['tipo'] === 'ingreso') {
        $totales['ingresos'] += $mov['monto'];
    } else {
        $totales['egresos'] += $mov['monto'];
    }
}

// Después de la consulta de movimientos, agregar:
$stmt = $pdo->prepare("
    SELECT p.*, p.venta_id, CONCAT('Pago #', p.id) as referencia
    FROM pagos p
    WHERE p.usuario_id = ? 
    AND p.estado = 'PENDIENTE'
    ORDER BY p.created_at DESC
");
$stmt->execute([$_SESSION['usuario_id']]);
$pagos_pendientes = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Obtener ventas al contado del día - Consulta corregida
$stmt = $pdo->prepare("
    SELECT COALESCE(SUM(vi.subtotal), 0) as total_contado 
    FROM venta_items vi
    WHERE DATE(vi.created_at) = CURDATE()  
    AND vi.vendedor_id = ?
    AND vi.estado = 'FINALIZADA'
    AND UPPER(vi.tipo_pago) = 'CONTADO'
");
$stmt->execute([$_SESSION['usuario_id']]);
$ventasContado = $stmt->fetch(PDO::FETCH_ASSOC)['total_contado'] ?? 0;

// Para debug - Agregar temporalmente
error_log("SQL Debug - Ventas al contado para usuario " . $_SESSION['usuario_id'] . ": " . $ventasContado);

// Calcular total de pagos pendientes
$totalPendientes = 0;
foreach ($pagos_pendientes as $pago) {
    // Verificar si la clave 'monto' existe antes de usarla
    if (isset($pago['monto'])) {
        $totalPendientes += $pago['monto'];
    } else if (isset($pago['subtotal'])) {
        // Alternativa: usar el subtotal si está disponible
        $totalPendientes += $pago['subtotal'];
    }
}

// Calcular el total esperado
$totalEsperado = $totales['ingresos'] + $ventasContado + $totalPendientes - $totales['egresos'];

// Recuperar datos de rendición de la sesión
if (isset($_SESSION['rendicion_mensaje'])) {
    $mensajeRendicion = $_SESSION['rendicion_mensaje'];
    $diferencia = $_SESSION['rendicion_diferencia'];
    unset($_SESSION['rendicion_mensaje']);
    unset($_SESSION['rendicion_diferencia']);
}

// Obtener ventas al contado del día - Consulta actualizada
$stmt = $pdo->prepare("
    SELECT COALESCE(SUM(vi.subtotal), 0) as total_contado 
    FROM venta_items vi
    WHERE DATE(vi.created_at) = CURDATE()  
    AND vi.vendedor_id = ?
    AND vi.estado = 'COMPLETADO'
    AND UPPER(vi.tipo_pago) = 'CONTADO'
");
$stmt->execute([$_SESSION['usuario_id']]);
$ventasContado = $stmt->fetch(PDO::FETCH_ASSOC)['total_contado'] ?? 0;
echo getThemeCSS();
?>
<!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">
    <title>Registro de Caja</title>
    <?php if ($favicon): ?>
    <link rel="icon" type="image/x-icon" href="<?= htmlspecialchars($favicon) ?>">
    <?php endif; ?>
    <link rel="stylesheet" href="admin/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/css/lightbox.min.css">
    <style>
        :root {
            --color-primary: <?= $colorPrincipal ?>;
            --color-secondary: <?= $colorSecundario ?>;
        }
        h1 {
            color: var(--color-primary);
        }
        .btn-primary {
            background-color: var(--color-primary);
            border-color: var(--color-primary);
        }
        .btn-primary:hover {
            background-color: var(--color-secondary);
            border-color: var(--color-secondary);
        }
        .form-select {
            border-color: var(--color-primary);
            padding: 0.5rem; /* Reducido de 0.75rem */
            height: calc(3rem + 2px); /* Alto específico para mejor control */
            background-color: white;
            font-size: 1rem;
        }
        .form-select:focus {
            border-color: var(--color-primary);
            box-shadow: 0 0 0 0.25rem rgba(var(--color-primary), 0.25);
        }
        .custom-file-input {
            border-color: var(--color-primary);
        }
        .card-header {
            background-color: var(--color-primary);
            color: white;
        }
        .ingreso { color: #198754; font-weight: bold; }
        .egreso { color: #dc3545; font-weight: bold; }
        input[type="file"] {
            border-color: var(--color-primary);
            padding: 0.5rem;
            background-color: white;
            cursor: pointer;
        }
        input[type="file"]:hover {
            background-color: #f8f9fa;
        }
        input[type="file"]:focus {
            border-color: var(--color-primary);
            box-shadow: 0 0 0 0.25rem rgba(var(--color-primary), 0.25);
        }
        .btn-primary img {
            filter: brightness(0) invert(1); /* Hace el icono blanco */
        }
        .home-button {
            position: absolute;
            top: 1rem;
            right: 1rem;
            text-decoration: none;
            color: var(--color-primary);
            transition: color 0.3s;
        }
        .home-button:hover {
            color: var(--color-secondary);
        }
        .form-control {
            border-color: var(--color-primary);
        }
        .form-control:focus {
            border-color: var(--color-primary);
            box-shadow: 0 0 0 0.25rem rgba(var(--color-primary), 0.25);
        }
        input[type="number"],
        input[type="text"],
        textarea {
            border-color: var(--color-primary) !important;
        }
        input[type="number"]:focus,
        input[type="text"]:focus,
        textarea:focus {
            border-color: var(--color-primary) !important;
            box-shadow: 0 0 0 0.25rem rgba(var(--color-primary), 0.25) !important;
        }
        .input-group-text {
            background-color: var(--color-primary);
            color: white;
            border-color: var(--color-primary);
        }
        .comprobante-thumb {
            transition: transform 0.2s;
        }
        .comprobante-thumb:hover {
            transform: scale(1.1);
        }
        .lightbox-trigger {
            display: inline-block;
            border: 2px solid var(--color-primary);
            border-radius: 4px;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div class="container py-4 position-relative">
        <div class="d-flex justify-content-end mb-3">
            <div class="d-flex justify-content-between" style="width: 300px;">
                <a href="index.php" class="btn px-3 py-1" style="background-color: var(--color-primary); color: white;">
                    <img src="admin/icons/house.svg" width="20" height="20" alt="Inicio" 
                         style="filter: brightness(0) invert(1);">
                </a>
                <a href="login.php" class="btn px-3 py-1" style="background-color: var(--color-secondary); color: white;">
                    <img src="admin/icons/box-arrow-right.svg" width="20" height="20" alt="Salir" class="me-2"
                         style="filter: brightness(0) invert(1);">
                    Salir sin cerrar sesión
                </a>
            </div>
        </div>

        <h1 class="mb-4">Registro de Caja</h1>
        <?php if ($mensaje): ?>
            <div class="alert alert-<?= is_array($mensaje) ? $mensaje['tipo'] : 'success' ?> alert-dismissible fade show" role="alert">
                <?= is_array($mensaje) ? htmlspecialchars($mensaje['texto']) : htmlspecialchars($mensaje) ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
        <?php endif; ?>

        <div class="card mb-4">
            <div class="card-body">
                <form method="POST" enctype="multipart/form-data">
                    <div class="row">
                        <div class="col-md-6 mb-3">
                            <label class="form-label">Tipo de Movimiento</label>
                            <select name="tipo" class="form-select form-select-lg" required>
                                <option value="">Seleccionar</option>
                                <option value="ingreso">Ingreso</option>
                                <option value="egreso">Egreso</option>
                            </select>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label class="form-label">Monto</label>
                            <div class="input-group">
                                <span class="input-group-text"><?= htmlspecialchars($moneda) ?></span>
                                <input type="number" step="<?= $conDecimales ? '0.01' : '1' ?>" name="monto" class="form-control" required>
                            </div>
                        </div>
                    </div>

                    <div class="mb-3">
                        <label class="form-label">Motivo</label>
                        <input type="text" name="motivo" class="form-control" required>
                    </div>

                    <div class="mb-3">
                        <label class="form-label">Observaciones</label>
                        <textarea name="observaciones" class="form-control" rows="3" required></textarea>
                    </div>

                    <div class="mb-3">
                        <label class="form-label">Comprobante (opcional)</label>
                        <input type="file" name="comprobante" class="form-control" style="height: auto;">
                    </div>

                    <button type="submit" class="btn btn-primary">
                        <img src="admin/icons/save.svg" width="16" height="16" alt="Guardar" class="me-2">
                        Registrar Movimiento
                    </button>
                </form>
            </div>
        </div>

        <?php if ($isAdmin): ?>
        <div class="card">
            <div class="card-header d-flex justify-content-between align-items-center py-2">
                <h4 class="m-0" style="font-size: 1rem;">
                    Movimientos del Día (Todos los usuarios)
                </h4>
                <div class="text-white">
                    <span class="me-3">
                        Ingresos: <?= formatMonto($totales['ingresos'], $conDecimales, $moneda) ?>
                    </span>
                    <span>
                        Egresos: <?= formatMonto($totales['egresos'], $conDecimales, $moneda) ?>
                    </span>
                </div>
            </div>
            <div class="card-body">
                <div class="table-responsive">
                    <table class="table table-striped">
                        <thead>
                            <tr>
                                <th>Fecha/Hora</th>
                                <th>Usuario</th>
                                <th>Tipo</th>
                                <th>Monto</th>
                                <th>Motivo</th>
                                <th>Observaciones</th>
                                <th>Comprobante</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($movimientos as $mov): ?>
                            <tr>
                                <td><?= htmlspecialchars($mov['fecha_hora']) ?></td>
                                <td><?= htmlspecialchars($mov['usuario']) ?></td>
                                <td><?= htmlspecialchars($mov['tipo']) ?></td>
                                <td class="<?= $mov['tipo'] ?>">
                                    <?= formatMonto($mov['monto'], $conDecimales, $moneda) ?>
                                </td>
                                <td><?= htmlspecialchars($mov['motivo']) ?></td>
                                <td><?= htmlspecialchars($mov['observaciones']) ?></td>
                                <td>
                                    <?php if ($mov['comprobante']): ?>
                                        <a href="ver_comprobante.php?comprobante=<?= urlencode($mov['comprobante']) ?>&motivo=<?= urlencode($mov['motivo']) ?>" 
                                           class="lightbox-trigger">
                                            <img src="<?= htmlspecialchars('uploads/comprobantes/' . $mov['comprobante']) ?>"
                                                 alt="Comprobante" 
                                                 class="comprobante-thumb" 
                                                 style="max-width: 50px; height: auto;">
                                        </a>
                                    <?php endif; ?>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
        <?php endif; ?>

        <?php if (!empty($pagos_pendientes) && $isAdmin): ?>
        <div class="card mt-4">
            <div class="card-header bg-warning text-white py-2">
                <h4 class="m-0" style="font-size: 1rem;">Pagos Pendientes de Rendir</h4>
            </div>
            <div class="card-body">
                <table class="table">
                    <thead>
                        <tr>
                            <th>ID</th>
                            <th>Venta</th>
                            <th>Tipo</th>
                            <th>Monto</th>
                            <th>Vencimiento</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($pagos_pendientes as $pago): ?>
                        <tr>
                            <td><?php echo htmlspecialchars($pago['id'] ?? ''); ?></td>
                            <td><?php echo htmlspecialchars($pago['venta_id'] ? 'Venta #' . $pago['venta_id'] : 'Sin referencia'); ?></td>
                            <td><?php echo htmlspecialchars($pago['tipo'] ?? 'No especificado'); ?></td>
                            <td><?php echo isset($pago['monto']) ? number_format($pago['monto'], 0, ',', '.') : '0'; ?></td>
                            <td><?php echo isset($pago['fecha_vencimiento']) && $pago['fecha_vencimiento'] 
                                     ? date('d/m/Y', strtotime($pago['fecha_vencimiento'])) 
                                     : '-'; ?></td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>
        <?php endif; ?>

        <!-- Agregar antes del último </div> del container -->
        <div class="card mt-4">
            <div class="card-header text-white py-2" style="background-color: var(--color-primary);">
                <h4 class="m-0" style="font-size: 1rem;">Rendición de Cuenta</h4>
            </div>
            <div class="card-body">
                <?php if ($isAdmin): ?>
                <div class="row mb-3">
                    <div class="col-md-3">
                        <label class="fw-bold">Ingresos del día:</label>
                        <div><?= formatMonto($totales['ingresos'], $conDecimales, $moneda) ?></div>
                    </div>
                    <div class="col-md-3">
                        <label class="fw-bold">Ventas al contado:</label>
                        <div><?= formatMonto($ventasContado, $conDecimales, $moneda) ?></div>
                    </div>
                    <div class="col-md-3">
                        <label class="fw-bold">Entregas pendientes:</label>
                        <div><?= formatMonto($totalEntregas, $conDecimales, $moneda) ?></div>
                    </div>
                    <div class="col-md-3">
                        <label class="fw-bold">Egresos del día:</label>
                        <div><?= formatMonto($totales['egresos'], $conDecimales, $moneda) ?></div>
                    </div>
                </div>
                <div class="alert alert-info">
                    <strong>Total esperado en caja: <?= formatMonto($totalEsperado, $conDecimales, $moneda) ?></strong>
                </div>
                <?php endif; ?>

                <form method="POST" class="mt-3">
                    <div class="row align-items-end">
                        <div class="col-md-6 mb-3 mb-md-0">
                            <label class="form-label" style="color: var(--color-primary);">Monto a rendir</label>
                            <div class="input-group">
                                <span class="input-group-text"><?= htmlspecialchars($moneda) ?></span>
                                <input type="number" step="<?= $conDecimales ? '0.01' : '1' ?>" 
                                       name="monto_rendicion" 
                                       class="form-control" 
                                       required>
                            </div>
                        </div>
                        <div class="col-md-6 text-md-end">
                            <button type="submit" class="btn btn-primary w-100 w-md-auto">
                                <img src="admin/icons/cash.svg" width="16" height="16" alt="Rendir" class="me-2">
                                Rendir Cuenta
                            </button>
                        </div>
                    </div>
                </form>

                <?php if ($mensajeRendicion): ?>
                <div class="alert <?= $diferencia == 0 ? 'alert-success' : ($diferencia > 0 ? 'alert-info' : 'alert-danger') ?> mt-3">
                    <strong><?= htmlspecialchars($mensajeRendicion) ?></strong>
                </div>
                <?php endif; ?>
            </div>
        </div>
    </div>
    <script src="admin/js/bootstrap.bundle.min.js"></script>
</body>
</html>