Actualizando external IDs de las publicaciones de Mercadolibre en Odoo

3 de abril de 2026 por
Gustavo Orrillo
| Sin comentarios aún
 

Uno de los grandes problemas con Mercadolibre es la velocidad de la actualización. Cualquier instalación mediana de Mercadolibre tiene decenas de miles de publicaciones que deben ser actualizadas en los dos sentidos. Desde Odoo a Mercadolibre, y desde Mercadolibre a Odoo. No hay otra manera de mantener todo andando. Y para eso se necesita velocidad. Sabiendo que Odoo no es precisamente rápido, al igual que Mercadolibre para ser actualizado.

Una de las maneras de mejorar los tiempos de actualización en Odoo es mediante el método load de Odoo. Ahora, para usar este método deberíamos contar con cada uno de las publicaciones a actualizar con un external ID (los cuales se encuentran descriptos en este post). Como hacemos para actualizar un external ID en Odoo? Lo podemos hacer por medio de un método sencillo que inserta un registro en el modelo ir.model.data

  def create_external_id(self):
self.ensure_one()
if self.meli_id:
self.env['ir.model.data'].create({
'name': self.meli_id,
'module': 'mercadolibre',
'model': 'ca.mercadolibre.posting',
'res_id': self.id,
'noupdate': True,
})
return True

Aca basicamente creamos el external ID por medio de un método (al cual llamamos mediante xmlrpc o acción de servidor). Podríamos también extender el método create para actualizar el external ID apenas se crea el registro

def create(self, vals_list):
res = super(Model, self).create(vals_list)
​ res.create_external_id()
​ return res

También Odoo brinda un método, get_external_id el cual devuelve un diccionario con el ID del registro y el valor del external ID. Podríamos también crear una columna computada con dicho valor

    external_id = fields.Char('external ID',compute='_compute_external_id')

def _compute_external_id(self):
for rec in self:
res = ''
if rec.get_external_id():
for key,value in rec.get_external_id().items():
if key == rec.id:
res = value
rec.external_id = res

Los external IDs son extremadamente útiles. Muy raramente se borran y es por eso que hacen que el código sea mucho más estable (como hago para referenciar la moneda dolar por ejemplo?). Pero también son útiles para la actualización de datos. Actualizar datos en Odoo no es rápido y necesitamos utilizar otras herramientas para lograr dicha velocidad. El método load es importante en esta búsqueda de velocidad, y de ahí la necesidad de dotar de external IDs a todas las publicaciones.




Gustavo Orrillo 3 de abril de 2026
Compartir
Categorías
Archivar
Identificarse dejar un comentario