<?php
// ventas_lista.php
require_once "modelo/Db.php";
$bd = new clsbdd();

// 1. Capturar parámetros del reporte
$f_inicio = $_GET['f_inicio'] ?? date('Y-m-d');
$f_fin    = $_GET['f_fin']    ?? date('Y-m-d');
$tipo     = $_GET['tipo']     ?? ''; // EFECTIVO, CREDITO, TRANSFERENCIA, etc.

/**
 * 2. Consulta SQL
 * Filtramos por fecha y estado, y opcionalmente por tipo de pago (incluyendo mixtos)
 */
$sql = "SELECT v.*, p.pro_nombre 
        FROM sba_ventas v 
        LEFT JOIN sba_profesores p ON v.pro_codigo = p.pro_codigo 
        WHERE DATE(v.ven_fecha) BETWEEN '$f_inicio' AND '$f_fin' 
        AND v.ven_estado = 1";

if ($tipo != '') {
    if ($tipo == 'EFECTIVO') {
        $sql .= " AND (v.ven_tipo_pago = 'EFECTIVO' OR v.ven_tipo_pago = 'MIXTO_EF_TR' OR v.ven_tipo_pago = 'MIXTO_EF_CR')";
    } elseif ($tipo == 'TRANSFERENCIA') {
        $sql .= " AND (v.ven_tipo_pago = 'TRANSFERENCIA' OR v.ven_tipo_pago = 'MIXTO_EF_TR' OR v.ven_tipo_pago = 'MIXTO_TR_CR')";
    } elseif ($tipo == 'CREDITO') {
        $sql .= " AND (v.ven_tipo_pago = 'CREDITO' OR v.ven_tipo_pago = 'MIXTO_EF_CR' OR v.ven_tipo_pago = 'MIXTO_TR_CR')";
    } else {
        $sql .= " AND v.ven_tipo_pago = '$tipo'";
    }
}

$sql .= " ORDER BY v.ven_codigo DESC";
$ventas = $bd->ejecutar_array($sql) ?: [];

// Variable para el gran total de la lista
$gran_total_proporcional = 0;
?>

<div class="caja-container" style="padding:20px; font-family: 'Segoe UI', sans-serif;">
    <div class="header-caja" style="display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;">
        <div>
            <h2 style="margin:0; color:#1c2d3d;"><i class="fa fa-list"></i> Detalle de Ventas: <?= $tipo ?: 'TODAS' ?></h2>
            <p style="color:#666; margin:5px 0;">Período: <b><?= date('d/m/Y', strtotime($f_inicio)) ?></b> al <b><?= date('d/m/Y', strtotime($f_fin)) ?></b></p>
        </div>
        <a href="index.php?page=reportes&f_inicio=<?= $f_inicio ?>&f_fin=<?= $f_fin ?>" class="btn-pos" style="background:#5a5c69; color:white; padding:10px 15px; text-decoration:none; border-radius:5px; font-size:13px; font-weight:bold;">
            <i class="fa fa-arrow-left"></i> VOLVER A REPORTES
        </a>
    </div>

    <div class="panel-ventas">
        <table style="width:100%; border-collapse:collapse; font-size:14px; background:white; border-radius:10px; overflow:hidden; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
            <thead>
                <tr style="background:#4e73df; color:white; text-align:left;">
                    <th style="padding:15px;">Ticket</th>
                    <th style="padding:15px;">Fecha/Hora</th>
                    <th style="padding:15px;">Tipo Original</th>
                    <th style="padding:15px;">Docente / Alumno</th>
                    <th style="padding:15px;">Monto Proporcional</th>
                    <th style="padding:15px; text-align:center;">Acción</th>
                </tr>
            </thead>
            <tbody>
                <?php 
                if($ventas): 
                    foreach($ventas as $v): 
                        $original_pago = $v['ven_tipo_pago'];
                        $total_ticket = floatval($v['ven_total']);
                        $entregado = floatval($v['ven_entregado']);
                        $monto_a_mostrar = $total_ticket; // Por defecto asumimos el total si no hay filtro

                        // --- LÓGICA DE CÁLCULO PROPORCIONAL SEGÚN EL FILTRO ---
                        if ($tipo != '') {
                            switch ($tipo) {
                                case 'EFECTIVO':
                                    // En mixtos EF_TR y EF_CR, el "ven_entregado" es la parte en efectivo
                                    if ($original_pago == 'MIXTO_EF_TR' || $original_pago == 'MIXTO_EF_CR') {
                                        $monto_a_mostrar = $entregado;
                                    }
                                    break;
                                case 'TRANSFERENCIA':
                                    // En EF_TR: Total - Efectivo. En TR_CR: ven_entregado es la transferencia
                                    if ($original_pago == 'MIXTO_EF_TR') {
                                        $monto_a_mostrar = $total_ticket - $entregado;
                                    } elseif ($original_pago == 'MIXTO_TR_CR') {
                                        $monto_a_mostrar = $entregado;
                                    }
                                    break;
                                case 'CREDITO':
                                    // En mixtos con Crédito, la deuda es siempre Total - Parte Pagada(entregado)
                                    if ($original_pago == 'MIXTO_EF_CR' || $original_pago == 'MIXTO_TR_CR') {
                                        $monto_a_mostrar = $total_ticket - $entregado;
                                    }
                                    break;
                            }
                        }
                        $gran_total_proporcional += $monto_a_mostrar;
                ?>
                <tr style="border-bottom:1px solid #eee; transition: background 0.2s;" onmouseover="this.style.background='#f8f9fc'" onmouseout="this.style.background='white'">
                    <td style="padding:12px 15px;"><b>#<?= $v['ven_codigo'] ?></b></td>
                    <td style="padding:12px 15px; color:#555;"><?= date('d/m/Y H:i', strtotime($v['ven_fecha'])) ?></td>
                    <td style="padding:12px 15px;">
                        <span style="background:#eaecf4; color:#4e73df; padding:4px 10px; border-radius:12px; font-size:11px; font-weight:bold; border: 1px solid #d1d3e2;">
                            <?= $original_pago ?>
                        </span>
                    </td>
                    <td style="padding:12px 15px; color:#333;"><?= htmlspecialchars($v['pro_nombre'] ?: 'Consumidor Final') ?></td>
                    <td style="padding:12px 15px;">
                        <div style="font-weight:bold; color:#1c2d3d; font-size:15px;">$<?= number_format($monto_a_mostrar, 2) ?></div>
                        <?php if(round($monto_a_mostrar, 2) != round($total_ticket, 2)): ?>
                            <div style="font-size:10px; color:#999; font-weight:normal;">Ticket total: $<?= number_format($total_ticket, 2) ?></div>
                        <?php endif; ?>
                    </td>
                    <td style="padding:12px 15px; text-align:center;">
                         <button onclick="window.open('vista/ticket.php?id=<?= $v['ven_codigo'] ?>','','width=400,height=600')" title="Reimprimir Ticket" style="background:none; border:none; color:#4e73df; cursor:pointer; font-size:18px;">
                            <i class="fa fa-print"></i>
                        </button>
                    </td>
                </tr>
                <?php endforeach; ?>
                
                <tr style="background:#f8f9fa; border-top:2px solid #4e73df;">
                    <td colspan="4" style="padding:15px; text-align:right; font-weight:bold; font-size:16px;">TOTAL FILTRADO:</td>
                    <td style="padding:15px; font-weight:800; font-size:18px; color:#1cc88a;">$<?= number_format($gran_total_proporcional, 2) ?></td>
                    <td></td>
                </tr>

                <?php else: ?>
                <tr>
                    <td colspan="6" style="padding:50px; text-align:center; color:#999;">
                        <i class="fa fa-search" style="font-size:30px; margin-bottom:10px;"></i><br>
                        No se encontraron ventas para este filtro.
                    </td>
                </tr>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>