hacer una llamada a una funcion de un modulo desde php

141 views
Skip to first unread message

David Moncho

unread,
Feb 16, 2016, 9:38:43 AM2/16/16
to Usuarios Odoo / OpenERP en España
hola, estoy intentando usar un método de un modulo de odoo desde la web api pero no se como hacerlo, he conseguido hacer la llamada pero dentro del método uno de los parámetros que hay que pasarle lo trata como un objeto y no se como pasarselo para que pueda usarlo (objeto.id) alguien me podria echar una mano?

Gracias

JZA

unread,
Feb 16, 2016, 10:37:22 AM2/16/16
to openerp-spain-users
Seria buena idea que muestres el codigo que estas usando.

2016-02-16 9:38 GMT-05:00 David Moncho <monch...@gmail.com>:
hola, estoy intentando usar un método de un modulo de odoo desde la web api pero no se como hacerlo, he conseguido hacer la llamada pero dentro del método uno de los parámetros que hay que pasarle lo trata como un objeto y no se como pasarselo para que pueda usarlo (objeto.id) alguien me podria echar una mano?

Gracias

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Alexandro Colorado
Apache OpenOffice Contributor
9060 55AB FFD2 2F02 0E1A  3409 599C 14FC 9450 D3CF

Jose Zambudio Bernabeu

unread,
Feb 16, 2016, 10:45:22 AM2/16/16
to Usuarios Odoo / OpenERP en España
Hola,

Creo recordar que el módulo CRM tiene una carpeta "scripts" con scripts en PHP, puedes basarte en estos.

Un saludo,

juan salcedo

unread,
Feb 16, 2016, 4:10:37 PM2/16/16
to Usuarios Odoo / OpenERP en España
La libreria indicada para gastar metodos de odoo es xmlrpc, y ojo puedes llamar cualquier método no solo los tradicionales como create, write, etc, puedes llamar tambien metodos que tu hayas definido, en esta dirección tienes ejemplo de como construir un cliente en PHP http://thierry-godin.developpez.com/openerp/openerp-xmlrpc-php-en/ Saludos, espero pueda ayudarte!

orsa...@gmail.com

unread,
Aug 11, 2021, 12:24:44 PM8/11/21
to Usuarios Odoo / OpenERP en España
Buenos días a todos, no se si es la forma correcta para pedir ayuda pero ya he escrito en otras ocasiones creando directamente mi consulta y por alguna razón no he tenido respuesta.


Les agradezco mucho si pueden ayudarme en consumir por web service un método creado en un modelo personalizado y cuando consumo el método me retorna un mensaje que dice que el método espera 2 parámetros y solo se envía uno, les comparto como intento consumir web service.

Version Odoo 10 comunity

import xmlrpclib
@api.multi
def consume_ws(self):
        username = 'user'  # Su usuario proporcionado
        pwd = 'password'  # Contraseña del usuario proporcionado.
        dbname = 'db'  # La bd a la que se conecta
        model = 'mi.modelo'    # Modelo de datos donde existe método de web service.

        # Reemplazar localhost con la direccion del web service proporcionado.
        sock_common = xmlrpclib.ServerProxy('http://127.0.0.1:8069/xmlrpc/common')
        uid = sock_common.login(dbname, username, pwd)
        sock = xmlrpclib.ServerProxy('http://127.0.0.1:8069/xmlrpc/object')

        # Creacion del diccionario de valores
        vals = {
            'fecha_venta': '29/07/2021',
            'nombres': 'Cliente afiliado7',
            'apellidos': 'demo web service7',
            'documento_identificacion': 'CEDULA',
            'numero_identificacion': '073933456789BR',
            'fecha_nacimiento': '01/01/1990',
            'genero': 'M',
            'direccion': 'Av. # 10, col san francisco',
            'municipio': 'San Salvador',
            'departamento': 'Managua',
            'telefono': '22334400',
            'celular': '78995544',
            'email': 'cor...@gmail.com',
            'lugar_trabajo': 'Comercial Milagros S.A',
            'empresa_afiliadora': EMPRESA ALIANZA',
            'fecha_pago_inicial': '15/08/2021',
            'agencia': '',
            'tipo_cobertura': 'Mensual',
            'producto': 'ASISTENCIA PREMIUM',
        }
        results = sock.execute(dbname, uid, pwd, model, 'create_affiliates', vals)


Mensaje que me retorna:
Fault: <Fault create_affiliates() takes exactly 2 arguments (1 given): 'Traceback (most recent call last):\n File "/odoo/odoo-server/odoo/service/wsgi_server.py", line 56, in xmlrpc_return\n result = odoo.http.dispatch_rpc(service, method, params)\n File "/odoo/odoo-server/odoo/http.py", line 118, in dispatch_rpc\n result = dispatch(method, params)\n File "/odoo/odoo-server/odoo/service/model.py", line 38, in dispatch\n res = fn(db, uid, *params)\n File "/odoo/odoo-server/odoo/service/model.py", line 101, in wrapper\n return f(dbname, *args, **kwargs)\n File "/odoo/odoo-server/odoo/service/model.py", line 164, in execute\n res = execute_cr(cr, uid, obj, method, *args, **kw)\n File "/odoo/odoo-server/odoo/service/model.py", line 153, in execute_cr\n return odoo.api.call_kw(recs, method, args, kw)\n File "/odoo/odoo-server/odoo/api.py", line 689, in call_kw\n return call_kw_multi(method, model, args, kwargs)\n File "/odoo/odoo-server/odoo/api.py", line 680, in call_kw_multi\n result = method(recs, *args, **kwargs)\nTypeError: create_affiliates() takes exactly 2 arguments (1 given)\n'>

el metodo que se quiere consumir esta creado así:
def create_affiliates(self, affiliate_data): donde afiliate_data es un diccionario de datos que espera como parámetro y es el que le envío, pero self no lo envío como parámetro.

Si alguien puede ayudarme en orientarme porque ese mensaje de error, no se si tiene que ver con el self pero en teoría el self va implícito en la llamada al método


Gracias.
Saludos,

Atte. Orlando Melgar

Reply all
Reply to author
Forward
0 new messages