Diez estados, una sola entidad
Casi todos los sistemas de factoring empiezan separando la solicitud de la operación, con dos tablas y dos máquinas de estado. Esa separación no aporta nada y cuesta cara. Una operación es una operación desde que se sube.
Una operación de factoring tiene un embudo: se sube, se evalúa, a veces se rechaza, a veces se aprueba, se cede, se desembolsa, se cobra y se liquida. No todas llegan al final, y eso es lo normal.
La pregunta de diseño que aparece el primer día es cómo modelar que no todas lleguen. Y la respuesta que casi todo el mundo da la primera vez es la equivocada.
Una entidad, no dos
La tentación es separar: una tabla de solicitudes y otra de operaciones. Las solicitudes se evalúan; las que pasan se convierten en operaciones. Suena ordenado.
En la práctica te deja con dos máquinas de estado que hay que mantener sincronizadas, dos identificadores para la misma cosa, y la imposibilidad de responder a preguntas tan básicas como cuánto tardamos de media desde que el cliente sube hasta que cobra, porque ese recorrido cruza dos tablas.
El embudo no se modela con tablas distintas. Se modela con estados. Una operación es una operación desde el momento en que se sube, y que muera en revisión es un desenlace, no una entidad diferente.
Los diez
Este es el juego que usamos, y viene de contrastar una máquina de estados que llevaba años operando:
| Estado | Se entra cuando |
|---|---|
| Pendiente de revisión | El cedente sube la operación |
| Rechazada por riesgos | Riesgos rechaza — terminal |
| Pendiente de confirmación | Riesgos aprueba; empieza la cesión |
| Cancelada | El deudor no acepta, o el cedente se echa atrás — terminal |
| Aprobada | El deudor confirma |
| Desembolsada | Se transfiere el adelanto neto |
| En cobranza | Arranca la gestión de cobro |
| Cobrada parcialmente | Se registra un pago por debajo del total |
| Cobrada | Se llega al cien por cien |
| Liquidada | Se transfiere el remanente — terminal |
El camino feliz es lineal y tiene siete pasos. Los otros tres son las dos salidas —rechazo y cancelación— y el pago parcial.
Que sean diez y no ocho ni quince no es casualidad ni gusto personal: es el resultado de quitar los que sobraban y conservar los que alguien echaba de menos en la operativa diaria.
Rechazada y cancelada no son lo mismo
Parece un matiz y es la diferencia entre poder analizar tu embudo y no poder.
Rechazada por riesgos es una decisión tuya, con una regla detrás y un umbral concreto. Te dice algo sobre tu política de admisión, y si el número crece demasiado la conversación es con el comité de riesgos.
Cancelada es que el deudor no confirmó, o que el cedente se echó atrás. No te dice nada de tu política: te dice algo de tu proceso comercial o del deudor. Si ese número crece, la conversación es otra completamente distinta.
Meterlas en el mismo estado terminal —“no financiada”— ahorra una fila en un enum y te cuesta la única métrica que te habría dicho dónde estás perdiendo operaciones.
Los pagos no son un estado
Ya lo hemos escrito al hablar de la cobranza y merece repetirse aquí, porque es la trampa más común de todo el modelo.
Un pago parcial deja la operación en cobrada parcialmente. El segundo pago parcial la deja igual. Lo que ha cambiado no es el estado, es el saldo.
Cada pago es una fila con su fecha y su importe. El estado solo refleja si se ha llegado al cien por cien. En cuanto intentas codificar el progreso del cobro en el nombre del estado, empiezas a necesitar estados que no significan nada.
Los huecos del enum viejo
Un detalle que dice más de lo que parece. Cuando miramos la numeración de estados del sistema anterior, iba 3, 6, 7, 8, 9, 10… Faltaban el 1, el 2, el 4 y el 5.
Eran estados que existieron y se eliminaron con los años. Es la huella de una máquina que evolucionó operando de verdad, y es la razón por la que merecía la pena partir de ella en vez de dibujar un diagrama en una pizarra: los estados que sobreviven diez años de operación son los que hacen falta.
Otros tres desaparecieron al quitar el modelo con inversores, porque la cesión dejó de tener que esperar al fondeo. El embudo pasó de once estados a diez, y se volvió lineal.
Si estás diseñando esto, mira qué estados tiene el sistema al que vas a sustituir antes de decidir los tuyos. Y pregunta por los que ya no están.
Lo que falta, y lo sabemos
Un estado que no tenemos y que en producción va a hacer falta: cerrada con pérdida. Una operación que se agotó por la escalera de cobranza y no se recuperó no está cobrada, ni está liquidada, ni sigue en cobranza eternamente.
Vale la pena dejarle sitio antes de necesitarlo.