pyEscoAPI 0.0.11__tar.gz → 0.0.16__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyEscoAPI
3
- Version: 0.0.11
3
+ Version: 0.0.16
4
4
  Summary: Python client for Esco API (Esco bolsa)
5
5
  Author-email: Codetria <hola@codetria.com>
6
6
  License: MIT License
@@ -0,0 +1,193 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+ from typing import List
4
+ from datetime import datetime
5
+
6
+
7
+ @dataclass
8
+ class ComitenteData:
9
+ fechaApertura: datetime
10
+ denominacion: str
11
+ esFisico: bool
12
+ esInversorCalificado: bool
13
+ expBrokerCta: bool
14
+ expInversion: bool
15
+ especulativoOportunista: int
16
+ fechaDesdeCodTpContribIVA: datetime
17
+ codTpContribIVA: str
18
+ requiereFirmaConjunta: bool
19
+ noPresencial: bool
20
+ terceroNoIntermediario: bool
21
+ intermediario: bool
22
+ titulares: List[Persona]
23
+ entMailing: List[EntMailing]
24
+ numComitente: int | None = None
25
+ emailsInfo: str | None = None
26
+ patrimonioEstim: int | None = None
27
+ patrimonioEstimMoneda: str | None = None
28
+ actividad: int | None = None
29
+ expBrokerCtaNombre: str | None = None
30
+ experienciaEnInversiones: str | None = None
31
+ montoEstimCta: int | None = None
32
+ montoEstimCtaMoneda: str | None = None
33
+ tpRiesgoCmt: str | None = None
34
+ tpManejoCart: str | None = None
35
+ tpCmtTrading: int | None = None
36
+ codCuotapartista: str | None = None
37
+ referenciaFirmaConjunta: str | None = None
38
+ codGrupoArOperBurs: int | None = None
39
+ codTpComitente: int | None = None
40
+ codCategoriaUIF: int | None = None
41
+ codGrupoArAcreencias: int | None = None
42
+ codGrupoArCustodia: int | None = None
43
+ firmoCondFechaDesde: datetime | None = None
44
+ oficialCuenta: int | None = None
45
+ administrador: int | None = None
46
+ productor: int | None = None
47
+ codTpBilleteraVirtual: str | None = None
48
+ pmtComsinCustodia: bool | None = None
49
+ pmtComRecepdeInf: bool | None = None
50
+ pmtDerechoenMonOpe: bool | None = None
51
+ pmtEsClienteEspecial: bool | None = None
52
+ pmtEsComPromotor: bool | None = None
53
+ pmtGeneraAvisosAlertasUIF: bool | None = None
54
+ pmtivAenMondeOpeMov: bool | None = None
55
+ pmtOperabajoAcuerdoLibreAdm: bool | None = None
56
+ pmtPermiteSuscribirCtaBancariaEnVBHome: bool | None = None
57
+ pmtRecibeMailCambioEstadoOrdenes: bool | None = None
58
+ pmtExcluyeCalculoRetencionPercepcionIVABoletosCheques: bool | None = None
59
+ pmtExcluyeCalculoResultadoOpContinuo: bool | None = None
60
+ pmtIncluyeGenracionCreditosParaOperar: bool | None = None
61
+ pmtInformaInterfazGTR: bool | None = None
62
+ pmtBonificaGastoCustodiaCV: bool | None = None
63
+ pmtSeCobraCustodia: bool | None = None
64
+ pmtSeCobranArancelesGestionBancaria: bool | None = None
65
+ pmtSeCobranCargosPorDescubierto: bool | None = None
66
+ pmtSeEnviaValuacion: bool | None = None
67
+ pmtSeFacturanCargosPorDescubierto: bool | None = None
68
+ pmtSeleimimenboletos: bool | None = None
69
+ pmtSeleImimenetiquetas: bool | None = None
70
+ juridicos: Juridicos | None = None
71
+ instrucciones: List[Instrucciones] | None = None
72
+ codTpRiesgo: str | None = None
73
+ fechaVencimientoPerfil: datetime | None = None
74
+ tpContribRetencion: str | None = None
75
+ codCanalVta: int | None = None
76
+ codCategoria: int | None = None
77
+ codPRI: int | None = None
78
+ codPerfilCmt: int | None = None
79
+ numSucursal: str | None = None
80
+
81
+
82
+ @dataclass
83
+ class Juridicos:
84
+ numInscripcion: str
85
+ lugarConstitucion: str
86
+ folio: str
87
+ libro: str
88
+ tomo: str
89
+ codPais: int
90
+ tpContribIngBrutos: str
91
+ cuit: str
92
+ ruc: str
93
+ rut: str
94
+ esSociedadHecho: bool
95
+ tpRegisJuridica: int
96
+ esExtranjero: bool
97
+ actividad: int
98
+ numInscripcionIIBB: str
99
+ codTpIdFatca: int
100
+ idFatca: str
101
+ actividadUIF: int
102
+ giin: str
103
+ esInversorCalificado: bool
104
+ obsFatca: str
105
+ cie: str
106
+ fechaConstitucion: datetime
107
+
108
+
109
+ @dataclass
110
+ class Persona:
111
+ apellido: str | None = None
112
+ nombre: str | None = None
113
+ tpDoc: int | None = None
114
+ numDoc: str | None = None
115
+ nacionalidad: int | None = None
116
+ fechaNacimiento: datetime | None = None
117
+ lugarNacimiento: str | None = None
118
+ sexo: int | None = None
119
+ estadoCivil: int | None = None
120
+ esPEP: bool | None = None
121
+ esSujetoObligado: bool | None = None
122
+ cuit: str | None = None
123
+ cuil: str | None = None
124
+ cdi: str | None = None
125
+ emailsInfo: str | None = None
126
+ noPresencial: bool | None = None
127
+ esInversorCalificado: bool | None = None
128
+ esBeneficiario: bool | None = None
129
+ esCliente: bool | None = None
130
+ esClienteEspecial: bool | None = None
131
+ esExtranjero: bool | None = None
132
+ codInterfaz: str | None = None
133
+ perteneceLUT: bool | None = None
134
+ giin: str | None = None
135
+ ruc: str | None = None
136
+ rut: str | None = None
137
+ idFatca: str | None = None
138
+ obsFatca: str | None = None
139
+ codTpIdFatca: int | None = None
140
+ codActividad: int | None = None
141
+ codActividadUIF: int | None = None
142
+ codTpContribIVA: str | None = None
143
+ tpPersona: bool | None = None
144
+ numImpositivo: str | None = None
145
+ persEmpresa: str | None = None
146
+ persCargo: str | None = None
147
+ persTpContribRetencion: str | None = None
148
+ persAgRecaudador: bool | None = None
149
+ persAgNroInscrip: str | None = None
150
+ persSSN: str | None = None
151
+ posicionCondominio: int | None = None
152
+ condTpCondominio: str | None = None
153
+ requiereFirma: bool | None = None
154
+ condEsAccionista: bool | None = None
155
+ condPorcParticipacion: int | None = None
156
+ condBeneficiario: int | None = None
157
+ patrimonioEstim: int | None = None
158
+ patrimonioEstimMoneda: str | None = None
159
+ tpRiesgoTitular: str | None = None
160
+ domicilioParticular: Domicilio | None = None
161
+ domicilioComercial: Domicilio | None = None
162
+
163
+
164
+ @dataclass
165
+ class Domicilio:
166
+ codProvincia: int
167
+ codPais: int | None = None
168
+ altura: str | None = None
169
+ calle: str | None = None
170
+ piso: str | None = None
171
+ departamento: str | None = None
172
+ localidad: str | None = None
173
+ codigoPostal: str | None = None
174
+ telefono: str | None = None
175
+ fax: str | None = None
176
+ recibeInfoFax: bool | None = None
177
+
178
+
179
+ @dataclass
180
+ class Instrucciones:
181
+ moneda: str
182
+ banco: int | None = None
183
+ tpCuenta: int | None = None
184
+ numSucursal: int | None = None
185
+ numeroCuenta: str | None = None
186
+ cbu: str | None = None
187
+ cuit: str | None = None
188
+ ctaAlias: str | None = None
189
+
190
+
191
+ @dataclass
192
+ class EntMailing:
193
+ codEntMailing: int
@@ -4,7 +4,7 @@ from dataclasses import asdict
4
4
  from datetime import datetime, timedelta, date
