From 98f9799a8df5639a49a074a6f0deea49a35315d1 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Fri, 30 Jul 2021 22:43:40 -0500 Subject: [PATCH] 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'