💳 Cuentas Corrientes y Riesgo Crediticio
SIG-CM incorpora un motor de validación de riesgo en tiempo real diseñado para operar con clientes frecuentes, agencias y clientes B2B (Business to Business). Este módulo permite a los clientes diferir sus pagos sin comprometer la seguridad financiera de la empresa.
⚙️ Parámetros del Perfil Crediticio (ClientProfile)
Para que un cliente pueda operar con "Cuenta Corriente", un Administrador o Gerente debe habilitarle un perfil financiero. Este perfil consta de las siguientes reglas:
- Límite de Crédito (
CreditLimit): El monto máximo de deuda que el cliente puede acumular. - Plazo de Pago (
PaymentTermsDays): Los días de gracia por defecto que tiene para pagar una factura (ej: 15, 30, 45 días). Se usa para calcular dinámicamente la fecha de vencimiento (DueDate) de la orden. - Bloqueo Preventivo (
IsCreditBlocked): Un interruptor de emergencia. Si se activa, el cliente no puede seguir comprando a crédito, sin importar si tiene saldo a favor. - Motivo de Bloqueo (
BlockReason): Texto explicativo visible para el cajero (ej: "Enviado a Legales", "Cheque rechazado").
🧮 Cálculo de Deuda en Tiempo Real
El sistema no guarda un campo estático con la deuda del cliente (lo que podría generar desfasajes de datos). En su lugar, la calcula dinámicamente en cada transacción.
Cuando se consulta la deuda de un cliente (ClientProfileRepository.CalculateCurrentDebtAsync), el motor de base de datos ejecuta:
- Busca todas las órdenes (
Orders) pertenecientes al cliente. - Filtra aquellas cuyo estado de pago sea distinto a
Paid(Pagado) oCancelled(Cancelado). - Suma el
TotalAmountde las deudas activas.
🛡️ Flujo de Validación en el Punto de Venta (POS)
Cuando un Cajero intenta imputar un pago utilizando el método "Cuenta Corriente", el sistema ejecuta una barrera de triple validación antes de confirmar la venta en el OrderService:
- Validación de Existencia: Verifica si el cliente tiene un perfil financiero asignado. Si es "Consumidor Final", la venta a crédito se rechaza.
- Validación de Bloqueo: El sistema lee el campo
IsCreditBlocked. Si está activo, interrumpe el flujo y le muestra al cajero elBlockReason. - Validación Matemática (Hard Limit):
Se calcula la fórmula:
Deuda Actual + Total de la Nueva Orden.- Si el resultado es menor o igual al
CreditLimit, la orden se aprueba, se genera y los avisos pasan a estadoPending(listos para publicar). - Si el resultado supera el límite, la transacción se aborta (Rollback), protegiendo a la empresa de sobregiros.
- Si el resultado es menor o igual al
💡 Nota Operativa: Si una venta se divide en múltiples pagos (Ej: 50% Efectivo, 50% Cuenta Corriente), el motor de riesgo solo evalúa el monto que se intentará imputar a la cuenta corriente, brindando flexibilidad al cliente para cubrir el excedente en efectivo.
🏠 General
⚙️ Reglas de Negocio
🏦 Operaciones
SIG-CM Wiki Desarrollado para la gestión integral de avisos, mostrador y tesorería. Volver al Repositorio