Histórico da Página
...
O ponto de entrada FI050POS, localizado no final da FINI050 permitindo rotina FINI050 (Integração EAI de títulos a pagar), permite a manipulação do retorno da rotina, ou seja alterando o XML de envio/retorno da mensagem unica.
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWADAPTEREAI.CH" /*/{Protheus.doc} FI050POS Ponto de entrada no final do adapter FINA050 (AccountPayableDocument) para tratamento do XML. @param ParamIXB[1] Indica o resultado da execução da função padrão. @param ParamIXB[2] Variável com conteúdo XML para envio/recebimento. @param ParamIXB[3] Tipo de transação (Envio / Recebimento). @param ParamIXB[4] Tipo de mensagem (Business Type, WhoIs, etc). @param ParamIXB[5] Versão da mensagem. @param ParamIXB[6] Nome da transação. @param ParamIXB[7] Objeto JSON (lógico). @author TOTVS @version P12 @return aRet - (array) Contém o resultado da execução e a mensagem XML de retorno. aRet[1] - (boolean) Indica o resultado da execução da função. aRet[2] - (caracter) Mensagem XML para envio. /*/ User Function FI050POS() Local aRet := {} Local lRet := ParamIXB[1] Local cXml := ParamIXB[2] Local cTypeTrans := ParamIXB[3] Local cTypeMsg := ParamIXB[4] Local lObjJSON := ParamIXB[7] Local cErro := "" Local oXml as object // Tratar o XML somente se a rotina retornou true. If lRet .and. !lObjJSON If cTypeTrans == TRANS_SEND // Envio de XML If (cTypeMsg == EAI_MESSAGE_BUSINESS) // Envio de Business Content // Trata o XML. oXml := tXmlManager():New() // Adicionando nó principal <FI050POS> para não dar erro de Parse oXml:Parse("<FI050POS>" + cXml + "</FI050POS>") // Se não deu erro no processamento. If Empty(cErro := oXml:Error()) If (oXml:XPathAddNode("/FI050POS/BusinessContent", "TesteTag", "Teste Mensagem")) lRet := .T. cXml := LimpaXML(oXml:Save2String()) EndIf Else lRet := .F. cXml := "<![CDATA[" + _NoTags(cErro) + "]]>" Endif oXml := nil ElseIf (cTypeMsg == EAI_MESSAGE_RESPONSE) // Envio de Response /* Tratar aqui o XML */ EndIf ElseIf cTypeTrans == TRANS_RECEIVE //Envio de XML If (cTypeMsg == EAI_MESSAGE_BUSINESS) // Recebimento de Business Content /* Tratar aqui o XML */ ElseIf (cTypeMsg == EAI_MESSAGE_RESPONSE) // Recebimento de Response /* Tratar aqui o XML */ EndIf Endif Endif aRet := {lRet, cXml} Return aRet /*/{Protheus.doc} LimpaXML Função auxiliar para remover o prólogo do XML gerado. @param cXml Texto XML a ser limpo. @author TOTVS @version P12 @return cXml - (caracter) Texto XML sem o prólogo. /*/ Static Function LimpaXML(cXml) Local cXmlRet := AllTrim(cXml) Local nChar // Retira o prólogo da mensagem. If cXmlRet = "<?" cXmlRet := SubStr(cXmlRet, At("?>", cXmlRet) + 2) Endif // Retira o recuo de linha (CR e LF) e espaços do começo da string. Do While (nChar := asc(left(cXmlRet, 1)), nChar = 10 .or. nChar = 13 .or. nChar = 32) cXmlRet := SubStr(cXmlRet, 2) EndDo // Retira o recuo de linha (CR e LF) e espaços do fim da string. Do While (nChar := asc(right(cXmlRet, 1)), nChar = 10 .or. nChar = 13 .or. nChar = 32) cXmlRet := SubStr(cXmlRet, 1, len(cXmlRet) - 1) EndDo // Retira o <FI050POS> e </FI050POS>. If cXmlRet = "<FI050POS>" .and. right(cXmlRet, 11) == "</FI050POS>" cXmlRet := SubStr(cXmlRet, 11, len(cXmlRet) - 21) Endif Return cXmlRet |
04. DEMAIS INFORMAÇÕES
Não há
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas