Porque sincronizar sistemas Odoo con xmlrpc

9 de julio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Muchas veces podemos tener en un solo Odoo toda la lógica del negocio, pero hay veces que no es aconsejable. Por ejemplo cuando tenemos una empresa central con franquicias. O cuando tenemos Odoo implementado en diferentes subsidiarias (y este Odoo es de diferentes versiones). O cuando por motivos de seguridad queremos tener un sitio de comercio electrónico en un server y separado del mismo, el sistema de gestión propio de la empresa.

Veamos el ejemplo de las diferentes subsidiarias. Años atrás (pre-pandemia) necesite sincronizar un Odoo 9 en el país con un Odoo 10 (de la filial chilena de la misma empresa). En Argentina cuando se realizaba un pedido de ventas el usuario podía clickear un botón de sincronización con el sistema de Chile. Y al hacerlo se invocaba un método desarrollado en forma custom que mediante XMLRPC controlaba la integridad de los datos entre los sistemas (que los datos maestros se encuentren en el destino), y luego procedía a insertar el pedido en el sistema destino.

Otra necesidad es, por motivos de seguridad, tener separado al sitio de comercio electrónico del sistema de gestión. En teoría si tenemos toda la funcionalidad de Odoo en el mismo server... dormimos tranquilos. Pero la verdad no creo que sea tan buena idea tener expuesta a Internet toda la funcionalidad de la empresa de Odoo. Tarde o temprano se puede perder contra los hackers y vamos a dormir mejor si tenemos separados ambos sistemas. En un server expuesto a internet, el sitio de e-commerce. Y despues detrás de una VPN el sistema administrativo en si (con la contabilidad y finanzas, compras, ventas y manejo de stocks).

El server de e-commerce tendría la lógica de  comercio electrónico con los maestros de productos y clientes. Y permitiría a los clientes transaccionar abiertamente en internet. Luego a medida que los clientes realizan sus pedidos, se sincronizarían estos con el sistema central mediante xmlrpc. Y desde el sistema central se le enviaría (tambien mediante xmlrpc) los datos de clientes, productos y actualizaciones en los pedidos (por ejemplo si fue pagado o enviado, o no).

Todo esto se puede hacer con XMLRPC. Que es XMLRPC y lo que hace, se encuentra muy bien documentado en esta vieja página de OpenERP. Como dije en otros posts, es lo primero que aprendí a hacer con OpenERP y al día de hoy (12 años más tarde) sigo usandolo semanalmente (para una u otra cosa). Principalmente con scripts de Python y ocasionalmente con módulos de Odoo. Uso XMLRPC en forma intensiva para migrar datos a Odoo desde cualquier sistema.

Sincronizar datos entre sistemas no es sencillo (Odoo no es la excepción pero tampoco es rocket-science) y para hacerlo se necesitan cumplir con varias tareas:

  • Llevar un log de auditoría para conocer los datos transferidos, cuando se lo hizo y errores que ocurrieron
  • Aplicar lógica de negocios (por ejemplo formateo de la información de ciertos campos, por ejemplo el campo RUT)
  • Poder ejecutarse siempre bajo control de Odoo; o invocado por un método desde cualquier objeto o por medio de una acción invocada por el ir.cron. Se lo podría hacer tambien externamente utilizando scripts invocados desde el crontab
  • Poder realizar las tareas en forma inatendida, ejecutándose por ejemplo a medianoche
  • Poder reiniciar la sincronización en caso de ser necesario (esto es importantisimo). Estos reinicios o vueltas a ejecutar ocurren todo el tiempo
  • 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 de Odoo. Y todos se pueden cumplir gracias a XMLRPC. Es una herramienta que se incorpora nativamente con Odoo, es escalable y por sobre todo es sencillo de usar (de vuelta, fue lo primero que aprendí a programar en Odoo, incluso antes de aprender a programar módulos. Me canso de insistir que debe ser el primer item que uno debe aprender con Odoo).

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.


Su fragmento dinámico se mostrará aquí... Este mensaje se muestra porque no proporcionó tanto un filtro como una plantilla para usar.
Gustavo Orrillo 9 de julio de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario