<?php
$pageTitle = 'Registrar Pago';
require_once __DIR__ . '/../../config/config.php';
requireLogin();

$db = getDB();
$orden_id = intval($_GET['orden_id'] ?? 0);

// Obtener orden
$stmt = $db->prepare("
    SELECT o.*, p.nombre, p.apellidos, p.documento_numero,
           (SELECT COALESCE(SUM(monto), 0) FROM pagos WHERE orden_id = o.id) as pagado
    FROM ordenes o 
    JOIN pacientes p ON o.paciente_id = p.id 
    WHERE o.id = ?
");
$stmt->execute([$orden_id]);
$orden = $stmt->fetch();

if (!$orden) {
    showAlert('Orden no encontrada', 'danger');
    header('Location: list.php');
    exit;
}

$saldoPendiente = $orden['total'] - $orden['pagado'];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $monto = floatval($_POST['monto']);
    
    if ($monto <= 0) {
        showAlert('El monto debe ser mayor a 0', 'danger');
    } elseif ($monto > $saldoPendiente) {
        showAlert('El monto no puede ser mayor al saldo pendiente', 'danger');
    } else {
        try {
            // Generar número de factura
            $stmt = $db->query("SELECT MAX(id) FROM pagos");
            $maxId = $stmt->fetchColumn() ?: 0;
            $numeroFactura = 'FAC' . date('Ymd') . str_pad($maxId + 1, 4, '0', STR_PAD_LEFT);
            
            $stmt = $db->prepare("
                INSERT INTO pagos (orden_id, numero_factura, monto, metodo_pago, referencia, usuario_id, observaciones)
                VALUES (?, ?, ?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                $orden_id,
                $numeroFactura,
                $monto,
                sanitize($_POST['metodo_pago']),
                sanitize($_POST['referencia']),
                $_SESSION['user_id'],
                sanitize($_POST['observaciones'])
            ]);
            
            $pago_id = $db->lastInsertId();
            
            $_SESSION['alert'] = [
                'type' => 'success',
                'message' => 'Pago registrado correctamente. Factura: ' . $numeroFactura . '. 
                    <a href="recibo.php?id=' . $pago_id . '&formato=ticket" target="_blank" class="alert-link">🧾 Ticket</a> | 
                    <a href="recibo.php?id=' . $pago_id . '&formato=factura" target="_blank" class="alert-link">📄 Factura</a>'
            ];
            header('Location: pendientes.php');
            exit;
            
        } catch (PDOException $e) {
            showAlert('Error: ' . $e->getMessage(), 'danger');
        }
    }
}

require_once __DIR__ . '/../../includes/header.php';
?>

<div class="d-flex justify-content-between align-items-center mt-4 mb-4">
    <h2><i class="bi bi-cash"></i> Registrar Pago</h2>
    <a href="list.php" class="btn btn-outline-secondary">
        <i class="bi bi-arrow-left"></i> Volver
    </a>
</div>

<div class="row">
    <div class="col-md-6">
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-info-circle"></i> Información de la Orden</h5>
            </div>
            <div class="card-body">
                <table class="table table-borderless">
                    <tr>
                        <td width="40%"><strong>Orden:</strong></td>
                        <td><?= $orden['codigo'] ?></td>
                    </tr>
                    <tr>
                        <td><strong>Paciente:</strong></td>
                        <td><?= $orden['nombre'] . ' ' . $orden['apellidos'] ?></td>
                    </tr>
                    <tr>
                        <td><strong>Documento:</strong></td>
                        <td><?= $orden['documento_numero'] ?></td>
                    </tr>
                    <tr>
                        <td><strong>Fecha Orden:</strong></td>
                        <td><?= formatDateTime($orden['fecha_orden']) ?></td>
                    </tr>
                </table>
                
                <hr>
                
                <div class="row text-center">
                    <div class="col-4">
                        <small class="text-muted">Total Orden</small>
                        <h5><?= formatMoney($orden['total']) ?></h5>
                    </div>
                    <div class="col-4">
                        <small class="text-muted">Pagado</small>
                        <h5 class="text-success"><?= formatMoney($orden['pagado']) ?></h5>
                    </div>
                    <div class="col-4">
                        <small class="text-muted">Pendiente</small>
                        <h5 class="text-danger"><?= formatMoney($saldoPendiente) ?></h5>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="col-md-6">
        <div class="card">
            <div class="card-header bg-success text-white">
                <h5 class="mb-0"><i class="bi bi-cash-coin"></i> Registrar Pago</h5>
            </div>
            <div class="card-body">
                <?php if ($saldoPendiente <= 0): ?>
                <div class="alert alert-success">
                    <i class="bi bi-check-circle"></i> Esta orden ya está completamente pagada.
                </div>
                <?php else: ?>
                <form method="POST">
                    <div class="mb-3">
                        <label class="form-label">Monto a Pagar *</label>
                        <div class="input-group input-group-lg">
                            <span class="input-group-text"><?= CURRENCY ?></span>
                            <input type="number" name="monto" class="form-control" required
                                   min="0.01" max="<?= $saldoPendiente ?>" step="0.01"
                                   value="<?= $saldoPendiente ?>">
                        </div>
                        <small class="text-muted">Máximo: <?= formatMoney($saldoPendiente) ?></small>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Método de Pago *</label>
                        <select name="metodo_pago" class="form-select" required>
                            <option value="efectivo">Efectivo</option>
                            <option value="tarjeta">Tarjeta</option>
                            <option value="transferencia">Transferencia</option>
                            <option value="otro">Otro</option>
                        </select>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Referencia (opcional)</label>
                        <input type="text" name="referencia" class="form-control"
                               placeholder="N° de transacción, últimos 4 dígitos, etc.">
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Observaciones</label>
                        <textarea name="observaciones" class="form-control" rows="2"></textarea>
                    </div>
                    
                    <div class="d-grid">
                        <button type="submit" class="btn btn-success btn-lg">
                            <i class="bi bi-check-lg"></i> Registrar Pago
                        </button>
                    </div>
                </form>
                <?php endif; ?>
            </div>
        </div>
    </div>
</div>

<?php require_once __DIR__ . '/../../includes/footer.php'; ?>
