15 🎟️ Generar pdf de Tickets | Sistema de Parqueo con Laravel 12 FullStack
Duración: 59 minDescripción
🎟️ Lección 15: Generar PDF de Tickets | Sistema de Parqueo con Laravel 12 FullStack
Este video se centra en la implementación de la funcionalidad para generar e imprimir el ticket de parqueo en formato PDF, incluyendo la solución de un problema de lógica de negocio y la mejora de la interfaz de usuario para la visualización de espacios ocupados.
1. Actualización de la Interfaz de Espacios (Vista Principal) 💻
- Validación de Espacios Ocupados:
- Se añade una consulta al controlador para recuperar todos los tickets activos (estado = 'activo') en la base de datos [02:29].
- Se itera sobre los espacios en la vista principal y se compara si el espacio_ID del ticket activo coincide con el espacio_ID del forage principal [06:02].
- Si el espacio está ocupado, se muestra la imagen del vehículo y se añade un botón de "Finalizar Ticket"; de lo contrario, se muestra como "Libre" o "Mantenimiento" [07:19].
- Detalles del Espacio Ocupado:
- Diseño Responsive: Se ajusta el diseño de la grilla de espacios para que sea totalmente responsive, utilizando columnas de Bootstrap (ej. col-md-4) para mejorar la organización en diferentes tamaños de pantalla [22:16].
2. Validación de Lógica de Negocio (Backend) 🛡️
- Prevención de Tickets Duplicados:
- En el controlador (store), antes de crear un nuevo ticket, se consulta si ya existe un ticket con el mismo vehiculo_ID y que su estado_del_ticket sea activo [11:38].
- Si se encuentra un ticket activo para ese vehículo, se devuelve un mensaje de error a la ruta anterior, impidiendo que el mismo vehículo ocupe múltiples espacios al mismo tiempo [14:00].
3. Generación del Reporte en PDF (Tickets) 🖨️
- Instalación de la Librería: Se instala el paquete de Laravel barryvdh/laravel-dompdf para la generación de PDFs [24:47].
- Creación de la Ruta: Se define una nueva ruta de tipo GET (/admin/ticket/{id}/imprimir) para manejar la generación del PDF, recibiendo el ID del ticket como parámetro [26:34].
- Recuperación del ID Dinámico (Frontend):
- Implementación en el Controlador:
- En la función imprimirTicket, se busca el registro del ticket por el ID recibido, incluyendo la relación con el cliente (with('cliente')) [40:30].
- Se recupera la configuración general del sistema (ajuste) para el encabezado del ticket [40:55].
- Se configura el paquete Barryvdh/PDF para una impresora de tickets (ancho de 80 mm, alto automático) [41:24].
- Se retorna la vista del PDF con el nombre ticket.pdf [31:03].
- Diseño del Ticket (ticket-pdf.blade.php):
- Se diseña la plantilla del ticket para adaptarla al formato de impresión de tickets [41:57].
- Encabezado: Muestra el nombre del parqueo, descripción, sucursal, dirección y teléfonos [46:17].
- Cuerpo: Muestra el código de ticket único [48:50], los datos del cliente (nombre, documento), la placa del vehículo [52:25], el espacio asignado, la fecha de ingreso y la hora de ingreso [53:31].
- Pie de página (Footer): Incluye el usuario que atendió el ticket y la hora de impresión actual [54:50].