Consumiendo el WebServices de Odoo con Python
Muchos sabemos Ć³ en ocasiones desconocemos como trabaja el Sistema Odoo (OpenERP), para poder comunicar la plataforma creada en Python con nuestros Navegadores convencionales, bien pues esto lo hace graciad a los Web Services y los protocolos XML-RPC y NET-RPC, el protocolo XML-RPC, se encarga de las transacciones Web y toda la parte de los Navegadores, el protocolo NET-RPC, se utilizaba anteriormente en la version 6.1 de OpenERP hacia atras para poder utilizar un Cliente de Escriorio (GTK), que era una alternativa para los Navegadores y tenia una completa integracion con el Sistema, a partir de la version 7.0 de OpenERP se elimina este Cliente y se vuelve completamente Web.
Ahora como mencione anteriormente, utilizaremos el XML-RPC para poder consumir este Web Services utilizando un programa externo en Python, que permitira crear registros en Clientes/Proveedores (res.partner) de OpenERP.
1. Lo primero es crear un Archivo WebServices.py
2. Ahora Importamos las librerias principales para trabajar con Web Services en Python:
2. Ahora Importamos las librerias principales para trabajar con Web Services en Python:
from SimpleXMLRPCServer import SimpleXMLRPCServer import os import sys import subprocess import string import xmlrpclib
2. Necesitaremos crear algunas variables para poder trabajar mas facilmente nuestro Web Services:
HOST='localhost' PORT=8069 DB='DM3' USER='admin' PASS='admin' url = 'http://%s:%d/xmlrpc/' % (HOST,PORT)
HOST= Es la direccion del Servidor de Odoo (OpenERP)
PORT= Es el puerto que esta ejecutando el Servidor de Odoo (OpenERP)
DB= La base de datos que vamos a utilizar para ejecutar este Web Servicess.
USER= Un usario de la Base, por default admin.
PASS= La contraseƱa del Usuario anterior.
URL= Estamos construyendo una URL para poder consumir el Web Services.
3.Para ejecutar el Web Services creamos las siguientes variables:
PORT= Es el puerto que esta ejecutando el Servidor de Odoo (OpenERP)
DB= La base de datos que vamos a utilizar para ejecutar este Web Servicess.
USER= Un usario de la Base, por default admin.
PASS= La contraseƱa del Usuario anterior.
URL= Estamos construyendo una URL para poder consumir el Web Services.
3.Para ejecutar el Web Services creamos las siguientes variables:
common_proxy = xmlrpclib.ServerProxy(url+'common') object_proxy = xmlrpclib.ServerProxy(url+'object')4. Para estandarizar la ejecuciĆ³n del Web Services creamos el siguiente metodo:
def execute(*args): return object_proxy.execute(DB,uid,PASS,*args)5. Probamos que estemos conectados a la base de datos:
uid = common_proxy.login(DB,USER,PASS) print "Logeado como %s (uid:%d)" % (USER,uid)Nos retorna el Usuario y el ID asignado en la base de datos.
6. Ahora empezamos a consumir el Web Services, como dije al inicio crearemos un registro:
partner_id = execute('res.partner','create',{'name':'PonceSoft Blogspot','is_company':True,'customer':True}) print "#### ID DEL NUEVO CLIENTE >>>> ", partner_idEso es todo por el momento, dudas Ć³ comentarios son bien recibidos!
buen aporte .. funciona para crear un cliente ... en consol o terminal buenisimo solo faltaria avanzar y usar los workflowa
ResponderBorrarSe puede hacer uso de los WorkFlow con la libreria oerplib.
BorrarPregunta es posible hacer una replica de datos utilizando esta libreria, es decir su tengo 2 DB's en openerp y hago una venta en una base, esta se puede reflejar en la otra base de datos?
ResponderBorrarPodria ser posible mediante este metodo, o directamente modifican el orm para poder realizar las inserciones en las 2 bases de datos y utilizando la libreria psycopg2.
Borrarhola buenas noches
ResponderBorrarLogre imprimir el stock.report_lot_bacorde desde php pero el problema que solo me muesras los numeros enteros y el codigo de barras no me sale.
estoy trabajando con odoo 10
una pregunta.. Cuales son los parametros que se le pasan al execute??
ResponderBorrar