Conclusión por adelantado: el último dígito de cada código de ubicación debería ser un dígito de control. He visto este fallo exacto tres veces, y las tres terminaron igual: nada fue robado, pero el sistema no podía encontrarlo. Un dígito extra cuesta casi nada y detecta la gran mayoría de estos casos de inventario "perdido".
El caso más reciente se cerró hace unos meses. Un cliente de autopartes en el este de China, un DC nuevo de unos 20,000 metros cuadrados, tres meses después del go-live. Primer conteo completo de pared a pared: más de 2 millones de yuanes en inventario que no cuadraban. Nada robado, nada mal enviado — más de 40 palets habían sido colocados en ubicaciones equivocadas. La ubicación B-12-03-4 fue leída como B-12-08-4: el escaneo del conductor del montacargas falló por una etiqueta sucia, la digitó a mano, y el 3 se convirtió en 8. En el WMS esos 40 palets estaban "en" B-12-03-4; en realidad estaban en B-12-08-4. Durante dos semanas completas, ventas veía stock en pantalla, los preparadores no lo encontraban en el piso, servicio al cliente aguantaba las quejas de los clientes, y el almacén aguantaba las quejas de ventas. Al final hicieron falta dos personas y cinco días abriendo cada ubicación para encontrarlos. Dos millones de yuanes "perdidos" durante dos semanas — por un dígito mal leído.
El segundo proyecto dolió aún más. A principios de 2024, un almacén 3PL en el sur de China cambió a un proveedor de etiquetas más barato. Los márgenes de la nueva plantilla estaban mal, y la impresión se recortó 2 milímetros a la derecha — justo donde estaba el dígito de control. La mitad de las etiquetas se escaneaban como códigos truncados, el piso volvió a la digitación manual sin dígito de control que detectara los errores, y las tasas de ubicación errónea se dispararon. Lo que ahorraron en etiquetas no cubrió la mano de obra de buscar un solo palet perdido. Dos proyectos, uno mal leído por un humano, otro mal impreso por un proveedor — misma causa raíz: el diseño del código no le daba a los errores ninguna oportunidad de ser detectados.
Cómo un dígito de control evita esto
La idea completa en una frase: agregar un dígito que trae su propia respuesta, para que el sistema pueda verificar cada entrada.
Toma la ubicación B12034 (solo dígitos, separadores eliminados). En el WMS calculamos un dígito de control con el algoritmo de Luhn — el mismo detrás de los números de tarjetas de crédito — y la ubicación se convierte en B12034-7. Desde entonces, cada escaneo o entrada digitada se verifica primero: ¿puede el sistema recalcular ese 7 final a partir de los dígitos anteriores? Si no, parada total, error en rojo, el palet nunca llega al hueco equivocado.
No es magia. Te explico la matemática, cada paso reproducible. Digamos que los dígitos de la ubicación son 417203:
- Agrega un cero al final como marcador de posición: 4172030.
- Desde la derecha, duplica cada 2.º, 4.º y 6.º dígito: el 3 se convierte en 6, el 2 en 4, el 1 en 2. (Si duplicar da 10 o más, suma los dos dígitos — 8 por 2 es 16, así que toma 1 más 6 para obtener 7.)
- Suma todo: 0 más 6 más 0 más 4 más 7 más 2 más 4 es igual a 23.
- El dígito de control es 10 menos el resto de 23 dividido entre 10 — 10 menos 3, que es 7.
Código de ubicación completo: 4172037. Ahora el conductor digita 417208 en lugar de 417203. El sistema verifica 4172087, la matemática no da 7, y la pantalla muestra un error antes de que el palet salga del muelle. Ese es todo el truco: un dígito que hace que lo "equivocado" sea detectable.

