pyEscoAPI 0.0.21__tar.gz → 0.0.23__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.21
3
+ Version: 0.0.23
4
4
  Summary: Python client for Esco API (Esco bolsa)
5
5
  Author-email: Codetria <hola@codetria.com>
6
6
  License: MIT License
@@ -194,13 +194,13 @@ class EscoAPI:
194
194
  def get_disponible_mon(
195
195
  self,
196
196
  cuenta: str,
197
- fecha_disponible: datetime = datetime.now(),
197
+ fecha_disponible: datetime = None,
198
198
  moneda: str = "ARS",
199
199
  dias_rescates_pendientes: int = 0,
200
200
  dias_suscripciones_pendientes: int = 0,
201
201
  plazo: int = 0,
202
202
  incluye_creditos: bool = True,
203
- fecha_colocacion_hasta: datetime = datetime.now(),
203
+ fecha_colocacion_hasta: datetime = None,
204
204
  es_bloqueado_bcra: bool = False
205
205
  ):
206
206
  """
@@ -217,6 +217,11 @@ class EscoAPI:
217
217
  :param fecha_colocacion_hasta: Se usa en licitaciones, es la fecha de liquidación del proceso de licitación.
218
218
  :param es_bloqueado_bcra: Indica si se discriminan los USD que no se pueden utilizar para compras según BCRA 7340
219
219
  """
