89 Liquidación Inteligente: Cálculo de Interés Devengado y Mora Proporcional en Laravel 12 🧮💰
Duración: 20 minDescripción
🧮 Lección 89: Cálculo de Interés Devengado y Mora Proporcional
En esta lección, comenzamos a codificar la lógica compleja del módulo de liquidación en Laravel 12. El objetivo es que el sistema sepa exactamente cuánto cobrar de interés y mora basándose en el tiempo transcurrido.
1. 🛠️ Inicialización de Variables Críticas
Definimos cuatro variables clave que gobernarán el cálculo [06:54]:
- interes_devengado: El interés acumulado que el cliente debe pagar por el periodo actual.
- dias_devengados: Total de días transcurridos en el periodo en curso.
- dias_de_mora: Días que exceden la fecha de vencimiento (restando los días de gracia).
- mora_devengada: El monto económico resultante de esos días de mora.
2. 🔍 Identificación del Periodo de Inicio
Para calcular el interés de forma precisa, necesitamos saber desde cuándo empezar a contar:
- ultimo_pago_pagado: Buscamos en la base de datos la última cuota que el cliente sí pagó [11:45].
- periodo_inicio: Si existe un pago previo, el conteo inicia desde su fecha de vencimiento; si es la primera cuota, inicia desde la fecha de desembolso del préstamo [13:24].
3. ⚖️ Escenario 1: Liquidación con Cuota Vencida
Abordamos el primer caso lógico: cuando el cliente quiere liquidar, pero la cuota actual ya venció [16:02]:
- Interés Completo: Al estar vencida, se asume el cobro del interés total de esa cuota [18:08].
- Cálculo de Mora: Calculamos la diferencia de días entre la fecha de vencimiento y hoy. A este resultado le restamos los "Días de Gracia" configurados en el sistema para obtener los días de mora reales [19:20].
Conceptos Clave para Entender la Lógica:
- Interés Devengado: Es el interés "ganado" por el prestamista por el simple paso del tiempo, aunque la cuota no haya vencido.
- Mora Proporcional: Solo se aplica si el cliente se pasó de su fecha límite, pero se ajusta según los beneficios (días de gracia) que tenga el préstamo.
✅ Progreso Técnico:
- Implementamos validaciones con Carbon para asegurar que las fechas no contengan horas que ensucien el cálculo (startOfDay).
- Estructuramos el código con un if/else robusto para separar los casos de cuotas vencidas y no vencidas.
🚀 Próximo Paso: En la lección 90, completaremos el Caso 2 (cuando la cuota aún no vence), donde calcularemos el interés proporcional por día, y finalmente integraremos todo en la vista del usuario.
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️