Recuperación de Solicitud de Descarga Masiva Registrada Previamente
Esta
transacción permite recuperar la información asociada a una solicitud de
descarga masiva registrada previamente.
OBTENER_SOLICITUD_DM_SAT
El
valor suministrado en el parámetro Data1 es el Id de la
solicitud en cuestión; este valor fue obtenido en la
transacción de registro REGISTRAR_SOLICITUD_DM_SAT explicada en el artículo anterior.
El parámetro de la solicitud se especifica en Data1 (Data2 y Data3 vacíos). Ejemplo
de valor para el parámetro Data1: 17
A continuación se muestra la manera en que debe realizarse la solicitud:
- <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="http://www.fact.com.mx/schema/ws">
<soap:Header/>
<soap:Body>
<ws:RequestTransaction>
<ws:Requestor>0c320b03-d4f1-47bc-9fb4-77995f9bf33e</ws:Requestor>
<ws:Transaction>OBTENER_SOLICITUD_DM_SAT</ws:Transaction>
<ws:Country>MX</ws:Country>
<ws:Entity>JES900109Q90</ws:Entity>
<ws:User>0c320b03-d4f1-47bc-9fb4-77995f9bf33e</ws:User>
<ws:UserName>Jan_Test</ws:UserName>
<ws:Data1>17</ws:Data1>
<ws:Data2></ws:Data2>
<ws:Data3></ws:Data3>
</ws:RequestTransaction>
</soap:Body>
</soap:Envelope>
RESPUESTA
- <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<RequestTransactionResponse xmlns="http://www.fact.com.mx/schema/ws">
<RequestTransactionResult>
<Request>
<Requestor>00000000-0000-0000-0000-000000000000</Requestor>
<RequestorActive>true</RequestorActive>
<Transaction>OBTENER_SOLICITUD_DM_SAT</Transaction>
<Country>MX</Country>
<Entity>JES900109Q90</Entity>
<User>00000000-0000-0000-0000-000000000000</User>
<UserName>Jan_Test</UserName>
<Id>687d46e5-835a-40c5-8f30-213a02da3e33</Id>
<TimeStamp>2020-05-19T15:43:09.0702889-05:00</TimeStamp>
</Request>
<Response>
<Result>true</Result>
<TimeStamp>2020-05-19T15:43:10.8202914-05:00</TimeStamp>
<LastResult/>
<Code>1</Code>
<Description/>
<Hint/>
<Data>1251 687d46e5-835a-40c5-8f30-213a02da3e33</Data>
<Processor>TEST-BACK02</Processor>
</Response>
<ResponseData>
<ResponseData1>XML de respuesta codificado en Base64</ResponseData1>
<ResponseData2/>
<ResponseData3/>
</ResponseData>
</RequestTransactionResult>
</RequestTransactionResponse>
</soap:Body>
</soap:Envelope>
Ejemplo
de valor devuelto en ResponseData1 para
solicitud previa (aunque se muestra plano, y en varias líneas, el valor de ResponseData1 viene codificado Base64):
- <?xml version="1.0" encoding="utf-8"?>
<ResultadoRecuperacionSolicitudDM xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Info>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table1">
<xs:complexType>
<xs:sequence>
<xs:element name="Id" type="xs:int" minOccurs="0" />
<xs:element name="TaxID" type="xs:string" minOccurs="0" />
<xs:element name="Servicio" type="xs:string" minOccurs="0" />
<xs:element name="FechaInicial" type="xs:dateTime" minOccurs="0" />
<xs:element name="FechaFinal" type="xs:dateTime" minOccurs="0" />
<xs:element name="TipoSolicitud" type="xs:string" minOccurs="0" />
<xs:element name="TipoTaxID" type="xs:string" minOccurs="0" />
<xs:element name="Identificador" type="xs:string" minOccurs="0" />
<xs:element name="EnrolledTimeStamp" type="xs:dateTime" minOccurs="0" />
<xs:element name="EstadoSolicitud" type="xs:int" minOccurs="0" />
<xs:element name="CodigoEstadoSolicitud" type="xs:string" minOccurs="0" />
<xs:element name="NumeroCFDIs" type="xs:int" minOccurs="0" />
<xs:element name="CodEstatus" type="xs:string" minOccurs="0" />
<xs:element name="Mensaje" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet>
<Table1 diffgr:id="Table11" msdata:rowOrder="0">
<Id>17</Id>
<TaxID>JES900109Q90</TaxID>
<Servicio>CFDIS</Servicio>
<FechaInicial>2019-03-10T00:00:00-06:00</FechaInicial>
<FechaFinal>2019-03-14T23:59:59-06:00</FechaFinal>
<TipoSolicitud>CFDI</TipoSolicitud>
<TipoTaxID>EMISOR</TipoTaxID>
<Identificador>c87117f0-2f87-4906-b647-4dfcc16722a4</Identificador>
<EnrolledTimeStamp>2019-05-13T22:50:00-05:00</EnrolledTimeStamp>
<EstadoSolicitud>-10</EstadoSolicitud>
<CodigoEstadoSolicitud>5000</CodigoEstadoSolicitud>
<NumeroCFDIs>41259</NumeroCFDIs>
<CodEstatus>5000</CodEstatus>
<Mensaje>Solicitud Aceptada</Mensaje>
</Table1>
</NewDataSet>
</diffgr:diffgram>
</Info>
<Files>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table1">
<xs:complexType>
<xs:sequence>
<xs:element name="IdArchivo" type="xs:int" minOccurs="0" />
<xs:element name="IdentificadorArchivo" type="xs:string" minOccurs="0" />
<xs:element name="EstadoArchivo" type="xs:int" minOccurs="0" />
<xs:element name="CodEstatusArchivo" type="xs:string" minOccurs="0" />
<xs:element name="MensajeArchivo" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet>
<Table1 diffgr:id="Table11" msdata:rowOrder="0">
<IdArchivo>41</IdArchivo>
<IdentificadorArchivo>C87117F0-2F87-4906-B647-4DFCC16722A4_01</IdentificadorArchivo>
<EstadoArchivo>-2</EstadoArchivo>
<CodEstatusArchivo>5000</CodEstatusArchivo>
<MensajeArchivo>Solicitud Aceptada</MensajeArchivo>
</Table1>
<Table1 diffgr:id="Table12" msdata:rowOrder="1">
<IdArchivo>42</IdArchivo>
<IdentificadorArchivo>C87117F0-2F87-4906-B647-4DFCC16722A4_02</IdentificadorArchivo>
<EstadoArchivo>-2</EstadoArchivo>
<CodEstatusArchivo>5000</CodEstatusArchivo>
<MensajeArchivo>Solicitud Aceptada</MensajeArchivo>
</Table1>
<Table1 diffgr:id="Table13" msdata:rowOrder="2">
<IdArchivo>43</IdArchivo>
<IdentificadorArchivo>C87117F0-2F87-4906-B647-4DFCC16722A4_03</IdentificadorArchivo>
<EstadoArchivo>-2</EstadoArchivo>
<CodEstatusArchivo>5000</CodEstatusArchivo>
<MensajeArchivo>Solicitud Aceptada</MensajeArchivo>
</Table1>
<Table1 diffgr:id="Table14" msdata:rowOrder="3">
<IdArchivo>44</IdArchivo>
<IdentificadorArchivo>C87117F0-2F87-4906-B647-4DFCC16722A4_04</IdentificadorArchivo>
<EstadoArchivo>-2</EstadoArchivo>
<CodEstatusArchivo>5000</CodEstatusArchivo>
<MensajeArchivo>Solicitud Aceptada</MensajeArchivo>
</Table1>
<Table1 diffgr:id="Table15" msdata:rowOrder="4">
<IdArchivo>45</IdArchivo>
<IdentificadorArchivo>C87117F0-2F87-4906-B647-4DFCC16722A4_05</IdentificadorArchivo>
<EstadoArchivo>-2</EstadoArchivo>
<CodEstatusArchivo>5000</CodEstatusArchivo>
<MensajeArchivo>Solicitud Aceptada</MensajeArchivo>
</Table1>
<Table1 diffgr:id="Table16" msdata:rowOrder="5">
<IdArchivo>46</IdArchivo>
<IdentificadorArchivo>C87117F0-2F87-4906-B647-4DFCC16722A4_06</IdentificadorArchivo>
<EstadoArchivo>-2</EstadoArchivo>
<CodEstatusArchivo>5000</CodEstatusArchivo>
<MensajeArchivo>Solicitud Aceptada</MensajeArchivo>
</Table1>
</NewDataSet>
</diffgr:diffgram>
</Files>
</ResultadoRecuperacionSolicitudDM>
En ResponseData1 se devuelven dos NewDataSet serializados de la manera
que siempre se ha entregado al Front para transacciones de este tipo.
El primer NewDataSet, de nombre Info, devuelve toda la información disponible para la
solicitud que se está recuperando; este NewDataSet siempre contiene un único registro.
El segundo NewDataSet, de nombre Files, devuelve toda la información disponible para
cada uno de los archivos asociados a la solicitud de descarga; este NewDataSet puede tener de 0 a "n"
registros.
La
respuesta para una solicitud que no tuviera archivo tendría este formato (Files vacío):
A
continuación, se explica el significado de la información que se devuelve en
cada NewDataSet.
Info:
Id: Identifica, de manera única, la Solicitud, con este
se puede dar seguimiento en otras transacciones.
TaxID: RFC propietario de la Solicitud de Descarga Masiva.
Servicio: Tipo de servicio de la Solicitud de Descarga Masiva
(CFDIS, RETENCIONES).
FechaInicial: Fecha inicial de la Solicitud de Descarga Masiva.
FechaFinal: Fecha final de la Solicitud de Descarga Masiva.
TipoSolicitud: Tipo de solicitud de la Solicitud de Descarga Masiva (Metadata, CFDI).
TipoTaxID: Tipo de RFC de la Solicitud de Descarga Masiva (EMISOR, RECEPTOR).
Identificador: Identificador de la Solicitud de Descarga Masiva
generado por el SAT; este no es el identificador único (lo es Id), porque una solicitud registrada en MYSuite pudiera
no generar una en el SAT (por error o cualquier otro motivo); mientras la
solicitud no sea procesada y además haya una respuesta positiva por parte del
SAT, este campo no tendrá información.
EnrolledTimeStamp: Fecha de registro, en MYSuite, de la Solicitud de
Descarga Masiva.
EstadoSolicitud: Estado de la Solicitud de Descarga Masiva:
1.- Registrada
en MYSuite; pendiente por generar en el SAT (no existe aun Identificador). 2.-
Generada
en el SAT con éxito (esto recuperó Identificador del SAT). 3.-
No
hubo conexión al servicio del SAT o no hubo respuesta (caso TimeOut o cualquier
otro problema); este código especifica error al consumir el servicio de generación
de la Solicitud en el SAT. 4.-
Respuesta
del SAT obtenida, pero con error (error devuelto en la respuesta del SAT). 5.-
No
hubo conexión al servicio del SAT o no hubo respuesta (caso TimeOut o cualquier
otro problema); este código especifica error al consumir el servicio de verificación
de la Solicitud en el SAT. 10.-
Solicitud
de Descarga terminada por completo (esto implica que además, todos los archivos
asociados a la Solicitud, en caso de existir, fueron recuperados sin problema
alguno). 11.-
Solicitud
de Descarga terminada por completo en el SAT pero que no pudo ser terminada en
MYSuite (estado para indicar que aun cuando para el SAT la solicitud está como
terminada hubo algún error para culminar dicha solicitud en MYSuite,
generalmente tiene que ver con la recuperación de alguno de los archivos
asociados o con su subida a la nube).
Cualquier
valor positivo es un código propio del SAT, devuelto en ; para la
interpretación de cada caso remitirse a la documentación oficial acerca de los
Servicios de Descarga Masivas, disponible en https://wwwmat.sat.gob.mx/consultas/42968/consulta-y-recuperacion-de-comprobantes-(nuevo).
Los
códigos del 1 al 4 están asociados, todos, al proceso de solicitar al
SAT el
registro de la Solicitud ya existente en MYSuite. Código 5 está asociado
al
proceso de verificación de una solicitud ya registrada en el SAT.
Códigos 10 y 11 son propios de la culminación en MYSuite de la Solicitud
después que el SAT
la reportó como terminada con éxito.
Esto
explica el por qué, a pesar de tener la misma explicación, los códigos 3 y 5
no significan lo mismo.
CodigoEstadoSolicitud: Valor devuelto por el SAT en CodigoEstadoSolicitud en el proceso de verificación de la
Solicitud; para la interpretación de cada caso remitirse a la documentación
oficial acerca de los Servicios de Descarga Masivas, disponible en https://wwwmat.sat.gob.mx/consultas/42968/consulta-y-recuperacion-de-comprobantes-(nuevo)
NumeroCFDIs: Valor devuelto por el SAT en NumeroCFDIs en el proceso de verificación de la Solicitud.
CodEstatus: Valor devuelto por el SAT en CodEstatus en el proceso de generación o verificación de la
Solicitud; para la interpretación de cada caso remitirse a la documentación
oficial acerca de los Servicios de Descarga Masivas, disponible en https://wwwmat.sat.gob.mx/consultas/42968/consulta-y-recuperacion-de-comprobantes-(nuevo).
Mensaje: Valor devuelto por el SAT en Mensaje en el proceso de generación o verificación de la Solicitud
o, en su defecto, uno indicado de manera interna por MYSuite para errores
propios.
Files: IdArchivo: Identifica, de manera única, un Archivo asociado a
una Solicitud de Descarga Masiva, con este se puede dar seguimiento en otras transacciones.
IdentificadorArchivo: Identificador, generado por el SAT, de un Archivo
asociado a una Solicitud de Descarga Masiva; aunque este valor pudiera haberse
utilizado como identificador único, porque desde que se registra en MYSuite ya
tiene valor, por analogía con la Solicitud hemos utilizado IdArchivo.
EstadoArchivo: 1.- Registrado
en MYSuite; pendiente por descargar del SAT. 2.-
Descargado
del SAT con éxito. 3.-
No
hubo conexión al servicio del SAT o no hubo respuesta (caso TimeOut o cualquier
otro problema); este código especifica error al consumir el servicio de descarga
del Archivo del SAT. 4.-
Respuesta
del SAT obtenida, pero con error (error devuelto en la respuesta del SAT). 5.-
Error
inesperado (puede estar asociado a la subida del archivo a la nube o cualquier
otro error no controlado después de haber recuperado el archivo del SAT). 6.-
Descargado
previamente (indica que el archivo ya existe en nuestra nube, normalmente
asociado a un error previo no controlado después de haberse descargado del SAT
y subido a la nube).
CodEstatusArchivo: Valor devuelto por el SAT en CodEstatus en el proceso de descarga del Archivo; para la
interpretación de cada caso remitirse a la documentación oficial acerca de los
Servicios de Descarga Masivas, disponible en https://wwwmat.sat.gob.mx/consultas/42968/consulta-y-recuperacion-de-comprobantes-(nuevo).
MensajeArchivo: Valor devuelto por el SAT en Mensaje en el proceso de descarga del Archivo o, en su defecto, uno
indicado de manera interna por MYSuite para errores propios.
Notas para tener en cuenta:
·
No se
permite recuperar una solicitud que pertenece a un RFC diferente al que realiza
la transacción; en ese caso el sistema generará un error.