Guía actualizada el 13 de octubre de 2026. La versión original (julio de 2026) contaba el caso; esta versión conserva el caso y agrega el procedimiento completo: corte, conteo, causas, valoración y criterios de salida, con las rutas de menú de Odoo 19.
Ver diagrama Mermaid
mindmap
root(("Corregir diferencias de inventario en Odoo antes de migrar"))
Requisitos y alcance
Community y Enterprise
Odoo 16 a 19
sin escrituras de IA
Ocho pasos
corte
unidades de medida
conteo ciego
causas antes que ajustes
ajuste autorizado
valoración y contabilidad
saldos iniciales y prueba
criterios de salida
Qué puede salir mal
Caso real anonimizado
Qué opinamos y fuentes
Preguntas frecuentes
Migrar un ERP grande no es copiar un sistema de una versión a otra. Es trasladar también todo lo que ese sistema tenía mal. Cuando la base está sucia, la migración no la limpia: la hereda, la vuelve más cara de corregir y le pone encima la etiqueta tranquilizadora de «sistema nuevo». Esta guía describe cómo un distribuidor mayorista de iluminación y mobiliario de proyecto en México se preparó para actualizar de Odoo 16 a Odoo 19, por qué el primer entregable no fue la migración sino la estabilización de su inventario, y el procedimiento que hoy aplicamos antes de cualquier migración de una comercializadora.
Requisitos y alcance
| Punto | Qué cubre esta guía | Qué no cubre |
|---|---|---|
| Ediciones | Community y Enterprise. La app Inventario y el inventario físico existen en ambas. | Las funciones exclusivas de Enterprise (por ejemplo, calidad o códigos de barras avanzados) no son necesarias para este procedimiento. |
| Versiones | Odoo 16 a 19. Las rutas de menú citadas son de la documentación de Odoo 19 en español; en 16 y 17 la página se llama «Ajustes de inventario» y los nombres pueden variar. | Versiones anteriores a 16 (fuera del alcance del servicio de Transgenia). |
| Despliegue | Odoo Online, Odoo.sh y servidor propio. El procedimiento es de interfaz y de criterio, no de código. | Scripts de migración de datos y actualización de módulos personalizados: son el proyecto siguiente. |
| Qué incluye | Existencias por producto, ubicación, lote o serie; unidades de medida; valoración y conciliación con contabilidad; preparación de saldos iniciales; criterios de salida. | Tratamiento fiscal de mermas y faltantes: lo define tu contador. Esta guía señala dónde consultarlo, no sustituye su criterio. |
| Quién lo hace | Responsable de almacén, responsable contable y una persona que autoriza los ajustes. Transgenia acompaña con el método y las consultas de solo lectura. | No requiere que la IA escriba nada en Odoo. Los ajustes los aplica una persona. |
Paso a paso: del corte a los criterios de salida
1. Fija el corte y cierra lo pendiente
Define fecha y hora de corte y comunícala a compras, ventas y almacén. Antes de contar, valida o cancela las transferencias que estén listas o parciales: recepciones de proveedor sin validar, entregas facturadas pero no confirmadas en almacén y traslados internos a medias. La documentación de Odoo 19 lo advierte con claridad: «Entre el conteo físico y la aplicación del ajuste de inventario, pueden ocurrir movimientos de productos.» Si no puedes detener la operación durante el conteo, registra aparte todo lo que entre o salga entre el conteo y la aplicación.
2. Audita unidades de medida y empaques antes de contar
En mayoreo, una parte de las diferencias no son faltantes: son piezas contadas como cajas, cajas contadas como tarimas o conversiones mal configuradas. Revisa que la unidad de compra, la unidad de venta y el factor de conversión de cada producto coincidan con la realidad física. Un producto que se vende por pieza entera no debería mostrar decimales en existencia.
3. Cuenta a ciegas contra la columna A la mano
En Odoo 19, ve a Inventario ‣ Operaciones ‣ Inventario físico. La página muestra, por producto y ubicación, las columnas A la mano, Contado y Diferencia. Captura el conteo real en Contado. Procura que quien cuenta no vea la cantidad teórica: un conteo que «confirma» el sistema no sirve de diagnóstico. En catálogos grandes, filtra por ubicación y pide un segundo conteo para los productos de alto valor o alta rotación. El conteo queda registrado sin aplicarse: «En esta etapa, el conteo (ajuste de inventario) queda registrado, pero todavía no se aplica.»
4. Investiga cada diferencia y corrige la causa, no el síntoma
Esta es la parte que casi nadie hace y la que separa un saneamiento de un maquillaje. Antes de aplicar nada, clasifica cada diferencia relevante por su causa:
| Causa encontrada | Corrección en Odoo | Por qué no basta un ajuste |
|---|---|---|
| Recepción de proveedor omitida | Verificar factura y remisión; validar la recepción correcta. | Un ajuste positivo oculta una compra sin registrar y descuadra cuentas por pagar. |
| Entrega facturada pero no validada | Revisar la salida real y validar o cancelar el movimiento. | Un ajuste negativo esconde una venta sin salida de almacén. |
| Traslado interno incompleto | Conciliar origen, destino y estado del traslado. | El producto existe; está en otra ubicación. |
| Producto en otra ubicación | Registrar una reubicación interna. | No es una pérdida. |
| Unidad o empaque mal configurado | Corregir la unidad de medida y la conversión antes de tocar cantidades. | El ajuste repetiría el error en cada compra futura. |
| Lote o caducidad incorrectos | Conciliar por lote y ubicación. | Un ajuste por producto rompe la trazabilidad. |
| Dos productos con el mismo nombre | Anclar cualquier carga masiva al identificador externo de la variante, nunca al nombre. | Odoo no sabe a cuál aplicar el cambio o lo aplica al equivocado (ver el caso). |
| Merma, daño o robo real | Aplicar el ajuste con motivo, evidencia y autorización. | Es la única diferencia que sí se resuelve con un ajuste. |
5. Aplica el ajuste autorizado
Cuando solo quedan diferencias reales, aplícalas desde la misma página. Odoo pide confirmación antes de hacerlo («Como precaución adicional, Odoo solicita una confirmación antes de aplicar el ajuste de inventario») y crea un movimiento de existencias por la diferencia («Al aplicar un ajuste de inventario, el sistema también crea un registro de movimiento de existencias»). Registra el motivo, la referencia del conteo y quién autorizó. Guarda el historial de movimientos antes y después.
6. Concilia la valoración con contabilidad, con tu contador
Una cantidad correcta no garantiza un costo correcto. Odoo valora el inventario con tres métodos, configurados en los ajustes de Contabilidad y, opcionalmente, por categoría de producto:
- Costo estándar. Costo unitario fijo, actualizado a mano. Simple, pero se desalinea si los precios de proveedor se mueven.
- Costo promedio (AVCO). Promedio ponderado de todas las unidades. Estable ante compras múltiples; habitual en rotación rápida.
- PEPS (FIFO). Primeras entradas, primeras salidas; el costo original viaja con la venta. Útil para trazabilidad por lote.
Compara el reporte de valoración del inventario con las cuentas de inventario del mayor a la fecha de corte; revisa existencias negativas, costos de compra incorrectos y movimientos con valoración pendiente. Dos advertencias que importan en una migración 16 a 19: las estrategias de remoción «solo afectan qué producto se toma primero, no el método de valoración», y desde Odoo 19 «el método perpetuo impacta la cuenta de valoración de existencias a nivel de la factura», mientras que antes de 19 se asentaba en cada movimiento. Es decir, la conciliación contable no se hereda igual al cambiar de versión. En México, el tratamiento contable y fiscal de mermas, faltantes y sobrantes lo define el responsable contable; la documentación de Odoo también recomienda consultarlo antes de tocar la valoración.
7. Prepara los saldos iniciales y haz una migración de prueba
Con el inventario conciliado: congela y documenta el corte; depura el catálogo (duplicados, códigos de barras, conversiones); exporta existencias y costos por producto, ubicación, lote y serie; importa una muestra representativa en la base de prueba de la versión nueva y compara unidades y valores; prueba compras, ventas, devoluciones y traslados. Conserva respaldos, reportes de conciliación, aprobaciones y un procedimiento de reversión.
8. Criterios de salida: no migres hasta cumplirlos
- El 100 % de los SKU activos tiene cantidad conciliada o una excepción documentada.
- No hay diferencias sin explicar en productos de alto valor.
- Las existencias negativas están justificadas y resueltas.
- Lotes, caducidades y números de serie coinciden con la realidad física.
- La valoración concilia con contabilidad o las diferencias restantes tienen aprobación formal.
- La mercancía en tránsito, las devoluciones y la mercancía de terceros están identificadas.
- La migración de prueba produce los mismos totales de unidades y valores que el inventario aprobado.
Ver diagrama Mermaid
flowchart TB
P1["1. Fijar el corte y cerrar lo pendiente"] --> P2["2. Auditar unidades de medida y empaques"]
P2 --> P3["3. Contar a ciegas contra A la mano"]
P3 --> P4["4. Investigar cada diferencia y corregir la causa"]
P4 --> P5["5. Aplicar solo los ajustes autorizados"]
P5 --> P6["6. Conciliar la valoración con contabilidad"]
P6 --> P7["7. Saldos iniciales y migración de prueba"]
P7 --> P8{"8. ¿Se cumplen los criterios de salida?"}
P8 -- "No" --> P4
P8 -- "Sí" --> M["Autorizar la migración"]
Ver diagrama Mermaid
flowchart TB
A{"¿La diferencia es real?"}
A -- "No: movimiento mal registrado" --> B{"¿Qué causa?"}
B -- "Recepción omitida" --> C1["Validar la recepción correcta"]
B -- "Entrega sin validar" --> C2["Validar o cancelar la salida"]
B -- "Traslado a medias" --> C3["Conciliar origen y destino"]
B -- "Unidad mal convertida" --> C4["Corregir unidad y conversión"]
B -- "Producto homónimo" --> C5["Anclar al identificador externo"]
A -- "Sí: merma, daño o robo" --> D["Ajuste con motivo, evidencia y autorización"]
Qué puede salir mal
- Ajustar primero y preguntar después. Un ajuste masivo «para que cuadre» oculta recepciones, entregas y traslados mal registrados y traslada el error a la versión nueva con mejor interfaz.
- Contar sin corte. Sin fecha y hora de corte, cada movimiento posterior reabre la diferencia.
- Cargar por nombre. En catálogos grandes hay productos homónimos; una carga masiva por nombre aplica el ajuste al registro equivocado.
- Cambiar el método de costeo a mitad del saneamiento. Con costo promedio o PEPS, los movimientos y ajustes cambian el valor del stock; cambiar el método sin analizar el efecto genera descuadres nuevos.
- Heredar la lógica contable de la versión vieja. La valoración perpetua cambió de lugar en Odoo 19; conciliar «como siempre» deja diferencias que nadie entiende.
- Olvidar la fecha programada. Si no se especifica otra, el inventario anual queda el 31 de diciembre; se cambia en Inventario ‣ Configuración ‣ Ajustes, en Día y mes del inventario anual.
El caso real: cuando el costeo miente
Lo que sigue son las cifras reales del diagnóstico de un distribuidor mayorista, anonimizadas, tal como se publicaron en julio de 2026. Ninguna fue estimada ni redondeada.
El punto de partida era un ERP con historia: una base de datos de 230 GB, engordada por años de transacciones sin cortes de periodo; 61 campos personalizados que tendrían que actualizarse uno por uno para no romperse en la versión nueva; y alrededor de 29,000 líneas de Python y 12,000 de XML de personalizaciones acumuladas. El consejo más común cuando una versión se acerca a su fin de soporte es directo: actualiza. Pero «solo actualiza» asume que lo que se traslada está sano.
Antes de tocar la versión, pusimos a prueba los números. Un distribuidor de mayoreo vive de un margen delgado; si el sistema calcula mal el costo de lo que vende, la empresa decide precios sobre una realidad que no existe. Se documentaron tres escenarios, uno por método de costeo, con productos reales del catálogo. En el escenario PEPS, sobre un producto real de tratamiento acústico, los números contaban una historia que la operación no había notado:
- Margen comercial de 0 %. Una venta que, según el propio costeo del sistema, no dejaba ganancia.
- Deflación de -36.6 % en la valuación del inventario de ese producto.
- Rotación de 11.4 %, muy baja: producto que se mueve poco y ata capital.
- 990 unidades sin documentación de origen clara.
La cura no fue reimplementar: fue estabilizar. Una pieza central fue el ajuste masivo hecho de la forma correcta. En un catálogo de mayoreo con miles de referencias, dos productos pueden llamarse igual y ser distintos. Si se intenta ajustar por nombre, Odoo no sabe a cuál aplicar el cambio o lo aplica al equivocado.
La solución fue anclar cada ajuste al identificador externo único de cada variante, no a su nombre. Con esa ancla, la carga masiva deja de adivinar: cada cantidad contada aterriza en la variante correcta, con su fecha y su ubicación. El stock físico y el del sistema vuelven a coincidir, que es la condición mínima para que cualquier costeo posterior signifique algo. Solo entonces tuvo sentido hablar de Odoo 19.
Ver diagrama Mermaid
flowchart TB
A["ERP heredado: 230 GB, 61 campos"] --> B{"¿Los números son creíbles?"}
B -- "Validar costeo con productos reales" --> C["Hallazgo PEPS: margen 0 %, deflación -36.6 %"]
C --> D["Estabilizar: ajuste por identificador externo"]
D --> E["Inventario conciliado: físico = sistema"]
E --> F["Migrar a Odoo 19 sobre base confiable"]
Qué opinamos en Transgenia
- Actualizar y sanear son dos proyectos, y el saneamiento va primero. El fin de soporte obliga a migrar; no obliga a migrar el desorden.
- El margen de 0 % es una alarma, no un dato. Cuando el sistema lo reporta, el costeo perdió el hilo.
- El ajuste es el último paso. Primero los movimientos y las causas; después los ajustes autorizados; al final la conciliación contable y el corte definitivo.
- La IA entra en modo de solo lectura. Para este procedimiento usamos consultas de solo lectura sobre Odoo (nuestro servidor MCP rechaza toda escritura cuando está en ese modo); los ajustes los aplica una persona con autorización. No vendemos agentes que corrijan inventarios solos.
- Migrar cuando la base diga la verdad, no cuando el calendario apriete. Una migración sobre datos deformados cuesta más de corregir después que de estabilizar antes.
Fuentes
Cada hecho técnico de esta guía se apoya en una fuente pública. Las cifras del caso son de Transgenia y se indican como tales.
- Odoo 19, Ajustes de inventario (español): ruta Inventario ‣ Operaciones ‣ Inventario físico, columnas A la mano, Contado y Diferencia, confirmación antes de aplicar, movimiento de existencias al aplicar y advertencia sobre movimientos entre el conteo y la aplicación.
- Odoo 19, Valuation cheat sheet: tres métodos de costeo configurados en Contabilidad y por categoría; definiciones de costo estándar, AVCO y FIFO; estrategias de remoción sin efecto en la valoración; cambio del método perpetuo al nivel de factura desde Odoo 19.
- Odoo 17, Configuración de la valoración de inventario: recomendación de consultar al contador antes de configurar la valoración automática.
- Odoo 19, Valuation of stock movements and inventory operations: cómo valoran los movimientos y ajustes bajo cada método.
- Repositorio MCP-Odoo-Tools (MIT): modo de solo lectura que rechaza toda herramienta de escritura antes de llegar a Odoo.
- Documentación de estabilización del proyecto real de mayoreo (enero a junio de 2026), fuente interna de Transgenia: cifras del caso, anonimizadas.
Preguntas frecuentes
¿Qué es un ajuste de inventario en Odoo y cuándo conviene usarlo?
Es el registro que iguala la cantidad del sistema con la cantidad contada. Al aplicarlo, Odoo crea un movimiento de existencias por la diferencia. Conviene usarlo solo para diferencias reales (merma, daño, robo) después de corregir recepciones, entregas y traslados mal registrados; usarlo antes oculta la causa.
¿Dónde está el inventario físico en Odoo 19?
En Inventario ‣ Operaciones ‣ Inventario físico. La página muestra por producto y ubicación las columnas A la mano, Contado y Diferencia. En Odoo 16 y 17 la página se llama Ajustes de inventario y los nombres de columna pueden variar.
¿Hay que detener la operación para contar?
Lo ideal es fijar una fecha y hora de corte y validar o cancelar lo pendiente antes de contar. Si no puedes detener la operación, registra aparte cada entrada, salida y traslado ocurrido entre el conteo y la aplicación: la documentación de Odoo advierte que esos movimientos pueden ocurrir y generar diferencias nuevas.
¿Por qué el inventario no cuadra si acabo de contar?
Las causas más frecuentes en mayoreo son unidades de medida o empaques mal convertidos, recepciones sin validar, entregas facturadas sin salida de almacén, traslados a medias y productos homónimos cargados por nombre. Cada una se corrige distinto; un ajuste global las tapa todas y no arregla ninguna.
¿Qué diferencia hay entre costo estándar, costo promedio y PEPS en Odoo?
Costo estándar es un costo unitario fijo actualizado a mano; costo promedio (AVCO) es el promedio ponderado de todas las unidades; PEPS (FIFO) es primeras entradas, primeras salidas. Se configuran en los ajustes de Contabilidad y, opcionalmente, por categoría de producto. La elección correcta depende de cada familia de producto, y cambiarla a mitad del saneamiento genera descuadres nuevos.
¿Cómo concilio la valoración del inventario con contabilidad antes de migrar?
Compara el reporte de valoración con las cuentas de inventario del mayor a la fecha de corte; revisa existencias negativas, costos de compra incorrectos y movimientos con valoración pendiente; documenta y aprueba los asientos necesarios con tu contador. Desde Odoo 19 el método perpetuo impacta la cuenta de valoración a nivel de la factura, no en cada movimiento como antes.
¿Puedo hacer el ajuste masivo con una importación?
Sí, siempre que cada línea esté anclada al identificador externo de la variante y no a su nombre. En catálogos grandes hay productos con el mismo nombre comercial y distinta marca; una carga por nombre aplica el ajuste al registro equivocado. En el caso real de esta guía ese anclaje fue la pieza central del saneamiento.
¿Qué criterios debe cumplir el inventario antes de cargar saldos iniciales en el nuevo Odoo?
Cantidades conciliadas o excepción documentada en el 100 % de los SKU activos; sin diferencias inexplicadas en productos de alto valor; existencias negativas resueltas; lotes y caducidades verificados; valoración conciliada o diferencias aprobadas; mercancía en tránsito y de terceros identificada; y una migración de prueba con los mismos totales de unidades y valores.
¿Es distinto corregir inventario en Odoo Community que en Enterprise?
No para este procedimiento. La app Inventario, el inventario físico, los ajustes y la valoración existen en ambas ediciones. Las diferencias de edición aparecen en otras integraciones, no en el saneamiento previo a migrar.
¿Hay que estabilizar el inventario en Odoo 16 antes de migrar a Odoo 19?
Sí. La versión nueva no corrige un costeo mal cimentado; lo hereda con mejor apariencia. Además, la lógica de la valoración perpetua cambió en Odoo 19, así que conviene llegar a la migración con cantidades y valores conciliados en la versión origen.
¿Qué papel tiene la IA en este procedimiento?
Consultas de solo lectura: leer existencias, movimientos pendientes y valoración para preparar el diagnóstico y las listas de verificación. Las correcciones y los ajustes los aplica una persona con autorización. Nuestro servidor MCP para Odoo tiene un modo de solo lectura que rechaza cualquier escritura.
¿Cuánto tarda estabilizar el inventario de una distribuidora antes de migrar?
Depende del tamaño del catálogo, del número de almacenes, de si hay lotes o series y del estado de la contabilidad. No publicamos plazos ni cifras que no provengan de un proyecto documentado; el caso de esta guía se ejecutó entre enero y junio de 2026 dentro de un proyecto mayor de migración.
Siguiente paso
Si tu distribuidora o comercializadora corre Odoo y está pensando en migrar de versión, revisa primero la página de Odoo para comercializadoras, donde están reunidas las guías de inventario, pedidos por WhatsApp y cotizaciones con IA, y luego solicita una evaluación: traemos el método de estabilización y el criterio de cuándo conviene, o no, migrar todavía.
Sobre el autor y Transgenia
Efraín Carreón Ortiz es Director General de Centrum Transgenia, una boutique tecnológica mexicana. Está acreditado con la insignia oficial Claude Code (Claude Partner Badge) emitida por Anthropic, verificable en Credly.
Transgenia es OpenAI Select Partner dentro del OpenAI Partner Network y partner registrado en el Claude Partner Network de Anthropic. Equipo: Víctor Estrada Bello, Chief PMO; Danild Johan Zambrana López, Chief Technology Officer; Jaime Lozano Castañeda, Chief Marketing Officer; Efraín Carreón Ortiz, Director General (Chief Executive Officer).
Hablemos: contacto@transgenia.org, WhatsApp +52 55 8034 0405, agenda de 15 minutos o la página de contacto.
Sigue leyendo
- Odoo para comercializadoras B2B: el hub de la vertical, con las tres guías y qué preparar antes de una evaluación.
- Cómo integrar IA con Odoo para preparar cotizaciones que una persona apruebe: el flujo gobernado sobre un inventario ya confiable.
- Cómo conectar pedidos de WhatsApp con Odoo e IA: del mensaje a la cotización en borrador.
- ¿Quién integra Claude o ChatGPT con Odoo en México?: criterios para contratar a cualquier integrador.
- Migrar Odoo Enterprise a Community: caso real: otra migración donde el rescate fue antes que la versión.
- Implementación de IA e integración con Odoo: la oferta y el formulario de evaluación.
Nota sobre veracidad y privacidad
Las cifras del caso (230 GB de base de datos, 61 campos personalizados, cerca de 29,000 líneas de Python y 12,000 de XML, y en un escenario de costeo PEPS: margen de 0 %, deflación de -36.6 %, rotación de 11.4 % y 990 unidades sin origen documentado) provienen de la documentación de estabilización de un proyecto real de mayoreo ejecutado entre enero y junio de 2026. Ninguna cifra fue estimada ni redondeada. El cliente se presenta de forma anónima: no se nombra a la empresa, sus marcas, sus proveedores ni a las personas involucradas. Ningún dato personal fue leído ni citado; solo agregados operativos. Las citas de la documentación de Odoo corresponden a la versión 19.0 consultada el 12 de octubre de 2026.