<?php
date_default_timezone_set('America/Guayaquil');
require_once "modelo/Db.php";
$bd = new clsbdd();
$bd->ejecutar("SET time_zone = '-05:00'");

// 1. Procesamiento de cobros (Abonos)
if (isset($_POST['btn_registrar_pago'])) {
    $pro_id = intval($_POST['pro_codigo']);
    $monto_pago = floatval($_POST['monto_pago']);
    $tipo_final = $_POST['tipo_pago_final']; // total o abono
    $metodo = $_POST['metodo_pago'];

    $p_info = $bd->ejecutar_array("SELECT pro_nombre, pro_saldo_actual FROM sba_profesores WHERE pro_codigo = $pro_id")[0];
    $valor_a_descontar = ($tipo_final == 'total') ? $p_info['pro_saldo_actual'] : $monto_pago;

    $bd->ejecutar("UPDATE sba_profesores SET pro_saldo_actual = pro_saldo_actual - $valor_a_descontar WHERE pro_codigo = $pro_id");
    
    $accion = "Pago de: " . $p_info['pro_nombre'] . ". " . ($tipo_final == 'total' ? 'LIQUIDACIÓN' : 'ABONO') . " de $" . $valor_a_descontar . " via " . $metodo;
    $bd->ejecutar("INSERT INTO sba_auditoria (usu_nombre, aud_tabla_afectada, aud_accion, aud_fecha) VALUES ('Sistema', 'sba_profesores', '$accion', NOW())");
}

$fecha_inicio = $_GET['f_inicio'] ?? date('Y-m-d');
$fecha_fin = $_GET['f_fin'] ?? date('Y-m-d');

// Consultas de Reportes (Tus tarjetas superiores)
$hoy = date('Y-m-d');
$v_dia = $bd->ejecutar_array("SELECT SUM(ven_total) as total FROM sba_ventas WHERE DATE(ven_fecha) = '$hoy' AND ven_estado=1")[0]['total'] ?? 0;
$v_rango = $bd->ejecutar_array("SELECT SUM(ven_total) as total FROM sba_ventas WHERE DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1")[0]['total'] ?? 0;

// NUEVA LÓGICA: Distribución de pagos desglosando mixtos
$sql_tipos = "SELECT tipo, SUM(monto) as total FROM (
    -- Ventas puras (No mixtas)
    SELECT ven_tipo_pago as tipo, ven_total as monto 
    FROM sba_ventas 
    WHERE ven_tipo_pago NOT LIKE 'MIXTO%' AND DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1
    
    UNION ALL
    
    -- Parte Efectivo de MIXTO_EF_TR
    SELECT 'EFECTIVO' as tipo, ven_entregado as monto 
    FROM sba_ventas 
    WHERE ven_tipo_pago = 'MIXTO_EF_TR' AND DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1
    
    UNION ALL
    
    -- Parte Transferencia de MIXTO_EF_TR
    SELECT 'TRANSFERENCIA' as tipo, (ven_total - ven_entregado) as monto 
    FROM sba_ventas 
    WHERE ven_tipo_pago = 'MIXTO_EF_TR' AND DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1
    
    UNION ALL
    
    -- Parte Efectivo de MIXTO_EF_CR
    SELECT 'EFECTIVO' as tipo, ven_entregado as monto 
    FROM sba_ventas 
    WHERE ven_tipo_pago = 'MIXTO_EF_CR' AND DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1
    
    UNION ALL
    
    -- Parte Crédito de MIXTO_EF_CR
    SELECT 'CREDITO' as tipo, (ven_total - ven_entregado) as monto 
    FROM sba_ventas 
    WHERE ven_tipo_pago = 'MIXTO_EF_CR' AND DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1
    
    UNION ALL
    
    -- Parte Transferencia de MIXTO_TR_CR
    SELECT 'TRANSFERENCIA' as tipo, ven_entregado as monto 
    FROM sba_ventas 
    WHERE ven_tipo_pago = 'MIXTO_TR_CR' AND DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1
    
    UNION ALL
    
    -- Parte Crédito de MIXTO_TR_CR
    SELECT 'CREDITO' as tipo, (ven_total - ven_entregado) as monto 
    FROM sba_ventas 
    WHERE ven_tipo_pago = 'MIXTO_TR_CR' AND DATE(ven_fecha) BETWEEN '$fecha_inicio' AND '$fecha_fin' AND ven_estado=1
) as desglose GROUP BY tipo";

$tipos_pago = $bd->ejecutar_array($sql_tipos) ?: [];

// Deudores con cálculo de abonos
$creditos_prof = $bd->ejecutar_array("SELECT p.pro_codigo, p.pro_nombre, p.pro_tipo, p.pro_saldo_actual,
    (SELECT SUM(v.ven_total) FROM sba_ventas v WHERE v.pro_codigo = p.pro_codigo AND (v.ven_tipo_pago = 'CREDITO' OR v.ven_tipo_pago LIKE 'MIXTO%_CR') AND v.ven_estado = 1) as total_historico
    FROM sba_profesores p WHERE p.pro_saldo_actual > 0") ?: [];

// Clientes solventados
$clientes_pagados = $bd->ejecutar_array("SELECT DISTINCT p.pro_codigo, p.pro_nombre, p.pro_tipo 
    FROM sba_profesores p 
    INNER JOIN sba_ventas v ON p.pro_codigo = v.pro_codigo 
    WHERE p.pro_saldo_actual <= 0 AND (v.ven_tipo_pago = 'CREDITO' OR v.ven_tipo_pago LIKE 'MIXTO%_CR') AND v.ven_estado = 1") ?: [];

$top_productos = $bd->ejecutar_array("SELECT p.prd_nombre, SUM(d.vde_cantidad) as cant FROM sba_ventas_detalle d JOIN sba_productos p ON d.prd_codigo = p.prd_codigo JOIN sba_ventas v ON d.ven_codigo = v.ven_codigo WHERE v.ven_estado=1 GROUP BY d.prd_codigo ORDER BY cant DESC LIMIT 5") ?: [];
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Reportes de Ventas</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <style>
        body { font-family: 'Segoe UI', sans-serif; background: #f4f7f6; margin: 20px; color: #333; }
        .grid-superior { display: grid; grid-template-columns: repeat(4, 1fr); gap: 15px; margin-bottom: 20px; }
        .card-reporte { background: white; padding: 15px; border-radius: 10px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); display: flex; flex-direction: column; }
        .card-reporte h3 { margin-top: 0; font-size: 0.95rem; border-bottom: 2px solid #f4f4f4; padding-bottom: 8px; color: #1c2d3d; display: flex; justify-content: space-between; align-items: center; }
        .big-number { font-size: 1.6rem; font-weight: bold; color: #27ae60; margin: 10px 0; }
        .table-resumen { width: 100%; border-collapse: collapse; font-size: 12px; }
        .table-resumen td { padding: 5px 0; border-bottom: 1px solid #eee; }
        .filtro { background: #1c2d3d; color: white; padding: 20px; border-radius: 10px; margin-bottom: 20px; display: flex; gap: 15px; align-items: flex-end; flex-wrap: wrap; }
        .filtro input { padding: 8px; border-radius: 5px; border: none; }
        .btn-filtrar { background: #27ae60; color: white; border: none; padding: 9px 20px; border-radius: 5px; cursor: pointer; font-weight: bold; text-decoration: none; }
        .btn-accion { padding: 3px 7px; border-radius: 4px; text-decoration: none; font-size: 11px; color: white; border: none; cursor: pointer; }
        .btn-info { background: #3498db; }
        .btn-success { background: #27ae60; }
        .seccion-blanca { background: white; padding: 20px; border-radius: 10px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); margin-bottom: 20px; }
        .badge-tipo { background: #e9ecef; color: #495057; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: bold; text-transform: uppercase; }
        .badge-abono { background: #fff3cd; color: #856404; padding: 2px 8px; border-radius: 10px; font-size: 10px; font-weight: bold; border: 1px solid #ffeeba; }
        .badge-pagado { background: #d4edda; color: #155724; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: bold; }
        .btn-exportar-card { background: #207245; color: white !important; text-decoration: none; font-size: 10px; padding: 4px 8px; border-radius: 4px; font-weight: bold; }
        @media (max-width: 1100px) { .grid-superior { grid-template-columns: repeat(2, 1fr); } }
        @media (max-width: 600px) { .grid-superior { grid-template-columns: 1fr; } }
    </style>
</head>
<body>

    <h1>📊 Panel de Control de Ventas</h1>

    <form class="filtro" method="GET">
        <input type="hidden" name="page" value="reportes">
        <div><label>Desde:</label><br><input type="date" name="f_inicio" value="<?= $fecha_inicio ?>"></div>
        <div><label>Hasta:</label><br><input type="date" name="f_fin" value="<?= $fecha_fin ?>"></div>
        <button type="submit" class="btn-filtrar">Actualizar</button>
        <a href="exportar_excel.php?f_inicio=<?= $fecha_inicio ?>&f_fin=<?= $fecha_fin ?>" style="background-color: #1d6f42; color: white; padding: 10px 15px; border-radius: 5px; text-decoration: none; font-weight: bold; display: inline-flex; align-items: center;"><i class="fa fa-file-excel" style="margin-right: 8px;"></i> Exportar Excel</a>
        <a href="exportar_detalle_excel.php?f_inicio=<?= $fecha_inicio ?>&f_fin=<?= $fecha_fin ?>" style="background-color: #007bff; color: white; padding: 10px 15px; border-radius: 5px; text-decoration: none; font-weight: bold; display: inline-flex; align-items: center;"><i class="fa fa-list-ul" style="margin-right: 8px;"></i> Ventas con Productos</a>
    </form>

    <div class="grid-superior">
        <div class="card-reporte">
            <h3>Ventas de Hoy</h3>
            <div class="big-number">$<?= number_format($v_dia, 2) ?></div>
        </div>
        <div class="card-reporte">
            <h3>Ventas en Rango</h3>
            <div class="big-number" style="color: #3498db;">$<?= number_format($v_rango, 2) ?></div>
        </div>
        <div class="card-reporte">
            <h3>Distribución Pagos</h3>
            <table class="table-resumen">
                <?php foreach($tipos_pago as $tp): ?>
                <tr>
                    <td><strong><?= $tp['tipo'] ?></strong></td>
                    <td align="right">$<?= number_format($tp['total'], 2) ?></td>
                    <td align="right"><a href="index.php?page=ventas_lista&f_inicio=<?= $fecha_inicio ?>&f_fin=<?= $fecha_fin ?>&tipo=<?= urlencode($tp['tipo']) ?>" class="btn-accion btn-info"><i class="fa fa-eye"></i></a></td>
                </tr>
                <?php endforeach; ?>
            </table>
        </div>
        <div class="card-reporte">
            <h3>Top 5 Productos <a href="exportar_ventasproductos.php?f_inicio=<?= $fecha_inicio ?>&f_fin=<?= $fecha_fin ?>" class="btn-exportar-card"><i class="fa fa-file-excel"></i> productos vendidos</a></h3>
            <table class="table-resumen">
                <?php foreach($top_productos as $tp): ?>
                <tr><td><?= substr(htmlspecialchars($tp['prd_nombre']), 0, 15) ?>...</td><td align="right"><strong><?= $tp['cant'] ?></strong></td></tr>
                <?php endforeach; ?>
            </table>
        </div>
    </div>

    <div class="seccion-blanca">
        <h3><i class="fa fa-user-clock"></i> Créditos Pendientes</h3>
        <table style="width:100%; border-collapse: collapse; margin-top: 10px;">
            <thead>
                <tr style="background: #f8f9fa; text-align: left;">
                    <th style="padding:10px;">Docente/Alumno</th>
                    <th style="padding:10px;">Tipo</th>
                    <th style="padding:10px; text-align:center;">Estado Pago</th>
                    <th style="padding:10px; text-align:right;">Saldo</th>
                    <th style="padding:10px; text-align:center;">Acciones</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach($creditos_prof as $cp): 
                    $abonado = floatval($cp['total_historico']) - floatval($cp['pro_saldo_actual']);
                ?>
                <tr>
                    <td style="padding:10px; border-bottom:1px solid #eee;"><?= htmlspecialchars($cp['pro_nombre']) ?></td>
                    <td style="padding:10px; border-bottom:1px solid #eee;"><span class="badge-tipo"><?= $cp['pro_tipo'] ?></span></td>
                    <td style="padding:10px; border-bottom:1px solid #eee; text-align:center;">
                        <?= ($abonado > 0.05) ? '<span class="badge-abono">PAGADO $'.number_format($abonado, 2).'</span>' : '<span style="color:#999; font-size:10px;">SIN ABONOS</span>' ?>
                    </td>
                    <td style="padding:10px; border-bottom:1px solid #eee; text-align:right; color:#e67e22; font-weight:bold;">$<?= number_format($cp['pro_saldo_actual'], 2) ?></td>
                    <td style="padding:10px; border-bottom:1px solid #eee; text-align:center;">
                        <a href="index.php?page=detalle_profesor&id=<?= $cp['pro_codigo'] ?>" class="btn-accion btn-info" style="padding:5px 10px;"><i class="fa fa-eye"></i> Ver</a>
                        <button onclick="cobrar(<?= $cp['pro_codigo'] ?>, '<?= addslashes($cp['pro_nombre']) ?>', <?= $cp['pro_saldo_actual'] ?>)" class="btn-accion btn-success" style="padding:5px 10px;"><i class="fa fa-dollar-sign"></i> Cobrar</button>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>

    <div class="seccion-blanca">
        <h3><i class="fa fa-check-circle"></i> Créditos Solventados</h3>
        <table style="width:100%; border-collapse: collapse;">
            <tbody>
                <?php foreach($clientes_pagados as $cp): ?>
                <tr>
                    <td style="padding:10px; border-bottom:1px solid #eee;"><?= htmlspecialchars($cp['pro_nombre']) ?></td>
                    <td style="padding:10px; border-bottom:1px solid #eee; text-align:center;"><span class="badge-pagado">SOLVENTADO</span></td>
                    <td style="padding:10px; border-bottom:1px solid #eee; text-align:center;"><a href="index.php?page=detalle_profesor&id=<?= $cp['pro_codigo'] ?>" class="btn-accion btn-info">Ver Historial</a></td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>

    <script>
    function cobrar(id, nombre, saldo) {
        Swal.fire({
            title: 'Cobrar a ' + nombre,
            html: `<div style="text-align:left;">
                <p>Saldo: <b>$${saldo.toFixed(2)}</b></p>
                <select id="t_pago" class="swal2-input" style="width:100%"><option value="total">Pagar Todo</option><option value="abono">Abono Parcial</option></select>
                <input type="number" id="m_pago" class="swal2-input" placeholder="Monto" style="display:none; width:100%">
                <select id="m_metodo" class="swal2-input" style="width:100%"><option value="EFECTIVO">Efectivo</option><option value="TRANSFERENCIA">Transferencia</option><option value="ROL">Descuento Rol</option></select>
            </div>`,
            didOpen: () => { document.getElementById('t_pago').onchange = (e) => { document.getElementById('m_pago').style.display = (e.target.value === 'abono') ? 'block' : 'none'; } },
            preConfirm: () => {
                const tipo = document.getElementById('t_pago').value;
                const monto = document.getElementById('m_pago').value;
                if(tipo==='abono' && (monto <= 0 || monto > saldo)) return Swal.showValidationMessage('Monto no válido');
                return { tipo, monto, metodo: document.getElementById('m_metodo').value };
            }
        }).then((r) => {
            if(r.isConfirmed) {
                const f = document.createElement('form'); f.method='POST';
                f.innerHTML = `<input type="hidden" name="btn_registrar_pago" value="1"><input type="hidden" name="pro_codigo" value="${id}"><input type="hidden" name="tipo_pago_final" value="${r.value.tipo}"><input type="hidden" name="monto_pago" value="${r.value.monto}"><input type="hidden" name="metodo_pago" value="${r.value.metodo}">`;
                document.body.appendChild(f); f.submit();
            }
        });
    }
    </script>
</body>
</html>