26 💲 Cálculo del Monto del Servicio antes de Facturar | Sistema de Parqueo Laravel 12 FullStack

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

¡Contenido Exclusivo!

Adquiere este curso para tener acceso inmediato a esta y a **todas las lecciones Premium**.

Inscribirse Ahora por $10.00 Acceso instantáneo de por vida y código fuente incluido.

Descripción

26 💲 Índice de Lección: Cálculo Dinámico del Costo y Facturación Final (Laravel 12 FullStack)

La lección 26 implementa la característica crucial de cálculo dinámico del costo del servicio en tiempo real en el modal de ocupado y ajusta la lógica de facturación y visualización de tarifas.

1. Visualización del Costo Total a Pagar

Se integra en el modal de "Ocupado" el monto total a pagar antes de que el cliente decida facturar.

  • Implementación de la Interfaz: Se añade la etiqueta Costo Total a Pagar en el modal, con un estilo destacado (tamaño de fuente 20px, color azul) para resaltar el monto al usuario [06:23].
  • Nueva Ruta de Cálculo (calcularMonto): Se crea una ruta de tipo GET (/ticket/{id}/calcular-monto) que el script de JavaScript consulta al abrir el modal [12:19].
  • Lógica de Consulta (AJAX): Se utiliza AJAX para llamar a la nueva ruta, obtener la respuesta (el monto calculado) y reemplazar el contenido del span sin recargar la página [13:03].

2. Lógica de Cálculo Dinámico en el Controlador

La función calcularMonto en el controlador de tickets replica la lógica de cálculo de tiempo y costo de la función finalizarTicket.

  • Identificación del Ticket: Se busca el Ticket ID recibido por la ruta [18:59].
  • Cálculo y Conversión de Tiempo: Se reutiliza la lógica para calcular la diferencia en días, horas y minutos [19:18].
  • Asignación de Divisa: Se consulta la tabla de ajuste para obtener la divisa local (ej. Bolivianos) y se concatena al monto final [20:39].

3. Automatización del Cambio de Tarifa (Día/Hora)

Se implementa una lógica para prevenir que los tickets largos (mayor a un día) sigan cobrando tarifas "Por Hora".

  • Condición de Cambio: Si los días calculados son mayores a 0, el sistema debe cambiar automáticamente la tarifa a "Por Día" [22:29].
  • Búsqueda de Tarifa Mínima: Se consulta la base de datos para obtener el ID más bajo de la tarifa con nombre: 'regular' y tipo: 'por día' [23:26].
  • Actualización del Ticket: El tarifa_id del ticket se actualiza automáticamente con el ID de la tarifa Por Día si se cumple la condición (más de 0 días de estadía), garantizando el cálculo correcto (ej. 100 Bol. por dos días) [25:38].

4. Control de Visibilidad de la Facturación

Se ajusta la visibilidad de los botones de facturación y costo basándose en el "tiempo de gracia" (10 minutos).

  • Condición de Activación: Si la diferencia en minutos es mayor a 10 (es decir, 11 minutos o más), se activa la opción de facturar [33:40].
  • Comportamiento de los Elementos:
    • Cancelación: El botón Cancelar Ticket se deshabilita si los minutos son mayores a 10 [34:29].
    • Facturación: El botón Facturar y el Costo Total a Pagar se muestran (show) [31:46].
    • Tiempo de Gracia: Si el tiempo es menor o igual a 10 minutos, el botón Facturar y el Costo Total a Pagar se ocultan (hide) [32:15].
  • Ajuste de Cálculo para Tiempos Cortos: Se añade una condición en el controlador para que, si las horas calculadas son cero (es decir, menos de 1 hora después del tiempo de gracia), se redondee a 1 hora, asegurando el cobro de la tarifa mínima (ej. 5 Bol.) [38:06].

5. Ajuste de Factura Impresa

  • Detalle Adicional: Se modifica el diseño de la factura impresa para incluir los datos de la tarifa (Nombre y Tipo) debajo de los detalles del servicio, brindando mayor claridad en el cobro [43:46].