Lapachos Lending : Ciclo de generacion de comisiones por prestamos de consumo

Creado

Francisco Adrianza

06/11/2025

Descripción

La máquina de estado commissions_cycle automatiza el ciclo de cálculo y registro de comisiones que debe pagar un lender a cada uno de sus comercios por los prestamos generados, basado en el período de negocio configurado (semanal, quincenal o mensual) a traves de la asociacion. Orquesta la inicialización del período, espera hasta la fecha de cálculo, ejecuta el cálculo y registro de comisiones, notifica resultados y repite el ciclo según la configuración. Incluye validaciones de seguridad para evitar loops infinitos y notificaciones a Slack en caso de éxito o error.


Parámetros Recibidos

La máquina de estado recibe los siguientes parámetros principales como entrada:

  • lender_id: ID del lender para el cual se calculan las comisiones.

  • association_id: ID de la asociación vinculada al lender.

  • iteration_count: (opcional) Contador de iteraciones del ciclo.

  • commission_business_period_id: ID del período de negocio (7, 15 o 30 días).

  • commission_business_period_days: Días del período de negocio.

  • commission_payment_term_days: Días del término de pago de la comisión.

  • next_commission_date: Fecha programada para el próximo cálculo de comisión.

  • period_start: Fecha de inicio del período a calcular.

  • period_end: Fecha de fin del período a calcular.


Flujo de Estados

  1. InitializeCommissionPeriod
    Inicializa el ciclo, calcula la próxima fecha de comisión y los parámetros del período.

  2. WaitForCommissionDate
    Espera hasta la fecha programada para el cálculo de comisiones.

  3. CalculateAndRegisterCommissions
    Calcula y registra las comisiones para todos los retailers asociados al lender en el período definido.

  4. CheckIfCommissionsCreated
    Verifica si se crearon comisiones. Si es así, notifica éxito a traves del canal de Slack.

  5. NotifySlackSuccess / NotifySlackError
    Envía notificación a Slack con el resultado del ciclo (éxito o error).

  6. CheckShouldContinue
    Evalúa si el ciclo debe continuar (por ejemplo, si la asociación sigue activa).

  7. IncrementIterationCounter
    Incrementa el contador de iteraciones y repite el ciclo desde la espera.

  8. SuccessState / FailState
    Finaliza la ejecución exitosamente o con error, según corresponda.


Diagrama

stepfunctions_graph.png

Attachments: