• info@moldeointeractive.com.ar
  • +54-911-25601603

Sincronizando sistemas Odoo con XMLRPC

Gustavo Orrillo
- 01/12/2019

O como sincronizar diferentes sistemas Odoo. Esto surge del pedido de un cliente que me pidió ayuda en el proceso de sincronización de un sistema Odoo con sus franquicias. Tanto en el sistema central como en las franquicias estan usando Odoo y en este momento estan incronizando usando archivos XLS. Entonces necesita brindarle escalabilidad al esquema de replicación; debido a que en este momento está sincronizando con una sola franquicia pero en un futuro cercano necesitará hacerlo con múltiples y en ese caso pueden ocurrir problemas de consistencia de datos, tiempo insumido en ls replicaciones, control, etc.

Ahí le comenté de nuestra experiencia sincronizando un Odoo 9 en el país con un Odoo 10 (de la filial chilena de la misma empresa) que se encuentra en Chile. En este caso desde Argentina cuando se realiza un pedido de ventas el usuario puede clickear un botón de sincronización con Chile. Al clickearse dicho botón se invoca un método desarrollado en forma custom que mediante XMLRPC controla que los datos se encuentren en el sistema destino, y luego procede a insertar el pedido en el sistema destino. Me olvide de comentarle que haciamos el proceso inverso desde Chile, extrayendo la información de facturación de Chile en Argentina con fines de reporting.

Todo esto se hace mediante XMLRPC. Que es XMLRPC y que hace, se encuentra muy bien documentado en esta vieja página de OpenERP (sostengo que es la única página de la documentación de Odoo que vale la pena leer). Es lo primero que aprendí a hacer con OpenERP y al día de hoy (9 años más tarde) sigo usandolo. Ya sea con scripts de Python o mediante módulos de Odoo. Tambien en Codize lo estamos utilizando. Uso XMLRPC en forma intensiva para migrar datos a Odoo desde cualquier sistema.

Sincronizar datos entre diferentes sistemas Odoo no es sencillo (pero tampoco es rocket-science) y para llevarlo a cabo se necesitan cumplir con varias tareas:

  • Llevar un log de auditoría para saber cuando se sincronizó, que datos se transfirieron, que errores ocurrieron...

  • Aplicar lógica de negocios (por ejemplo formatear la información de campos, por ejemplo el campo RUT)

  • Poder ejecutarse siempre bajo control de Odoo; ya sea invocado por un método desde cualquier objeto o por medio de una acción invocada por el ir.cron

  • Poder realizar las tareas en forma inatendida, ejecutándose por ejemplo a medianoche

  • Poder reiniciarse en caso de ser necesario (esto es importantisimo)

  • Poder agregar múltiples destinos de la información en caso de ser necesario

Todos estos (o su gran mayoría) son requisitos de los procesos de sincronización. Y todos ellos pueden ser llevados a cabo gracias a XMLRPC. Es una herramienta que se incorpora nativamente con Odoo, es escalable y ademas es sencillo de usar (de vuelta, fue lo primero que aprendí a programar en Odoo, incluso antes de aprender a programar módulos).

Es por ello que cuando se necesite sinronizar diferentes sistemas Odoo uno debe plantearse la necesidad de desarrollar un o varios módulos de Odoo que invocando XMRPC lleve a cabo la tarea necesitada. Este esquema no puede ser del todo rápido pero lo cierto es que a nivel desarrollo es rápido, requiere el conocimiento de Python junto con el conocimiento del modelo de datos de Odoo, y puede implementarse de forma veloz.