01. DADOS GERAIS
Linha de Produto: | Microsiga Protheus® |
---|---|
Segmento: | Serviços |
Módulo: | Financeiro |
Rotina: | FINI050 - Adapter títulos a pagar (AccountPayableDocument) |
02. DESCRIÇÃO
O ponto de entrada FI050POS, localizado no final da rotina FINI050 (Integração EAI de títulos a pagar), permite a manipulação do XML de envio/retorno da mensagem unica.
Importante
Parâmetros:
ParamIXB[1] - Indica o resultado da execução da função padrão.
ParamIXB[2] - Variável com conteúdo XML para envio/recebimento.
ParamIXB[3] - Tipo de transação (Envio / Recebimento).
ParamIXB[4] - Tipo de mensagem (Business Type, WhoIs, etc).
ParamIXB[5] - Versão da mensagem.
ParamIXB[6] - Nome da transação.
ParamIXB[7] - Objeto JSON (lógico).
Retorno:
Será retornado um array com duas posições conforme tabela:
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
lRet | Lógico | Indica se o processamento foi bem sucedido. | Sim |
cXML | Caractere | Texto de retorno da mensagem EAI. | Sim |
03. EXEMPLO DE UTILIZAÇÃO
FI050POS
#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á
05. ASSUNTOS RELACIONADOS
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas