<?php
// vista/reportes/reporte_detallado.php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$db = new clsbdd();
$db->ejecutar("SET NAMES 'utf8'"); 

$desde = $_POST['fecha_desde'] ?? date('Y-m-d');
$hasta = $_POST['fecha_hasta'] ?? date('Y-m-d');

// CONSULTA UNIFICADA CORREGIDA 
$sql = "SELECT * FROM (
            -- PARTE 1: Órdenes de Trabajo (Lavados)
            SELECT 
                o.ord_id,
                o.ord_fecha as fecha_orden, 
                o.ord_horaentrada as hora_inicio, 
                o.ord_horasalida as hora_fin,
                v.veh_placa as placa, 
                v.veh_propietario as cliente,
                p.pag_metodo as metodo, 
                p.pag_numerocomprobante as referencia,
                (SELECT SUM(det_subtotal) FROM car_ordendetalles WHERE ord_id = o.ord_id) as total_fila,
                GROUP_CONCAT(DISTINCT 
                    CASE 
                        WHEN d.det_tipoitem = 'Servicio' THEN IFNULL(s.ser_nombre, 'Servicio Especial')
                        ELSE IFNULL(i.pro_nombre, 'Producto Adicional')
                    END SEPARATOR ', '
                ) as detalle_items,
                GROUP_CONCAT(DISTINCT IFNULL(ope.ope_siglas, '--') SEPARATOR ' + ') as equipo_trabajo,
                TIMESTAMPDIFF(MINUTE, CONCAT(o.ord_fecha, ' ', o.ord_horaentrada), CONCAT(o.ord_fecha, ' ', IFNULL(o.ord_horasalida, CURTIME()))) as minutos,
                'LAVADO' as tipo_registro
            FROM car_ordenestrabajo o
            INNER JOIN car_clientesvehiculos v ON o.veh_id = v.veh_id
            LEFT JOIN car_ordendetalles d ON o.ord_id = d.ord_id
            LEFT JOIN car_catservicios s ON d.det_itemid = s.ser_id AND d.det_tipoitem = 'Servicio'
            LEFT JOIN car_invproductos i ON d.det_itemid = i.pro_id AND d.det_tipoitem = 'Producto'
            LEFT JOIN car_operarios ope ON d.ope_id = ope.ope_id 
            LEFT JOIN car_pagoscomprobantes p ON o.ord_id = p.ord_id
            WHERE o.ord_fecha BETWEEN '$desde' AND '$hasta' AND o.ord_estado = 'Activo'
            GROUP BY o.ord_id

            UNION ALL

            -- PARTE 2: Ventas Directas (Tienda)
            SELECT 
                ve.ven_codigo as ord_id,
                DATE(ve.ven_fecha) as fecha_orden, 
                TIME(ve.ven_fecha) as hora_inicio, 
                NULL as hora_fin,
                'TIENDA' as placa, 
                ve.ven_cliente_nombre as cliente,
                ve.ven_tipo_pago as metodo, 
                ve.ven_comprobante as referencia,
                ve.ven_total as total_fila,
                (SELECT GROUP_CONCAT(CONCAT(vd.vde_cantidad, 'x ', ip.pro_nombre) SEPARATOR ', ') 
                 FROM car_ventas_detalle vd 
                 INNER JOIN car_invproductos ip ON vd.pro_id = ip.pro_id 
                 WHERE vd.ven_codigo = ve.ven_codigo) as detalle_items,
                'VENTA DIRECTA' as equipo_trabajo,
                0 as minutos,
                'PRODUCTO' as tipo_registro
            FROM car_ventas ve
            WHERE DATE(ve.ven_fecha) BETWEEN '$desde' AND '$hasta' AND ve.ven_estado = 1
        ) AS reporte_completo
        ORDER BY fecha_orden DESC, hora_inicio DESC";

$res = $db->ejecutar($sql);

function formatearTiempo($minutos, $tipo) {
    if ($tipo === 'PRODUCTO') return '<span class="text-muted">N/A</span>';
    if ($minutos === null || $minutos < 0) return '<span class="text-muted">--</span>';
    $horas = floor($minutos / 60);
    $min = $minutos % 60;
    return ($horas > 0) ? "{$horas}h {$min}m" : "{$min} min";
}
?>

<div class="card shadow-sm border-0 mb-4 no-print">
    <div class="card-body">
        <form method="POST" class="row g-3 align-items-end">
            <div class="col-md-4">
                <label class="form-label fw-bold small text-uppercase">Desde:</label>
                <input type="date" name="fecha_desde" class="form-control" value="<?= $desde ?>">
            </div>
            <div class="col-md-4">
                <label class="form-label fw-bold small text-uppercase">Hasta:</label>
                <input type="date" name="fecha_hasta" class="form-control" value="<?= $hasta ?>">
            </div>
            <div class="col-md-4">
                <button type="submit" class="btn btn-primary w-100 shadow-sm">
                    <i class="fa fa-sync me-2"></i>Generar Reporte
                </button>
            </div>
        </form>
    </div>
</div>

<div class="card shadow-sm border-0">
    <div class="card-header bg-white d-flex justify-content-between align-items-center py-3">
        <h5 class="mb-0 fw-bold text-primary"><i class="fas fa-file-invoice-dollar me-2"></i>Reporte Detallado: Lavados y Ventas</h5>
        <div class="no-print">
            <button onclick="window.print();" class="btn btn-sm btn-secondary px-3 shadow-sm me-2">
                <i class="fa fa-print me-1"></i> Imprimir Pantalla
            </button>
            <a href="vista/reportes/reporte_ventas_pdf.php?desde=<?= $desde ?>&hasta=<?= $hasta ?>" 
               target="_blank" 
               class="btn btn-sm btn-danger px-3 shadow-sm">
                <i class="fa fa-file-pdf me-1"></i> Generar PDF
            </a>
        </div>
    </div>
    <div class="table-responsive">
        <table class="table table-hover align-middle mb-0">
            <thead class="table-light">
                <tr>
                    <th>Fecha / Hora</th>
                    <th>Tiempo</th>
                    <th>Identificador</th>
                    <th>Detalle de Venta</th>
                    <th>Método Pago</th>
                    <th class="text-end">Total</th>
                </tr>
            </thead>
            <tbody>
                <?php 
                $gran_total = 0;
                if ($res && $res->num_rows > 0):
                    while($r = $res->fetch_assoc()): 
                        $gran_total += $r['total_fila'];
                        $isVenta = ($r['tipo_registro'] === 'PRODUCTO');
                ?>
                <tr>
                    <td>
                        <div class="fw-bold"><?= $r['fecha_orden'] ?></div>
                        <small class="text-muted">
                            <?= date('H:i', strtotime($r['hora_inicio'])) ?> 
                            <?php 
                            // CORRECCIÓN: Si es venta directa no evalúa proceso, solo muestra la hora.
                            if (!$isVenta) {
                                echo $r['hora_fin'] ? ' - '.date('H:i', strtotime($r['hora_fin'])) : ' <span class="badge bg-warning text-dark" style="font-size:0.6rem">EN PROCESO</span>';
                            }
                            ?>
                        </small>
                    </td>
                    <td>
                        <span class="badge bg-light text-dark border">
                            <i class="far fa-clock me-1 text-primary"></i><?= formatearTiempo($r['minutos'], $r['tipo_registro']) ?>
                        </span>
                    </td>
                    <td>
                        <span class="badge <?= $isVenta ? 'bg-info' : 'bg-dark' ?> font-monospace mb-1">
                            <?= $r['placa'] ?>
                        </span>
                        <div class="small fw-bold text-uppercase text-truncate" style="max-width: 150px;">
                            <?= $r['cliente'] ?: 'Consumidor Final' ?>
                        </div>
                    </td>
                    <td>
                        <div class="<?= $isVenta ? 'text-success' : 'text-primary' ?> fw-bold" style="font-size: 0.85rem;">
                            <?= $isVenta ? '<b>[TIENDA]</b> ' : '' ?>
                            <?= $r['detalle_items'] ?: '<span class="text-danger">SIN DETALLE</span>' ?>
                        </div>
                        <div class="small text-muted mt-1">
                            <i class="fas <?= $isVenta ? 'fa-store' : 'fa-users-cog' ?> me-1"></i>
                            <?= $isVenta ? 'Venta Directa' : 'Equipo: <span class="text-dark fw-bold">'.$r['equipo_trabajo'].'</span>' ?>
                        </div>
                    </td>
                    <td>
                        <div class="small fw-bold text-uppercase"><?= $r['metodo'] ?? 'PENDIENTE' ?></div>
                        <?php if($r['referencia']): ?>
                            <div class="text-muted" style="font-size: 0.7rem;">Ref: <?= $r['referencia'] ?></div>
                        <?php endif; ?>
                    </td>
                    <td class="text-end fw-bold text-dark fs-6">$<?= number_format($r['total_fila'], 2) ?></td>
                </tr>
                <?php endwhile; else: ?>
                <tr>
                    <td colspan="6" class="text-center py-4 text-muted">No se encontraron registros en este rango.</td>
                </tr>
                <?php endif; ?>
            </tbody>
            <tfoot class="table-dark">
                <tr>
                    <td colspan="5" class="text-end fw-bold">RECAUDACIÓN TOTAL COMBINADA:</td>
                    <td class="text-end fw-bold fs-5">$<?= number_format($gran_total, 2) ?></td>
                </tr>
            </tfoot>
        </table>
    </div>
</div>