89 Liquidación Inteligente: Cálculo de Interés Devengado y Mora Proporcional en Laravel 12 🧮💰

Duración: 20 min
Módulo: Módulo Liquidación de Préstamo Lección 2 de 6

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