28 💲 Reporte Mensual de Ingresos del Parqueo | Sistema de Parqueo Laravel 12 FullStack
Duración: 41 minDescripción
28 💲 Índice de Lección: Reporte Mensual de Ingresos del Parqueo (Laravel 12 FullStack)
La lección 28 detalla la implementación completa de la generación de reportes de facturación en formato PDF para el sistema de parqueo, cubriendo la funcionalidad semanal y el inicio del reporte mensual.
1. Preparación y Simulación de Datos de Prueba
Se crean registros de prueba para validar la funcionalidad de los reportes.
- Generación de Tickets y Cobros [00:25]: Se registran tickets y se simulan cambios en la hora de ingreso para generar un monto a cobrar.
- Facturación de Clientes [01:24]: Se completan los pagos y se emiten las facturas correspondientes, asegurando que existan registros en la base de datos para el reporte.
2. Desarrollo del Reporte Semanal (Generación PDF)
Se implementa la lógica de consulta y la vista del reporte semanal iniciado en el capítulo anterior, utilizando el rango de fechas.
- Lógica de Consulta de Facturación [02:52]:
- Se utiliza una consulta whereBetween en el modelo Facturacion para filtrar los registros por el campo created_at entre fecha_inicio y fecha_fin.
- Se incorpora el modelo Ajuste para obtener la divisa del sistema [05:00].
- Generación del Documento PDF [06:47]:
- Se utiliza la librería Barry Don PDF para retornar la vista del reporte en formato PDF.
- Se envían a la vista las variables: facturaciones, ajuste, fecha_inicio, y fecha_fin [07:43].
- Diseño de la Vista del Reporte (semanal.blade.php) [08:45]:
- Cabecera: Se incluye el título, la fecha y hora de generación del reporte (Carbon::now()) [09:29].
- Periodo del Reporte: Se muestra el rango de fechas con formato de día, mes y año [11:09].
- Manejo de Datos Vacíos: Se agrega un condicional para mostrar un mensaje si no se encuentran facturaciones en el rango seleccionado [13:21].
- Tabla de Resultados: Se listan los registros de facturación, incluyendo: Cliente, Vehículo (Placa), Detalle (Servicio y Horas), Monto y Fecha [15:10].
- Cálculo y Totalización: Se calcula la suma total de los montos cobrados ($total) y se muestra junto con la divisa [20:12].
- Pie de Página (Footer): Se agrega información de Copyright, el año actual y el usuario que generó el reporte (Auth::user()->name) [22:52].
- Verificación: Se prueba la funcionalidad para fechas con y sin datos, confirmando el correcto funcionamiento del reporte semanal [28:13].
3. Implementación Inicial del Reporte Mensual
Se sienta la base para la generación de reportes filtrados por mes y año.
- Creación de Rutas y Funciones [29:41]:
- Se define la ruta /admin/reportes/mensual y la función reporteMensual asociada en el controlador [29:57].
- Diseño del Formulario de Selección (Index) [31:00]:
- Se duplica la sección de reporte semanal y se ajusta para el reporte mensual.
- Selección de Año (<select>): Se crea un select para que el usuario elija la gestión (desde 2020 hasta el año actual), asegurando que se actualice automáticamente cada año [31:26].
- Selección de Mes (<select>): Se crea un select para seleccionar el mes, con los nombres en español, preseleccionando el mes actual [34:04].
- Lógica de Consulta Mensual [35:55]:
- Se reciben las variables year y mes.
- Se utiliza una consulta combinada whereYear y whereMonth en el modelo Facturacion para traer los registros de un mes específico [36:33].
- Ajuste de la Vista Mensual [37:36]:
- Se crea la vista mensual.blade.php a partir del reporte semanal.
- Se ajusta el título y se mapea el número de mes recibido (e.g., 9) al nombre del mes en español (e.g., septiembre) para mostrar el Periodo del Reporte [38:30].
- Se verifica que la consulta mensual funciona correctamente para el mes actual y meses sin facturación [40:07].