Publicidad

martes, 5 de agosto de 2014

Como Consumir el Web Service de Odoo (OpenERP)

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:
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:
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_id

Eso es todo por el momento, dudas Ć³ comentarios son bien recibidos! 

“Una mentalidad positiva te ayuda a triunfar. Piensa bien, para vivir mejor”

6 comentarios:

  1. buen aporte .. funciona para crear un cliente ... en consol o terminal buenisimo solo faltaria avanzar y usar los workflowa

    ResponderBorrar
  2. Pregunta 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?

    ResponderBorrar
    Respuestas
    1. Podria 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.

      Borrar
  3. hola buenas noches

    Logre 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

    ResponderBorrar
  4. una pregunta.. Cuales son los parametros que se le pasan al execute??

    ResponderBorrar