Un lector produce observaciones. Odoo necesita una decisión. Entre ambos está la parte menos brillante y más decisiva de un despliegue RFID: el código que convierte unos cientos de miles de lecturas EPC en un puñado de ajustes de inventario que alguien esté dispuesto a firmar.
Equivocarse aquí no produce un mensaje de error. Produce un almacén que deja de confiar en el sistema y empieza a llevar una hoja de cálculo al lado.
Qué cambió: stock.inventory desapareció, el modelo es stock.quant
Gran parte del material que circula todavía describe un modelo que Odoo ya retiró, así que conviene partir de la verdad actual.
- El antiguo documento stock.inventory quedó obsoleto; desde Odoo 15 el conteo se hace directamente sobre registros stock.quant.
- Un quant se identifica de forma única por producto, ubicación, lote, paquete y propietario; esa tupla es la clave que tu importación debe casar.
- Contar significa escribir inventory_quantity en el quant, en modo inventario, y luego aplicar el inventario.
- Aplicar genera movimientos marcados como ajuste de inventario y, si el producto se valora, capas de valoración.
- El asistente de ajuste (stock.inventory.adjustment.name) agrupa una sesión de conteo y lleva la fecha contable, que es lo que hace auditable el conteo.
La tabla de staging entre el lector y el ERP
Nunca dejes que un lector escriba directamente en el inventario de producción; la capa de staging es donde muere el dato malo.
- Guarda primero las lecturas crudas: EPC, antena, lector, marca de tiempo, RSSI y el identificador de sesión.
- Resuelve el EPC a producto en un paso aparte, para que corregir un mapeo no obligue a recontar el almacén.
- Conserva la fila resuelta, su confianza y la fuente de resolución, porque "lo dedujimos por el prefijo" es información que auditoría pedirá.
- Haz la tabla idempotente por sesión, para que repetir el mismo conteo no duplique.
- Preserva el número de lecturas crudas por EPC; los duplicados son esperables y su cantidad informa sobre la configuración del lector.
Emparejar EPC con producto, lote y ubicación
El emparejamiento es donde se fabrica la mayor parte de la variación, y es totalmente evitable.
- Resuelve el EPC mediante un registro explícito, no parseando el patrón SGTIN en el momento de la lectura salvo que el patrón esté garantizado por contrato.
- Si el producto se controla por lote, el lote debe venir del registro o de una relación de empaque; un EPC rara vez lo lleva.
- La ubicación viene de los metadatos de la sesión, no de la etiqueta, porque las etiquetas no saben dónde están.
- Si un EPC resuelve a dos productos, detente y pon la lectura en cuarentena; una regla silenciosa de primer-match es como aparecen los stocks fantasma.
- Registra los EPC no emparejados en lugar de descartarlos; las etiquetas desconocidas son la vía más rápida para encontrar un defecto de proceso.
Esperado frente a contado: la aritmética que se hace mal
La variación no es contado menos disponible; es una comparación de tres términos, y el tercero son las reservas.
- La cantidad disponible es lo que el libro cree que está físicamente presente.
- La cantidad reservada ya está comprometida con una entrega o una orden de fabricación y no debe tratarse como faltante.
- La cantidad contada es lo que el lector vio durante la sesión, tras deduplicar y aplicar filtros.
- La variación es contado menos disponible; una variación negativa en una línea reservada suele significar mercancía preparada, no perdida.
- Reporta la variación en unidades y en valor, porque un controller triará por valor aunque operaciones trie por unidades.
Aplicar los ajustes con seguridad
La ruta de escritura debe ser aburrida, por lotes y reversible dentro de la ventana de la sesión.
- Escribe inventory_quantity en modo inventario y aplica por ubicación o por sesión, no por etiqueta.
- Procesa en bloques de unos cientos de quants; una transacción por quant convierte un conteo de 100.000 etiquetas en un bloqueo de dos horas.
- El orden de bloqueo importa: ordena los quants por producto y ubicación antes de escribir, para que dos sesiones concurrentes no se bloqueen mutuamente.
- Nunca ajustes una ubicación que esté en una transferencia o en un picking abierto; difiere esos quants a una segunda pasada.
- Guarda la referencia de la sesión en el registro de ajuste, para que la capa de valoración se pueda rastrear hasta el conteo.
Aprobación, fecha contable y pista de auditoría
La diferencia entre un ajuste y una corrección es quién lo aprobó y cuándo llegó a los libros.
- Envía a un segundo aprobador los ajustes por encima de un umbral de valor; por debajo, aplica automáticamente pero registra igual al actor.
- Fija la fecha contable a propósito; un conteo hecho el día 30 y aplicado el 3 pertenece al periodo anterior, o el cierre del mes cuenta otra historia.
- Adjunta el informe de conteo al documento de ajuste, no en una carpeta compartida que se reorganizará.
- Registra la cantidad previa, la contada, la diferencia y el código de motivo en cada línea.
- Concilia la suma de ajustes contra el informe de valoración al cierre; ambos deben contar lo mismo.
Etiquetas desconocidas, duplicados y reconteos
Estos tres casos consumen la mayor parte del soporte, y cada uno admite una política barata y explícita.
- Etiquetas desconocidas: aparcarlas en una ubicación de cuarentena con una tarea y revisarlas semanalmente; nunca escribirlas en un producto real.
- Duplicados: deduplicar por EPC y sesión, pero conservar el conteo crudo para poder identificar un lector con la sesión mal configurada.
- Reconteos: ejecutar el segundo conteo con la misma definición de sesión y comparar antes de ajustar, no después.
- Conteos parciales: marcar la sesión como parcial y ajustar solo las ubicaciones recorridas, o los pasillos no visitados se escribirán a cero.
- Etiquetas ausentes: tratarlas como tarea de reconteo en la misma estantería antes de cualquier ajuste negativo, porque un palé apantallado se ve igual que uno vacío.
Un despliegue que sobrevive al primer cierre de mes
Ensaya toda la cadena en una copia de la base antes del primer ajuste real.
- Ensaya en una copia con el mismo volumen, para que los tiempos y los bloqueos sean representativos.
- Ejecuta un conteo completo sin aplicar nada y compara la variación calculada con el libro actual; esa diferencia es tu error de herramienta.
- Después aplica solo en una ubicación, cierra el periodo y revisa el informe de valoración y los movimientos.
- Solo tras un cierre limpio, extiende a todo el sitio y entrega el runbook a operaciones.
- Publica la tendencia de variación mensual por ubicación; una tendencia creciente es un problema de proceso, no de conteo.
El resumen de ingeniería es corto: almacenar lecturas crudas, resolver de forma determinista, calcular una variación de tres términos, escribir quants por lotes en un orden de bloqueo estable, aplicar con fecha contable explícita y conservar cada número intermedio. Hazlo, y la RFID deja de ser un gadget de conteo y se convierte en la razón por la que el libro por fin dice la verdad.






