pyEscoAPI 0.0.10__tar.gz → 0.0.15__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.
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/PKG-INFO +1 -1
- pyescoapi-0.0.15/pyEscoAPI/dataclasses.py +193 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI/esco_api.py +152 -12
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI.egg-info/PKG-INFO +1 -1
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyproject.toml +1 -1
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/tests/test_client.py +27 -0
- pyescoapi-0.0.10/pyEscoAPI/dataclasses.py +0 -193
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/README.md +0 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI/__init__.py +0 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI/exception.py +0 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI.egg-info/SOURCES.txt +0 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI.egg-info/dependency_links.txt +0 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI.egg-info/requires.txt +0 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/pyEscoAPI.egg-info/top_level.txt +0 -0
- {pyescoapi-0.0.10 → pyescoapi-0.0.15}/setup.cfg +0 -0
|
@@ -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
|
|
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):
|
|
@@ -64,10 +64,28 @@ class EscoAPI:
|
|
|
64
64
|
}
|
|
65
65
|
result: Response = req_call(**params)
|
|
66
66
|
if 200 <= result.status_code <= 299:
|
|
67
|
+
result_body = result.json()
|
|
68
|
+
logger.info("EscoAPI: Successful response", extra={
|
|
69
|
+
"request_body": request_body,
|
|
70
|
+
"url": f"{self.base_url}{request_endpoint}",
|
|
71
|
+
"response_body": result_body if request_endpoint != "/login" else None,
|
|
72
|
+
"status_code": result.status_code
|
|
73
|
+
})
|
|
67
74
|
return result.json()
|
|
68
75
|
else:
|
|
69
|
-
|
|
76
|
+
try:
|
|
77
|
+
result_body = result.json()
|
|
78
|
+
error_message = result_body["error"]["Msj"]
|
|
79
|
+
except:
|
|
80
|
+
error_message = ""
|
|
81
|
+
if not error_message or error_message == "":
|
|
70
82
|
error_message = f"Error during endpoint call: {request_endpoint}. Code: {result.status_code}"
|
|
83
|
+
logger.error("EscoAPI: Failed response", extra={
|
|
84
|
+
"request_body": request_body,
|
|
85
|
+
"url": f"{self.base_url}{request_endpoint}",
|
|
86
|
+
"response_body": result.json(),
|
|
87
|
+
"status_code": result.status_code
|
|
88
|
+
})
|
|
71
89
|
raise PyEscoAPIError(endpoint=request_endpoint, status_code=result.status_code, error_message=error_message)
|
|
72
90
|
|
|
73
91
|
def __esco_login(self):
|
|
@@ -95,7 +113,6 @@ class EscoAPI:
|
|
|
95
113
|
def __new__(cls, base_url: str, username: str, password: str, client_id: str, version: APIVersion):
|
|
96
114
|
if not hasattr(cls, 'instance'):
|
|
97
115
|
cls.instance = super(EscoAPI, cls).__new__(cls)
|
|
98
|
-
# noinspection PyUnresolvedReferences
|
|
99
116
|
return cls.instance
|
|
100
117
|
|
|
101
118
|
def __init__(
|
|
@@ -1022,6 +1039,36 @@ class EscoAPI:
|
|
|
1022
1039
|
request_body=req_body,
|
|
1023
1040
|
request_method=HTTPMethod.POST
|
|
1024
1041
|
)
|
|
1042
|
+
|
|
1043
|
+
def get_recibos_comprobantes(
|
|
1044
|
+
self,
|
|
1045
|
+
cuentas: str = None,
|
|
1046
|
+
fecha_desde: datetime = datetime.now() - timedelta(days=30),
|
|
1047
|
+
fecha_hasta: datetime = datetime.now(),
|
|
1048
|
+
por_concertacion: bool = True,
|
|
1049
|
+
es_consolidado: bool = True,
|
|
1050
|
+
):
|
|
1051
|
+
"""
|
|
1052
|
+
Devuelve los recibos de comprobantes generados en VBolsa.
|
|
1053
|
+
:param cuentas: Lista de Número de Cuentas Comitente. Se puede ingresar una sola cuenta o una lista separada por comas.
|
|
1054
|
+
:param fecha_desde: Fecha inicial para la consulta de Comprobantes.
|
|
1055
|
+
:param fecha_hasta: Fecha final para la consulta de Comprobantes.
|
|
1056
|
+
:param por_concertacion: Indica si los Comprobantes se buscan por Fecha de Concertación o no.
|
|
1057
|
+
:param es_consolidado: Indica si se informan los Comprobantes de todas las cuentas vinculadas a la usuario o no.
|
|
1058
|
+
"""
|
|
1059
|
+
req_body = {
|
|
1060
|
+
"cuentas": cuentas,
|
|
1061
|
+
"fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1062
|
+
"fechaHasta": fecha_hasta.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1063
|
+
"porConcertacion": por_concertacion,
|
|
1064
|
+
"esConsolidado": es_consolidado,
|
|
1065
|
+
}
|
|
1066
|
+
self.__pre_connection()
|
|
1067
|
+
return self.__make_request(
|
|
1068
|
+
request_endpoint=f"/get-recibos-comprobantes",
|
|
1069
|
+
request_body=req_body,
|
|
1070
|
+
request_method=HTTPMethod.POST
|
|
1071
|
+
)
|
|
1025
1072
|
|
|
1026
1073
|
def get_estado_orden(self, cod_orden: int = 1):
|
|
1027
1074
|
"""
|
|
@@ -1061,6 +1108,99 @@ class EscoAPI:
|
|
|
1061
1108
|
request_body=req_body,
|
|
1062
1109
|
request_method=HTTPMethod.POST
|
|
1063
1110
|
)
|
|
1111
|
+
|
|
1112
|
+
def get_ctaCorriente_monetaria(
|
|
1113
|
+
self,
|
|
1114
|
+
cuenta: str = None,
|
|
1115
|
+
por_concertacion: bool = False,
|
|
1116
|
+
moneda: str = None,
|
|
1117
|
+
fecha_desde: datetime = datetime.now() - timedelta(days=15),
|
|
1118
|
+
fecha_hasta: datetime = datetime.now(),
|
|
1119
|
+
):
|
|
1120
|
+
"""
|
|
1121
|
+
Obtiene movimientos y operaciones ya confirmadas de monedas que impactaron en la cuenta corriente en un período
|
|
1122
|
+
determinado en las cuentas comitente solicitadas.
|
|
1123
|
+
:param cuenta: Número de Cuenta Comitente.
|
|
1124
|
+
:param por_concertacion: Indica si los movimientos de la Cte Cte se buscan por Fecha de Concertación o no.
|
|
1125
|
+
:param moneda: Código ISO de Moneda (ARS, USD, USD-C, etc).
|
|
1126
|
+
:param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
|
|
1127
|
+
:param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
|
|
1128
|
+
"""
|
|
1129
|
+
req_body = {
|
|
1130
|
+
"cuenta": cuenta,
|
|
1131
|
+
"porConcertacion": por_concertacion,
|
|
1132
|
+
"moneda": moneda,
|
|
1133
|
+
"fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1134
|
+
"fechaHasta": fecha_hasta.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1135
|
+
}
|
|
1136
|
+
self.__pre_connection()
|
|
1137
|
+
return self.__make_request(
|
|
1138
|
+
request_endpoint="/get-ctaCorriente-monetaria",
|
|
1139
|
+
request_body=req_body,
|
|
1140
|
+
request_method=HTTPMethod.POST
|
|
1141
|
+
)
|
|
1142
|
+
|
|
1143
|
+
def get_ctaCorriente_instrumentos(
|
|
1144
|
+
self,
|
|
1145
|
+
cuenta: str = None,
|
|
1146
|
+
por_concertacion: bool = False,
|
|
1147
|
+
instrumento: str = None,
|
|
1148
|
+
fecha_desde: datetime = datetime.now() - timedelta(days=15),
|
|
1149
|
+
fecha_hasta: datetime = datetime.now(),
|
|
1150
|
+
):
|
|
1151
|
+
"""
|
|
1152
|
+
Obtiene movimientos y operaciones ya confirmadas de instrumentos que impactaron en la cuenta corriente en un período
|
|
1153
|
+
determinado en las cuentas comitente solicitadas. En esta consulta se pueden ver movimientos de títulos, futuros,
|
|
1154
|
+
series, índices, cheques, etc.
|
|
1155
|
+
:param cuenta: Número de Cuenta Comitente.
|
|
1156
|
+
:param por_concertacion: Indica si los movimientos de la Cte Cte se buscan por Fecha de Concertación o no.
|
|
1157
|
+
: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.
|
|
1158
|
+
:param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
|
|
1159
|
+
:param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
|
|
1160
|
+
"""
|
|
1161
|
+
req_body = {
|
|
1162
|
+
"cuenta": cuenta,
|
|
1163
|
+
"porConcertacion": por_concertacion,
|
|
1164
|
+
"instrumento": instrumento,
|
|
1165
|
+
"fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1166
|
+
"fechaHasta": fecha_hasta.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1167
|
+
}
|
|
1168
|
+
self.__pre_connection()
|
|
1169
|
+
return self.__make_request(
|
|
1170
|
+
request_endpoint="/get-ctaCorriente-instrumentos",
|
|
1171
|
+
request_body=req_body,
|
|
1172
|
+
request_method=HTTPMethod.POST
|
|
1173
|
+
)
|
|
1174
|
+
def get_ctaCorriente_consolidada(
|
|
1175
|
+
self,
|
|
1176
|
+
cuenta: str = None,
|
|
1177
|
+
por_concertacion: bool = False,
|
|
1178
|
+
incluir_saldos_anteriores: bool = False,
|
|
1179
|
+
fecha_desde: datetime = datetime.now() - timedelta(days=15),
|
|
1180
|
+
fecha_hasta: datetime = datetime.now(),
|
|
1181
|
+
):
|
|
1182
|
+
"""
|
|
1183
|
+
Obtiene movimientos y operaciones ya confirmadas de monedas e instrumentos que impactaron en la cuenta corriente en un período
|
|
1184
|
+
determinado en las cuentas comitente solicitadas.
|
|
1185
|
+
:param cuenta: Número de Cuenta Comitente.
|
|
1186
|
+
:param por_concertacion: Indica si los movimientos de la Cte Cte se buscan por Fecha de Concertación o no.
|
|
1187
|
+
:param incluir_saldos_anteriores: Indica si se informan saldos inicialeso no.
|
|
1188
|
+
:param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
|
|
1189
|
+
:param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
|
|
1190
|
+
"""
|
|
1191
|
+
req_body = {
|
|
1192
|
+
"cuenta": cuenta,
|
|
1193
|
+
"porConcertacion": por_concertacion,
|
|
1194
|
+
"incluirSaldosAnteriores": incluir_saldos_anteriores,
|
|
1195
|
+
"fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1196
|
+
"fechaHasta": fecha_hasta.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
|
1197
|
+
}
|
|
1198
|
+
self.__pre_connection()
|
|
1199
|
+
return self.__make_request(
|
|
1200
|
+
request_endpoint="/get-ctaCorriente-consolidada",
|
|
1201
|
+
request_body=req_body,
|
|
1202
|
+
request_method=HTTPMethod.POST
|
|
1203
|
+
)
|
|
1064
1204
|
|
|
1065
1205
|
def get_liquidaciones_fondos(
|
|
1066
1206
|
self,
|
|
@@ -205,6 +205,12 @@ def test_get_boletos(api_client):
|
|
|
205
205
|
assert "idBoleto" in result[0]
|
|
206
206
|
|
|
207
207
|
|
|
208
|
+
def test_get_recibos_comprobantes(api_client):
|
|
209
|
+
result = api_client.get_recibos_comprobantes()
|
|
210
|
+
assert len(result) > 0
|
|
211
|
+
assert "id" in result[0]
|
|
212
|
+
|
|
213
|
+
|
|
208
214
|
def test_get_estado_orden(api_client):
|
|
209
215
|
result = api_client.get_estado_orden(47089)
|
|
210
216
|
assert result[0]["indice"] == 0
|
|
@@ -214,6 +220,27 @@ def test_get_ordenes(api_client):
|
|
|
214
220
|
result = api_client.get_ordenes()
|
|
215
221
|
assert "codOrden" in result[0]
|
|
216
222
|
|
|
223
|
+
def test_get_ctaCorriente_monetaria(api_client):
|
|
224
|
+
cuenta="77105"
|
|
225
|
+
result = api_client.get_ctaCorriente_monetaria(cuenta=cuenta)
|
|
226
|
+
assert "codMoneda" in result[0]
|
|
227
|
+
assert result[0]["codMoneda"] is not None
|
|
228
|
+
|
|
229
|
+
def test_get_ctaCorriente_instrumentos(api_client):
|
|
230
|
+
cuenta="77105"
|
|
231
|
+
fecha_desde=datetime.fromisoformat("2024-03-02")
|
|
232
|
+
fecha_hasta=datetime.fromisoformat("2024-03-17")
|
|
233
|
+
result = api_client.get_ctaCorriente_instrumentos(cuenta=cuenta, fecha_desde=fecha_desde, fecha_hasta=fecha_hasta)
|
|
234
|
+
assert "codigoEspecie" in result[0]
|
|
235
|
+
assert result[0]["codigoEspecie"] is not None
|
|
236
|
+
|
|
237
|
+
def test_get_ctaCorriente_consolidada(api_client):
|
|
238
|
+
cuenta="77105"
|
|
239
|
+
fecha_desde=datetime.fromisoformat("2024-03-02")
|
|
240
|
+
fecha_hasta=datetime.fromisoformat("2024-03-17")
|
|
241
|
+
result = api_client.get_ctaCorriente_consolidada(cuenta=cuenta, fecha_desde=fecha_desde, fecha_hasta=fecha_hasta)
|
|
242
|
+
assert "tipoItem" in result[0]
|
|
243
|
+
assert result[0]["tipoItem"] in ["Instrumentos","Monedas"]
|
|
217
244
|
|
|
218
245
|
def test_get_liquidaciones(api_client):
|
|
219
246
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|