22 📊 Cards, Métricas en Tiempo Real e Ingresos | Sistema de Parqueo Laravel 12 FullStack
Duración: 49 minDescripción
22 📊 Índice de Lección: Cálculos de Ingresos y Animaciones en el Dashboard
La lección 22 se centra en enriquecer el Dashboard del Sistema de Parqueo con métricas financieras detalladas y en tiempo real, utilizando Cards que comparan ingresos por día, semana y mes. También se introduce una mejora visual con efectos de animación en las tarjetas.
1. Mejoras de Diseño y Experiencia de Usuario
- Aplicación de Animación (Zoom): Se añade una clase CSS llamada zoom-p (Zoom Propio) para aplicar una animación de zoom (hover effect) a todas las tarjetas (cards), mejorando la interacción visual del dashboard [03:48].
- Ajustes Visuales: Se realizan correcciones menores en los estilos de las imágenes y se eliminan bordes innecesarios para que la animación funcione correctamente [07:07].
2. Implementación del Módulo de Vehículos
Se crea un módulo para listar vehículos, ya que no existía una vista dedicada.
- Creación de Directorio y Vista: Se crea el directorio vehiculos y el archivo index.blade.php [08:11].
- Lógica del Controlador: Se implementa la función index en el controlador para obtener todos los vehículos (Vehiculo::all()) y enviarlos a la vista [08:52].
- Diseño de la Tabla: Se estructura una tabla para mostrar los detalles del vehículo, incluyendo la Placa, Marca, Modelo, Color, Tipo y el Nombre del Cliente asociado (a través de la relación) [10:20].
- Definición de Ruta: Se define la ruta de tipo GET (/vehiculos/index) para acceder al nuevo listado [12:20].
- Funcionalidad Extra: Se verifica la funcionalidad de exportación a Excel del listado de vehículos [14:11].
3. Cards de Ingresos (Cálculos en Tiempo Real)
Se añaden tarjetas específicas para el cálculo y la comparación de ingresos, restringiendo las consultas a tickets con estado completado.
3.1. Ingresos Diarios
- Ingreso de Hoy: Se calcula la suma del monto_total de los tickets facturados (completado) cuya fecha_salida coincide con la fecha actual, usando Carbon::today() [17:45].
- Ingreso de Ayer: Se calcula la suma del monto_total de los tickets facturados cuya fecha_salida coincide con la de ayer, usando Carbon::yesterday() [23:12].
3.2. Ingresos Semanales
- Ingreso de Esta Semana: Se utiliza la función whereBetween y Carbon::startOfWeek() y Carbon::endOfWeek() para sumar los ingresos entre el inicio y el fin de la semana actual [24:51].
- Ingreso de la Semana Anterior: Se usa subWeek() junto con startOfWeek() y endOfWeek() para sumar los ingresos de la semana pasada [26:34].
3.3. Ingresos Mensuales y Totales
- Ingreso de Este Mes: Se utiliza la función whereMonth() y whereYear() para contabilizar los ingresos del mes y año actual, evitando sumar datos de años anteriores [31:34].
- Ingreso del Mes Anterior: Se emplea subMonth() para sumar los ingresos del mes inmediatamente anterior [32:14].
- Ingreso Total del Sistema: Se calcula la suma de todos los monto_total de los tickets facturados hasta la fecha [38:04].
4. Corrección en el Flujo de Facturación
Se corrige un error que impedía la redirección a la factura generada tras completar el proceso de cobro.
- Envío de Factura ID: Se modifica el controlador para que, al facturar un ticket, se envíe el factura_id a la sesión en lugar del ticket_id [41:09].
- Uso del Modal: Se añade un modal específico para la impresión de la factura (modal-pdf-factura), que se activa solo cuando existe el factura_id en la sesión [42:30].
- Prueba y Reinicio: Se realiza una prueba forzada del proceso de facturación y, debido a errores de IDs duplicados por el desarrollo, se ejecuta un comando php artisan migrate:fresh --seed para restablecer la base de datos y asegurar el correcto funcionamiento de los ingresos [45:59].
- Resultado Final: Se demuestra la facturación y cómo el monto se refleja inmediatamente en el card de Ingresos de Hoy [47:03].