Descarga por tipo, emitidas o recibidas
This commit is contained in:
parent
9fc5a57834
commit
978eb19862
|
@ -4,7 +4,6 @@ Descarga masiva del SAT
|
||||||
|
|
||||||
## Software libre, no software "gratis"
|
## Software libre, no software "gratis"
|
||||||
|
|
||||||
Esta librería tiene un costo simbólico de $100 MXN anuales
|
|
||||||
|
|
||||||
En orden de preferencia
|
En orden de preferencia
|
||||||
|
|
||||||
|
|
|
@ -176,13 +176,9 @@ class SATWebService():
|
||||||
'FechaFinal': date_end.strftime(FORMAT),
|
'FechaFinal': date_end.strftime(FORMAT),
|
||||||
'FechaInicial': date_start.strftime(FORMAT),
|
'FechaInicial': date_start.strftime(FORMAT),
|
||||||
'TipoSolicitud': 'CFDI',
|
'TipoSolicitud': 'CFDI',
|
||||||
'RfcEmisor': self._cert.rfc,
|
args['rfc']: self._cert.rfc,
|
||||||
}
|
}
|
||||||
request = ET.SubElement(request_down, node_name, attr)
|
request = ET.SubElement(request_down, node_name, attr)
|
||||||
# ~ if rfc_emisor is not None:
|
|
||||||
# ~ solicitud.set('RfcEmisor', rfc_emisor)
|
|
||||||
# ~ if rfc_receptor is not None:
|
|
||||||
# ~ solicitud.set('RfcReceptor', rfc_receptor)
|
|
||||||
|
|
||||||
nsmap = {None: self.NS['xd']}
|
nsmap = {None: self.NS['xd']}
|
||||||
signature = ET.SubElement(request, 'Signature', nsmap=nsmap)
|
signature = ET.SubElement(request, 'Signature', nsmap=nsmap)
|
||||||
|
|
|
@ -227,19 +227,31 @@ def _validate_download_args(args):
|
||||||
return True, data
|
return True, data
|
||||||
|
|
||||||
|
|
||||||
|
def _request_download(sat, data, key):
|
||||||
|
data['rfc'] = key
|
||||||
|
result = sat.request_download(data)
|
||||||
|
# ~ Usando un simple print, permite capturarlo desde cualquier lenguaje
|
||||||
|
print(result)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def solicitar_descarga(args):
|
def solicitar_descarga(args):
|
||||||
result, data = _validate_requests_args(args)
|
result, data = _validate_requests_args(args)
|
||||||
if not result:
|
if not result:
|
||||||
return
|
return
|
||||||
|
|
||||||
sat = SATWebService(data['cert'])
|
sat = SATWebService(data['cert'])
|
||||||
|
|
||||||
if not sat.is_authenticate:
|
if not sat.is_authenticate:
|
||||||
log.error(sat.error)
|
log.error(sat.error)
|
||||||
return
|
return
|
||||||
|
|
||||||
result = sat.request_download(data)
|
if data['type'] == 'e':
|
||||||
print(result)
|
_request_download(sat, data, 'RfcEmisor')
|
||||||
|
elif data['type'] == 'r':
|
||||||
|
_request_download(sat, data, 'RfcReceptor')
|
||||||
|
else:
|
||||||
|
_request_download(sat, data, 'RfcEmisor')
|
||||||
|
_request_download(sat, data, 'RfcReceptor')
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -256,6 +268,7 @@ def verificar_descarga(args):
|
||||||
return
|
return
|
||||||
|
|
||||||
result = sat.verify(data)
|
result = sat.verify(data)
|
||||||
|
# ~ Usando un simple print, permite capturarlo desde cualquier lenguaje
|
||||||
print(result)
|
print(result)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -289,8 +302,8 @@ def descargar_archivos(args):
|
||||||
log.info(msg)
|
log.info(msg)
|
||||||
with open(path_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's\tArchivo guardado correctamente'
|
||||||
log.info(msg)
|
log.info(msg)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -309,29 +322,20 @@ def _validate_args(args):
|
||||||
return True, data
|
return True, data
|
||||||
|
|
||||||
|
|
||||||
def descargar(args):
|
def _download(sat, data, key):
|
||||||
OK = '5000'
|
OK = '5000'
|
||||||
|
|
||||||
result, data = _validate_args(args)
|
result = _request_download(sat, data, key)
|
||||||
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:
|
if result['CodEstatus'] != OK:
|
||||||
log.error(result)
|
log.error(result)
|
||||||
return
|
return
|
||||||
|
|
||||||
msg = 'Esperando un minuto para verificar la descarga...'
|
data['id'] = result['IdSolicitud']
|
||||||
|
|
||||||
|
msg = f"Descarga aceptada con el ID: {data['id']}\nEsperando un minuto para verificar la descarga..."
|
||||||
log.info(msg)
|
log.info(msg)
|
||||||
sleep(60)
|
sleep(60)
|
||||||
|
|
||||||
data['id'] = result['IdSolicitud']
|
|
||||||
while True:
|
while True:
|
||||||
result = sat.verify(data)
|
result = sat.verify(data)
|
||||||
if result['EstadoSolicitud'] in ('1', '2'):
|
if result['EstadoSolicitud'] in ('1', '2'):
|
||||||
|
@ -361,3 +365,25 @@ def descargar(args):
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def descargar(args):
|
||||||
|
result, data = _validate_args(args)
|
||||||
|
if not result:
|
||||||
|
return
|
||||||
|
|
||||||
|
sat = SATWebService(data['cert'])
|
||||||
|
|
||||||
|
if not sat.is_authenticate:
|
||||||
|
log.error(sat.error)
|
||||||
|
return
|
||||||
|
|
||||||
|
if data['type'] == 'e':
|
||||||
|
_download(sat, data, 'RfcEmisor')
|
||||||
|
elif data['type'] == 'r':
|
||||||
|
_download(sat, data, 'RfcReceptor')
|
||||||
|
else:
|
||||||
|
_download(sat, data, 'RfcEmisor')
|
||||||
|
_download(sat, data, 'RfcReceptor')
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue