0% encontró este documento útil (0 votos)
18 vistas5 páginas

Integración de Veraz en Odoo

El documento define un modelo en Odoo que extiende la funcionalidad del modelo 'res.partner' para integrar informes de Veraz. Incluye métodos para solicitar informes, enriquecer datos del socio y gestionar variables relacionadas con la información de Veraz. Además, se establecen endpoints para entornos de prueba y producción, así como la estructura de datos necesaria para realizar las solicitudes.

Cargado por

xlbrionesx
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas5 páginas

Integración de Veraz en Odoo

El documento define un modelo en Odoo que extiende la funcionalidad del modelo 'res.partner' para integrar informes de Veraz. Incluye métodos para solicitar informes, enriquecer datos del socio y gestionar variables relacionadas con la información de Veraz. Además, se establecen endpoints para entornos de prueba y producción, así como la estructura de datos necesaria para realizar las solicitudes.

Cargado por

xlbrionesx
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

# -*- coding: utf-8 -*-

from openerp import models, fields, api


from [Link] import UserError, ValidationError
import requests
import json
import base64

# ENDPOINT_VERAZ_TEST = '[Link]
api-efx/v1/wserv'
# ENDPOINT_VERAZ_PRODUCCION = '[Link]
api-efx/v1/wserv'

ENDPOINT_VERAZ_TEST = '[Link]
ENDPOINT_VERAZ_PRODUCCION = '[Link]

VARIABLES_VERAZ = {
'nombre': 'nombre',
'sexo': 'sexo',
'cuit': 'xxxx',
'direccion': 'xxxx',
'lodalidad': 'xxxx',
'provincia': 'xxxx',
'cp': 'xxxx',
}

class ExtendsResPartnerVeraz([Link]):
_name = '[Link]'
_inherit = '[Link]'

