Consulta, verificación y descarga
This commit is contained in:
parent
56ac8e20b8
commit
00b077fc5b
|
@ -21,6 +21,8 @@ def main(args):
|
||||||
util.descargar_archivos(args)
|
util.descargar_archivos(args)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
util.descargar(args)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,10 +73,3 @@ def _process_command_line_arguments():
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
args = _process_command_line_arguments()
|
args = _process_command_line_arguments()
|
||||||
main(args)
|
main(args)
|
||||||
|
|
||||||
|
|
||||||
# ~ {
|
|
||||||
# ~ 'IdSolicitud': '307a22f0-1259-479c-96b1-2852f9072c58',
|
|
||||||
# ~ 'CodEstatus': '5000',
|
|
||||||
# ~ 'Mensaje': 'Solicitud Aceptada'
|
|
||||||
# ~ }
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import uuid
|
||||||
from calendar import monthrange
|
from calendar import monthrange
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
from .cfdi_cert import SATCertificate
|
from .cfdi_cert import SATCertificate
|
||||||
from .sat_web import SATWebService
|
from .sat_web import SATWebService
|
||||||
|
@ -213,9 +214,15 @@ def _validate_download_args(args):
|
||||||
log.error(msg)
|
log.error(msg)
|
||||||
return False, {}
|
return False, {}
|
||||||
|
|
||||||
|
if not args.path_download:
|
||||||
|
msg = 'La ruta de descarga es requerida [-dd]'
|
||||||
|
log.error(msg)
|
||||||
|
return False, {}
|
||||||
|
|
||||||
data['cert'] = cert
|
data['cert'] = cert
|
||||||
data['id'] = args.id_request
|
data['id'] = args.id_request
|
||||||
data['id_file'] = args.id_file
|
data['id_file'] = args.id_file
|
||||||
|
data['path'] = args.path_download
|
||||||
|
|
||||||
return True, data
|
return True, data
|
||||||
|
|
||||||
|
@ -277,13 +284,75 @@ def descargar_archivos(args):
|
||||||
if file_data is None:
|
if file_data is None:
|
||||||
log.debug(result)
|
log.debug(result)
|
||||||
else:
|
else:
|
||||||
msg = f'Guardando: {f}.zip'
|
path_zip = join(data['path'], f'{f}.zip')
|
||||||
|
msg = f'Guardando: {path_zip}'
|
||||||
log.info(msg)
|
log.info(msg)
|
||||||
with open(f"{f}.zip", 'wb') as f:
|
with open(path_zip, 'wb') as f:
|
||||||
f.write(file_data)
|
f.write(file_data)
|
||||||
msg = f'\tArchivo guardado correctamente'
|
msg = f'\tArchivo guardado correctamente'
|
||||||
log.info(msg)
|
log.info(msg)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def _validate_args(args):
|
||||||
|
result, data = _validate_requests_args(args)
|
||||||
|
if not result:
|
||||||
|
return False, {}
|
||||||
|
|
||||||
|
if not args.path_download:
|
||||||
|
msg = 'La ruta de descarga es requerida [-dd]'
|
||||||
|
log.error(msg)
|
||||||
|
return False, {}
|
||||||
|
|
||||||
|
data['path'] = args.path_download
|
||||||
|
|
||||||
|
return True, data
|
||||||
|
|
||||||
|
|
||||||
|
def descargar(args):
|
||||||
|
OK = '5000'
|
||||||
|
|
||||||
|
result, data = _validate_args(args)
|
||||||
|
if not result:
|
||||||
|
return
|
||||||
|
|
||||||
|
sat = SATWebService(data['cert'])
|
||||||
|
|
||||||
|
if not sat.is_authenticate:
|
||||||
|
log.error(sat.error)
|
||||||
|
return
|
||||||
|
|
||||||
|
result = sat.request_download(data)
|
||||||
|
if result['CodEstatus'] != OK:
|
||||||
|
log.error(result)
|
||||||
|
return
|
||||||
|
|
||||||
|
data['id'] = result['IdSolicitud']
|
||||||
|
while True:
|
||||||
|
result = sat.verify(data)
|
||||||
|
if result['EstadoSolicitud'] in ('1', '2'):
|
||||||
|
msg = 'Esperando un minuto para volver a verificar...'
|
||||||
|
log.info(msg)
|
||||||
|
sleep(60)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if result['EstadoSolicitud'] == '3':
|
||||||
|
for f in result['files']:
|
||||||
|
data['id_file'] = f
|
||||||
|
result, file_data = sat.download(data)
|
||||||
|
if file_data is None:
|
||||||
|
log.debug(result)
|
||||||
|
else:
|
||||||
|
path_zip = join(data['path'], f'{f}.zip')
|
||||||
|
msg = f'Guardando: {path_zip}'
|
||||||
|
log.info(msg)
|
||||||
|
with open(path_zip, 'wb') as f:
|
||||||
|
f.write(file_data)
|
||||||
|
msg = f'\tArchivo guardado correctamente'
|
||||||
|
log.info(msg)
|
||||||
|
break
|
||||||
|
|
||||||
|
log.error(result)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue