Creado | 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
InitializeCommissionPeriod
Inicializa el ciclo, calcula la próxima fecha de comisión y los parámetros del período.WaitForCommissionDate
Espera hasta la fecha programada para el cálculo de comisiones.CalculateAndRegisterCommissions
Calcula y registra las comisiones para todos los retailers asociados al lender en el período definido.CheckIfCommissionsCreated
Verifica si se crearon comisiones. Si es así, notifica éxito a traves del canal de Slack.NotifySlackSuccess / NotifySlackError
Envía notificación a Slack con el resultado del ciclo (éxito o error).CheckShouldContinue
Evalúa si el ciclo debe continuar (por ejemplo, si la asociación sigue activa).IncrementIterationCounter
Incrementa el contador de iteraciones y repite el ciclo desde la espera.SuccessState / FailState
Finaliza la ejecución exitosamente o con error, según corresponda.
