<?php
ob_start();
require_once __DIR__.'/../../config/auth.php';require_once __DIR__.'/_remisiones.php';$id=(int)($_GET['id']??0);$r=remision_buscar($conn,$id);if(!$r){http_response_code(404);exit('Remisión no encontrada.');}
$tcpdf=dirname(__DIR__,2).'/vendor/tcpdf/tcpdf.php';if(!is_file($tcpdf)){http_response_code(500);exit('Generador PDF no instalado.');}error_reporting(E_ALL & ~E_WARNING & ~E_DEPRECATED);if(!function_exists('each')){function each(&$a){$k=key($a);if($k===null)return false;$v=current($a);next($a);return [0=>$k,1=>$v,'key'=>$k,'value'=>$v];}}require_once $tcpdf;
class RemisionPDF extends TCPDF {public function Footer(){$this->SetY(-12);$this->SetFont('helvetica','',8);$this->SetTextColor(100);$this->Cell(0,8,'HM Servicios Informáticos - Página '.$this->getAliasNumPage().' de '.$this->getAliasNbPages(),0,0,'C');}}
$pdf=new RemisionPDF('P','mm','A4',true,'UTF-8',false);$pdf->SetCreator('HM');$pdf->SetAuthor('HM Servicios Informáticos');$pdf->SetTitle('Remisión '.$r['numero_servicio']);$pdf->SetMargins(12,18,12);$pdf->SetAutoPageBreak(true,16);$pdf->AddPage();$logo=dirname(__DIR__,2).'/assets/img/logo_hm_pdf.jpg';if(is_file($logo))$pdf->Image($logo,12,10,36,0,'JPG');$pdf->SetFont('helvetica','B',17);$pdf->SetTextColor(23,105,170);$pdf->Cell(0,10,'REMISIÓN DE SERVICIO',0,1,'R');$pdf->SetFont('helvetica','B',11);$pdf->SetTextColor(40);$pdf->Cell(0,7,$r['numero_servicio'].' - '.date('d/m/Y',strtotime($r['fecha'])),0,1,'R');$pdf->Ln(5);
function celdaPdf($label,$valor){return '<td width="33%"><small color="#667085"><b>'.htmlspecialchars($label).'</b></small><br>'.nl2br(htmlspecialchars((string)($valor?:'—'))).'</td>';}
function seccionPdf($titulo,$contenido){return '<h3 style="background-color:#eef5fb;color:#1769aa;border-left:4px solid #1769aa;padding:5px">'.htmlspecialchars($titulo).'</h3>'.$contenido;}
$html=seccionPdf('Datos generales','<table border="1" cellpadding="5" cellspacing="0"><tr>'.celdaPdf('Empresa',$r['empresa']).celdaPdf('Departamento',$r['departamento']).celdaPdf('Estado',$r['estado']).'</tr><tr>'.celdaPdf('Inicio',trim($r['fecha_inicio'].' '.$r['hora_inicio'])).celdaPdf('Finalización',trim($r['fecha_finalizacion'].' '.$r['hora_finalizacion'])).celdaPdf('Técnico asignado',$r['tecnico_asignado']).'</tr></table>');
$html.=seccionPdf('Solicitante / usuario','<table border="1" cellpadding="5"><tr>'.celdaPdf('Nombre y apellido',$r['solicitante_nombre']).celdaPdf('Área / Cargo',trim($r['solicitante_area'].' / '.$r['solicitante_cargo'],' /')).celdaPdf('Teléfono / Correo',trim($r['solicitante_telefono'].' / '.$r['solicitante_correo'],' /')).'</tr><tr><td colspan="3"><b>Ubicación:</b> '.htmlspecialchars($r['solicitante_ubicacion']?:'—').'</td></tr></table>');
$detalleEquipo=trim($r['equipo_marca'].' '.$r['equipo_modelo']).' | Serie: '.($r['equipo_serie']?:'—').' | Inventario: '.($r['equipo_inventario']?:'—').' | Host: '.($r['equipo_hostname']?:'—').' | IP: '.($r['equipo_ip']?:'—').' | MAC: '.($r['equipo_mac']?:'—');
$html.=seccionPdf('Equipo, accesorios y servicio','<table border="1" cellpadding="5"><tr><td><b>Equipo/Servicio:</b> '.htmlspecialchars(remision_texto_lista($r['equipos'])?:'—').'<br>'.nl2br(htmlspecialchars($r['equipos_observacion']?:'')).'</td></tr><tr><td><b>Accesorios:</b> '.htmlspecialchars(remision_texto_lista($r['accesorios'])?:'—').'<br>'.nl2br(htmlspecialchars($r['accesorios_observacion']?:'')).'</td></tr><tr><td><b>Detalle:</b> '.htmlspecialchars($detalleEquipo).'</td></tr><tr><td><b>Tipos de servicio:</b> '.htmlspecialchars(remision_texto_lista($r['tipos_servicio'])?:'—').'<br>'.nl2br(htmlspecialchars($r['servicio_observacion']?:'')).'</td></tr></table>');
$detalles=remision_equipos($conn,$id);$detalleHtml='';while($d=$detalles->fetch_assoc()){$detalleHtml.='<p><b>'.htmlspecialchars($d['tipo_equipo']).'</b>: '.htmlspecialchars(trim($d['marca'].' '.$d['modelo'])?:'Sin detalle').' | Serie: '.htmlspecialchars($d['numero_serie']?:'—').' | Inventario: '.htmlspecialchars($d['inventario']?:'—').' | Host: '.htmlspecialchars($d['hostname']?:'—').' | IP: '.htmlspecialchars($d['direccion_ip']?:'—').' | MAC: '.htmlspecialchars($d['direccion_mac']?:'—').($d['observacion']?'<br>'.nl2br(htmlspecialchars($d['observacion'])):'').'</p>';}$html.=seccionPdf('Detalle por equipo / servicio',$detalleHtml?:'<p>Sin detalles adicionales.</p>');
$html.=seccionPdf('Detalle del trabajo','<table border="1" cellpadding="5"><tr><td><b>Motivo / solicitud</b><br>'.nl2br(htmlspecialchars($r['motivo'])).'</td></tr><tr><td><b>Trabajo realizado</b><br>'.nl2br(htmlspecialchars($r['trabajo_realizado']?:'—')).'</td></tr><tr><td><b>Observaciones técnicas</b><br>'.nl2br(htmlspecialchars($r['observaciones_tecnicas']?:'—')).'</td></tr></table>');
$segs=remision_seguimientos($conn,$id);$segHtml='';while($s=$segs->fetch_assoc())$segHtml.='<p><b>'.date('d/m/Y H:i',strtotime($s['creado_en'])).' - '.htmlspecialchars($s['estado']).' - '.htmlspecialchars($s['usuario']).'</b><br>'.nl2br(htmlspecialchars($s['detalle'])).'</p>';$html.=seccionPdf('Seguimientos',$segHtml?:'<p>Sin seguimientos.</p>');
$pdf->SetFont('helvetica','',9);$pdf->writeHTML($html,true,false,true,false,'');$nombre=preg_replace('/[^A-Za-z0-9_-]/','_',$r['numero_servicio']);while(ob_get_level()>0)ob_end_clean();$pdf->Output($nombre.'.pdf','D');exit;
