Skip to content

Commit 2d65bbf

Browse files
author
Gerardo Ramirez
committed
Descarga Masiva v1.5
1 parent c73c412 commit 2d65bbf

8 files changed

Lines changed: 84 additions & 23 deletions

cfdiclient/__init__.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@
22
from .autenticacion import Autenticacion
33
from .descargamasiva import DescargaMasiva
44
from .fiel import Fiel
5-
from .solicitadescarga import SolicitaDescarga
5+
from .solicitadescargaEmitidos import SolicitaDescargaEmitidos
6+
67
from .validacioncfdi import Validacion
78
from .verificasolicituddescarga import VerificaSolicitudDescarga
89

910
__all__ = [
1011
'Autenticacion',
1112
'DescargaMasiva',
1213
'Fiel',
13-
'SolicitaDescarga',
14+
'SolicitaDescargaEmitidos',
15+
'SolicitaDescargaRecibidos',
1416
'Validacion',
1517
'VerificaSolicitudDescarga',
1618
]
1719

1820
name = 'cfdiclient'
1921

20-
version = '1.5.9'
22+
version = '1.6.0'
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
from .webservicerequest import WebServiceRequest
33

44

5-
class SolicitaDescarga(WebServiceRequest):
5+
class SolicitaDescargaEmitidos(WebServiceRequest):
66

7-
xml_name = 'solicitadescarga.xml'
7+
xml_name = 'solicitadescargaEmitidos.xml'
88
soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc'
9-
soap_action = 'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescarga'
10-
solicitud_xpath = 's:Body/des:SolicitaDescarga/des:solicitud'
11-
result_xpath = 's:Body/SolicitaDescargaResponse/SolicitaDescargaResult'
9+
soap_action = 'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescargaEmitidos'
10+
solicitud_xpath = 's:Body/des:SolicitaDescargaEmitidos/des:solicitud'
11+
result_xpath = 's:Body/SolicitaDescargaEmitidosResponse/SolicitaDescargaEmitidosResult'
1212