5
5
  from enum import Enum
6
6
  from http import HTTPMethod
7
- from typing import TypedDict, Optional
7
+ from typing import TypedDict
8
8
 
9
9
  import requests
10
10
  from requests import Response
@@ -12,21 +12,21 @@ from requests import Response
12
12
  from pyEscoAPI.dataclasses import Persona, ComitenteData
13
13
  from pyEscoAPI.exception import PyEscoAPIError
14
14
 
15
- logger = logging.getLogger(f"{__name__}")
15
+ logger = logging.getLogger(f"app.{__name__}")
16
16
 
17
17
 
18
18
  class DomicilioDict(TypedDict):
19
19
  cod_pais: int
20
20
  cod_provincia: int
21
- altura: Optional[str]
22
- calle: Optional[str]
23
- piso: Optional[str]
24
- departamento: Optional[str]
25
- localidad: Optional[str]
26
- cod_postal: Optional[str]
27
- telefono: Optional[str]
28
- fax: Optional[str]
29
21
  recibe_info_fax: bool
22
+ altura: str | None = None
23
+ calle: str | None = None
24
+ piso: str | None = None
25
+ departamento: str | None = None
26
+ localidad: str | None = None
27
+ cod_postal: str | None = None
28
+ telefono: str | None = None
29
+ fax: str | None = None
30
30
 
31
31
 
32
32
  class APIVersion(Enum):
@@ -34,6 +34,8 @@ class APIVersion(Enum):
34
34
 
35
35
 
36
36
  class EscoAPI:
37
+ _instance = None
38
+
37
39
  base_url: str
38
40
  username: str
39
41
  password: str
@@ -64,10 +66,28 @@ class EscoAPI:
64
66
  }
65
67
  result: Response = req_call(**params)
66
68
  if 200 <= result.status_code <= 299:
69
+ result_body = result.json()
70
+ logger.info("EscoAPI: Successful response", extra={
71
+ "request_body": request_body,
72
+ "url": f"{self.base_url}{request_endpoint}",
73
+ "response_body": result_body if request_endpoint != "/login" else None,
74
+ "status_code": result.status_code
75
+ })
67
76
  return result.json()
68
77
  else:
69
- if not error_message:
78
+ try:
79
+ result_body = result.json()
80
+ error_message = result_body["error"]["Msj"]
81
+ except:
82
+ error_message = ""
83
+ if not error_message or error_message == "":
70
84
  error_message = f"Error during endpoint call: {request_endpoint}. Code: {result.status_code}"
85
+ logger.error("EscoAPI: Failed response", extra={
86
+ "request_body": request_body,
87
+ "url": f"{self.base_url}{request_endpoint}",
88
+ "response_body": result.json(),
89
+ "status_code": result.status_code
90
+ })
71
91
  raise PyEscoAPIError(endpoint=request_endpoint, status_code=result.status_code, error_message=error_message)
72
92
 
73
93
  def __esco_login(self):
@@ -93,18 +113,18 @@ class EscoAPI:
93
113
  self.__esco_login()
94
114
 
95
115
  def __new__(cls, base_url: str, username: str, password: str, client_id: str, version: APIVersion):
96
- if not hasattr(cls, 'instance'):
97
- cls.instance = super(EscoAPI, cls).__new__(cls)
98
- # noinspection PyUnresolvedReferences
99
- return cls.instance
116
+ if cls._instance is None:
117
+ cls._initialized = False
118
+ cls._instance = super(EscoAPI, cls).__new__(cls)
119
+ return cls._instance
100
120
 
101
121
  def __init__(
102
- self,
103
- base_url: str,
104
- username: str,
105
- password: str,
106
- client_id: str = "",
107
- version: APIVersion = APIVersion.VERSION_9
122
+ self,
123
+ base_url: str,
124
+ username: str,
125
+ password: str,
126
+ client_id: str = "",
127
+ version: APIVersion = APIVersion.VERSION_9
108
128
  ):
109
129
  """
110
130
  Initializes the EscoAPI client, starting a login to the platform.
@@ -116,13 +136,15 @@ class EscoAPI:
116
136
  :param client_id: Optional. Include if you want to specify a client_id.
117
137
  :param version: Optional. The EscoAPI version that you want to use. Default: Version 9.
118
138
  """
119
- self.base_url = f"{base_url}/api/v{version.value}"
120
- self.username = username
121
- self.password = password
122
- self.client_id = client_id
123
- self.version = version
139
+ if not self._initialized:
140
+ self.base_url = f"{base_url}/api/v{version.value}"
141
+ self.username = username
142
+ self.password = password
143
+ self.client_id = client_id
144
+ self.version = version
124
145
 
125
- self.__esco_login()
146
+ self.__esco_login()
147
+ self._initialized = True
126
148
 
127
149
  def get_posiciones(
128
150
  self,
@@ -1091,6 +1113,99 @@ class EscoAPI:
1091
1113
  request_body=req_body,
1092
1114
  request_method=HTTPMethod.POST
1093
1115
  )
1116
+
1117
+ def get_ctaCorriente_monetaria(
1118
+ self,
1119
+ cuenta: str = None,
1120
+ por_concertacion: bool = False,
1121
+ moneda: str = None,
1122
+ fecha_desde: datetime = datetime.now() - timedelta(days=15),
1123
+ fecha_hasta: datetime = datetime.now(),
1124
+ ):
1125
+ """
1126
+ Obtiene movimientos y operaciones ya confirmadas de monedas que impactaron en la cuenta corriente en un período
1127
+ determinado en las cuentas comitente solicitadas.
1128
+ :param cuenta: Número de Cuenta Comitente.
1129
+ :param por_concertacion: Indica si los movimientos de la Cte Cte se buscan por Fecha de Concertación o no.
1130
+ :param moneda: Código ISO de Moneda (ARS, USD, USD-C, etc).
1131
+ :param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
1132
+ :param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
1133
+ """
1134
+ req_body = {
1135
+ "cuenta": cuenta,
1136
+ "porConcertacion": por_concertacion,
1137
+ "moneda": moneda,
1138
+ "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
1139
+ "fechaHasta": fecha_hasta.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
1140
+ }
1141
+ self.__pre_connection()
1142
+ return self.__make_request(
1143
+ request_endpoint="/get-ctaCorriente-monetaria",
1144
+ request_body=req_body,
1145
+ request_method=HTTPMethod.POST
1146
+ )
1147
+
1148
+ def get_ctaCorriente_instrumentos(
1149
+ self,
1150
+ cuenta: str = None,
1151
+ por_concertacion: bool = False,
1152
+ instrumento: str = None,
1153
+ fecha_desde: datetime = datetime.now() - timedelta(days=15),
1154
+ fecha_hasta: datetime = datetime.now(),
1155
+ ):
1156
+ """
1157
+ Obtiene movimientos y operaciones ya confirmadas de instrumentos que impactaron en la cuenta corriente en un período
1158
+ determinado en las cuentas comitente solicitadas. En esta consulta se pueden ver movimientos de títulos, futuros,
1159
+ series, índices, cheques, etc.
1160
+ :param cuenta: Número de Cuenta Comitente.
1161
+ :param por_concertacion: Indica si los movimientos de la Cte Cte se buscan por Fecha de Concertación o no.
1162
+ :param instrumento: Se debe ingresar un código que se compone de la siguiente manera: Letra que identifica el Tipo de Especie + Código interno de la Especie.
1163
+ :param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
1164
+ :param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
1165
+ """
1166
+ req_body = {
1167
+ "cuenta": cuenta,
1168
+ "porConcertacion": por_concertacion,
1169
+ "instrumento": instrumento,
1170
+ "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
1171
+ "fechaHasta": fecha_hasta.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
1172
+ }
1173
+ self.__pre_connection()
1174
+ return self.__make_request(
1175
+ request_endpoint="/get-ctaCorriente-instrumentos",
1176
+ request_body=req_body,
1177
+ request_method=HTTPMethod.POST
1178
+ )
1179
+ def get_ctaCorriente_consolidada(
1180
+ self,
1181
+ cuenta: str = None,
1182
+ por_concertacion: bool = False,
1183
+ incluir_saldos_anteriores: bool = False,
1184
+ fecha_desde: datetime = datetime.now() - timedelta(days=15),
1185
+ fecha_hasta: datetime = datetime.now(),
1186
+ ):
1187
+ """
1188
+ Obtiene movimientos y operaciones ya confirmadas de monedas e instrumentos que impactaron en la cuenta corriente en un período
1189
+ determinado en las cuentas comitente solicitadas.
1190
+ :param cuenta: Número de Cuenta Comitente.
1191
+ :param por_concertacion: Indica si los movimientos de la Cte Cte se buscan por Fecha de Concertación o no.
1192
+ :param incluir_saldos_anteriores: Indica si se informan saldos inicialeso no.
1193
+ :param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
1194
+ :param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
1195
+ """
1196
+ req_body = {
1197
+ "cuenta": cuenta,
1198
+ "porConcertacion": por_concertacion,
1199
+ "incluirSaldosAnteriores": incluir_saldos_anteriores,
1200
+ "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
1201
+ "fechaHasta": fecha_hasta.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
1202
+ }
1203
+ self.__pre_connection()
1204
+ return self.__make_request(
1205
+ request_endpoint="/get-ctaCorriente-consolidada",
1206
+ request_body=req_body,
1207
+ request_method=HTTPMethod.POST
1208
+ )
1094
1209
 
