<?php
// Reporte de Créditos con cálculo real de saldos
ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once $_SERVER['DOCUMENT_ROOT'] . '/carwash/modelo/Db.php';

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

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

// Consulta optimizada: Suma deuda total y resta los abonos de la tabla car_pagoscomprobantes
$sql_general = "SELECT 
                    v.veh_id, 
                    v.veh_propietario, 
                    COUNT(DISTINCT o.ord_id) as total_ordenes,
                    GROUP_CONCAT(DISTINCT v.veh_tipo SEPARATOR ', ') as tipos_vehiculos,
                    SUM(det.subtotal_orden) as deuda_total,
                    IFNULL((SELECT SUM(pag_monto) 
                            FROM car_pagoscomprobantes p 
                            JOIN car_ordenestrabajo o2 ON p.ord_id = o2.ord_id 
                            WHERE o2.veh_id_cliente_credito = v.veh_id), 0) as total_abonado
                FROM car_clientesvehiculos v
                JOIN car_ordenestrabajo o ON o.veh_id_cliente_credito = v.veh_id
                JOIN (SELECT ord_id, SUM(det_cantidad * det_preciounitario) as subtotal_orden 
                      FROM car_ordendetalles GROUP BY ord_id) det ON o.ord_id = det.ord_id
                WHERE o.ord_estadopago = 'Credito'
                AND o.ord_estado = 'Activo'
                AND o.ord_fecha BETWEEN '$fecha_inicio' AND '$fecha_fin'
                GROUP BY v.veh_id
                ORDER BY v.veh_propietario ASC";

$resultado = $db->ejecutar($sql_general);
?>

<div class="container-fluid mt-4">
    <div class="card shadow-sm">
        <div class="card-body">
            <div class="d-flex justify-content-between align-items-center mb-4">
                <h4 class="text-primary fw-bold">REPORTE GENERAL DE CRÉDITOS</h4>
                <button onclick="window.print();" class="btn btn-primary no-print"><i class="fas fa-print"></i> Imprimir</button>
            </div>

            <form method="GET" action="index.php" class="row g-3 mb-4 no-print align-items-end">
                <input type="hidden" name="page" value="reportes/reporte_credito_general">
                <div class="col-md-3">
                    <label class="small fw-bold">DESDE:</label>
                    <input type="date" name="fecha_inicio" class="form-control" value="<?= $fecha_inicio ?>">
                </div>
                <div class="col-md-3">
                    <label class="small fw-bold">HASTA:</label>
                    <input type="date" name="fecha_fin" class="form-control" value="<?= $fecha_fin ?>">
                </div>
                <div class="col-md-2">
                    <button type="submit" class="btn btn-dark w-100">Filtrar</button>
                </div>
            </form>

            <table class="table table-hover table-bordered">
                <thead class="table-dark">
                    <tr>
                        <th>Cliente</th>
                        <th class="text-center">Órdenes</th>
                        <th class="text-end">Deuda Total</th>
                        <th class="text-end text-success">Abonado</th>
                        <th class="text-end">Saldo Pendiente</th>
                        <th class="text-center no-print">Acción</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if ($resultado && $resultado->num_rows > 0):
                        while($row = $resultado->fetch_assoc()): 
                            $saldo_pendiente = $row['deuda_total'] - $row['total_abonado'];
                    ?>
                    <tr>
                        <td class="fw-bold"><?= htmlspecialchars($row['veh_propietario']) ?></td>
                        <td class="text-center"><?= $row['total_ordenes'] ?></td>
                        <td class="text-end">$<?= number_format($row['deuda_total'], 2) ?></td>
                        <td class="text-end text-success fw-bold">$<?= number_format($row['total_abonado'], 2) ?></td>
                        <td class="text-end fw-bold text-danger">$<?= number_format($saldo_pendiente, 2) ?></td>
                        <td class="text-center no-print">
                            <a href="index.php?page=reportes/reporte_credito&cliente_id=<?= $row['veh_id'] ?>&fecha_inicio=<?= $fecha_inicio ?>&fecha_fin=<?= $fecha_fin ?>" class="btn btn-sm btn-outline-info">Detalle</a>
                            <a href="index.php?page=reportes/gestionar_pago&cliente_id=<?= $row['veh_id'] ?>" class="btn btn-sm btn-success">Cobrar</a>
                        </td>
                    </tr>
                    <?php endwhile; else: ?>
                    <tr><td colspan="6" class="text-center">No hay registros en este periodo.</td></tr>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>