@@ -247,19 +247,55 @@ def todatetime(name):
247247 }
248248
249249
250- class _CFDISolicitaDescarga (_SATRequest ):
251- xml_name = 'solicita.xml'
250+ # class _CFDISolicitaDescarga(_SATRequest):
251+ # xml_name = 'solicita.xml'
252+ # soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc'
253+ # soap_action = 'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescarga'
254+ # solicitud_xpath = '{*}Body/{*}SolicitaDescarga/{*}solicitud'
255+ #
256+ # def process_response(self, response: etree.Element):
257+ # res = response.find('{*}Body/{*}SolicitaDescargaResponse/{*}SolicitaDescargaResult')
258+ # return {
259+ # **res.attrib
260+ # }
261+
262+ class _CFDISolicitaDescargaEmitidos (_SATRequest ):
263+ xml_name = 'solicitaEmitidos.xml'
252264 soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc'
253- soap_action = ' http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescarga'
254- solicitud_xpath = '{*}Body/{*}SolicitaDescarga /{*}solicitud'
265+ soap_action = " http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescargaEmitidos"
266+ solicitud_xpath = '{*}Body/{*}SolicitaDescargaEmitidos /{*}solicitud'
255267
256268 def process_response (self , response : etree .Element ):
257- res = response .find ('{*}Body/{*}SolicitaDescargaResponse /{*}SolicitaDescargaResult ' )
269+ res = response .find ('{*}Body/{*}SolicitaDescargaEmitidosResponse /{*}SolicitaDescargaEmitidosResult ' )
258270 return {
259271 ** res .attrib
260272 }
261273
262274
275+ class _CFDISolicitaDescargaRecibidos (_SATRequest ):
276+ xml_name = 'solicitaRecibidos.xml'
277+ soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc'
278+ soap_action = "http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescargaRecibidos"
279+ solicitud_xpath = '{*}Body/{*}SolicitaDescargaRecibidos/{*}solicitud'
280+
281+ def process_response (self , response : etree .Element ):
282+ res = response .find ('{*}Body/{*}SolicitaDescargaRecibidosResponse/{*}SolicitaDescargaRecibidosResult' )
283+ return {
284+ ** res .attrib
285+ }
286+
287+ class _CFDISolicitaDescargaFolio (_SATRequest ):
288+ xml_name = 'solicitaFolio.xml'
289+ soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc'
290+ soap_action = "http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescargaFolio"
291+ solicitud_xpath = '{*}Body/{*}SolicitaDescargaFolio/{*}solicitud'
292+
293+ def process_response (self , response : etree .Element ):
294+ res = response .find ('{*}Body/{*}SolicitaDescargaFolioResponse/{*}SolicitaDescargaFolioResult' )
295+ return {
296+ ** res .attrib
297+ }
298+
263299class _CFDIVerificaSolicitudDescarga (_SATRequest ):
264300 xml_name = 'verifica.xml'
265301 soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/VerificaSolicitudDescargaService.svc'
@@ -572,7 +608,61 @@ def list_69b(self, rfc: str) -> TaxpayerStatus | None:
572608 return TaxpayerStatus (r )
573609 return None
574610
575- def recover_comprobante_request (
611+ # def recover_comprobante_request(
612+ # self,
613+ # fecha_inicial: date | datetime | None = None,
614+ # fecha_final: date | datetime | None = None,
615+ # rfc_receptor: str | Sequence[str] | None = None,
616+ # rfc_emisor: str | None = None,
617+ # tipo_solicitud: TipoDescargaMasivaTerceros | str = TipoDescargaMasivaTerceros.CFDI,
618+ # tipo_comprobante: TipoDeComprobante | str | None = None,
619+ # estado_comprobante: EstadoComprobante | str | None = None,
620+ # rfc_a_cuenta_terceros: str | None = None,
621+ # complemento: str | None = None,
622+ # uuid: str | UUID | None = None) -> dict:
623+ # """
624+ # Esta operación permite solicitar la descarga de CFDIs o Metadata y como
625+ # resultado devuelve un id de solicitud o estatus de la petición realizada.
626+ #
627+ # :param fecha_inicial: Solo se buscarán CFDI, cuya fecha de emisión sea igual o mayor a la fecha inicial indicada en este parámetro.
628+ # Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
629+ # :param fecha_final: Solo se buscarán CFDI, cuya fecha de emisión sea igual o menor a la fecha final indicada en este parámetro.
630+ # Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
631+ # :param rfc_receptor: Contiene el/los RFCs receptores de los cuales se quiere consultar los CFDIs
632+ # Importante: El campo RfcReceptor, únicamente permite la captura de 5 registros como máximo
633+ # :param rfc_emisor: Contiene el RFC del emisor del cual se quiere consultar los CFDI.
634+ # Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
635+ # :param tipo_solicitud: Define el tipo de descarga
636+ # :param tipo_comprobante: Define el tipo de comprobante
637+ # :param estado_comprobante: Define el estado del comprobante
638+ # :param rfc_a_cuenta_terceros: Contiene el RFC del a cuenta a tercero del cual se quiere consultar los CFDIs
639+ # :param complemento: Define el complemento de CFDI a descargar
640+ # :param uuid: Folio Fiscal
641+ # :return: respuesta de solicitud de descarga
642+ # """
643+ # arguments = {
644+ # 'FechaFinal': fecha_final,
645+ # 'FechaInicial': fecha_inicial,
646+ # 'RfcEmisor': rfc_emisor,
647+ # 'RfcReceptores': [('RfcReceptor', r) for r in iterate(rfc_receptor)] if rfc_receptor else None,
648+ # 'RfcSolicitante': self.signer.rfc,
649+ # 'TipoSolicitud': tipo_solicitud,
650+ # 'TipoComprobante': tipo_comprobante,
651+ # 'EstadoComprobante': estado_comprobante,
652+ # 'RfcACuentaTerceros': rfc_a_cuenta_terceros,
653+ # 'Complemento': complemento,
654+ # 'Folio': uuid,
655+ # }
656+ #
657+ # return self._execute_req(
658+ # _CFDISolicitaDescarga(
659+ # signer=self.signer,
660+ # arguments=arguments
661+ # ),
662+ # needs_token_fn=self._get_token_comprobante
663+ # )
664+
665+ def recover_comprobante_emited_request (
576666 self ,
577667 fecha_inicial : date | datetime | None = None ,
578668 fecha_final : date | datetime | None = None ,
@@ -582,8 +672,7 @@ def recover_comprobante_request(
582672 tipo_comprobante : TipoDeComprobante | str | None = None ,
583673 estado_comprobante : EstadoComprobante | str | None = None ,
584674 rfc_a_cuenta_terceros : str | None = None ,
585- complemento : str | None = None ,
586- uuid : str | UUID | None = None ) -> dict :
675+ complemento : str | None = None ) -> dict :
587676 """
588677 Esta operación permite solicitar la descarga de CFDIs o Metadata y como
589678 resultado devuelve un id de solicitud o estatus de la petición realizada.
@@ -615,11 +704,85 @@ def recover_comprobante_request(
615704 'EstadoComprobante' : estado_comprobante ,
616705 'RfcACuentaTerceros' : rfc_a_cuenta_terceros ,
617706 'Complemento' : complemento ,
618- 'Folio' : uuid ,
619707 }
620708
621709 return self ._execute_req (
622- _CFDISolicitaDescarga (
710+ _CFDISolicitaDescargaEmitidos (
711+ signer = self .signer ,
712+ arguments = arguments
713+ ),
714+ needs_token_fn = self ._get_token_comprobante
715+ )
716+
717+ def recover_comprobante_received_request (
718+ self ,
719+ fecha_inicial : date | datetime | None = None ,
720+ fecha_final : date | datetime | None = None ,
721+ rfc_receptor : str | None = None ,
722+ rfc_emisor : str | None = None ,
723+ tipo_solicitud : TipoDescargaMasivaTerceros | str = TipoDescargaMasivaTerceros .CFDI ,
724+ tipo_comprobante : TipoDeComprobante | str | None = None ,
725+ estado_comprobante : EstadoComprobante | str | None = None ,
726+ rfc_a_cuenta_terceros : str | None = None ,
727+ complemento : str | None = None ) -> dict :
728+ """
729+ Esta operación permite solicitar la descarga de CFDIs o Metadata y como
730+ resultado devuelve un id de solicitud o estatus de la petición realizada.
731+
732+ :param fecha_inicial: Solo se buscarán CFDI, cuya fecha de emisión sea igual o mayor a la fecha inicial indicada en este parámetro.
733+ Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
734+ :param fecha_final: Solo se buscarán CFDI, cuya fecha de emisión sea igual o menor a la fecha final indicada en este parámetro.
735+ Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
736+ :param rfc_receptor: Contiene el/los RFCs receptores de los cuales se quiere consultar los CFDIs
737+ Importante: El campo RfcReceptor, únicamente permite la captura de 5 registros como máximo
738+ :param rfc_emisor: Contiene el RFC del emisor del cual se quiere consultar los CFDI.
739+ Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
740+ :param tipo_solicitud: Define el tipo de descarga
741+ :param tipo_comprobante: Define el tipo de comprobante
742+ :param estado_comprobante: Define el estado del comprobante
743+ :param rfc_a_cuenta_terceros: Contiene el RFC del a cuenta a tercero del cual se quiere consultar los CFDIs
744+ :param complemento: Define el complemento de CFDI a descargar
745+ :param uuid: Folio Fiscal
746+ :return: respuesta de solicitud de descarga
747+ """
748+ arguments = {
749+ 'FechaFinal' : fecha_final ,
750+ 'FechaInicial' : fecha_inicial ,
751+ 'RfcEmisor' : rfc_emisor ,
752+ 'RfcReceptor' : rfc_receptor ,
753+ 'RfcSolicitante' : self .signer .rfc ,
754+ 'TipoSolicitud' : tipo_solicitud ,
755+ 'TipoComprobante' : tipo_comprobante ,
756+ 'EstadoComprobante' : estado_comprobante ,
757+ 'RfcACuentaTerceros' : rfc_a_cuenta_terceros ,
758+ 'Complemento' : complemento ,
759+ }
760+
761+ return self ._execute_req (
762+ _CFDISolicitaDescargaRecibidos (
763+ signer = self .signer ,
764+ arguments = arguments
765+ ),
766+ needs_token_fn = self ._get_token_comprobante
767+ )
768+
769+ def recover_comprobante_uuid_request (
770+ self ,
771+ folio : str | UUID | None = None ) -> dict :
772+ """
773+ Esta operación permite solicitar la descarga de CFDIs o Metadata y como
774+ resultado devuelve un id de solicitud o estatus de la petición realizada.
775+
776+ :param folio: Folio Fiscal
777+ :return: respuesta de solicitud de descarga
778+ """
779+ arguments = {
780+ 'RfcSolicitante' : self .signer .rfc ,
781+ 'Folio' : folio ,
782+ }
783+
784+ return self ._execute_req (
785+ _CFDISolicitaDescargaFolio (
623786 signer = self .signer ,
624787 arguments = arguments
625788 ),
0 commit comments