1313
def solicitar_descarga(
1414
self, token, rfc_solicitante, fecha_inicial, fecha_final,
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
<s:Envelope xmlns:des="http://DescargaMasivaTerceros.sat.gob.mx"
2-
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
2+
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
3+
xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
34
<s:Header/>
45
<s:Body>
5-
<des:SolicitaDescarga>
6+
<des:SolicitaDescargaEmitidos>
67
<des:solicitud>
78
<des:RfcReceptores>
89
<des:RfcReceptor/>
910
</des:RfcReceptores>
1011
</des:solicitud>
11-
</des:SolicitaDescarga>
12+
</des:SolicitaDescargaEmitidos>
1213
</s:Body>
1314
</s:Envelope>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# -*- coding: utf-8 -*-
2+
from .webservicerequest import WebServiceRequest
3+
4+
5+
class SolicitaDescargaRecibidos(WebServiceRequest):
6+
7+
xml_name = 'solicitadescargaRecibidos.xml'
8+
soap_url = 'https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/SolicitaDescargaService.svc'
9+
soap_action = 'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescargaRecibidos'
10+
solicitud_xpath = 's:Body/des:SolicitaDescargaRecibidos/des:solicitud'
11+
result_xpath = 's:Body/SolicitaDescargaRecibidosResponse/SolicitaDescargaRecibidosResult'
12+
13+
def solicitar_descarga(
14+
self, token, rfc_solicitante, fecha_inicial, fecha_final,
15+
rfc_emisor=None, rfc_receptor=None, tipo_solicitud='CFDI',
16+
tipo_comprobante=None, estado_comprobante=None,
17+
rfc_a_cuenta_terceros=None, complemento=None, uuid=None
18+
):
19+
20+
arguments = {
21+
'RfcSolicitante': rfc_solicitante.upper(),
22+
'FechaFinal': fecha_final.strftime(self.DATE_TIME_FORMAT),
23+
'FechaInicial': fecha_inicial.strftime(self.DATE_TIME_FORMAT),
24+
'TipoSolicitud': tipo_solicitud,
25+
'TipoComprobante': tipo_comprobante,
26+
'EstadoComprobante': estado_comprobante,
27+
'RfcACuentaTerceros': rfc_a_cuenta_terceros,
28+
'Complemento': complemento,
29+
'UUID': uuid,
30+
'RfcReceptor': rfc_receptor
31+
}
32+
33+
element_response = self.request(token, arguments)
34+
35+
ret_val = {
36+
'id_solicitud': element_response.get('IdSolicitud'),
37+
'cod_estatus': element_response.get('CodEstatus'),
38+
'mensaje': element_response.get('Mensaje')
39+
}
40+
41+
return ret_val
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<s:Envelope xmlns:des="http://DescargaMasivaTerceros.sat.gob.mx"
2+
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
3+
xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
4+
<s:Header/>
5+
<s:Body>
6+
<des:SolicitaDescargaRecibidos>
7+
<des:solicitud>
8+
</des:solicitud>
9+
</des:SolicitaDescargaRecibidos>
10+
</s:Body>
11+
</s:Envelope>

cfdiclient/webservicerequest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def set_request_arguments(self, arguments: dict) -> etree.Element:
4747
for i, rfc_receptor in enumerate(arguments[key]):
4848
if i == 0:
4949
self.set_element_text(
50-
's:Body/des:SolicitaDescarga/des:solicitud/des:RfcReceptores/des:RfcReceptor',
50+
's:Body/des:SolicitaDescargaEmitidos/des:solicitud/des:RfcReceptores/des:RfcReceptor',
5151
rfc_receptor
5252
)
5353
# TODO: Agregar mas de un RFC

ejemplo_completo.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
from cfdiclient import Autenticacion
77
from cfdiclient import DescargaMasiva
88
from cfdiclient import Fiel
9-
from cfdiclient import SolicitaDescarga
9+
from cfdiclient import solicitadescargaEmitidos
10+
from cfdiclient import solicitadescargaRecibidos
1011
from cfdiclient import VerificaSolicitudDescarga
1112
##
1213
# Constantes de Loggin
@@ -20,8 +21,8 @@
2021
cer_der = open(os.path.join(PATH, FIEL_CER), 'rb').read()
2122
key_der = open(os.path.join(PATH, FIEL_KEY), 'rb').read()
2223

23-
FECHA_INICIAL = datetime.datetime(2024, 3, 1)
24-
FECHA_FINAL = datetime.datetime(2024, 3, 30)
24+
FECHA_INICIAL = datetime.datetime(2025, 6, 1)
25+
FECHA_FINAL = datetime.datetime(2025, 6, 2)
2526

2627
fiel = Fiel(cer_der, key_der, FIEL_PAS)
2728

@@ -31,17 +32,22 @@
3132

3233
print('TOKEN: ', token)
3334

34-
descarga = SolicitaDescarga(fiel)
35+
#descarga = solicitadescargaEmitidos.SolicitaDescargaEmitidos(fiel)
36+
descarga = solicitadescargaRecibidos.SolicitaDescargaRecibidos(fiel)
3537

36-
# EMITIDOS
37-
# solicitud = descarga.solicitar_descarga(
38-
# token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_emisor=RFC, tipo_solicitud='CFDI',
39-
# )
4038

41-
# RECIBIDOS
39+
40+
# Emitidos
41+
#solicitud = descarga.solicitar_descarga(
42+
# token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_emisor=RFC,tipo_solicitud='CFDI',
43+
#)
44+
45+
# Recibidos
4246
solicitud = descarga.solicitar_descarga(
43-
token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_receptor=RFC, tipo_solicitud='CFDI',
47+
token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_receptor=RFC,tipo_solicitud='Metadata', estado_comprobante='Todos',
4448
)
49+
50+
4551
print('solicitar_descarga:', solicitud)
4652

4753
if solicitud['cod_estatus'] != '5000':

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name='cfdiclient',
8-
version='1.5.9',
8+
version='1.6.0',
99
author='Luis Iturrios',
1010
author_email='luisiturrios1@gmail.com',
1111
description='Cliente Python Web Service del SAT para la descarga masiva de CFDIs',

0 commit comments

Comments
 (0)