220
+ if fecha_disponible is None:
221
+ fecha_disponible = datetime.now()
222
+ if fecha_colocacion_hasta is None:
223
+ fecha_colocacion_hasta = datetime.now()
224
+
220
225
  req_body = {
221
226
  "cuenta": cuenta,
222
227
  "fechaDisponible": fecha_disponible.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -238,13 +243,13 @@ class EscoAPI:
238
243
  def get_disponible_mon_list(
239
244
  self,
240
245
  cuentas: str,
241
- fecha_disponible: datetime = datetime.now(),
246
+ fecha_disponible: datetime = None,
242
247
  monedas: list[str] = ["ARS", "USD", "USD-C"],
243
248
  dias_rescates_pendientes: int = 0,
244
249
  dias_suscripciones_pendientes: int = 0,
245
250
  plazos: list[int] = [0, 1, 2],
246
251
  incluye_creditos: bool = True,
247
- fecha_colocacion_hasta: datetime = datetime.now(),
252
+ fecha_colocacion_hasta: datetime = None,
248
253
  es_bloqueado_bcra: bool = False
249
254
  ):
250
255
  """
@@ -261,6 +266,11 @@ class EscoAPI:
261
266
  :param fecha_colocacion_hasta: Se usa en licitaciones, es la fecha de liquidación del proceso de licitación.
262
267
  :param es_bloqueado_bcra: Indica si se discriminan los USD que no se pueden utilizar para compras según BCRA 7340
263
268
  """
269
+ if fecha_disponible is None:
270
+ fecha_disponible = datetime.now()
271
+ if fecha_colocacion_hasta is None:
272
+ fecha_colocacion_hasta = datetime.now()
273
+
264
274
  req_body = {
265
275
  "cuentas": cuentas,
266
276
  "fechaDisponible": fecha_disponible.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -282,7 +292,7 @@ class EscoAPI:
282
292
  def get_tenencia_val(
283
293
  self,
284
294
  cuenta: str,
285
- fecha: datetime = datetime.now(),
295
+ fecha: datetime = None,
286
296
  por_concertacion: bool = True,
287
297
  es_consolidado: bool = False,
288
298
  agrupar_por_moneda: bool = True,
@@ -313,6 +323,9 @@ class EscoAPI:
313
323
  :param valuar_posicion: Indica si se debe valuar la posición o no
314
324
  :param utiliza_cotizaciones_online: Indica si utiliza cotizaciones online o busca directamente cotizaciones de VBolsa
315
325
  """
326
+ if fecha is None:
327
+ fecha = datetime.now()
328
+
316
329
  req_body = {
317
330
  "cuentas": cuenta,
318
331
  "fecha": fecha.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -339,7 +352,7 @@ class EscoAPI:
339
352
  def get_tenencia_val_vencimientos(
340
353
  self,
341
354
  cuenta: str,
342
- fecha: datetime = datetime.now(),
355
+ fecha: datetime = None,
343
356
  incluir_ppp: bool = True
344
357
  ):
345
358
  """
@@ -349,6 +362,9 @@ class EscoAPI:
349
362
  :param fecha: Fecha a la que se deben recuperar los movimientos que conforman los saldos. En esta consulta los movimientos se recuperan siempre por fecha de liquidación.
350
363
  :param incluir_ppp: Indica si se incluye ppp en la consulta. PPP se genera en un proceso de Vbolsa.
351
364
  """
365
+ if fecha is None:
366
+ fecha = datetime.now()
367
+
352
368
  req_body = {
353
369
  "cuentas": cuenta,
354
370
  "fecha": fecha.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -364,17 +380,21 @@ class EscoAPI:
364
380
  def get_rendimiento_cartera(
365
381
  self,
366
382
  cuenta: str,
367
- fecha_desde: datetime = datetime.now() - timedelta(days=15),
368
- fecha_hasta: datetime = datetime.now(),
383
+ fecha_desde: datetime = None,
384
+ fecha_hasta: datetime = None,
369
385
  por_concertacion: bool = True
370
386
  ):
371
387
  """
372
-
373
388
  :param cuenta: Número de Cuenta Comitente
374
389
  :param fecha_desde: Fecha inicial del período de Rendimientos consultado.
375
390
  :param fecha_hasta: Fecha final del período de Rendimientos consultado.
376
391
  :param por_concertacion: Indica si saldos y movimientos involucrados en esta consulta se buscan por Fecha de Concertación o Liquidación.
377
392
  """
393
+ if fecha_desde is None:
394
+ fecha_desde = datetime.now() - timedelta(days=15)
395
+ if fecha_hasta is None:
396
+ fecha_hasta = datetime.now()
397
+
378
398
  req_body = {
379
399
  "cuenta": cuenta,
380
400
  "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -450,10 +470,10 @@ class EscoAPI:
450
470
  )
451
471
 
452
472
  def get_cotizaciones_historicas(
453
- self,
454
- instrumento: str,
455
- fecha_desde: datetime = datetime.now() - timedelta(days=7),
456
- fecha_hasta: datetime = datetime.now()
473
+ self,
474
+ instrumento: str,
475
+ fecha_desde: datetime = None,
476
+ fecha_hasta: datetime = None
457
477
  ):
458
478
  """
459
479
  Es una consulta de cotizaciones históricas de un instrumento. Se informan las cotizaciones cargadas en VBolsa.
@@ -461,6 +481,10 @@ class EscoAPI:
461
481
  :param fecha_desde: Fecha inicial de la consulta.
462
482
  :param fecha_hasta: Fecha final de la consulta.
463
483
  """
484
+ if fecha_desde is None:
485
+ fecha_desde = datetime.now() - timedelta(days=7)
486
+ if fecha_hasta is None:
487
+ fecha_hasta = datetime.now()
464
488
  req_body = {
465
489
  "instrumento": instrumento,
466
490
  "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -476,8 +500,8 @@ class EscoAPI:
476
500
  def get_cotizaciones_historicas_fci(
477
501
  self,
478
502
  instrumento: str,
479
- fecha_desde: datetime = datetime.now() - timedelta(days=7),
480
- fecha_hasta: datetime = datetime.now()
503
+ fecha_desde: datetime = None,
504
+ fecha_hasta: datetime = None
481
505
  ):
482
506
  """
483
507
  Es una consulta de cotizaciones históricas de un FCI. Se informan las cotizaciones cargadas en VBolsa.
@@ -485,6 +509,11 @@ class EscoAPI:
485
509
  :param fecha_desde: Fecha inicial de la consulta.
486
510
  :param fecha_hasta: Fecha final de la consulta.
487
511
  """
512
+ if fecha_desde is None:
513
+ fecha_desde = datetime.now() - timedelta(days=7)
514
+ if fecha_hasta is None:
515
+ fecha_hasta = datetime.now()
516
+
488
517
  req_body = {
489
518
  "instrumento": instrumento,
490
519
  "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -765,6 +794,75 @@ class EscoAPI:
765
794
  request_method=HTTPMethod.POST
766
795
  )
767
796
 
797
+ def insert_oferta_orden(
798
+ self,
799
+ cod_orden: int,
800
+ cantidad: float,
801
+ precio: float,
802
+ fecha: date | None = None,
803
+ ):
804
+ """
805
+ Inserta una oferta para una orden determinada.
806
+
807
+ Args:
808
+ cod_orden (int): Código interno de la orden.
809
+ cantidad (float): Cantidad ofertada.
810
+ precio (float): Precio ofertado.
811
+ fecha (date | None, optional): Fecha de la oferta. Defaults: fecha del dia en tiempo de ejecucion.
812
+
813
+ Returns:
814
+ dict: Diccionario con cod_operacion
815
+ """
816
+ req_body = {
817
+ "codOrden": cod_orden,
818
+ "cantidad": cantidad,
819
+ "precio": precio,
820
+ "fecha": fecha.isoformat() if fecha is not None else date.today().isoformat()
821
+ }
822
+
823
+ self.__pre_connection()
824
+ return self.__make_request(
825
+ request_endpoint="/insert-oferta-orden",
826
+ request_body=req_body,
827
+ request_method=HTTPMethod.POST
828
+ )
829
+
830
+ def insert_ejecucion_orden(
831
+ self,
832
+ cod_orden: int,
833
+ cantidad: float,
834
+ precio: float,
835
+ fecha: date | None = None,
836
+ num_ejecucion: int | None = None
837
+ ):
838
+ """
839
+ Inserta una ejecucion de una orden determinada.
840
+
841
+ Args:
842
+ cod_orden (int): Código interno de la orden.
843
+ cantidad (float): Cantidad ofertada.
844
+ precio (float): Precio ofertado.
845
+ fecha (date | None, optional): Fecha de la oferta. Defaults: fecha del dia en tiempo de ejecucion.
846
+ num_ejecucion (int | None, optional): Número de Ejecución. Default None.
847
+
848
+ Returns:
849
+ dict: Diccionario con cod_operacion
850
+ """
851
+ req_body = {
852
+ "codOrden": cod_orden,
853
+ "cantidad": cantidad,
854
+ "precio": precio,
855
+ "fecha": fecha.isoformat() if fecha is not None else date.today().isoformat(),
856
+ "numEjecucion": num_ejecucion
857
+ }
858
+
859
+ self.__pre_connection()
860
+ return self.__make_request(
861
+ request_endpoint="/insert-ejecucion-orden",
862
+ request_body=req_body,
863
+ request_method=HTTPMethod.POST
864
+ )
865
+
768
866
  def insert_orden_venta(
769
867
  self,
770
868
  instrumento_abreviatura: str,
@@ -1015,8 +1113,8 @@ class EscoAPI:
1015
1113
  def get_boletos(
1016
1114
  self,
1017
1115
  cuentas: str = None,
1018
- fecha_desde: datetime = datetime.now() - timedelta(days=30),
1019
- fecha_hasta: datetime = datetime.now(),
1116
+ fecha_desde: datetime = None,
1117
+ fecha_hasta: datetime = None,
1020
1118
  por_concertacion: bool = True,
1021
1119
  es_consolidado: bool = True,
1022
1120
  incluye_anulados: bool = True
@@ -1031,6 +1129,11 @@ class EscoAPI:
1031
1129
  :param es_consolidado: Indica si se informan los boletos de todas las cuentas vinculadas a la usuario o no.
1032
1130
  :param incluye_anulados: Indica si se muestran los boletos anulados en la consulta o no.
1033
1131
  """
1132
+ if fecha_desde is None:
1133
+ fecha_desde = datetime.now() - timedelta(days=30)
1134
+ if fecha_hasta is None:
1135
+ fecha_hasta = datetime.now()
1136
+
1034
1137
  req_body = {
1035
1138
  "cuentas": cuentas,
1036
1139
  "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -1049,8 +1152,8 @@ class EscoAPI:
1049
1152
  def get_recibos_comprobantes(
1050
1153
  self,
1051
1154
  cuentas: str = None,
1052
- fecha_desde: datetime = datetime.now() - timedelta(days=30),
1053
- fecha_hasta: datetime = datetime.now(),
1155
+ fecha_desde: datetime = None,
1156
+ fecha_hasta: datetime = None,
1054
1157
  por_concertacion: bool = True,
1055
1158
  es_consolidado: bool = True,
1056
1159
  ):
@@ -1062,6 +1165,11 @@ class EscoAPI:
1062
1165
  :param por_concertacion: Indica si los Comprobantes se buscan por Fecha de Concertación o no.
1063
1166
  :param es_consolidado: Indica si se informan los Comprobantes de todas las cuentas vinculadas a la usuario o no.
1064
1167
  """
1168
+ if fecha_desde is None:
1169
+ fecha_desde = datetime.now() - timedelta(days=30)
1170
+ if fecha_hasta is None:
1171
+ fecha_hasta = datetime.now()
1172
+
1065
1173
  req_body = {
1066
1174
  "cuentas": cuentas,
1067
1175
  "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -1089,11 +1197,11 @@ class EscoAPI:
1089
1197
  )
1090
1198
 
1091
1199
  def get_ordenes(
1092
- self,
1093
- cuentas: str = None,
1094
- es_consolidado: bool = True,
1095
- fecha_desde: datetime = datetime.now() - timedelta(days=15),
1096
- fecha_hasta: datetime = datetime.now(),
1200
+ self,
1201
+ cuentas: str = None,
1202
+ es_consolidado: bool = True,
1203
+ fecha_desde: datetime = None,
1204
+ fecha_hasta: datetime = None,
1097
1205
  ):
1098
1206
  """
1099
1207
  Obtiene las ultimas ordenes dentro de las fechas indicadas
@@ -1102,6 +1210,11 @@ class EscoAPI:
1102
1210
  :param fecha_desde: Fecha inicial la para la consulta de Ordenes.
1103
1211
  :param fecha_hasta: Fecha final la para la consulta de Ordenes.
1104
1212
  """
1213
+ if fecha_desde is None:
1214
+ fecha_desde = datetime.now() - timedelta(days=15)
1215
+ if fecha_hasta is None:
1216
+ fecha_hasta = datetime.now()
1217
+
1105
1218
  req_body = {
1106
1219
  "cuentas": cuentas,
1107
1220
  "esConsolidado": es_consolidado,
@@ -1120,8 +1233,8 @@ class EscoAPI:
1120
1233
  cuenta: str = None,
1121
1234
  por_concertacion: bool = False,
1122
1235
  moneda: str = None,
1123
- fecha_desde: datetime = datetime.now() - timedelta(days=15),
1124
- fecha_hasta: datetime = datetime.now(),
1236
+ fecha_desde: datetime = None,
1237
+ fecha_hasta: datetime = None
1125
1238
  ):
1126
1239
  """
1127
1240
  Obtiene movimientos y operaciones ya confirmadas de monedas que impactaron en la cuenta corriente en un período
@@ -1132,6 +1245,11 @@ class EscoAPI:
1132
1245
  :param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
1133
1246
  :param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
1134
1247
  """
1248
+ if fecha_desde is None:
1249
+ fecha_desde = datetime.now() - timedelta(days=15)
1250
+ if fecha_hasta is None:
1251
+ fecha_hasta = datetime.now()
1252
+
1135
1253
  req_body = {
1136
1254
  "cuenta": cuenta,
1137
1255
  "porConcertacion": por_concertacion,
@@ -1151,8 +1269,8 @@ class EscoAPI:
1151
1269
  cuenta: str = None,
1152
1270
  por_concertacion: bool = False,
1153
1271
  instrumento: str = None,
1154
- fecha_desde: datetime = datetime.now() - timedelta(days=15),
1155
- fecha_hasta: datetime = datetime.now(),
1272
+ fecha_desde: datetime = None,
1273
+ fecha_hasta: datetime = None,
1156
1274
  ):
1157
1275
  """
1158
1276
  Obtiene movimientos y operaciones ya confirmadas de instrumentos que impactaron en la cuenta corriente en un período
@@ -1164,6 +1282,11 @@ class EscoAPI:
1164
1282
  :param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
1165
1283
  :param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
1166
1284
  """
1285
+ if fecha_desde is None:
1286
+ fecha_desde = datetime.now() - timedelta(days=15)
1287
+ if fecha_hasta is None:
1288
+ fecha_hasta = datetime.now()
1289
+
1167
1290
  req_body = {
1168
1291
  "cuenta": cuenta,
1169
1292
  "porConcertacion": por_concertacion,
@@ -1182,8 +1305,8 @@ class EscoAPI:
1182
1305
  cuenta: str = None,
1183
1306
  por_concertacion: bool = False,
1184
1307
  incluir_saldos_anteriores: bool = False,
1185
- fecha_desde: datetime = datetime.now() - timedelta(days=15),
1186
- fecha_hasta: datetime = datetime.now(),
1308
+ fecha_desde: datetime = None,
1309
+ fecha_hasta: datetime = None,
1187
1310
  ):
1188
1311
  """
1189
1312
  Obtiene movimientos y operaciones ya confirmadas de monedas e instrumentos que impactaron en la cuenta corriente en un período
@@ -1194,6 +1317,11 @@ class EscoAPI:
1194
1317
  :param fecha_desde: Fecha Inicial para la búsqueda de movimientos de la Cta Cte.
1195
1318
  :param fecha_hasta: Fecha Final para la búsqueda de movimientos de la Cta Cte.
1196
1319
  """
1320
+ if fecha_desde is None:
1321
+ fecha_desde = datetime.now() - timedelta(days=15)
1322
+ if fecha_hasta is None:
1323
+ fecha_hasta = datetime.now()
1324
+
1197
1325
  req_body = {
1198
1326
  "cuenta": cuenta,
1199
1327
  "porConcertacion": por_concertacion,
@@ -1211,8 +1339,8 @@ class EscoAPI:
1211
1339
  def get_liquidaciones_fondos(
1212
1340
  self,
1213
1341
  cuentas: str = None,
1214
- fecha_desde: datetime = datetime.now() - timedelta(days=30),
1215
- fecha_hasta: datetime = datetime.now(),
1342
+ fecha_desde: datetime = None,
1343
+ fecha_hasta: datetime = None,
1216
1344
  por_concertacion: bool = True,
1217
1345
  es_consolidado: bool = True,
1218
1346
  ):
@@ -1224,6 +1352,11 @@ class EscoAPI:
1224
1352
  :param por_concertacion: Indica si las Liquidaciones se buscan por Fecha de Concertación o no.
1225
1353
  :param es_consolidado: Indica si se informan las Liquidaciones de todas las cuentas vinculadas a la usuario o no.
1226
1354
  """
1355
+ if fecha_desde is None:
1356
+ fecha_desde = datetime.now() - timedelta(days=30)
1357
+ if fecha_hasta is None:
1358
+ fecha_hasta = datetime.now()
1359
+
1227
1360
  req_body = {
1228
1361
  "cuentas": cuentas,
1229
1362
  "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -1241,8 +1374,8 @@ class EscoAPI:
1241
1374
  def get_solicitudes_fondos(
1242
1375
  self,
1243
1376
  cuentas: str = None,
1244
- fecha_desde: datetime = datetime.now() - timedelta(days=30),
1245
- fecha_hasta: datetime = datetime.now(),
1377
+ fecha_desde: datetime = None,
1378
+ fecha_hasta: datetime = None,
1246
1379
  por_concertacion: bool = True,
1247
1380
  es_consolidado: bool = True,
1248
1381
  mostrar_cancelados: bool = False,
@@ -1260,6 +1393,11 @@ class EscoAPI:
1260
1393
  :param page_number: Número de página a mostrar.
1261
1394
  :param page_size: Cantidad de registros por página.
1262
1395
  """
1396
+ if fecha_desde is None:
1397
+ fecha_desde = datetime.now() - timedelta(days=30)
1398
+ if fecha_hasta is None:
1399
+ fecha_hasta = datetime.now()
1400
+
1263
1401
  req_body = {
1264
1402
  "cuentas": cuentas,
1265
1403
  "fechaDesde": fecha_desde.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
@@ -1654,8 +1792,8 @@ class EscoAPI:
1654
1792
  self,
1655
1793
  cuentas: str = None,
1656
1794
  es_consolidado: bool = True,
1657
- fecha_desde: datetime = datetime.now() - timedelta(days=15),
1658
- fecha_hasta: datetime = datetime.now(),
1795
+ fecha_desde: datetime = None,
1796
+ fecha_hasta: datetime = None,
1659
1797
  ):
1660
1798
  """
1661
1799
  Obtiene las ultimas ordenes de futuros dentro de las fechas indicadas
@@ -1664,6 +1802,11 @@ class EscoAPI:
1664
1802
  :param fecha_desde: Fecha inicial la para la consulta de Ordenes.
1665
1803
  :param fecha_hasta: Fecha final la para la consulta de Ordenes.
1666
1804
  """
1805
+ if fecha_desde is None:
1806
+ fecha_desde = datetime.now() - timedelta(days=15)
1807
+ if fecha_hasta is None:
1808
+ fecha_hasta = datetime.now()
1809
+
1667
1810
  req_body = {
1668
1811
  "cuentas": cuentas,
1669
1812
  "esConsolidado": es_consolidado,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyEscoAPI
3
- Version: 0.0.21
3
+ Version: 0.0.23
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.21"
7
+ version = "0.0.23"
8
8
  license = {text = "MIT License"}
9
9
  authors = [
10
10
  { name="Codetria", email="hola@codetria.com" },
@@ -292,3 +292,22 @@ def test_get_domicilio_cuenta_comitente(api_client):
292
292
  cod_tp_domicilio="PA"
293
293
  )
294
294
  assert "codTpDomicilio" in result
295
+
296
+ def test_insert_oferta_orden(api_client):
297
+ result = api_client.insert_oferta_orden(
298
+ cod_orden = 178957,
299
+ fecha = datetime.fromisoformat("2024-04-27"),
300
+ cantidad = 10,
301
+ precio = 100
302
+ )
303
+ assert "codOperacion" in result
304
+
305
+ def test_insert_ejecucion_orden(api_client):
306
+ result = api_client.insert_ejecucion_orden(
307
+ cod_orden = 178957,
308
+ fecha = datetime.fromisoformat("2024-04-27"),
309
+ cantidad = 10,
310
+ precio = 100,
311
+ num_ejecucion=1
312
+ )
313
+ assert "codOperacion" in result
File without changes
File without changes