<?php
// 1. CONFIGURACIÓN Y CONEXIÓN
error_reporting(E_ALL);
ini_set('display_errors', 0); 

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once "modelo/Db.php";

try {
    $bd = new clsbdd();
} catch (Exception $e) {
    die("Error al conectar a la base de datos: " . $e->getMessage());
}

$usu_id = $_SESSION['usu_codigo'] ?? 0;
if ($usu_id == 0) {
    header("Location: sba_login.php");
    exit;
}

// 2. VERIFICAR CAJA ABIERTA
$res_caja = $bd->ejecutar_array("SELECT * FROM sba_caja WHERE caj_estado='ABIERTA' LIMIT 1");
$caja = (is_array($res_caja) && count($res_caja) > 0) ? $res_caja[0] : null;

if (!$caja) {
    die("<div style='padding:50px; text-align:center; font-family:sans-serif;'>
            <h1 style='color:red;'>⚠️ CAJA CERRADA</h1>
            <p>No puedes entrar al POS sin abrir la caja primero.</p>
            <a href='index.php?page=caja' style='background:#333; color:#fff; padding:10px; text-decoration:none;'>Abrir Caja Ahora</a>
         </div>");
}

// 3. PROCESAR VENTA
$id_imprimir = 0;
if (isset($_POST['cobrar'])) {
    $total = floatval($_POST['total']);
    $tipo_pago = $_POST['tipo_pago'] ?? 'EFECTIVO';
    $comprobante = $_POST['ven_comprobante'] ?? '';
    
    $entregado_input = floatval($_POST['entregado'] ?? 0);
    $monto_p1 = floatval($_POST['monto_pago1'] ?? 0); 
    $monto_p2 = floatval($_POST['monto_pago2'] ?? 0); 

    // DETERMINAR QUÉ VA A LA COLUMNA 'ven_entregado' (Lo que SÍ recibiste en dinero real)
    $monto_final_base_datos = 0;
    $monto_credito = 0; // Lo que irá al saldo del profesor

    switch ($tipo_pago) {
        case 'EFECTIVO':
            $monto_final_base_datos = $entregado_input;
            break;
        case 'TRANSFERENCIA':
            $monto_final_base_datos = $total;
            break;
        case 'CREDITO':
            $monto_final_base_datos = 0; // No entró dinero real
            $monto_credito = $total;
            break;
        case 'MIXTO_EF_TR':
            $monto_final_base_datos = $total; // Se recibió todo (una parte cash, otra banco)
            break;
        case 'MIXTO_EF_CR':
            $monto_final_base_datos = $monto_p1; // Solo el efectivo
            $monto_credito = $monto_p2; // La deuda
            break;
        case 'MIXTO_TR_CR':
            $monto_final_base_datos = $monto_p1; // Solo la transferencia
            $monto_credito = $monto_p2; // La deuda
            break;
        case 'CORTESIA':
            $monto_final_base_datos = 0;
            $monto_credito = 0; // Aseguramos que no afecte saldos
            $total = 0; // Forzamos el total a 0 en la base de datos
            break;                                                      
    }

    // Calcular Vuelto (Solo aplica si hubo efectivo involucrado)
    $vuelto = 0;
    if ($tipo_pago == 'EFECTIVO') {
        $vuelto = $entregado_input - $total;
    } elseif ($tipo_pago == 'MIXTO_EF_TR' || $tipo_pago == 'MIXTO_EF_CR') {
        // El entregado se compara contra la porción de efectivo (monto_p1)
        $vuelto = $entregado_input - $monto_p1;
    }
    if ($vuelto < 0) $vuelto = 0;

    $pro_codigo_val = ($monto_credito > 0 || $tipo_pago == 'CREDITO') ? intval($_POST['pro_codigo']) : 0;

    // GUARDAR VENTA
    $bd->carga_campos("caj_codigo, ven_fecha, ven_tipo_pago, ven_total, ven_entregado, ven_vuelto, ven_comprobante, pro_codigo, usu_codigo, ven_estado");
    $bd->carga_valores("{$caja['caj_codigo']}, NOW(), '$tipo_pago', $total, $monto_final_base_datos, $vuelto, '$comprobante', $pro_codigo_val, $usu_id, 1");
    
    $ven_codigo = $bd->insertar("sba_ventas");

    if ($ven_codigo > 0) {
        // ACTUALIZAR EL SALDO DEL PROFESOR (SOLO LA PARTE CRÉDITO)
        if($monto_credito > 0 && $pro_codigo_val > 0) {
            $bd->ejecutar("UPDATE sba_profesores SET pro_saldo_actual = pro_saldo_actual + $monto_credito WHERE pro_codigo = $pro_codigo_val");
        }

        foreach ($_POST['productos'] as $prd_id => $cant) {
            $prd_id = intval($prd_id);
            $cantidad = intval($cant);
            $res_p = $bd->ejecutar_array("SELECT prd_precio FROM sba_productos WHERE prd_codigo=$prd_id");
            if($res_p){
                $p_info = $res_p[0];
                $precio_v = ($tipo_pago == 'CORTESIA') ? 0 : $p_info['prd_precio'];
                $sub = $cantidad * $precio_v;
                $bd->carga_campos("ven_codigo, prd_codigo, vde_cantidad, vde_precio, vde_subtotal");
                $bd->carga_valores("$ven_codigo, $prd_id, $cantidad, $precio_v, $sub");
                $bd->insertar("sba_ventas_detalle");
                $bd->ejecutar("UPDATE sba_productos SET prd_stock = prd_stock - $cantidad WHERE prd_codigo = $prd_id");
            }
        }
        $id_imprimir = $ven_codigo;
    }
}

$cat_codigo = isset($_GET['cat']) ? intval($_GET['cat']) : 0;
$categorias = $bd->ejecutar_array("SELECT * FROM sba_categorias WHERE cat_estado=1") ?: [];
$sql_p = "SELECT * FROM sba_productos WHERE prd_estado=1";
if ($cat_codigo > 0) $sql_p .= " AND cat_codigo=$cat_codigo";
$sql_p .= " ORDER BY prd_nombre ASC";
$productos = $bd->ejecutar_array($sql_p) ?: [];
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>POS Touch - SBA</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        body { font-family: 'Segoe UI', Arial, sans-serif; background: #f0f2f5; margin: 0; display: flex; flex-direction: column; height: 100vh; overflow: hidden; }
        .header-pos { background: #1c2d3d; color: white; padding: 12px; text-align: center; font-weight: bold; font-size: 1.2rem; flex-shrink: 0; }
        .main-pos { display: flex; flex: 1; overflow: hidden; padding: 10px; gap: 10px; }
        .left-pos { flex: 1; display: flex; flex-direction: column; min-width: 0; }
        .categories { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 10px; flex-shrink: 0; }
        .btn-cat { padding: 12px 20px; background: white; border-radius: 8px; text-decoration: none; color: #333; font-weight: 600; border: 1px solid #ddd; white-space: nowrap; font-size: 14px; }
        .btn-cat.active { background: #3498db; color: white; border-color: #3498db; }
        .products-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); align-content: start; gap: 10px; overflow-y: auto; background: #e9ecef; padding: 10px; border-radius: 10px; flex: 1; }
        .card-prd { background: white; padding: 15px 10px; border-radius: 10px; text-align: center; cursor: pointer; box-shadow: 0 2px 5px rgba(0,0,0,0.05); border: 2px solid transparent; transition: 0.2s; position: relative; }
        .card-prd:hover { border-color: #3498db; transform: scale(1.02); }
        .badge-stock { position: absolute; top: 5px; right: 5px; background: #2c3e50; color: white; font-size: 11px; padding: 2px 6px; border-radius: 10px; }
        .right-pos { width: 400px; background: white; border-radius: 10px; display: flex; flex-direction: column; box-shadow: -2px 0 10px rgba(0,0,0,0.05); height: 100%; }
        .cart-header { padding: 15px; font-weight: bold; border-bottom: 1px solid #eee; flex-shrink: 0; background: #f8f9fa; border-radius: 10px 10px 0 0; }
        .cart-list { flex: 1; overflow-y: auto; padding: 10px 15px; background: #fff; }
        .cart-item { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px solid #f1f1f1; font-size: 14px; }
        .btn-remove { color: #e74c3c; border: none; background: none; font-size: 18px; cursor: pointer; padding: 0 5px; }
        .cart-footer { padding: 15px; background: #f8f9fa; border-top: 2px solid #ddd; flex-shrink: 0; }
        .total-box { background: #1c2d3d; color: white; padding: 12px; border-radius: 8px; margin-bottom: 10px; }
        .total-row { display: flex; justify-content: space-between; font-weight: bold; font-size: 22px; }
        .btn-cobrar { background: #27ae60; color: white; width: 100%; border: none; padding: 15px; font-size: 20px; font-weight: bold; border-radius: 8px; cursor: pointer; transition: 0.3s; }
        .btn-cobrar:hover { background: #219150; }
        .form-control-pos { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; margin-bottom: 8px; font-size: 15px; box-sizing: border-box; }
        #lista_resultados_ben { position: absolute; z-index: 1050; width: 100%; background: white; border: 1px solid #ccc; max-height: 200px; overflow-y: auto; box-shadow: 0 4px 8px rgba(0,0,0,0.1); }
    </style>
</head>
<body>

<div class="header-pos">CAJERO: <?= strtoupper($_SESSION['nombre'] ?? 'S/N') ?> | CAJA: <?= htmlspecialchars($caja['caj_estado']) ?></div>

<div class="main-pos">
    <div class="left-pos">
        <div class="categories">
            <a href="index.php?page=ventas" class="btn-cat <?= $cat_codigo==0?'active':'' ?>">TODOS</a>
            <?php foreach($categorias as $c): ?>
                <a href="index.php?page=ventas&cat=<?= $c['cat_codigo'] ?>" class="btn-cat <?= $cat_codigo==$c['cat_codigo']?'active':'' ?>">
                    <?= htmlspecialchars($c['cat_nombre']) ?>
                </a>
            <?php endforeach; ?>
        </div>
        <div class="products-grid">
            <?php foreach($productos as $p): 
                $stock = intval($p['prd_stock']);
                $agotado = ($stock <= 0);
            ?>
                <div class="card-prd" onclick="<?= $agotado ? "alert('Sin stock')" : "addCart({$p['prd_codigo']},'".addslashes($p['prd_nombre'])."',{$p['prd_precio']}, $stock)" ?>">
                    <span class="badge-stock">Stock: <?= $stock ?></span>
                    <div style="font-weight:600; min-height:40px; margin-top:10px;"><?= $p['prd_nombre'] ?></div>
                    <div style="color:#27ae60; font-weight:bold; font-size:18px;">$<?= number_format($p['prd_precio'], 2) ?></div>
                </div>
            <?php endforeach; ?>
        </div>
    </div>

    <form method="post" id="formPOS" class="right-pos" onsubmit="return validarVenta()">
        <div class="cart-header">🛒 DETALLE DE VENTA</div>
        
        <div class="cart-list" id="cart-list">
            <div style="text-align:center; color:#999; margin-top:50px;">Carrito vacío</div>
        </div>
        
        <div class="cart-footer">
            <div style="margin-bottom: 10px;">
                <label style="font-size:11px; font-weight:bold; color:#666;">MÉTODO PAGO</label>
                <select name="tipo_pago" id="tipo_pago" class="form-control-pos" onchange="cambiarTipoPago(this.value)">
                    <option value="EFECTIVO">EFECTIVO</option>
                    <option value="TRANSFERENCIA">DEUNA / TRANSF.</option>
                    <option value="CREDITO">A CRÉDITO</option>
                    <option value="MIXTO_EF_TR">MIXTO: EFECTIVO + TRANSF.</option>
                    <option value="MIXTO_EF_CR">MIXTO: EFECTIVO + CRÉDITO</option>
                    <option value="MIXTO_TR_CR">MIXTO: TRANSF. + CRÉDITO</option>
                    <option value="CORTESIA">CORTESÍA (GRATIS)</option>
                </select>
            </div>

            <div id="div-comprobante" style="display:none; margin-bottom: 10px;">
                <label style="font-size:11px; font-weight:bold; color:#d35400;"># COMPROBANTE / REFERENCIA</label>
                <input type="text" name="ven_comprobante" id="ven_comprobante" class="form-control-pos" placeholder="Ej: 001245">
            </div>

            <div id="panel-mixto" style="display:none; background: #eef2f3; padding: 10px; border-radius: 8px; margin-bottom: 10px; border: 1px solid #bdc3c7;">
                <div style="display: flex; gap: 8px;">
                    <div style="flex:1">
                        <label id="label-pago1" style="font-size:10px; font-weight:bold; color:#2c3e50;">MONTO 1</label>
                        <input type="number" name="monto_pago1" id="monto_pago1" class="form-control-pos" step="0.01" oninput="calcularSaldoMixto(1)">
                    </div>
                    <div style="flex:1">
                        <label id="label-pago2" style="font-size:10px; font-weight:bold; color:#2c3e50;">MONTO 2</label>
                        <input type="number" name="monto_pago2" id="monto_pago2" class="form-control-pos" step="0.01" oninput="calcularSaldoMixto(2)">
                    </div>
                </div>
            </div>

            <div id="div-recibido" style="margin-bottom: 10px;">
                <label style="font-size:11px; font-weight:bold; color:#666;">RECIBIDO EN CAJA $ (Efectivo)</label>
                <input type="number" name="entregado" id="entregado" step="0.01" value="0" class="form-control-pos" oninput="updateUI()">
            </div>

            <div id="div-pro" style="display:none; position: relative; margin-bottom: 10px;">
                <label style="font-size:11px; font-weight:bold; color:#666;">BUSCAR PROFESOR</label>
                <input type="text" id="bus_ben" class="form-control-pos" placeholder="Escriba nombre..." onkeyup="buscarBenAJAX()">
                <div id="lista_resultados_ben"></div>
                <div id="ben_seleccionado" style="display:none; background:#e8f4fd; padding:12px; border-radius:8px; margin-bottom:10px; border:1px solid #3498db; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
                    <div style="display:flex; justify-content:space-between; align-items:center; border-bottom: 1px solid #3498db55; padding-bottom: 5px; margin-bottom: 5px;">
                        <span id="nom_ben" style="font-weight:bold; font-size:14px; color:#1c2d3d;"></span>
                        <button type="button" onclick="quitarBen()" style="color:#e74c3c; border:none; background:none; cursor:pointer; font-size:18px; font-weight:bold;">✕</button>
                    </div>
                    <div style="text-align: center;">
                         <div style="font-size: 11px; color: #7f8c8d; font-weight: bold; text-transform: uppercase;">Disponible para Crédito</div>
                         <div id="disponible_valor" style="font-size: 26px; font-weight: 800; color: #2c3e50;">$0.00</div>
                         <div id="cupo_total_txt" style="font-size: 11px; color: #34495e; opacity: 0.8;"></div>
                    </div>
                    <input type="hidden" name="pro_codigo" id="pro_codigo" value="0">
                </div>
            </div>

            <div class="total-box">
                <div class="total-row"><span>TOTAL:</span><span id="txt-total">$0.00</span></div>
                <div class="total-row" id="row-vuelto" style="font-size:16px; color:#2ecc71; border-top:1px solid rgba(255,255,255,0.1); margin-top:5px; padding-top:5px;">
                    <span>VUELTO:</span><span id="txt-vuelto">$0.00</span>
                </div>
            </div>
            
            <input type="hidden" name="total" id="input-total" value="0">
            <div id="hidden-cart"></div>
            <button type="submit" name="cobrar" class="btn-cobrar">PROCESAR PAGO</button>
        </div>
    </form>
</div>

<script>
let saldoDisponibleCliente = 0;
let limiteCreditoCliente = 0;
let cart = JSON.parse(localStorage.getItem('cart_pos')) || {};

function cambiarTipoPago(val) {
    localStorage.setItem('tipo_pago_pos', val);
    $('#monto_pago1, #monto_pago2, #ven_comprobante, #entregado').val('');
    updateUI();
}

function calcularSaldoMixto(cambiado) {
    let totalVenta = parseFloat($('#input-total').val()) || 0;
    let p1 = parseFloat($('#monto_pago1').val()) || 0;
    if (cambiado === 1) {
        let dif = totalVenta - p1;
        $('#monto_pago2').val(dif > 0 ? dif.toFixed(2) : 0);
    } else {
        let p2 = parseFloat($('#monto_pago2').val()) || 0;
        let dif = totalVenta - p2;
        $('#monto_pago1').val(dif > 0 ? dif.toFixed(2) : 0);
    }
    let tipo = $('#tipo_pago').val();
    if (tipo === 'MIXTO_EF_TR' || tipo === 'MIXTO_EF_CR') {
        $('#entregado').val($('#monto_pago1').val());
    }
    updateUI();
}

function buscarBenAJAX() {
    let q = $('#bus_ben').val();
    if(q.length < 2) { $('#lista_resultados_ben').hide(); return; }
    $.post('c_beneficiarios.php', { accion: 'buscar', termino: q }, function(data) {
        $('#lista_resultados_ben').html(data).show();
    });
}

function seleccionarBeneficiario(id, nombre, limite, saldo) {
    limiteCreditoCliente = parseFloat(limite);
    saldoDisponibleCliente = limiteCreditoCliente - parseFloat(saldo);

    $('#pro_codigo').val(id);
    $('#nom_ben').text(nombre);
    $('#disponible_valor').text('$' + saldoDisponibleCliente.toFixed(2));
    $('#cupo_total_txt').text('Límite Total: $' + limiteCreditoCliente.toFixed(2));
    
    $('#ben_seleccionado').show();
    $('#bus_ben').hide();
    $('#lista_resultados_ben').hide();
    validarSaldoEnTiempoReal();
}

function quitarBen() {
    $('#pro_codigo').val(0);
    saldoDisponibleCliente = 0;
    $('#ben_seleccionado').hide();
    $('#bus_ben').val('').show();
    $('#txt-total').css('color', 'white');
}

function validarSaldoEnTiempoReal() {
    let total = parseFloat($('#input-total').val());
    let tipo = $('#tipo_pago').val();
    let comparativo = total;

    if(tipo === 'MIXTO_EF_CR' || tipo === 'MIXTO_TR_CR') {
        comparativo = parseFloat($('#monto_pago2').val()) || 0;
    }

    if((tipo === 'CREDITO' || tipo === 'MIXTO_EF_CR' || tipo === 'MIXTO_TR_CR') && $('#pro_codigo').val() != 0) {
        if(Math.round(comparativo * 100) > Math.round(saldoDisponibleCliente * 100)) {
            $('#txt-total').css('color', '#e74c3c');
            $('#disponible_valor').css('color', '#e74c3c');
        } else {
            $('#txt-total').css('color', '#2ecc71');
            $('#disponible_valor').css('color', '#2c3e50');
        }
    } else {
        $('#txt-total').css('color', 'white');
    }
}

function addCart(id, name, price, stockMax) {
    if(cart[id]) {
        if(cart[id].qty >= stockMax) { alert("Stock máximo alcanzado"); return; }
        cart[id].qty++;
    } else {
        cart[id] = { name, price, qty: 1 };
    }
    updateUI();
}

function remove(id) {
    if(cart[id].qty > 1) cart[id].qty--;
    else delete cart[id];
    updateUI();
}

function updateUI() {
    let list = ''; 
    let inputs = ''; 
    let total = 0;
    let tipo = $('#tipo_pago').val();
    let entregado = parseFloat($('#entregado').val()) || 0;

    // Recorremos el carrito
    for(let id in cart) {
        let item = cart[id];
        // Si es CORTESIA, el precio para el cálculo es 0
        let p_calc = (tipo === 'CORTESIA') ? 0 : item.price;
        total += p_calc * item.qty;
        
        list += `<div class="cart-item">
                    <span><b>${item.qty}</b> ${item.name}</span>
                    <span>$${(p_calc*item.qty).toFixed(2)} 
                        <button type="button" class="btn-remove" onclick="remove(${id})">×</button>
                    </span>
                 </div>`;
        
        // Los inputs ocultos se generan SIEMPRE, sin importar el precio
        inputs += `<input type="hidden" name="productos[${id}]" value="${item.qty}">`;
    }

    // Lógica de vuelto
    let baseEfectivo = (tipo === 'EFECTIVO') ? total : ((tipo === 'MIXTO_EF_TR' || tipo === 'MIXTO_EF_CR') ? (parseFloat($('#monto_pago1').val()) || 0) : 0);
    let vuelto = Math.max(0, entregado - baseEfectivo);

    // Actualizamos la vista
    $('#cart-list').html(list || '<div style="text-align:center; color:#999; margin-top:50px;">Carrito vacío</div>');
    $('#hidden-cart').html(inputs);
    $('#txt-total').text('$' + total.toFixed(2));
    $('#input-total').val(total.toFixed(2));
    $('#txt-vuelto').text('$' + (baseEfectivo > 0 ? vuelto.toFixed(2) : '0.00'));

    // Control de visibilidad de paneles
    $("#panel-mixto, #div-pro, #div-recibido, #row-vuelto, #div-comprobante").hide();
    
    if (tipo === 'EFECTIVO') { 
        $("#div-recibido, #row-vuelto").show(); 
    }
    else if (tipo === 'TRANSFERENCIA') { 
        $("#div-comprobante").show(); 
    }
    else if (tipo === 'CREDITO') { 
        $("#div-pro").show(); 
    }
    else if (tipo === 'MIXTO_EF_TR') { 
        $("#panel-mixto, #div-recibido, #row-vuelto, #div-comprobante").show(); 
        $("#label-pago1").text("EFECTIVO $"); $("#label-pago2").text("TRANSF. $");
    }
    else if (tipo === 'MIXTO_EF_CR') { 
        $("#panel-mixto, #div-recibido, #row-vuelto, #div-pro").show(); 
        $("#label-pago1").text("EFECTIVO $"); $("#label-pago2").text("CRÉDITO $");
    }
    else if (tipo === 'MIXTO_TR_CR') { 
        $("#panel-mixto, #div-comprobante, #div-pro").show(); 
        $("#label-pago1").text("TRANSF. $"); $("#label-pago2").text("CRÉDITO $");
    }
    else if (tipo === 'CORTESIA') {
        // Mostramos comprobante para usarlo como campo de "Nota/Autorización"
        $("#div-comprobante").show();
        $("#ven_comprobante").attr("placeholder", "Nota: Autorizado por...");
    }

    localStorage.setItem('cart_pos', JSON.stringify(cart));
    validarSaldoEnTiempoReal();
}

function validarVenta() {
    let tipo = $('#tipo_pago').val();
    let total = parseFloat($('#input-total').val());
    let entregado = parseFloat($('#entregado').val()) || 0;
    
    // CORRECCIÓN PARA CORTESÍA: 
    // Validamos que el objeto 'cart' no esté vacío en lugar de validar el total > 0
    if(Object.keys(cart).length === 0) { 
        alert("El carrito está vacío. Añada productos antes de procesar."); 
        return false; 
    }

    // Si es EFECTIVO normal
    if (tipo === 'EFECTIVO' && (entregado < total)) { 
        alert("Efectivo insuficiente"); 
        return false; 
    }

    // Validaciones para pagos MIXTOS
    if (tipo.startsWith('MIXTO')) {
        let p1 = parseFloat($('#monto_pago1').val()) || 0;
        let p2 = parseFloat($('#monto_pago2').val()) || 0;
        if (Math.abs((p1 + p2) - total) > 0.01) { 
            alert("Los montos mixtos no coinciden con el total de la venta"); 
            return false; 
        }
    }

    // Validación de comprobante (Transferencias o Cortesía opcional)
    if ((tipo === 'TRANSFERENCIA' || tipo === 'MIXTO_EF_TR' || tipo === 'MIXTO_TR_CR') && $('#ven_comprobante').val().trim() === "") {
        alert("Por favor, ingrese el número de comprobante o referencia"); 
        return false;
    }

    // Validaciones de CRÉDITO y Cupo
    if (tipo === 'CREDITO' || tipo === 'MIXTO_EF_CR' || tipo === 'MIXTO_TR_CR') {
        if ($('#pro_codigo').val() == 0) { 
            alert("Debe seleccionar un beneficiario para aplicar el crédito"); 
            return false; 
        }
        
        let montoCredito = (tipo === 'CREDITO') ? total : parseFloat($('#monto_pago2').val());
        
        if (Math.round(montoCredito * 100) > Math.round(saldoDisponibleCliente * 100)) {
            alert("❌ VENTA RECHAZADA: El cliente no tiene cupo suficiente.");
            return false;
        }
    }

    return true;
}

window.onload = function() {
    updateUI();
    <?php if($id_imprimir > 0): ?>
        localStorage.removeItem('cart_pos');
        alert("Venta procesada exitosamente");
        window.open('vista/ticket.php?id=<?= $id_imprimir ?>', '_blank', 'width=350,height=600');
        window.location.href = 'index.php?page=ventas';
    <?php endif; ?>
}
</script>
</body>
</html>