veraz_contratado = [Link]('Veraz',
compute='_compute_veraz_contrtado')
veraz_informe_ids = fields.One2many('[Link]', 'partner_id',
'Veraz - Informes')
veraz_variable_ids = fields.One2many('[Link]',
'partner_id', 'Variables')
veraz_variable_1 = [Link]('Variable 1')
veraz_variable_2 = [Link]('Variable 2')
veraz_variable_3 = [Link]('Variable 3')
veraz_variable_4 = [Link]('Variable 4')
veraz_variable_5 = [Link]('Variable 5')
veraz_capacidad_pago_mensual = [Link]('Veraz - CPM', digits=(16,2))
veraz_partner_tipo_id = fields.Many2one('[Link]', 'Veraz -
Tipo de cliente')

pregunta_ids = [Link]('Preguntas')

# Validacion por cuestionario


veraz_cuestionario_ids = fields.One2many('[Link]',
'partner_id', 'Veraz - Cuestionarios')
veraz_cuestionario_id = fields.Many2one('[Link]',
'Veraz - Cuestionario actual')

@[Link]
def _compute_veraz_contrtado(self):
self.veraz_contratado = True if self.company_id.veraz_configuracion_id
else False

@[Link]
def solicitar_informe_veraz(self):
veraz_configuracion_id = self.company_id.veraz_configuracion_id
if veraz_configuracion_id:
token = veraz_configuracion_id.get_token_veraz_informes()
headers = {
'Authorization': "Bearer " + token,
'Content-Type': 'application/json'
}
sexo = 'B'
if [Link] == 'masculino':
sexo = 'M'
elif [Link] == 'femenino':
sexo = 'F'
data = {
"applicants": {
"primaryConsumer": {
"personalInformation": {
"entity": {
"consumer": {
"names": [
{
"data": {
"documento":
str([Link]),
"nombre":
"",
"sexo":
sexo,
}
}
]
}
},
"productData": {
"sector":
veraz_configuracion_id.sector,
"billTo":
veraz_configuracion_id.matriz,
"shipTo":
veraz_configuracion_id.sucursal,
"formatReport": "T",
"producto": "Risc:experto"
},
"clientConfig": {
"clientTxId": str([Link]),
"clientReference": "",
},
"variables": {},
"globalVariables": {},
"vinculos": []
}
}
}
}
endpoint_veraz = ENDPOINT_VERAZ_PRODUCCION if
veraz_configuracion_id.state == 'produccion' else ENDPOINT_VERAZ_TEST
print("endpoint_veraz: ", endpoint_veraz)
response = [Link](endpoint_veraz, json=data,
headers=headers)
data = [Link]()
print("data ===: ", data)
print("response.status_code: ", response.status_code)
print("[Link]: ", data['description'])
if response.status_code != 200:
raise ValidationError("Error en la consulta de informe
Veraz: "+data['description'])
else:
list_values = []
variables = data['applicants'][0]['SMARTS_RESPONSE']
['VariablesDeSalida'].iteritems()
for variable in variables:
variable_nombre, variable_valor = variable
variable_values = {
'partner_id': [Link],
'name': variable_nombre,
'valor': variable_valor,
}
list_values.append((0,0, variable_values))
nuevo_informe_id =
[Link]['[Link]'].create({})
self.veraz_informe_ids = [nuevo_informe_id.id]
self.veraz_variable_ids = [(6, 0, [])]
nuevo_informe_id.write({'variable_ids': list_values})
self.asignar_variables_veraz()
self.enriquecer_partner_veraz()
if
veraz_configuracion_id.ejecutar_cda_al_solicitar_informe:
nuevo_informe_id.ejecutar_cdas()

@[Link]
def enriquecer_partner_veraz(self):
veraz_configuracion_id = self.company_id.veraz_configuracion_id
vals = {}
if veraz_configuracion_id.asignar_nombre:
variable_apellido_nombre_id =
self.veraz_variable_ids.filtered(lambda x: [Link] == VARIABLES_VERAZ['nombre'])
# if variable_apellido_id and variable_nombre_id:
apellido_nombre = variable_apellido_nombre_id.valor
if apellido_nombre.split(',') and len(apellido_nombre.split(','))
> 1:
vals['app_apellido'] = apellido_nombre.split(',')[0]
vals['app_nombre'] = apellido_nombre.split(',')[1]
print("variable_nombre_id: ", variable_apellido_nombre_id.valor)
vals['name'] = variable_apellido_nombre_id.[Link](',', '
')
if veraz_configuracion_id.asignar_direccion:
variable_direccion_id = self.veraz_variable_ids.filtered(lambda
x: [Link] == VARIABLES_VERAZ['direccion'])
if variable_direccion_id:
vals['street'] = variable_direccion_id.valor
if veraz_configuracion_id.asignar_ciudad:
variable_ciudad_id = self.veraz_variable_ids.filtered(lambda x:
[Link] == VARIABLES_VERAZ['lodalidad'])
if variable_ciudad_id:
vals['city'] = variable_ciudad_id.valor
if veraz_configuracion_id.asignar_cp:
variable_cp_id = self.veraz_variable_ids.filtered(lambda x:
[Link] == VARIABLES_VERAZ['cp'])
if variable_cp_id:
vals['zip'] = variable_cp_id.valor
if veraz_configuracion_id.asignar_provincia:
variable_provincia_id = self.veraz_variable_ids.filtered(lambda
x: [Link] == VARIABLES_VERAZ['provincia'])
if variable_provincia_id:
self.set_provincia(variable_provincia_id.valor)
if veraz_configuracion_id.asignar_cuit:
variable_cuit_id = self.veraz_variable_ids.filtered(lambda x:
[Link] == VARIABLES_VERAZ['cuit'])
if variable_cuit_id:
vals['main_id_category_id'] = 25
vals['main_id_number'] = variable_cuit_id.valor
if veraz_configuracion_id.asignar_genero:
variable_genero_id = self.veraz_variable_ids.filtered(lambda x:
[Link] == VARIABLES_VERAZ['sexo'])
if variable_genero_id:
if variable_genero_id.valor == 'M':
vals['sexo'] = 'masculino'
elif variable_genero_id.valor == 'F':
vals['sexo'] = 'femenino'
[Link](vals)

@[Link]
def asignar_variables_veraz(self):
variable_1 = False
variable_2 = False
variable_3 = False
variable_4 = False
variable_5 = False
veraz_configuracion_id = self.company_id.veraz_configuracion_id
for var_id in self.veraz_variable_ids:
if var_id.name == veraz_configuracion_id.veraz_variable_1:
variable_1 = var_id.name + ": " + str(var_id.valor)
if var_id.name == veraz_configuracion_id.veraz_variable_2:
variable_2 = var_id.name + ": " + str(var_id.valor)
if var_id.name == veraz_configuracion_id.veraz_variable_3:
variable_3 = var_id.name + ": " + str(var_id.valor)
if var_id.name == veraz_configuracion_id.veraz_variable_4:
variable_4 = var_id.name + ": " + str(var_id.valor)
if var_id.name == veraz_configuracion_id.veraz_variable_5:
variable_5 = var_id.name + ": " + str(var_id.valor)
[Link]({
'veraz_variable_1': variable_1,
'veraz_variable_2': variable_2,
'veraz_variable_3': variable_3,
'veraz_variable_4': variable_4,
'veraz_variable_5': variable_5,
})

@[Link]
def set_provincia(self, provincia):
if provincia == 'Capital Federal':
provincia = 'Ciudad Autónoma de Buenos Aires'
state_obj = [Link]('[Link]')
state_ids = state_obj.search([Link], [Link], [
('name', '=ilike', provincia)
])
if len(state_ids) > 0:
self.state_id = state_ids[0]
country_id = state_obj.browse([Link], [Link],
state_ids[0]).country_id
self.country_id = country_id.id

@[Link]
def ejecutar_cdas_veraz(self):
if self.veraz_informe_ids and len(self.veraz_informe_ids) > 0:
self.veraz_informe_ids[0].ejecutar_cdas()

@[Link]
def button_solicitar_informe_veraz(self):
self.solicitar_informe_veraz()

def obtener_cuestionario_veraz(self):
cuestionario_id =
[Link]['[Link]'].create({'partner_id': [Link]})
self.veraz_cuestionario_id = cuestionario_id.id
cuestionario_id.obtener_preguntas()
return cuestionario_id.id

@[Link]
def button_obtener_cuestionario_veraz(self):
self.obtener_cuestionario_veraz()

@[Link]
def ver_cuestionario_actual(self):
self.ensure_one()
view_id =
[Link]('financiera_veraz.financiera_veraz_cuestionario_form', False)
return {
'name': 'Pregunta de ID Validator',
'type': '[Link].act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': '[Link]',
'res_id': self.veraz_cuestionario_id.id,
'views': [(view_id.id, 'form')],
'view_id': view_id.id,
'target': 'new',
}

@[Link]
def veraz_report(self):
self.ensure_one()
return [Link]['report'].get_action(self,
'financiera_veraz.veraz_report_view')

También podría gustarte