# -*- 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')