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.
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.
uid = sock_common.login(dbname, username, pwd)
# 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',
'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