From c8767f56a386207fa47b2c1362f43e799b4b0188 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Tue, 27 Jul 2021 23:17:55 -0500 Subject: [PATCH 1/5] =?UTF-8?q?Agregar=20soporte=20para=20intervalo=20de?= =?UTF-8?q?=20d=C3=ADas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 5 +++++ source/cfdi-descarga.py | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10f6d5e..0182160 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Lista de cambios +## v 0.3.0 [27-Jul-21] +--- +* Se agrega soporte para consultar por los últimos X días + + ## v 0.2.1 [16-Jul-21] --- * Fix - Issue #1 diff --git a/source/cfdi-descarga.py b/source/cfdi-descarga.py index 2c5d48c..c80aefa 100755 --- a/source/cfdi-descarga.py +++ b/source/cfdi-descarga.py @@ -41,13 +41,20 @@ def _process_command_line_arguments(): parser.add_argument('-fn', '--fiel-nombre', help=help, default='fiel') help = "Descargar por Tipo: t=todos(default), e=emitidas, r=recibidas" - parser.add_argument('-t', '--tipo', help=help, dest='type', default='t', choices=['t', 'e', 'r']) + parser.add_argument('-t', '--tipo', help=help, + dest='type', default='t', choices=['t', 'e', 'r']) help = "Año de la descarga entre 2014 y el año actual (predeterminado)." - parser.add_argument('-a', '--año', help=help, dest='year', default=year, type=int, choices=range(2014, year+1)) + parser.add_argument('-a', '--año', help=help, + dest='year', default=year, type=int, choices=range(2014, year+1)) help = "Mes de la descarga, el mes actual es el predeterminado" - parser.add_argument('-m', '--mes', help=help, dest='month', default=0, type=int, choices=range(13)) + parser.add_argument('-m', '--mes', help=help, + dest='month', default=0, type=int, choices=range(13)) help = "Día de la descarga, de forma predeterminada no se usa" - parser.add_argument('-d', '--dia', help=help, dest='day', default=0, type=int, choices=range(32)) + parser.add_argument('-d', '--dia', help=help, + dest='day', default=0, type=int, choices=range(32)) + help = "Intervalo de días a partir de la fecha actual y hacia a atras" + parser.add_argument('-id', '--intervalo-dias', help=help, + dest='interval_days', default=0, type=int, choices=range(30)) help = 'Solicitar descarga' parser.add_argument('-sd', '--solicitar-descarga', help=help, @@ -59,9 +66,11 @@ def _process_command_line_arguments(): parser.add_argument('-da', '--descargar-archivos', help=help, action='store_true', default=False, required=False) help = 'ID de solicitud' - parser.add_argument('-id', '--id-solicitud', dest='id_request', help=help, default='') + parser.add_argument('-id', '--id-solicitud', dest='id_request', + help=help, default='') help = 'ID archivo' - parser.add_argument('-ida', '--id-archivo', dest='id_file', help=help, default='') + parser.add_argument('-ida', '--id-archivo', dest='id_file', + help=help, default='') help = 'Ruta de descarga de archivos' parser.add_argument('-dd', '--directorio-descargas', dest='path_download', help=help, default='') From 5d750f57ee636d66f019c37451d4dd90460f64de Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Wed, 28 Jul 2021 22:36:14 -0500 Subject: [PATCH 2/5] =?UTF-8?q?Agregar=20soporte=20para=20intervalo=20de?= =?UTF-8?q?=20d=C3=ADas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/cfdi-descarga.py | 4 ++-- source/sat/util.py | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/source/cfdi-descarga.py b/source/cfdi-descarga.py index c80aefa..4f29d5e 100755 --- a/source/cfdi-descarga.py +++ b/source/cfdi-descarga.py @@ -53,8 +53,8 @@ def _process_command_line_arguments(): parser.add_argument('-d', '--dia', help=help, dest='day', default=0, type=int, choices=range(32)) help = "Intervalo de días a partir de la fecha actual y hacia a atras" - parser.add_argument('-id', '--intervalo-dias', help=help, - dest='interval_days', default=0, type=int, choices=range(30)) + parser.add_argument('-ud', '--ultimos-dias', help=help, + dest='last_days', default=0, type=int, choices=range(30)) help = 'Solicitar descarga' parser.add_argument('-sd', '--solicitar-descarga', help=help, diff --git a/source/sat/util.py b/source/sat/util.py index 0cf49ae..dcb425e 100644 --- a/source/sat/util.py +++ b/source/sat/util.py @@ -3,7 +3,7 @@ import getpass import uuid from calendar import monthrange -from datetime import datetime +from datetime import datetime, timedelta from pathlib import Path from time import sleep @@ -134,9 +134,6 @@ def _validate_requests_args(args): log.error(msg) return False, {} - # ~ cer = data['path_cer'].read_bytes() - # ~ key = data['path_enc'].read_bytes() - # ~ cert = SATCertificate(cer, key) cert = _get_cert(data) if not cert.is_valid_time: @@ -150,14 +147,22 @@ def _validate_requests_args(args): data['month'] = args.month data['day'] = args.day + now = today() + + if args.last_days: + date_start = now.replace(hour=0, minute=0, second=0, microsecond=0) \ + - timedelta(days=args.last_days) + date_end = now.replace(hour=23, minute=59, second=59, microsecond=0) + data['date_start'] = date_start + data['date_end'] = date_end + return True, data + if data['day']: if not validate_date(data['year'], data['month'], data['day']): msg = 'Fecha inválida' log.error(msg) return False, {} - now = today() - month1 = month2 = data['month'] if month1 == 0: month1 = 1 From 58b609c1f402aa94d8762c7227fcdd98bb8e8f1d Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Thu, 29 Jul 2021 22:09:02 -0500 Subject: [PATCH 3/5] Agregar soporte para rangos de fechas --- source/cfdi-descarga.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/cfdi-descarga.py b/source/cfdi-descarga.py index 4f29d5e..f2da1c6 100755 --- a/source/cfdi-descarga.py +++ b/source/cfdi-descarga.py @@ -55,6 +55,12 @@ def _process_command_line_arguments(): help = "Intervalo de días a partir de la fecha actual y hacia a atras" parser.add_argument('-ud', '--ultimos-dias', help=help, dest='last_days', default=0, type=int, choices=range(30)) + help = "Fecha inicial D-MM-AAAA" + parser.add_argument('-fi', '--fecha-inicial', help=help, + dest='date_start', default='') + help = "Fecha final D-MM-AAAA" + parser.add_argument('-ff', '--fecha-final', help=help, + dest='date_end', default='') help = 'Solicitar descarga' parser.add_argument('-sd', '--solicitar-descarga', help=help, From 98f9799a8df5639a49a074a6f0deea49a35315d1 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Fri, 30 Jul 2021 22:43:40 -0500 Subject: [PATCH 4/5] Agregar soporte para rangos de fechas --- source/cfdi-descarga.py | 4 ++-- source/sat/util.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/source/cfdi-descarga.py b/source/cfdi-descarga.py index f2da1c6..c62d548 100755 --- a/source/cfdi-descarga.py +++ b/source/cfdi-descarga.py @@ -55,10 +55,10 @@ def _process_command_line_arguments(): help = "Intervalo de días a partir de la fecha actual y hacia a atras" parser.add_argument('-ud', '--ultimos-dias', help=help, dest='last_days', default=0, type=int, choices=range(30)) - help = "Fecha inicial D-MM-AAAA" + help = "Fecha inicial AAAA-MM-DD" parser.add_argument('-fi', '--fecha-inicial', help=help, dest='date_start', default='') - help = "Fecha final D-MM-AAAA" + help = "Fecha final AAAA-MM-DD" parser.add_argument('-ff', '--fecha-final', help=help, dest='date_end', default='') diff --git a/source/sat/util.py b/source/sat/util.py index dcb425e..e4f64dc 100644 --- a/source/sat/util.py +++ b/source/sat/util.py @@ -123,6 +123,20 @@ def _get_cert(data): cert = SATCertificate(cer, key, pem) return cert +def _to_date(str_date, end=False): + error = '' + dt = None + try: + parts = str_date.split('-') + if end: + dt = datetime(parts[0], parts[1], parts[2], 23, 59, 59) + else: + dt = datetime(parts[0], parts[1], parts[2], 0, 0, 0) + except Exception as e: + error = 'Fecha inválida' + + return error, dt + def _validate_requests_args(args): result, data = _validate_fiel_args(args) @@ -157,6 +171,21 @@ def _validate_requests_args(args): data['date_end'] = date_end return True, data + if args.date_start and args.date_end: + error, date_start = _to_date(args.date_start) + if error: + log.error(error) + return False, {} + + error, date_end = _to_date(args.date_end, True) + if error: + log.error(error) + return False, {} + + data['date_start'] = date_start + data['date_end'] = date_end + return True, data + if data['day']: if not validate_date(data['year'], data['month'], data['day']): msg = 'Fecha inválida' From c655a3c8a1f42c08ce624eb33e8db867887cec3d Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Fri, 30 Jul 2021 22:45:58 -0500 Subject: [PATCH 5/5] Actualizar lista de cambios --- CHANGELOG.md | 3 ++- VERSION | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0182160..53be692 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,10 @@ # Lista de cambios -## v 0.3.0 [27-Jul-21] +## v 0.3.0 [30-Jul-21] --- * Se agrega soporte para consultar por los últimos X días +* Se agrega soporte para consultar por rangos de fechas ## v 0.2.1 [16-Jul-21] diff --git a/VERSION b/VERSION index 0c62199..0d91a54 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.1 +0.3.0