readResponse(context)

Note:

To access the LATAM E-Document Certification SuiteApp documentation in Brazilian Portuguese (Português do Brasil), see LATAM E-Document Certification.

Example
          function readResponse(context) {
   var requestType = context.requestParameters.requestType;

   if (!requestType) {
      var operationTypeExternalId = context.operationTypeExternalId;

      if (operationTypeExternalId === "Send E-Document") {
         requestType = "RecepcionarLoteRpsRequest";
      }        
      if (operationTypeExternalId === "Cancel") {
         requestType = "CancelarNfseRequest";
      }
   }

   var xmlParse = parseXml(context.response.body);
   var success = false;

   var responseContents = xml.XPath.select({
      node: xmlParse,
      xpath: '//return'
   })[0].textContent;

   var responseParsedXml = parseXml(responseContents);
   var originalParsedXml = parseXml(context.eDocContent);

   var details = null;
   var certificationProtocol = "";
   var messageCode = "";   
   var message = "";
   var fixMessage = "";
   var certificationDate = null;
   var documentSeries = "";
   var transitoryDocumentNumber = "";
   var certifiedDocumentNumber = "";
   var accessKey = "";
   var subsidiaryCnpj = "";
   var subsidiaryInscricaoMunicipal = "";

   switch(requestType) {
      case "RecepcionarLoteRpsRequest": {
         certificationProtocol = taxAuthLib.getFirstElementByTagName(responseParsedXml, 'ns3:Protocolo');
 
         messageCode = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Codigo')]");
         message  = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Mensagem')]");
         fixMessage = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Correcao')]");
 
         message = taxAuthLib.formatErrorMessage(message, messageCode, fixMessage);
 
         subsidiaryCnpj = taxAuthLib.getFirstElementByTagName(originalParsedXml, 'Cnpj');
         subsidiaryInscricaoMunicipal = taxAuthLib.getFirstElementByTagName(originalParsedXml, 'InscricaoMunicipal');
 
         if (checkSuccessRecepcionarLote(messageCode, certificationProtocol)) {
            success = true;
            details = {
               subsidiaryCnpj: subsidiaryCnpj,
               subsidiaryInscricaoMunicipal: subsidiaryInscricaoMunicipal,
               certificationProtocol: certificationProtocol
            };
             
         } else {
            details = {
               messageCode: messageCode
            };
         }
 
         break;
      }
      case "ConsultarLoteRpsRequest": {
         messageCode = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Codigo')]");
         message  = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Mensagem')]");
         fixMessage = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Correcao')]");
          
         message = taxAuthLib.formatErrorMessage(message, messageCode, fixMessage);
          
         var certificationDateString = taxAuthLib.getFirstElementByTagName(responseParsedXml, 'ns4:DataEmissao');
 
         if (errorCodeToReprocess(messageCode)) {
 
            success = true;
            details = {
               messageCode: messageCode,
               subsidiaryCnpj: context.requestParameters.subsidiaryCnpj,
               subsidiaryInscricaoMunicipal: context.requestParameters.subsidiaryInscricaoMunicipal,
               certificationProtocol: context.requestParameters.certificationProtocol
            };
 
         } else if (checkSuccessConsultarLote(messageCode, certificationDateString)) {
            documentSeries = taxAuthLib.getElementByXpath(responseParsedXml, "//*[name()='ns4:IdentificacaoRps']//*[name()='ns4:Serie']");
            transitoryDocumentNumber = taxAuthLib.getElementByXpath(responseParsedXml, "//*[name()='ns4:IdentificacaoRps']//*[name()='ns4:Numero']");
            certificationDate = taxAuthLib.parseISODatetime(certificationDateString);
            certifiedDocumentNumber = taxAuthLib.getElementByXpath(responseParsedXml, "//*[name()='ns4:InfNfse']//*[name()='ns4:Numero']");
            accessKey = taxAuthLib.getElementByXpath(responseParsedXml, "//*[name()='ns4:InfNfse']//*[name()='ns4:CodigoVerificacao']");
             
            success = true;
            details = {
               certificationDate: certificationDate,
               documentSeries: documentSeries,
               transitoryDocumentNumber: transitoryDocumentNumber,
               certifiedDocumentNumber: certifiedDocumentNumber,
               documentAccessKey: accessKey,
               additionalInformation: {
                  certificationDateString: certificationDateString
               }
            };
         } else {
            success = false;
            details = {
               messageCode: messageCode
            }
         }
         break;
      }
      case "CancelarNfseRequest": {
         messageCode = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Codigo')]");
         message  = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Mensagem')]");
         fixMessage = taxAuthLib.getElementByXpath(responseParsedXml, "//*[contains(name(), ':MensagemRetorno')]//*[contains(name(), ':Correcao')]");
 
         message = taxAuthLib.formatErrorMessage(message, messageCode, fixMessage);
 
         if (checkSuccessCancelarNfse(messageCode)) {
            certifiedDocumentNumber = taxAuthLib.getFirstElementByTagName(responseParsedXml, 'ns5:Numero') || taxAuthLib.getFirstElementByTagName(originalParsedXml, 'tns:NumeroNfse');
            var certificationDateString = taxAuthLib.getFirstElementByTagName(responseParsedXml, 'ns5:DataHora');
            certificationDate = taxAuthLib.parseISODatetime(certificationDateString);
            success = true;
 
            details = {
               certificationDate: certificationDate,
               certifiedDocumentNumber: certifiedDocumentNumber,
               additionalInformation: {
                  certificationDateString: certificationDateString
               }
            };
         } else {
            details = {
               messageCode: messageCode
            };
         }
 
         break;
      }
   }


   return {
      success: success,
      message: message,
      contents: responseContents,
      details: details
   };
}; 

        

General Notices