22 📊 Cards, Métricas en Tiempo Real e Ingresos | Sistema de Parqueo Laravel 12 FullStack

Duración: 49 min
Módulo: 📊 Dashboard y Reportes Financieros Lección 3 de 10

Descripció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].