<?php
require_once "../config/Conexion.php";
require_once "../modelos/OdontPago.php";
require_once "../modelos/OdontPresupuesto.php";

// Cargar TCPDF (Lógica robusta igual que presupuesto)
$baseDir = dirname(__DIR__);
$docRoot = isset($_SERVER['DOCUMENT_ROOT']) && !empty($_SERVER['DOCUMENT_ROOT']) ? rtrim($_SERVER['DOCUMENT_ROOT'], '/') : $baseDir;
$cpanelSharedPath = '/home/' . get_current_user() . '/public_html/tcpdf/tcpdf.php';

$tcpdfFile = '';
$rutasProbar = [
    $docRoot . '/tcpdf/tcpdf.php',
    $cpanelSharedPath,
    $baseDir . '/tcpdf/tcpdf.php',
    $baseDir . '/../tcpdf/tcpdf.php',
    $baseDir . '/public/tcpdf/tcpdf.php',
    $baseDir . '/../public/tcpdf/tcpdf.php',
    $baseDir . '/public/plugins/tcpdf/tcpdf.php'
];
foreach ($rutasProbar as $ruta) {
    if (file_exists($ruta)) {
        $tcpdfFile = $ruta;
        break;
    }
}
if (!$tcpdfFile) {
    $busqueda = glob($baseDir . '/public/*/tcpdf.php');
    if (empty($busqueda)) {
        $busqueda = glob($baseDir . '/public/plugins/*/tcpdf.php');
    }
    $tcpdfFile = !empty($busqueda) ? $busqueda[0] : '';
}
if (!$tcpdfFile) {
    die("Error: TCPDF no encontrado.");
}
require_once($tcpdfFile);

$pago = new OdontPago();
$presupuesto = new OdontPresupuesto();

$idpago = $_GET['id'];

// Obtener datos del pago
// Necesitamos un método en OdontPago que traiga info completa. 
// Por ahora usaremos consultas directas para armar el reporte si el modelo no tiene "mostrar" completo
$sql = "SELECT p.*, fp.nombre as forma_pago_nombre, per.nombre, per.apaterno, per.amaterno, pres.idpresupuesto, pres.saldo_pendiente 
        FROM odont_pago p 
        INNER JOIN odont_forma_pago fp ON p.idforma_pago = fp.idforma_pago 
        INNER JOIN odont_presupuesto pres ON p.idpresupuesto = pres.idpresupuesto
        INNER JOIN persona per ON pres.idpersona = per.idpersona
        WHERE p.idpago = '$idpago'";
$rspta = ejecutarConsultaSimpleFila($sql);

if (!$rspta) {
    die("Pago no encontrado");
}

// Crear PDF - A5 Horizontal (Landscape)
$pdf = new TCPDF('L', 'mm', 'A5', true, 'UTF-8', false);

// Configuración
$pdf->SetCreator('Sistema Odontológico');
$pdf->SetTitle('Recibo de Pago #' . $idpago);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetMargins(15, 10, 15);
$pdf->SetAutoPageBreak(TRUE, 10);
$pdf->AddPage();

// Banner dinámico
$banner_path = '../public/img/banner.png';
if (file_exists($banner_path)) {
    // A5 Landscape ancho = 210mm
    // Margenes 15+15=30, util = 180mm
    // Banner 160mm centrado (igual que presupuesto)
    $pageWidth = $pdf->getPageWidth();
    $bannerWidth = 160;
    $x = ($pageWidth - $bannerWidth) / 2;
    // Ajustar posición Y a 8 para dar más aire arriba pero no tanto
    $pdf->Image($banner_path, $x, 8, $bannerWidth, 0, 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false);
    $pdf->Ln(28); // Reducido de 35 a 28
} else {
    $pdf->SetFont('helvetica', 'B', 16);
    $pdf->Cell(0, 10, 'COMPROBANTE DE INGRESO', 0, 1, 'C');
    $pdf->Ln(5);
}

// Título
$pdf->SetFont('helvetica', 'B', 14);
$pdf->SetFillColor(46, 204, 113); // Verde esmeralda
$pdf->SetTextColor(255, 255, 255);
$pdf->Cell(0, 8, 'RECIBO DE CAJA N° ' . str_pad($idpago, 6, '0', STR_PAD_LEFT), 0, 1, 'C', true); // Altura de celda reducida a 8
$pdf->Ln(4); // Reducido de 5 a 4

