Introducción
Uno de los procesos más importantes de Odoo son las transferencias, que mueven productos entre ubicaciones: el sistema reserva cantidades, verifica la disponibilidad y valida la entrega. Cuando este proceso clave se vuelve lento, todo se resiente: las operaciones se detienen, el equipo pierde tiempo y el servidor trabaja al límite. Este fue el caso de un cliente que buscaba velocidad y estabilidad. En este blog te contamos qué estaba pasando, cómo lo solucionamos y qué resultados obtuvimos.
¿Qué estaba pasando?
El proceso de transferencias trabajaba con alto volumen de datos y realizaba búsquedas/validaciones repetitivas. Eso disparaba el tiempo de respuesta y cargaba innecesariamente la base de datos y el sistema de mensajería (notificaciones internas), generando esperas y poca previsibilidad en picos de uso.

Lo que hicimos
Antes de tocar una sola línea de código, medimos. Con los hallazgos del perfilador, definimos un plan para reducir llamadas innecesarias a la base de datos, controlar el volumen que se procesa en cada transacción y ordenar el flujo para que sea más estable y predecible.
Etapa 1 · Diagnóstico
Usamos herramientas de profiling para ver exactamente dónde se iba el tiempo:
- pg_stat_statements y EXPLAIN ANALYZE para ubicar las consultas más costosas.
- Herramientas de rendimiento de Odoo para detectar métodos con llamadas redundantes al ORM y validaciones innecesarias.

Etapa 2 · Plan de optimización
Diseñamos mejoras de bajo riesgo y alto impacto:
- Acelerar las consultas “calientes”
-
Creamos índices específicos (p.ej., en company_id, product_id en stock_valuation_layer y en move_id en account_payment). Resultado:
- Una consulta de valoración bajó de 47.919 ms a 33.880 ms (≈ 29% más rápida).
- La consulta a pagos pasó de 91.109 ms a 1.866 ms (≈ 98% de mejora).
2. Menos ruido, más eficiencia en el flujo
- Validaciones más livianas: desactivamos suscripciones/notificaciones automáticas innecesarias durante la validación masiva, reduciendo carga en el sistema de mensajes.
- Escrituras seguras y mínimas: consolidamos actualizaciones para evitar múltiples validaciones/lecturas en cada cambio de campo.
3. Código que hace menos (y mejor)
- Simplificamos condiciones y eliminamos duplicidades en funciones auxiliares (p. ej., cálculos y banderas de visibilidad), reduciendo operaciones que no aportaban al resultado final.
- Modularizamos pasos para mejorar legibilidad, pruebas y mantenimiento.

Etapa 3 · Resultados
- Consultas críticas aceleradas con mejoras puntuales de hasta ~98% gracias a índices bien colocados.
- Menos carga en la base de datos y en el sistema de mensajería al evitar validaciones y notificaciones innecesarias.
- Proceso más estable en picos de volumen, con una ejecución más predecible y tiempos de espera menores para el equipo.
Beneficios para el negocio
- Velocidad visible para el usuario: transferencias que “salen” sin bloqueos ni esperas innecesarias.
- Estabilidad operativa: menos incidencias en horas críticas y procesos que terminan a tiempo.
- Escalabilidad: mejoras que aguantan crecimiento de datos y de usuarios concurrentes.
Recomendaciones
- Mide antes de cambiar: perfila y prioriza el 20% que explica el 80% del tiempo.
- Pon índices donde duele: analiza tus consultas reales (no supuestas) y crea índices específicos.
- Evita trabajo repetido: consolida escrituras y valida solo lo imprescindible en operaciones masivas.
- Reduce el “ruido”: desactiva notificaciones automáticas que no aportan en procesos batch.
- Piensa en mantenimiento: modulariza el flujo para facilitar ajustes futuros sin romper nada.

Conclusiones
Optimizar transferencias masivas no va de “más servidor”, sino de hacer menos, mejor y en el orden correcto: indexar, simplificar y evitar validaciones y mensajes que sobran. El resultado es un proceso ágil y confiable que devuelve el control al equipo.
¿Tus procesos están lentos?
Con un diagnóstico rápido te mostramos dónde está el cuello de botella y te entregamos un plan accionable.
Conversemos y acelera tu Odoo.