Peso
Programando con Python en Odoo 14
xmlrpc para  (Odoo 11, 12, 13, 14)

Desarrollando XMLRPC (Odoo  11, 12, 13, 14) para actualizar precios y stock

En este blog se mostrará un ejemplo del código de un script de Python con XMLRPC escrito por pronexo para actualizar los campos de una tabla (en este caso product.product).

Breve historia.
Un vendedor de un negocio de ventas de insumos informáticos nos contacta por WhatsApp y nos solicita un servicio que necesita y que consiste en actualizar un catálogo de productos que tiene en Mercadolibre.  Solo dispone de un archivo CSV que actualiza diariamente con Excel y que cuenta con más de 50 productos. 

Debido a que la actualización manual de precios y de stock realizada desde un navegador en Mercadolibre requiere de unos cuantos minutos e incluso a veces horas, decidimos que lo mejor sería hacerlo con Odoo y nos pusimos a trabajar en una solución.

Probamos el módulo MercadoLibre Publisher (meli_oerp) desarrollado por Moldeo Interactive para conectar Odoo con Mercadolibre. Las pruebas se realizaron en la versión de Odoo 14 pero el módulo que es mantenido por su desarrollador data de versiones anteriores las cuales no serán cubiertas en este blog. Este módulo cuenta con más de 8500 líneas de código traducidas en muchas horas de trabajo y en las pruebas realizadas todo ha salido muy bien por lo que le damos un +1. 

Luego de instalar el módulo e importar los productos desde Mercadolibre aún necesitábamos resolver cómo actualizar los precios y el stock en nuestra base de datos de odoo importando precios y stock desde el archivo csv proporcionado por lo que desarrollamos un script xmlrpc en Python para realizar esta tarea. Lo que hace el script es leer un archivo csv y actualizar los campos de la base de datos correspondientes a la ficha de Mercadolibre en el detalle del producto que aparece luego de instalar el módulo antes mencionado.

Script de Python con XMLRPC para importar precios desde un archivo csv

 

#!/usr/bin/python

import sys
from xmlrpc import client
import ssl
import csv
from xmlrpc.server import SimpleXMLRPCServer
import os

server_url = 'http://192.168.0.114:1469'
db_name = 'odoo.mydb.com'
username = 'adminusername'
password = 'adminpassword'

common = client.ServerProxy('%s/xmlrpc/2/common' % server_url)
user_id = common.authenticate(db_name, username, password, {})
models = client.ServerProxy('%s/xmlrpc/2/object' % server_url)

if user_id:
    f = open('Mercadolibre2.csv','rt')
    reader = csv.DictReader(f,delimiter=';')
    for row in reader:
        default_code =row['Referencia interna']
        nombre = row['Nombre Mercado Libre']
        precio = row['Precio de venta con IVA']
        stock_ml=row['Stock']
        vals_update = {
                                'name': nombre,
                                'meli_price': precio,
                                'meli_available_quantity': stock_ml
        }
        product_id = models.execute(db_name,user_id,password,'product.product','search',[('default_code','=',default_code)])
        if product_id:
                print(product_id, vals_update)
                return_id = models.execute(db_name,user_id,password,'product.product','write',product_id,vals_update)

    f.close()
else:
    print('Error: username or password incorrect')


¿Está pensando en implementar un sistema? Complete el formulario y nos contactaremos

Solución Fiscal Epson para POS Odoo
Argentina + Punto de venta odoo + Impresora Fiscal