Histórico da Página
MATI225 - Mensagem única de consulta de nível de estoque
Características do Requisito
Linha de Produto: | Protheus | ||||
Segmento: | Manufatura | ||||
Módulo: | SIGAEST - Estoque e Custos | ||||
Rotina: |
| ||||
Requisito / Story / Issue: | DMANMAT01-17771 | ||||
Parâmetro(s): |
|
Ponto de Entrada
Descrição: | Ponto de entrada | MT241EAI, localizada na MATI241, altera os vetores de dados que são enviados para a rotina automática da MATA241 (movimentação de estoque)MI255POS, localizado no final da MATI225 permitindo que o retorno da rotina seja manipulado. | ||||
Eventos: | O ponto de entrada será executado durante o ao final do recebimento da mensagem única de movimentação nível de estoque (StockturnoverStockLevel). | |||||
Programa Fonte: | MATI241MATI225.PRW | |||||
Função: | MATI241 MATI225 - Função de integração com o adapter EAI para baixa da movimentação consulta de nível de estoque (StockturnoverStockLevel) utilizando o conceito de mensagem unicade mensagem única. | |||||
Parâmetros: | ParamIXB[1] - Indica o resultado da execução da função padrão. | |||||
Retorno: | Será retornado um array com | 3 posiçoes duas posições conforme tabela:
| ||||
aCab | Array | Cabeçalho que será enviado para a rotina automática MATA241. | Sim | |||
aTotItem | Array | Itens que serão enviados para a rotina automática MATA241. | Sim |
Exemplo:
#include 'protheus.ch'
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWADAPTEREAI.CH"
/*/{Protheus.doc} MI255POS
Ponto de entrada no final do adapter MATI225 (StockLevel) 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 Felipe Raposo
@version P12
@since 21/02/2019
@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 MI255POS()
Local aRet := {}
Local lRet := ParamIXB[1]
Local cXml := ParamIXB[2]
Local cTypeTrans := ParamIXB[3]
Local lObjJSON := ParamIXB[7]
Local cErro := ""
Local cXMLPath := ""
Local oXml as object
Local aReturn := {}
Local cFilDest := ""
Local cSubFil := ""
Local nX
// Tratar o XML somente se a rotina retornou true.
If lRet .and. !lObjJSON .and. cTypeTrans == TRANS_RECEIVE
// Trata o XML.
oXml := tXmlManager():New()
oXml:Parse(cXml)
If Empty(cErro := oXml:Error())
aReturn := oXml:XPathGetChildArray('/ListOfReturnItem')
For nX := 1 to len(aReturn)
cXMLPath := aReturn[nX, 2]
cFilDest := PadR(oXml:xPathGetNodeValue(cXMLPath + '/BranchId'), len(cFilAnt))
DB5->(dbSetOrder(2)) // DB5_FILIAL, DB5_FILABA.
If DB5->(dbSeek(xFilial() + cFilDest, .F.))
cSubFil := DB5->DB5_SUBFIL
Else
cSubFil := ""
Endif
oXml:XPathAddNode(cXMLPath, "SubBranch", cSubFil)
Next nX
Endif
// Se deu erro no processamento.
If empty(cErro)
lRet := .T.
cXml := LimpaXML(oXml:Save2String())
Else
lRet := .F.
cXml := "<![CDATA[" + _NoTags(cErro) + "]]>"
Endif
oXml := nil
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 Felipe Raposo
@version P12
@since 21/02/2019
@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) do começo da string.
Do While (nChar := asc(left(cXmlRet, 1, 1)), nChar = 10 .or. nChar = 13)
cXmlRet := SubStr(cXmlRet, 2)
EndDo
Return cXmlRetuser function MT241EAI()
Local aCab := PARAMIXB[1]
local atotitem := PARAMIXB[2]
conOut("Passou MT241EAI")
Return {aCab, atotitem}