Blog ·

La cuenta corriente es un libro mayor, no un número

Un saldo no debería ser un número que mantenés: debería ser un número que podés reproducir. El modelo de libro mayor, y por qué el saldo guardado es solo un cache.

El saldo de la cuenta de un cliente no debería ser un número que mantenés. Debería ser un número que podés reproducir.

El atajo es una columna de saldo que se actualiza en cada operación. Es rápido y funciona — hasta el día en que un cliente discute su saldo. Entonces la pregunta ya no es “cuánto dice” sino “cómo llegó ahí”, y un número solo no tiene respuesta.

El modelo de libro mayor

Cada operación escribe un movimiento inmutable: fecha, importe, signo, referencia a lo que lo causó, y el saldo resultante. El saldo es la suma. Nada pisa nada.

Lo que te da:

  • El resumen de cuenta es una consulta, no un reporte que alguien arma.
  • Las disputas se resuelven leyendo, no reconstruyendo.
  • Los errores se corrigen asentando un movimiento de corrección — que es auditable — en vez de ajustando un número, que no lo es.
  • Y podés responder “¿cuál era el saldo el 15?” — que alguien va a preguntar.

El saldo guardado es un cache

La parte pragmática: nosotros también guardamos un saldo, por velocidad. Pero eso es un cache, y tratarlo como tal es toda la disciplina: es recomputable, se protege bajo el mismo lock que los movimientos que lo modifican, y existe una forma de reconstruirlo.

Un cache que no podés reconstruir no es un cache: es una segunda fuente de verdad que tarde o temprano va a discrepar con la primera.

El principio general

Preferí guardar eventos antes que guardar estado, en todo lugar donde alguien pueda preguntar cómo se llegó al estado. En el dinero, alguien siempre pregunta.

Así están construidos los circuitos de cobranzas, caja y cuenta corriente de YSY Empresa: libros mayores, no tablas editables. Cuando el dueño — o un auditor — pregunta qué pasó, el sistema tiene la respuesta completa.