Desaparecen movimientos en el Reporte de Coste Promedio en Odoo 19: Solución Definitiva
Descubre por qué tus recepciones no aparecen en la valoración de inventario y aplica una corrección automática sin necesidad de programación avanzada.
El misterio del reporte vacío
Imagínate cerrar el mes de operaciones. Has registrado todas tus compras, tus recepciones de mercancía están validadas y tu almacén está lleno. Sin embargo, cuando entras al nuevo reporte de Justificación de Coste Promedio (stock.avco.report) en Odoo 19 para auditar la valoración de tus productos, te encuentras con una sorpresa desagradable: el reporte está en blanco.
No muestra las recepciones que acabas de validar. Revisas la configuración de tu categoría de producto y dice claramente "Costo Promedio (AVCO)". Todo parece estar bien configurado, pero los datos simplemente no están ahí. Si te ha pasado esto, no estás loco ni has configurado mal tu ERP. Estás ante un comportamiento técnico muy específico de la versión 19.
El caso de Carlos y el cierre imposible
Carlos, jefe de logística de una distribuidora de componentes, pasó tres horas revisando albaranes uno por uno. "Sé que recibimos 500 unidades ayer", le decía a su contador, "¡Lo veo en el movimiento de stock!". Pero el contador, mirando el reporte de valoración financiera, solo veía ceros. Carlos intentó algo desesperado: cambió la categoría del producto a "Precio Estándar", guardó, y lo volvió a cambiar a "Promedio". ¡Mágicamente, las líneas aparecieron! Carlos resolvió ese producto, pero tenía otros 4,000 en el catálogo. ¿Tendría que hacer ese truco manualmente uno por uno?
¿Por qué ocurre esto? El conflicto entre lo que ves y lo que existe
Para entender el problema, debemos mirar bajo el capó de Odoo. En las versiones recientes, para optimizar el rendimiento y manejar múltiples compañías, Odoo guarda ciertas configuraciones no como texto simple, sino dentro de estructuras de datos complejas llamadas JSON.
El problema surge por una "excesiva inteligencia" del sistema. Cuando una categoría de producto tiene un valor por defecto (como "Costo Promedio"), la interfaz de Odoo te muestra ese valor porque es lo que "debería ser". Sin embargo, si nunca has modificado y guardado explícitamente esa categoría para tu compañía específica, el dato real en la base de datos puede estar vacío.
Aquí está la trampa: el reporte de Justificación AVCO es muy estricto. A diferencia de la pantalla que rellena los huecos con valores por defecto, el reporte va directo a la base de datos y pregunta: "¿Está escrito explícitamente que esto es Costo Promedio para esta compañía?". Si la respuesta es "No hay nada escrito", el reporte ignora todos los movimientos de ese producto, asumiendo que no debe valorarlos.
La revelación de Carlos
Cuando explicamos esto a Carlos, él lo entendió con una analogía de almacén: "Es como si tuviera una caja etiquetada 'Varios' por defecto. Yo asumo que dentro hay tornillos porque siempre hay tornillos, pero si el auditor abre la caja y no ve una nota firmada que diga 'Tornillos', hace de cuenta que la caja no existe". Su truco de cambiar y guardar funcionaba porque obligaba a Odoo a escribir esa nota firmada dentro de la base de datos.
La Solución: Una corrección masiva y segura
No necesitas editar tus miles de productos manualmente. Hemos diseñado una solución que utiliza una Acción de Servidor para "despertar" estos datos. Básicamente, le diremos a la base de datos: "Toma el valor que crees que tienes, y escríbelo firmemente en el registro".
Sigue estos pasos para crear un botón mágico que repare tus productos:
Paso 1: Activar el Modo Desarrollador
- Ve a Ajustes.
- Baja hasta el final y haz clic en Activar modo desarrollador.
Paso 2: Crear la Acción de Servidor
- Navega a Ajustes > Técnico > Acciones > Acciones de Servidor.
- Crea una nueva acción con estos datos:
- Nombre: Corregir Reporte AVCO (Categorías)
- Modelo: Producto (product.product)
- Acción a realizar: Ejecutar código Python
Copia y pega el siguiente código seguro en el área de código:
# Script de Reparación Seguro para Odoo 19
# Simplemente "oficializa" la configuración de costo en la base de datos
# 1. Identificar categorías de los productos seleccionados
affected_categories = records.mapped('categ_id')
count = 0
company_id = str(env.company.id)
for cat in affected_categories:
target_method = cat.property_cost_method
# Solo actuamos si hay una configuración válida
if target_method:
# Preparamos el dato en el formato exacto que espera la base de datos
json_patch = '{"%s": "%s"}' % (company_id, target_method)
# INYECCIÓN SEGURA: Actualizamos directamente la base de datos
# Esto asegura que el dato quede grabado incluso si Odoo cree que ya estaba ahí
env.cr.execute("""
UPDATE product_category
SET property_cost_method = COALESCE(property_cost_method, '{}'::jsonb) || %s::jsonb
WHERE id = %s
""", (json_patch, cat.id))
count += 1
# Refrescamos para que Odoo sepa que hubo cambios
cat.invalidate_recordset(['property_cost_method'])
# Mensaje de éxito para el usuario
action = {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'title': '¡Corrección Completada!',
'message': f'Se han reparado exitosamente {count} categorías de producto.',
'type': 'success',
'sticky': False,
}
}
Paso 3: Ejecutar y Resolver
- Ve a tu lista de Inventario > Productos.
- Selecciona todos los productos (puedes usar el checkbox maestro para seleccionar todo el catálogo).
- En el menú Acción (el engranaje), selecciona Corregir Reporte AVCO (Categorías).
- Verás un mensaje de confirmación verde en la parte superior derecha.
El final feliz
Carlos creó la acción, seleccionó sus 4,000 productos y la ejecutó. Tardó menos de 5 segundos. Con el corazón acelerado, volvió al reporte de Justificación AVCO y actualizó la página. Ahí estaban: miles de líneas de movimientos, valoraciones precisas y cálculos correctos. Pudo cerrar su mes esa misma tarde, con la confianza de que su inventario reflejaba la realidad financiera de la empresa.
Este tipo de situaciones nos recuerdan la importancia de tener herramientas que nos den control real sobre nuestros datos. Si te encuentras con comportamientos extraños en reportes nuevos de Odoo, recuerda: a veces solo hace falta un pequeño empujón para que los datos "invisibles" salgan a la luz.
Contrata tu implementación Odoo o consultoría con Ganemo. Pide tu presupuesto al Whatsapp +1 (828) 672-6150 o al email: leads@ganemo.com
El Bug "Invisible" del Reporte AVCO en Odoo 19 (y cómo solucionarlo)