Descarga Masiva
Descarga CFDIs Emitidos
import base64
from datetime import date
from satcfdi.models import Signer
from satcfdi.pacs.sat import SAT, TipoDescargaMasivaTerceros, EstadoSolicitud, EstadoComprobante
# Load Fiel
signer = Signer.load(
certificate=open('csd/xiqb891116qe4.cer', 'rb').read(),
key=open('csd/xiqb891116qe4.key', 'rb').read(),
password=open('csd/xiqb891116qe4.txt', 'r').read()
)
sat_service = SAT(
signer=signer
)
# Facturas Emitidas
response = sat_service.recover_comprobante_emitted_request(
fecha_inicial=date(2020, 1, 1),
fecha_final=date(2020, 12, 1),
rfc_emisor=sat_service.signer.rfc,
tipo_solicitud=TipoDescargaMasivaTerceros.CFDI,
estado_comprobante=EstadoComprobante.VIGENTE, # VIGENTE es obligatorio para descarga de CFDI
)
# Almacenar el id_solicitud en algún lugar
id_solicitud = response['IdSolicitud']
# Revisar estado de descarga
response = sat_service.recover_comprobante_status(id_solicitud)
est = response["EstadoSolicitud"]
if est == EstadoSolicitud.TERMINADA:
for id_paquete in response['IdsPaquetes']:
response, paquete = sat_service.recover_comprobante_download(
id_paquete=id_paquete
)
paquete = base64.b64decode(paquete)
with open(f"{id_paquete}.zip", "wb") as f:
f.write(paquete)
else:
# volver a intentar más tarde
pass
Descarga CFDIs Recibidos
import base64
from datetime import date
from satcfdi.models import Signer
from satcfdi.pacs.sat import SAT, TipoDescargaMasivaTerceros, EstadoSolicitud, EstadoComprobante
# Load Fiel
signer = Signer.load(
certificate=open('csd/xiqb891116qe4.cer', 'rb').read(),
key=open('csd/xiqb891116qe4.key', 'rb').read(),
password=open('csd/xiqb891116qe4.txt', 'r').read()
)
sat_service = SAT(
signer=signer
)
# Facturas Recibidas
response = sat_service.recover_comprobante_received_request(
fecha_inicial=date(2020, 1, 1),
fecha_final=date(2020, 12, 1),
rfc_receptor=sat_service.signer.rfc,
tipo_solicitud=TipoDescargaMasivaTerceros.CFDI,
estado_comprobante=EstadoComprobante.VIGENTE, # VIGENTE es obligatorio para descarga de CFDI
)
# Almacenar el id_solicitud en algún lugar
id_solicitud = response['IdSolicitud']
# Revisar estado de descarga
response = sat_service.recover_comprobante_status(id_solicitud)
est = response["EstadoSolicitud"]
if est == EstadoSolicitud.TERMINADA:
for id_paquete in response['IdsPaquetes']:
response, paquete = sat_service.recover_comprobante_download(
id_paquete=id_paquete
)
paquete = base64.b64decode(paquete)
with open(f"{id_paquete}.zip", "wb") as f:
f.write(paquete)
else:
# volver a intentar más tarde
pass
Descarga CFDI por UUID
import base64
from satcfdi.models import Signer
from satcfdi.pacs.sat import SAT, EstadoSolicitud
# Load Fiel
signer = Signer.load(
certificate=open('csd/xiqb891116qe4.cer', 'rb').read(),
key=open('csd/xiqb891116qe4.key', 'rb').read(),
password=open('csd/xiqb891116qe4.txt', 'r').read()
)
sat_service = SAT(
signer=signer
)
# Facturas por UUID
response = sat_service.recover_retencion_uuid_request(
folio="31764278-d091-417f-83aa-063239e7773b"
)
# Almacenar el id_solicitud en algún lugar
id_solicitud = response['IdSolicitud']
# Revisar estado de descarga
response = sat_service.recover_comprobante_status(id_solicitud)
est = response["EstadoSolicitud"]
if est == EstadoSolicitud.TERMINADA:
for id_paquete in response['IdsPaquetes']:
response, paquete = sat_service.recover_comprobante_download(
id_paquete=id_paquete
)
paquete = base64.b64decode(paquete)
with open(f"{id_paquete}.zip", "wb") as f:
f.write(paquete)
else:
# volver a intentar más tarde
pass