<?php
require_once __DIR__ . '/../../config/config.php';
requireLogin();

$db = getDB();
$id = intval($_GET['id'] ?? 0);
$formato = $_GET['formato'] ?? 'ticket'; // ticket o factura

// Obtener pago
$stmt = $db->prepare("
    SELECT p.*, o.codigo as orden_codigo, o.total as orden_total, o.id as orden_id,
           o.subtotal, o.descuento,
           pac.nombre, pac.apellidos, pac.documento_numero, pac.telefono, pac.direccion,
           u.nombre as cajero
    FROM pagos p
    JOIN ordenes o ON p.orden_id = o.id
    JOIN pacientes pac ON o.paciente_id = pac.id
    JOIN usuarios u ON p.usuario_id = u.id
    WHERE p.id = ?
");
$stmt->execute([$id]);
$pago = $stmt->fetch();

if (!$pago) {
    die('Pago no encontrado');
}

// Obtener configuración del laboratorio
$config = $db->query("SELECT * FROM configuracion LIMIT 1")->fetch();

// Obtener detalle de exámenes de la orden
$stmt = $db->prepare("
    SELECT od.*, e.nombre as examen_nombre, e.codigo as examen_codigo
    FROM orden_detalle od
    JOIN examenes e ON od.examen_id = e.id
    WHERE od.orden_id = ?
");
$stmt->execute([$pago['orden_id']]);
$examenes = $stmt->fetchAll();

// Obtener total pagado de la orden
$stmt = $db->prepare("SELECT COALESCE(SUM(monto), 0) FROM pagos WHERE orden_id = ?");
$stmt->execute([$pago['orden_id']]);
$totalPagado = $stmt->fetchColumn();
$saldoPendiente = $pago['orden_total'] - $totalPagado;

if ($formato === 'factura'):
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Factura <?= $pago['numero_factura'] ?></title>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body {
            font-family: 'Segoe UI', Arial, sans-serif;
            font-size: 12px;
            line-height: 1.4;
            color: #333;
            background: #fff;
        }
        .factura {
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }
        .no-print {
            display: flex;
            gap: 10px;
            margin-bottom: 20px;
            justify-content: center;
        }
        .no-print button, .no-print a {
            padding: 10px 20px;
            font-size: 14px;
            cursor: pointer;
            border: none;
            border-radius: 5px;
            text-decoration: none;
        }
        .btn-print { background: #28a745; color: white; }
        .btn-ticket { background: #17a2b8; color: white; }
        
        .header-factura {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            border-bottom: 3px solid #1a237e;
            padding-bottom: 20px;
            margin-bottom: 20px;
        }
        .logo-section {
            display: flex;
            align-items: center;
            gap: 15px;
        }
        .logo-section img {
            max-height: 70px;
        }
        .empresa-info h1 {
            color: #1a237e;
            font-size: 24px;
            margin-bottom: 5px;
        }
        .empresa-info p {
            font-size: 11px;
            color: #666;
        }
        .factura-info {
            text-align: right;
            background: #1a237e;
            color: white;
            padding: 15px 20px;
            border-radius: 5px;
        }
        .factura-info h2 {
            font-size: 20px;
            margin-bottom: 5px;
        }
        .factura-info .numero {
            font-size: 16px;
            font-weight: bold;
        }
        .factura-info .fecha {
            font-size: 11px;
            margin-top: 5px;
        }
        
        .datos-section {
            display: flex;
            gap: 30px;
            margin-bottom: 25px;
        }
        .datos-cliente, .datos-pago {
            flex: 1;
            background: #f8f9fa;
            padding: 15px;
            border-radius: 5px;
            border-left: 4px solid #1a237e;
        }
        .datos-cliente h3, .datos-pago h3 {
            color: #1a237e;
            font-size: 13px;
            margin-bottom: 10px;
            text-transform: uppercase;
        }
        .datos-cliente p, .datos-pago p {
            margin: 4px 0;
        }
        .datos-cliente strong, .datos-pago strong {
            display: inline-block;
            width: 100px;
            color: #555;
        }
        
        .tabla-detalle {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 20px;
        }
        .tabla-detalle thead {
            background: #1a237e;
            color: white;
        }
        .tabla-detalle th {
            padding: 12px 10px;
            text-align: left;
            font-size: 11px;
            text-transform: uppercase;
        }
        .tabla-detalle th:last-child {
            text-align: right;
        }
        .tabla-detalle td {
            padding: 10px;
            border-bottom: 1px solid #eee;
        }
        .tabla-detalle td:last-child {
            text-align: right;
        }
        .tabla-detalle tbody tr:hover {
            background: #f8f9fa;
        }
        
        .totales-section {
            display: flex;
            justify-content: flex-end;
            margin-bottom: 25px;
        }
        .totales-box {
            width: 300px;
        }
        .totales-box .row {
            display: flex;
            justify-content: space-between;
            padding: 8px 0;
            border-bottom: 1px solid #eee;
        }
        .totales-box .row.total {
            background: #1a237e;
            color: white;
            padding: 12px 10px;
            margin-top: 10px;
            border-radius: 5px;
            font-size: 16px;
            font-weight: bold;
        }
        .totales-box .row.pagado {
            color: #28a745;
            font-weight: bold;
        }
        .totales-box .row.pendiente {
            color: #dc3545;
            font-weight: bold;
        }
        
        .metodo-pago {
            background: #e8f5e9;
            border: 1px solid #4caf50;
            padding: 15px;
            border-radius: 5px;
            margin-bottom: 25px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .metodo-pago h4 {
            color: #2e7d32;
            margin-bottom: 5px;
        }
        .metodo-pago .monto-pagado {
            font-size: 24px;
            color: #2e7d32;
            font-weight: bold;
        }
        
        .footer-factura {
            border-top: 2px solid #eee;
            padding-top: 20px;
            text-align: center;
            color: #666;
            font-size: 10px;
        }
        .footer-factura p {
            margin: 3px 0;
        }
        .footer-factura .gracias {
            font-size: 14px;
            color: #1a237e;
            font-weight: bold;
            margin-bottom: 10px;
        }
        
        @media print {
            body { background: white; }
            .no-print { display: none !important; }
            .factura { 
                max-width: 100%; 
                padding: 0;
                margin: 0;
            }
        }
    </style>
</head>
<body>
    <div class="factura">
        <div class="no-print">
            <button onclick="window.print()" class="btn-print">
                🖨️ Imprimir Factura
            </button>
            <a href="?id=<?= $id ?>&formato=ticket" class="btn-ticket">
                🧾 Ver como Ticket
            </a>
        </div>

        <div class="header-factura">
            <div class="logo-section">
                <?php if ($config && $config['logo']): ?>
                <img src="data:image/<?= $config['logo_extension'] ?>;base64,<?= base64_encode($config['logo']) ?>" alt="Logo">
                <?php endif; ?>
                <div class="empresa-info">
                    <h1><?= $config['nombre_laboratorio'] ?? SITE_NAME ?></h1>
                    <p><?= $config['direccion'] ?? '' ?></p>
                    <p>Tel: <?= $config['telefono'] ?? '' ?> | <?= $config['email'] ?? '' ?></p>
                </div>
            </div>
            <div class="factura-info">
                <h2>FACTURA</h2>
                <div class="numero"><?= $pago['numero_factura'] ?></div>
                <div class="fecha"><?= formatDateTime($pago['fecha_pago']) ?></div>
            </div>
        </div>

        <div class="datos-section">
            <div class="datos-cliente">
                <h3>📋 Datos del Cliente</h3>
                <p><strong>Nombre:</strong> <?= $pago['nombre'] . ' ' . $pago['apellidos'] ?></p>
                <p><strong>Documento:</strong> <?= $pago['documento_numero'] ?: 'N/A' ?></p>
                <p><strong>Teléfono:</strong> <?= $pago['telefono'] ?: 'N/A' ?></p>
                <p><strong>Dirección:</strong> <?= $pago['direccion'] ?: 'N/A' ?></p>
            </div>
            <div class="datos-pago">
                <h3>💳 Datos del Pago</h3>
                <p><strong>Orden:</strong> <?= $pago['orden_codigo'] ?></p>
                <p><strong>Método:</strong> <?= ucfirst($pago['metodo_pago']) ?></p>
                <?php if ($pago['referencia']): ?>
                <p><strong>Referencia:</strong> <?= $pago['referencia'] ?></p>
                <?php endif; ?>
                <p><strong>Cajero:</strong> <?= $pago['cajero'] ?></p>
            </div>
        </div>

        <table class="tabla-detalle">
            <thead>
                <tr>
                    <th width="15%">Código</th>
                    <th>Descripción</th>
                    <th width="15%">Precio</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($examenes as $examen): ?>
                <tr>
                    <td><?= $examen['examen_codigo'] ?></td>
                    <td><?= $examen['examen_nombre'] ?></td>
                    <td><?= formatMoney($examen['precio']) ?></td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>

        <div class="totales-section">
            <div class="totales-box">
                <div class="row">
                    <span>Subtotal:</span>
                    <span><?= formatMoney($pago['subtotal']) ?></span>
                </div>
                <?php if ($pago['descuento'] > 0): ?>
                <div class="row">
                    <span>Descuento:</span>
                    <span>-<?= formatMoney($pago['descuento']) ?></span>
                </div>
                <?php endif; ?>
                <div class="row total">
                    <span>TOTAL ORDEN:</span>
                    <span><?= formatMoney($pago['orden_total']) ?></span>
                </div>
                <div class="row pagado">
                    <span>Total Pagado:</span>
                    <span><?= formatMoney($totalPagado) ?></span>
                </div>
                <?php if ($saldoPendiente > 0): ?>
                <div class="row pendiente">
                    <span>Saldo Pendiente:</span>
                    <span><?= formatMoney($saldoPendiente) ?></span>
                </div>
                <?php endif; ?>
            </div>
        </div>

        <div class="metodo-pago">
            <div>
                <h4>✅ Pago Registrado</h4>
                <span>Método: <?= ucfirst($pago['metodo_pago']) ?></span>
                <?php if ($pago['referencia']): ?>
                 | Ref: <?= $pago['referencia'] ?>
                <?php endif; ?>
            </div>
            <div class="monto-pagado">
                <?= formatMoney($pago['monto']) ?>
            </div>
        </div>

        <?php if ($pago['observaciones']): ?>
        <div style="background: #fff3cd; padding: 10px; border-radius: 5px; margin-bottom: 20px;">
            <strong>Observaciones:</strong> <?= $pago['observaciones'] ?>
        </div>
        <?php endif; ?>

        <div class="footer-factura">
            <p class="gracias">¡Gracias por su preferencia!</p>
            <p><?= $config['pie_pagina'] ?? '' ?></p>
            <p>Documento generado el <?= date('d/m/Y H:i:s') ?></p>
        </div>
    </div>
</body>
</html>

<?php else: // Formato Ticket ?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Ticket <?= $pago['numero_factura'] ?></title>
    <style>
        body {
            font-family: 'Courier New', monospace;
            font-size: 12px;
            width: 300px;
            margin: 0 auto;
            padding: 10px;
            background: #fff;
        }
        .no-print {
            display: flex;
            flex-direction: column;
            gap: 5px;
            margin-bottom: 15px;
        }
        .no-print button, .no-print a {
            width: 100%;
            padding: 10px;
            font-size: 12px;
            cursor: pointer;
            border: none;
            border-radius: 3px;
            text-align: center;
            text-decoration: none;
            display: block;
        }
        .btn-print { background: #28a745; color: white; }
        .btn-factura { background: #007bff; color: white; }
        
        .header {
            text-align: center;
            border-bottom: 1px dashed #000;
            padding-bottom: 10px;
            margin-bottom: 10px;
        }
        .header h2 {
            margin: 0 0 5px 0;
            font-size: 16px;
        }
        .header p {
            margin: 2px 0;
            font-size: 10px;
        }
        .ticket-numero {
            font-size: 14px;
            font-weight: bold;
            margin: 10px 0;
        }
        
        .separator {
            border-top: 1px dashed #000;
            margin: 10px 0;
        }
        
        .info p {
            margin: 3px 0;
            font-size: 11px;
        }
        
        .examenes {
            margin: 10px 0;
            font-size: 11px;
        }
        .examenes .item {
            display: flex;
            justify-content: space-between;
            padding: 2px 0;
        }
        .examenes .item-name {
            flex: 1;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            margin-right: 10px;
        }
        
        .totales {
            border-top: 1px dashed #000;
            padding-top: 10px;
            margin-top: 10px;
        }
        .totales .row {
            display: flex;
            justify-content: space-between;
            padding: 2px 0;
        }
        .totales .total-final {
            font-size: 14px;
            font-weight: bold;
            border-top: 1px solid #000;
            padding-top: 5px;
            margin-top: 5px;
        }
        
        .pago-box {
            background: #f0f0f0;
            padding: 10px;
            margin: 10px 0;
            text-align: center;
        }
        .pago-box .monto {
            font-size: 20px;
            font-weight: bold;
        }
        
        .footer {
            text-align: center;
            font-size: 10px;
            margin-top: 15px;
            padding-top: 10px;
            border-top: 1px dashed #000;
        }
        .footer p {
            margin: 2px 0;
        }
        
        @media print {
            body { width: 100%; }
            .no-print { display: none !important; }
        }
    </style>
</head>
<body>
    <div class="no-print">
        <button onclick="window.print()" class="btn-print">
            🖨️ Imprimir Ticket
        </button>
        <a href="?id=<?= $id ?>&formato=factura" class="btn-factura">
            📄 Ver como Factura
        </a>
    </div>

    <div class="header">
        <h2><?= $config['nombre_laboratorio'] ?? SITE_NAME ?></h2>
        <p><?= $config['direccion'] ?? '' ?></p>
        <p>Tel: <?= $config['telefono'] ?? '' ?></p>
        <div class="separator"></div>
        <p><strong>COMPROBANTE DE PAGO</strong></p>
        <div class="ticket-numero"><?= $pago['numero_factura'] ?></div>
    </div>

    <div class="info">
        <p><strong>Fecha:</strong> <?= formatDateTime($pago['fecha_pago']) ?></p>
        <p><strong>Paciente:</strong> <?= $pago['nombre'] . ' ' . $pago['apellidos'] ?></p>
        <p><strong>Doc:</strong> <?= $pago['documento_numero'] ?: 'N/A' ?></p>
        <p><strong>Orden:</strong> <?= $pago['orden_codigo'] ?></p>
    </div>

    <div class="separator"></div>

    <div class="examenes">
        <p><strong>DETALLE:</strong></p>
        <?php foreach ($examenes as $examen): ?>
        <div class="item">
            <span class="item-name"><?= $examen['examen_nombre'] ?></span>
            <span><?= formatMoney($examen['precio']) ?></span>
        </div>
        <?php endforeach; ?>
    </div>

    <div class="totales">
        <div class="row">
            <span>Subtotal:</span>
            <span><?= formatMoney($pago['subtotal']) ?></span>
        </div>
        <?php if ($pago['descuento'] > 0): ?>
        <div class="row">
            <span>Descuento:</span>
            <span>-<?= formatMoney($pago['descuento']) ?></span>
        </div>
        <?php endif; ?>
        <div class="row total-final">
            <span>TOTAL:</span>
            <span><?= formatMoney($pago['orden_total']) ?></span>
        </div>
    </div>

    <div class="pago-box">
        <p>💵 <?= strtoupper($pago['metodo_pago']) ?></p>
        <div class="monto"><?= formatMoney($pago['monto']) ?></div>
        <?php if ($pago['referencia']): ?>
        <p style="font-size:10px">Ref: <?= $pago['referencia'] ?></p>
        <?php endif; ?>
    </div>

    <?php if ($saldoPendiente > 0): ?>
    <div style="text-align:center; padding:5px; background:#fff3cd; font-size:11px;">
        <strong>Saldo Pendiente: <?= formatMoney($saldoPendiente) ?></strong>
    </div>
    <?php else: ?>
    <div style="text-align:center; padding:5px; background:#d4edda; font-size:11px;">
        <strong>✓ PAGADO EN SU TOTALIDAD</strong>
    </div>
    <?php endif; ?>

    <?php if ($pago['observaciones']): ?>
    <p style="font-size:10px; margin-top:10px;"><strong>Obs:</strong> <?= $pago['observaciones'] ?></p>
    <?php endif; ?>

    <div class="footer">
        <p>Atendido por: <?= $pago['cajero'] ?></p>
        <p>================================</p>
        <p><strong>¡Gracias por su preferencia!</strong></p>
        <p><?= date('d/m/Y H:i:s') ?></p>
    </div>
</body>
</html>
<?php endif; ?>
