Registro de Solicitud de Descarga Masiva

Registro de Solicitud de Descarga Masiva

Esta transacción permite registrar en MYSuite una solicitud (o varias a la misma vez, en dependencia de los parámetros enviados). La respuesta es una lista (un registro por cada solicitud tratada de registrar), con el resultado de dicho registro.

REGISTRAR_SOLICITUD_DM_SAT_HTML

El valor suministrado en el parámetro jsonData es la serialización (formato java), de una clase que contenga las propiedades servicio, fechaInicial, fechaFinal, tipoSolicitud, tipoTaxID, fielCer, fielKey y fielPass (todas de tipo string).

Definición de propiedades:

servicio: indica el tipo de servicio de la descarga (valores posibles: CFDIS, RETENCIONES y AMBOS); obligatorio.

fechaInicial: indica la fecha inicial de la descarga (formato yyyy-MM-dd HH:mm:ss); obligatorio.

fechaFinal: indica la fecha final de la descarga (formato yyyy-MM-dd HH:mm:ss); obligatorio.

tipoSolicitud: indica el tipo de solicitud de la descarga (valores posibles: Metadata, CFDI y AMBOS); obligatorio.

tipoTaxID: indica el tipo de RFC de la descarga (valores posibles: EMISOR, RECEPTOR y AMBOS); obligatorio.

fielCer: Archivo .cer del certificado FIEL (codificado Base64).

fielKey: Archivo .key del certificado FIEL (codificado Base64).

fielPass: Contraseña del certificado FIEL.

Ejemplo de valor para el parámetro jsonData (se muestra en varias líneas para que se entienda mejor, debe especificarse en una sola):
  1. {
      "servicio": "CFDIS",
      "fechaInicial": "2019-03-10 00:00:00",
      "fechaFinal": "2019-03-14 23:59:59",
      "tipoSolicitud": "AMBOS",
      "tipoTaxID": "EMISOR",
      "fielCer": "MIIG…",
      "fielKey": "MIIFDj…",
      "fielPass": "12345678a"
    }

SOLICITUD

A continuación se muestra la manera en que debe realizarse la solicitud:
  1. <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:JsonServiceCall>
             <ws:jsonData>{
      "servicio": "CFDIS",
      "fechaInicial": "2019-03-10 00:00:00",
      "fechaFinal": "2019-03-14 23:59:59",
      "tipoSolicitud": "AMBOS",
      "tipoTaxID": "EMISOR",
      "fielCer": "MIIG…",
      "fielKey": "MIIFDj…",
      "fielPass": "123XXXXa"
    }</ws:jsonData>
             <ws:transactionName>REGISTRAR_SOLICITUD_DM_SAT_HTML</ws:transactionName>
             <ws:token>wAw8LzeFYnhlw2Qc0/5MXwvO7OepjeLJd/jci7o5wxlQu5r19BZsJOIE+T1P7SOEHU95MWSyE+AMU=</ws:token>
          </ws:JsonServiceCall>
       </soap:Body>
    </soap:Envelope>

RESPUESTA
  1. <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>
          <JsonServiceCallResponse xmlns="http://www.fact.com.mx/schema/ws">
             <JsonServiceCallResult>
    {"Result":true,
    "Payload":"Respuesta en Base64",
    "ErrorMsg":"",
    "ErrorCode":0,
    "Token":"wAw8LzeFYnhlw2Qc0/5MXwvO7OepjeLJd/jc1mYOxk/t2S95ZDHVAIAR2Ve31as="}
        </JsonServiceCallResult>
          </JsonServiceCallResponse>
       </soap:Body>
    </soap:Envelope>
La respuesta, en caso de que los datos sean válidos, siempre será exitosa (Result con valor true). Esto no indica que la, o las solicitudes, fueron registradas de manera exitosa; cada una de ellas tendrá que ser revisada en lo que se devuelve en Payload.

Ejemplo de valor devuelto en Payload, para solicitud previa (aunque se muestra plano, y en varias líneas, el valor de Payload viene codificado Base64):
  1. [
      {
        "result": false,
        "id": null,
        "errMsg": "DbCmdBase failed. Database=MYSQL ExecType=SCALAR SpName=RegisterSatDMRequest Message=Existe solapamiento de fechas; Id: 16, Fecha Inicial: 2019-03-10 00:00:00, Fecha Final: 2019-03-14 23:59:59.",
        "servicio": "CFDIS",
        "fechaInicial": "2019-03-10 00:00:00",
        "fechaFinal": "2019-03-14 23:59:59",
        "tipoSolicitud": "Metadata",
        "tipoTaxID": "EMISOR"
      },
      {
        "result": true,
        "id": 19,
        "errMsg": null,
        "servicio": "CFDIS",
        "fechaInicial": "2019-03-10 00:00:00",
        "fechaFinal": "2019-03-14 23:59:59",
        "tipoSolicitud": "CFDI",
        "tipoTaxID": "EMISOR"
      }
    ]

En Payload se devuelven dos registros ya que la solicitud especificaba valor AMBOS en tipoSolicitud.

Una de estas solicitudes tuvo error (la primera), y la segunda éxito.

Para solicitudes con éxito, se devuelve valor en Id que identifica, de manera única, dicha solicitud y con el cual se le puede dar seguimiento en otras transacciones.

Aunque algún parámetro haya tenido valor AMBOS (como en este caso tipoSolicitud), la respuesta ya indica valores específicos para cada solicitud que se intentó generar, con o sin éxito.

Para solicitudes con error, en errMsg se devuelve un texto con el motivo del error en el registro; en caso de éxito errMsg tendrá valor null.

El resto de la información devuelta para cada solicitud (
servicio, fechaInicial, fechaFinal, tipoSolicitud y tipoTaxID), tendrá el valor indicado en los parámetros de entrada, excepto aquellos que tuvieron valor AMBOS y que son sustituidos por el valor específico en cada caso.

Para el caso de solapamiento, el mensaje de error siempre es el mismo (como el del primer caso de la respuesta ejemplo), así que procesando dicho mensaje se puede recuperar el Id y las fechas de la solicitud con la cual hubo solapamiento.

Notas para tener en cuenta:

·         La fecha indicada en fechaInicial tiene que ser menor que la fecha indicada en fechaFinal.

·         Por ahora la única hora permitida para fechaInicial es 00:00:00 y la única hora permitida para fechaFinal es 23:59:59; esto no evita que tengan que ser especificadas ambas.

·         Todos los parámetros que se especifican en jsonData son obligatorios; cualquiera que no sea indicado (o que su valor sea incorrecto contra lo especificado en este documento), generará un error cuyo mensaje indica el motivo.

·         En dependencia de los valores de los parámetros servicio, tipoSolicitud y tipoTaxID (que permiten valor AMBOS), se pueden generar hasta 8 solicitudes de una sola vez; es por ese motivo que la respuesta es una lista.

·         Cualquier error en el registro de una solicitud específica, no invalida el registro del resto de las solicitudes generadas por la misma transacción y que no tuvieron error.

·         El sistema no permite solapamientos de solicitudes; en otras palabras, no se permiten solicitudes cuyas fechas se solapen con alguna existente que sea del mismo solicitante (rfc que solicita la descarga), mismo servicio, mismo tipoSolicitud y mismo tipoTaxID (para el solapamiento no se tienen en cuenta aquellas solicitudes ya registradas y que generaron CodigoEstadoSolicitud con valor 5003, estas indican que se superó el tope máximo a descargar y por tanto hay que disminuir el período).