diff --git a/cfdiclient/__init__.py b/cfdiclient/__init__.py index 7b492a6..258e56c 100644 --- a/cfdiclient/__init__.py +++ b/cfdiclient/__init__.py @@ -2,7 +2,8 @@ from .autenticacion import Autenticacion from .descargamasiva import DescargaMasiva from .fiel import Fiel -from .solicitadescarga import SolicitaDescarga +from .solicitadescargaEmitidos import SolicitaDescargaEmitidos + from .validacioncfdi import Validacion from .verificasolicituddescarga import VerificaSolicitudDescarga @@ -10,11 +11,12 @@ 'Autenticacion', 'DescargaMasiva', 'Fiel', - 'SolicitaDescarga', + 'SolicitaDescargaEmitidos', + 'SolicitaDescargaRecibidos', 'Validacion', 'VerificaSolicitudDescarga', ] name = 'cfdiclient' -version = '1.5.9' +version = '1.6.0' diff --git a/cfdiclient/solicitadescarga.py b/cfdiclient/solicitadescargaEmitidos.py similarity index 82% rename from cfdiclient/solicitadescarga.py rename to cfdiclient/solicitadescargaEmitidos.py index 48d50dd..16a460e 100644 --- a/cfdiclient/solicitadescarga.py +++ b/cfdiclient/solicitadescargaEmitidos.py @@ -2,13 +2,13 @@ from .webservicerequest import WebServiceRequest -class SolicitaDescarga(WebServiceRequest): +class SolicitaDescargaEmitidos(WebServiceRequest): - xml_name = 'solicitadescarga.xml' + xml_name = 'solicitadescargaEmitidos.xml' soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc' - soap_action = 'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescarga' - solicitud_xpath = 's:Body/des:SolicitaDescarga/des:solicitud' - result_xpath = 's:Body/SolicitaDescargaResponse/SolicitaDescargaResult' + soap_action = 'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescargaEmitidos' + solicitud_xpath = 's:Body/des:SolicitaDescargaEmitidos/des:solicitud' + result_xpath = 's:Body/SolicitaDescargaEmitidosResponse/SolicitaDescargaEmitidosResult' def solicitar_descarga( self, token, rfc_solicitante, fecha_inicial, fecha_final, diff --git a/cfdiclient/solicitadescarga.xml b/cfdiclient/solicitadescargaEmitidos.xml similarity index 61% rename from cfdiclient/solicitadescarga.xml rename to cfdiclient/solicitadescargaEmitidos.xml index 9588b34..b8fbcd8 100644 --- a/cfdiclient/solicitadescarga.xml +++ b/cfdiclient/solicitadescargaEmitidos.xml @@ -1,13 +1,14 @@ + xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> - + - + diff --git a/cfdiclient/solicitadescargaRecibidos.py b/cfdiclient/solicitadescargaRecibidos.py new file mode 100644 index 0000000..57fd5c8 --- /dev/null +++ b/cfdiclient/solicitadescargaRecibidos.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +from .webservicerequest import WebServiceRequest + + +class SolicitaDescargaRecibidos(WebServiceRequest): + + xml_name = 'solicitadescargaRecibidos.xml' + soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc' + soap_action = 'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescargaRecibidos' + solicitud_xpath = 's:Body/des:SolicitaDescargaRecibidos/des:solicitud' + result_xpath = 's:Body/SolicitaDescargaRecibidosResponse/SolicitaDescargaRecibidosResult' + + def solicitar_descarga( + self, token, rfc_solicitante, fecha_inicial, fecha_final, + rfc_emisor=None, rfc_receptor=None, tipo_solicitud='CFDI', + tipo_comprobante=None, estado_comprobante=None, + rfc_a_cuenta_terceros=None, complemento=None, uuid=None + ): + + arguments = { + 'RfcSolicitante': rfc_solicitante.upper(), + 'FechaFinal': fecha_final.strftime(self.DATE_TIME_FORMAT), + 'FechaInicial': fecha_inicial.strftime(self.DATE_TIME_FORMAT), + 'TipoSolicitud': tipo_solicitud, + 'TipoComprobante': tipo_comprobante, + 'EstadoComprobante': estado_comprobante, + 'RfcACuentaTerceros': rfc_a_cuenta_terceros, + 'Complemento': complemento, + 'UUID': uuid, + 'RfcReceptor': rfc_receptor + } + + element_response = self.request(token, arguments) + + ret_val = { + 'id_solicitud': element_response.get('IdSolicitud'), + 'cod_estatus': element_response.get('CodEstatus'), + 'mensaje': element_response.get('Mensaje') + } + + return ret_val diff --git a/cfdiclient/solicitadescargaRecibidos.xml b/cfdiclient/solicitadescargaRecibidos.xml new file mode 100644 index 0000000..abe726c --- /dev/null +++ b/cfdiclient/solicitadescargaRecibidos.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/cfdiclient/webservicerequest.py b/cfdiclient/webservicerequest.py index 98f7f9f..2091ac0 100644 --- a/cfdiclient/webservicerequest.py +++ b/cfdiclient/webservicerequest.py @@ -47,7 +47,7 @@ def set_request_arguments(self, arguments: dict) -> etree.Element: for i, rfc_receptor in enumerate(arguments[key]): if i == 0: self.set_element_text( - 's:Body/des:SolicitaDescarga/des:solicitud/des:RfcReceptores/des:RfcReceptor', + 's:Body/des:SolicitaDescargaEmitidos/des:solicitud/des:RfcReceptores/des:RfcReceptor', rfc_receptor ) # TODO: Agregar mas de un RFC diff --git a/ejemplo_completo.py b/ejemplo_completo.py index 715f980..4895e7f 100644 --- a/ejemplo_completo.py +++ b/ejemplo_completo.py @@ -6,7 +6,8 @@ from cfdiclient import Autenticacion from cfdiclient import DescargaMasiva from cfdiclient import Fiel -from cfdiclient import SolicitaDescarga +from cfdiclient import solicitadescargaEmitidos +from cfdiclient import solicitadescargaRecibidos from cfdiclient import VerificaSolicitudDescarga ## # Constantes de Loggin @@ -20,8 +21,8 @@ cer_der = open(os.path.join(PATH, FIEL_CER), 'rb').read() key_der = open(os.path.join(PATH, FIEL_KEY), 'rb').read() -FECHA_INICIAL = datetime.datetime(2024, 3, 1) -FECHA_FINAL = datetime.datetime(2024, 3, 30) +FECHA_INICIAL = datetime.datetime(2025, 6, 1) +FECHA_FINAL = datetime.datetime(2025, 6, 2) fiel = Fiel(cer_der, key_der, FIEL_PAS) @@ -31,17 +32,22 @@ print('TOKEN: ', token) -descarga = SolicitaDescarga(fiel) +#descarga = solicitadescargaEmitidos.SolicitaDescargaEmitidos(fiel) +descarga = solicitadescargaRecibidos.SolicitaDescargaRecibidos(fiel) -# EMITIDOS -# solicitud = descarga.solicitar_descarga( -# token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_emisor=RFC, tipo_solicitud='CFDI', -# ) -# RECIBIDOS + +# Emitidos +#solicitud = descarga.solicitar_descarga( +# token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_emisor=RFC,tipo_solicitud='CFDI', +#) + +# Recibidos solicitud = descarga.solicitar_descarga( - token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_receptor=RFC, tipo_solicitud='CFDI', + token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_receptor=RFC,tipo_solicitud='Metadata', estado_comprobante='Todos', ) + + print('solicitar_descarga:', solicitud) if solicitud['cod_estatus'] != '5000': diff --git a/setup.py b/setup.py index 73bcf66..54c5cf7 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name='cfdiclient', - version='1.5.9', + version='1.6.0', author='Luis Iturrios', author_email='luisiturrios1@gmail.com', description='Cliente Python Web Service del SAT para la descarga masiva de CFDIs',