¿Qué algoritmo? No inventes el tuyo — aquí la comparación:
| Algoritmo | Cómo funciona | Detecta | Debilidad | | Luhn | Duplica dígitos alternos, suma, mod 10 | Errores de un solo dígito, la mayoría de transposiciones adyacentes | Necesita soporte del WMS para la lógica de verificación | | Suma ponderada | Multiplica cada dígito por un peso fijo, mod 10 | Errores de un solo dígito | Pesos equivocados significan cero protección | | Dígito de control GS1 | Posiciones impares/pares por 3 y 1 | Errores de un solo dígito | Hecho para códigos de barras de productos; usarlo en ubicaciones exige consistencia en todo el sitio |
Mi veredicto: usa Luhn para los códigos de ubicación, punto final. Las "reglas de control caseras" son un fallo que he visto tres veces — cada vez, el siguiente consultor no pudo reconstruir la regla vieja, y el sitio terminó reetiquetando todo el almacén.
Configurarlo en tu WMS: cuatro pasos, ninguno opcional
- Fija la regla del código antes de imprimir una sola etiqueta. Tres frases: el código de ubicación es igual a zona-pasillo-nivel-hueco más un dígito de control; los separadores son solo de visualización y se excluyen de la matemática; el dígito de control siempre va al final. Imprime las etiquetas primero y define la regla después, y reimprimirás — lo he visto tres veces.
- Agrega dos campos a los datos maestros de ubicaciones en el WMS: dígito de control y nombre del algoritmo. No dejes el dígito de control solo en la etiqueta impresa; el sistema necesita un lugar donde guardarlo y configurarlo, o el día que cambies de proveedor de etiquetas será el día del desastre.
- Impon la verificación en tres puntos de contacto: colocación, movimientos y ajustes de conteo cíclico. Cada escaneo o ubicación digitada se verifica; los fallos se bloquean y se registran. Imponerla solo en la colocación es lo mismo que no imponerla — en mis proyectos, la mayoría de las ubicaciones erróneas ocurrieron durante movimientos y ajustes de conteo.
- Rellena el historial con un script: calcula los dígitos de control de todas las ubicaciones existentes de una vez y reimprime en un solo lote. No hagas que el piso los calcule a mano. Para un sitio nuevo de 30,000 ubicaciones, corro el trabajo por lotes la noche antes del go-live.
Un dilema a considerar: bloqueo total versus solo advertencia. Un bloqueo total ralentiza la operación — cada error detiene a un conductor para una confirmación. Solo advertencia se ignora, que es lo mismo que no tener nada. Mi reparto: bloqueo total en colocación y movimientos (un error ahí significa que un palet entero desaparece), advertencia más revisión el mismo día en ajustes de conteo (contar es sensible al tiempo, y los errores salen el mismo día). Cualquiera de los dos extremos está mal.
Lista de verificación para la noche del go-live: si fallas una de estas cinco, no salgas en vivo
- ¿Las etiquetas se están recortando? El dígito de control está al final — un material angosto o un margen de plantilla mal configurado corta la mitad y no se escanea. Escanea 10 etiquetas una por una; no muestrees.
- ¿La entrada del PDA está bloqueada? Algunos PDA con Android usan por defecto un método de entrada en chino, y los dígitos de ancho completo versus medio ancho son caracteres distintos para el sistema — cada verificación falla. Bloquea cada dispositivo en entrada de medio ancho en inglés antes del go-live, y revísalos uno por uno.
- ¿Diseñaste contra lecturas erróneas? 0 versus O, 1 versus I, 5 versus S — en altura, con mala luz, el ojo humano los confunde constantemente. Mi regla: solo dígitos en los códigos de ubicación, una fuente monoespaciada con cero tachado, y 0 y O nunca aparecen en la misma etiqueta.
- ¿Alguien está leyendo el registro de bloqueos? Bloquear errores que nadie revisa es teatro. Exporta el registro de bloqueos a diario en la primera semana — averigua si son errores reales o una regla mal configurada — y relaja en la segunda semana.
- ¿Las ubicaciones heredadas están rellenadas? Códigos viejos y nuevos mezclados son un desastre. Rellena todo o reemplaza todo; sin puertas traseras de "códigos con derechos adquiridos".
La conclusión contraintuitiva: nunca es culpa del trabajador
En más de 30 go-lives, cada vez que esto pasó, el primer instinto de la gerencia fue "más capacitación" y "penalizar errores". Pero leer mal una larga cadena de dígitos es simplemente humano — ninguna cantidad de "ten cuidado" lo arregla, y las multas lo arreglan aún menos. Tienes dos opciones: aceptar que los humanos errarán y dejar que el sistema lo detecte, o apostar a que los humanos nunca errarán y pasar días cada mes buscando flete "perdido". La primera cuesta un dígito; la segunda le costó a un cliente 2 millones de yuanes en los libros. Esa matemática la puedes hacer tú mismo.
Algo que puedes hacer mañana: abre los datos maestros de ubicaciones de tu WMS esta noche y revisa si hay un campo de dígito de control. Si no, imprime la lista de cinco puntos de arriba, pégala en la pared y recórrela antes de tu próximo go-live.
Por Lin Xiao, Consultor de Implementación de WMS
Traducido del inglés. En caso de discrepancia, prevalece la versión en inglés.