1095
1210
  def get_liquidaciones_fondos(
1096
1211
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyEscoAPI
3
- Version: 0.0.11
3
+ Version: 0.0.16
4
4
  Summary: Python client for Esco API (Esco bolsa)
5
5
  Author-email: Codetria <hola@codetria.com>
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = 'pyEscoAPI'
7
- version = "0.0.11"
7
+ version = "0.0.16"
8
8
  license = {text = "MIT License"}
9
9
  authors = [
10
10
  { name="Codetria", email="hola@codetria.com" },
@@ -2,6 +2,7 @@ import os
2
2
  from datetime import datetime, timedelta
3
3
 
4
4
  import pytest
5
+ from unittest.mock import patch
5
6
 
6
7
  from pyEscoAPI import EscoAPI
7
8
  from pyEscoAPI.esco_api import APIVersion
@@ -18,6 +19,27 @@ def api_client():
18
19
  )
19
20
 
20
21
 
22
+ @patch("pyEscoAPI.esco_api.EscoAPI._EscoAPI__esco_login")
23
+ def test_singleton_should_login_just_once(mock_login):
24
+ client = EscoAPI(
25
+ base_url=os.getenv("base_url"),
26
+ username=os.getenv("user_name"),
27
+ password=os.getenv("password"),
28
+ client_id=os.getenv("client_id"),
29
+ version=APIVersion.VERSION_9
30
+ )
31
+ other_client = EscoAPI(
32
+ base_url=os.getenv("base_url"),
33
+ username=os.getenv("user_name"),
34
+ password=os.getenv("password"),
35
+ client_id=os.getenv("client_id"),
36
+ version=APIVersion.VERSION_9
37
+ )
38
+
39
+ assert client is other_client
40
+ mock_login.assert_called_once()
41
+
42
+
21
43
  def test_get_posiciones(api_client):
22
44
  cuenta = "351008539"
23
45
  result = api_client.get_posiciones(cuenta=cuenta)
@@ -220,6 +242,27 @@ def test_get_ordenes(api_client):
220
242
  result = api_client.get_ordenes()
221
243
  assert "codOrden" in result[0]
222
244
 
245
+ def test_get_ctaCorriente_monetaria(api_client):
246
+ cuenta="77105"
247
+ result = api_client.get_ctaCorriente_monetaria(cuenta=cuenta)
248
+ assert "codMoneda" in result[0]
249
+ assert result[0]["codMoneda"] is not None
250
+
251
+ def test_get_ctaCorriente_instrumentos(api_client):
252
+ cuenta="77105"
253
+ fecha_desde=datetime.fromisoformat("2024-03-02")
254
+ fecha_hasta=datetime.fromisoformat("2024-03-17")
255
+ result = api_client.get_ctaCorriente_instrumentos(cuenta=cuenta, fecha_desde=fecha_desde, fecha_hasta=fecha_hasta)
256
+ assert "codigoEspecie" in result[0]
257
+ assert result[0]["codigoEspecie"] is not None
258
+
259
+ def test_get_ctaCorriente_consolidada(api_client):
260
+ cuenta="77105"
261
+ fecha_desde=datetime.fromisoformat("2024-03-02")
262
+ fecha_hasta=datetime.fromisoformat("2024-03-17")
263
+ result = api_client.get_ctaCorriente_consolidada(cuenta=cuenta, fecha_desde=fecha_desde, fecha_hasta=fecha_hasta)
264
+ assert "tipoItem" in result[0]
265
+ assert result[0]["tipoItem"] in ["Instrumentos","Monedas"]
223
266
 
224
267
  def test_get_liquidaciones(api_client):
225
268
  result = api_client.get_liquidaciones_fondos()
@@ -1,193 +0,0 @@
1
- from __future__ import annotations
2
- from dataclasses import dataclass
3
- from typing import List, Optional
4
- from datetime import datetime
5
-
6
-
7
- @dataclass
8
- class ComitenteData:
9
- numComitente: Optional[int]
10
- fechaApertura: datetime
11
- denominacion: str
12
- emailsInfo: Optional[str]
13
- esFisico: bool
14
- patrimonioEstim: Optional[int]
15
- patrimonioEstimMoneda: Optional[str]
16
- esInversorCalificado: bool
17
- actividad: Optional[int]
18
- expBrokerCta: bool
19
- expBrokerCtaNombre: Optional[str]
20
- expInversion: bool
21
- experienciaEnInversiones: Optional[str]
22
- especulativoOportunista: int
23
- montoEstimCta: Optional[int]
24
- montoEstimCtaMoneda: Optional[str]
25
- fechaDesdeCodTpContribIVA: datetime
26
- codTpContribIVA: str
27
- tpRiesgoCmt: Optional[str]
28
- tpManejoCart: Optional[str]
29
- tpCmtTrading: Optional[int]
30
- codCuotapartista: Optional[str]
31
- requiereFirmaConjunta: bool
32
- referenciaFirmaConjunta: Optional[str]
33
- codGrupoArOperBurs: Optional[int]
34
- codTpComitente: Optional[int]
35
- codCategoriaUIF: Optional[int]
36
- codGrupoArAcreencias: Optional[int]
37
- codGrupoArCustodia: Optional[int]
38
- noPresencial: bool
39
- firmoCondFechaDesde: Optional[datetime]
40
- terceroNoIntermediario: bool
41
- intermediario: bool
42
- oficialCuenta: Optional[int]
43
- administrador: Optional[int]
44
- productor: Optional[int]
45
- codTpBilleteraVirtual: Optional[str]
46
- pmtComsinCustodia: Optional[bool]
47
- pmtComRecepdeInf: Optional[bool]
48
- pmtDerechoenMonOpe: Optional[bool]
49
- pmtEsClienteEspecial: Optional[bool]
50
- pmtEsComPromotor: Optional[bool]
51
- pmtGeneraAvisosAlertasUIF: Optional[bool]
52
- pmtivAenMondeOpeMov: Optional[bool]
53
- pmtOperabajoAcuerdoLibreAdm: Optional[bool]
54
- pmtPermiteSuscribirCtaBancariaEnVBHome: Optional[bool]
55
- pmtRecibeMailCambioEstadoOrdenes: Optional[bool]
56
- pmtExcluyeCalculoRetencionPercepcionIVABoletosCheques: Optional[bool]
57
- pmtExcluyeCalculoResultadoOpContinuo: Optional[bool]
58
- pmtIncluyeGenracionCreditosParaOperar: Optional[bool]
59
- pmtInformaInterfazGTR: Optional[bool]
60
- pmtBonificaGastoCustodiaCV: Optional[bool]
61
- pmtSeCobraCustodia: Optional[bool]
62
- pmtSeCobranArancelesGestionBancaria: Optional[bool]
63
- pmtSeCobranCargosPorDescubierto: Optional[bool]
64
- pmtSeEnviaValuacion: Optional[bool]
65
- pmtSeFacturanCargosPorDescubierto: Optional[bool]
66
- pmtSeleimimenboletos: Optional[bool]
67
- pmtSeleImimenetiquetas: Optional[bool]
68
- juridicos: Optional[Juridicos]
69
- titulares: List[Persona]
70
- instrucciones: Optional[List[Instrucciones]]
71
- entMailing: List[EntMailing]
72
- codTpRiesgo: Optional[str]
73
- fechaVencimientoPerfil: Optional[datetime]
74
- tpContribRetencion: Optional[str]
75
- codCanalVta: Optional[int]
76
- codCategoria: Optional[int]
77
- codPRI: Optional[int]
78
- codPerfilCmt: Optional[int]
79
- numSucursal: Optional[str]
80
-
81
-
82
- @dataclass
83
- class Juridicos:
84
- numInscripcion: str
85
- lugarConstitucion: str
86
- folio: str
87
- libro: str
88
- tomo: str
89
- codPais: int
90
- tpContribIngBrutos: str
91
- cuit: str
92
- ruc: str
93
- rut: str
94
- esSociedadHecho: bool
95
- tpRegisJuridica: int
96
- esExtranjero: bool
97
- actividad: int
98
- numInscripcionIIBB: str
99
- codTpIdFatca: int
100
- idFatca: str
101
- actividadUIF: int
102
- giin: str
103
- esInversorCalificado: bool
104
- obsFatca: str
105
- cie: str
106
- fechaConstitucion: datetime
107
-
108
-
109
- @dataclass
110
- class Persona:
111
- apellido: Optional[str]
112
- nombre: Optional[str]
113
- tpDoc: Optional[int]
114
- numDoc: Optional[str]
115
- nacionalidad: Optional[int]
116
- fechaNacimiento: Optional[datetime]
117
- lugarNacimiento: Optional[str]
118
- sexo: Optional[int]
119
- estadoCivil: Optional[int]
120
- esPEP: Optional[bool]
121
- esSujetoObligado: Optional[bool]
122
- cuit: Optional[str]
123
- cuil: Optional[str]
124
- cdi: Optional[str]
125
- emailsInfo: Optional[str]
126
- noPresencial: Optional[bool]
127
- esInversorCalificado: Optional[bool]
128
- esBeneficiario: Optional[bool]
129
- esCliente: Optional[bool]
130
- esClienteEspecial: Optional[bool]
131
- esExtranjero: Optional[bool]
132
- codInterfaz: Optional[str]
133
- perteneceLUT: Optional[bool]
134
- giin: Optional[str]
135
- ruc: Optional[str]
136
- rut: Optional[str]
137
- idFatca: Optional[str]
138
- obsFatca: Optional[str]
139
- codTpIdFatca: Optional[int]
140
- codActividad: Optional[int]
141
- codActividadUIF: Optional[int]
142
- codTpContribIVA: Optional[str]
143
- tpPersona: Optional[bool]
144
- numImpositivo: Optional[str]
145
- persEmpresa: Optional[str]
146
- persCargo: Optional[str]
147
- persTpContribRetencion: Optional[str]
148
- persAgRecaudador: Optional[bool]
149
- persAgNroInscrip: Optional[str]
150
- persSSN: Optional[str]
151
- posicionCondominio: Optional[int]
152
- condTpCondominio: Optional[str]
153
- requiereFirma: Optional[bool]
154
- condEsAccionista: Optional[bool]
155
- condPorcParticipacion: Optional[int]
156
- condBeneficiario: Optional[int]
157
- patrimonioEstim: Optional[int]
158
- patrimonioEstimMoneda: Optional[str]
159
- tpRiesgoTitular: Optional[str]
160
- domicilioParticular: Optional[Domicilio]
161
- domicilioComercial: Optional[Domicilio]
162
-
163
-
164
- @dataclass
165
- class Domicilio:
166
- codPais: Optional[int]
167
- codProvincia: int
168
- altura: Optional[str]
169
- calle: Optional[str]
170
- piso: Optional[str]
171
- departamento: Optional[str]
172
- localidad: Optional[str]
173
- codigoPostal: Optional[str]
174
- telefono: Optional[str]
175
- fax: Optional[str]
176
- recibeInfoFax: Optional[bool]
177
-
178
-
179
- @dataclass
180
- class Instrucciones:
181
- banco: Optional[int]
182
- tpCuenta: Optional[int]
183
- moneda: str
184
- numSucursal: Optional[int]
185
- numeroCuenta: Optional[str]
186
- cbu: Optional[str]
187
- cuit: Optional[str]
188
- ctaAlias: Optional[str]
189
-
190
-
191
- @dataclass
192
- class EntMailing:
193
- codEntMailing: int
File without changes
File without changes