Números de documento: OUT-2026-00001 y el final de 00NaN
Por qué cada número de orden sale ahora de un único contador en la base de datos, y por qué dos compañeros no pueden recibir jamás el mismo.
Un número de orden es el asa que usa todo el mundo fuera de su edificio. El cliente lo cita por teléfono, el transportista lo imprime en el CMR, la contable casa la factura con él. Tiene que ser único, legible y emitido en el instante en que la orden existe. Durante un tiempo cumplía dos de tres.
Un contador, por inquilino, por año
Todos los números de documento operativo —saliente OUT-, entrante INB-, recogida COL-, sesión de recepción RECEIV- y trabajo de desmanufactura DMF-— salen de una única función de base de datos que mantiene un contador por organización, por tipo de documento y por año, y lo incrementa bajo un bloqueo. El formato es prefijo, año, cinco dígitos: OUT-2026-00001. Una serie vacía empieza en 00001. En enero el contador vuelve a arrancar, y el año del número le dice qué serie está mirando.
Dos usuarios, un segundo, dos números
Como el contador queda bloqueado mientras reparte un número, dos compañeros que crean órdenes salientes en el mismo momento reciben dos números distintos, siempre. Y si algo llegara alguna vez a colarse por delante del contador, la propia base de datos rechaza un duplicado dentro de la misma organización y el mismo año. El número es una fila que la base de datos escribió y que no volverá a escribir.
Sin puertas laterales
Las órdenes creadas por una importación o por la API pública usan la misma asignación que el botón de la interfaz. Ni un segundo esquema de numeración para el ERP, ni una anulación que produzca un número que el contador nunca vio. Una serie, una función, una regla.
Por qué 00NaN merecía un funeral
El método antiguo leía en el navegador el número más alto que existiera y le sumaba uno. En una serie vacía no había nada a lo que sumar uno, y el resultado era un documento titulado con orgullo OUT-2026-00NaN: lo que dice un ordenador cuando le piden contar algo que no es un número. Dos usuarios simultáneos también podían leer el mismo “más alto” y sumarle uno los dos. Ya no puede pasar ninguna de las dos cosas. No es una cadena de texto. Es una secuencia.