// Datos
$pdf->SetTextColor(0, 0, 0);
$pdf->SetFont('helvetica', '', 10); // Reducido de 11 a 10 para ganar espacio

// Cuadro de datos
$pdf->SetFillColor(245, 245, 245);
$pdf->Rect(15, $pdf->GetY(), 180, 28, 'F'); // Altura reducida de 35 a 28
$pdf->Ln(1);

$pdf->SetFont('helvetica', 'B', 10);
$pdf->Cell(25, 6, 'FECHA:', 0, 0, 'L');
$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(65, 6, date('d/m/Y H:i', strtotime($rspta['fecha_pago'])), 0, 0, 'L');

$pdf->SetFont('helvetica', 'B', 10);
$pdf->Cell(35, 6, 'FORMA PAGO:', 0, 0, 'L');
$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(55, 6, strtoupper($rspta['forma_pago_nombre']), 0, 1, 'L');

$pdf->SetFont('helvetica', 'B', 10);
$pdf->Cell(25, 6, 'CLIENTE:', 0, 0, 'L');
$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(155, 6, strtoupper($rspta['apaterno'] . ' ' . $rspta['amaterno'] . ' ' . $rspta['nombre']), 0, 1, 'L');

$pdf->SetFont('helvetica', 'B', 10);
$pdf->Cell(25, 6, 'REF:', 0, 0, 'L');
$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(155, 6, $rspta['numero_referencia'] ? strtoupper($rspta['numero_referencia']) : '---', 0, 1, 'L');

$pdf->Ln(5); // Reducido de 8 a 5

// Concepto y Monto
$pdf->Rect(15, $pdf->GetY(), 180, 20, 'D'); // Altura reducida de 25 a 20

$pdf->SetFont('helvetica', 'B', 11);
$pdf->Cell(130, 8, 'CONCEPTO', 'R', 0, 'C');
$pdf->Cell(50, 8, 'IMPORTE', 0, 1, 'C');

$pdf->Line(15, $pdf->GetY(), 195, $pdf->GetY()); // Línea separadora

$pdf->SetFont('helvetica', '', 10);
$concepto = "Abono a Presupuesto N° " . str_pad($rspta['idpresupuesto'], 6, '0', STR_PAD_LEFT);
if ($rspta['observaciones']) {
    $concepto .= " (" . $rspta['observaciones'] . ")";
}

$pdf->Cell(130, 10, $concepto, 'R', 0, 'L');
$pdf->SetFont('helvetica', 'B', 13);
$pdf->Cell(50, 10, '$ ' . number_format($rspta['monto'], 2), 0, 1, 'C');

$pdf->Ln(6); // Reducido de 10 a 6

// Saldo Restante (Informativo)
$pdf->SetFont('helvetica', 'I', 9);
$pdf->SetTextColor(100, 100, 100);
$pdf->Cell(0, 5, "Saldo pendiente actual del tratamiento: $ " . number_format($rspta['saldo_pendiente'], 2), 0, 1, 'R');

// Firmas
$pdf->Ln(12); // Reducido drásticamente de 20 a 12
$pdf->SetTextColor(0, 0, 0);
$pdf->SetFont('helvetica', '', 8);

$y = $pdf->GetY();
$pdf->Line(30, $y, 80, $y);
$pdf->Line(130, $y, 180, $y);

$pdf->Cell(95, 4, 'RESPONSABLE CAJA', 0, 0, 'C');
$pdf->Cell(95, 4, 'CLIENTE / PACIENTE', 0, 1, 'C');

// Guardar
// Crear carpeta si no existe
$carpetaRecibos = $baseDir . '/files/recibos';
if (!file_exists($carpetaRecibos)) {
    mkdir($carpetaRecibos, 0755, true);
}

$nombreArchivo = 'Recibo_' . str_pad($idpago, 6, '0', STR_PAD_LEFT) . '.pdf';
$rutaGuardado = $carpetaRecibos . '/' . $nombreArchivo;

$pdf->Output($rutaGuardado, 'F');
$pdf->Output($nombreArchivo, 'I');
?>