Histórico da Página
PONTO DE ENTRADA PARA MANIPULAÇÃO DO XML DA MENSAGEM ÚNICA.
Características do Requisito
Linha de Produto: | Microsiga Protheus | ||||||||||||||||||||||||||||||
Segmento: | Manufatura | ||||||||||||||||||||||||||||||
Módulo: | SIGAMNT - Manutenção de Ativos e Gestão de Frotas | ||||||||||||||||||||||||||||||
Rotina: |
| ||||||||||||||||||||||||||||||
Chamados Relacionados | MNG-1581 | ||||||||||||||||||||||||||||||
País(es): | Todos | ||||||||||||||||||||||||||||||
Banco(s) de Dados: | Todos | ||||||||||||||||||||||||||||||
Sistema(s) Operacional(is): | Todos |
Ponto de Entrada
Descrição: | Ponto de Entrada para manipulação do XML da mensagem única. | ||||||||
Localização: | SIGAMNT: Atualizações/Controle de Oficina/Cadastros Básicos/Funcionários SIGAMNT: Atualizações/Controle de Oficina/Ordem de Serviço/Corretiva SIGAMNT: Atualizações/Controle de Oficina/Retorno de O.S./Retorno Mod.2 SIGAMNT: Atualizações/Controle de Oficina/Solicitação de Serviço/Solicitação SIGAMNT: Atualizações/Controle de Riscos/Multas/Multa | ||||||||
Eventos: | Cadastro de Funcionário (MNTA020) Cadastro de Ordem de Serviço Corretiva (MNTA420) Retorno de O.S. Mod. 2 (MNTA435) Cadastro de Solicitação de Serviço (MNTA280) Registro de Multas (MNTA765) | ||||||||
Programa Fonte: | NGMUAMPPAT.PRX NGMUAPRCST.PRX NGMUCANMNO.PRX NGMUCANREQ.PRX NGMUGETSIT.PRX NGMUINFPAR.PRX NGMUMNTORD.PRX NGMUMNTREQ.PRX NGMUORDER.PRX NGMUREQUES.PRX NGMUSTOLVL.PRX NGMUSTOTUO.PRX | ||||||||
Função: | NGMUPE01() | ||||||||
Retorno: |
|
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include 'PROTHEUS.ch' #Include 'FWADAPTEREAI.CH' #Include 'XMLXFUN.ch' #Include 'FILEIO.ch' User Function NGMUPE01() Local cXML := ParamIXB[1] //(Caracter) XML que será enviado e que será alterado no ponto de entrada. Local lRet := ParamIXB[2] //(Lógico) Retorno que será enviado pelo adapter de mensagem única. Onde .T. indica que não houve erro na mensagem. Local cMsg := ParamIXB[3] //(Caracter) Indica a função que o P.E. está sendo chamado. Local nLoc := ParamIXB[4] //(Numérico) Indica o ponto no adapter em que é chamado a mensagem única: 1 - Final do adapter, com o XML gerado. Local cError := " " Local cWarning := " " Local cOrdem := "" Local cXmlNov := "" Private oXml := NilIfNil If Upper(cMsg) == "NGMUSTOTUO" //Verifica origem da mensagemcXmlNovmensagem cXmlNov := '<raiz>' + ALLTRIM(cXML) + '</raiz>' //Cria objeto para parsear XML oXml := XmlParser( cXmlNov, "_", @cError, @cWarning ) If oXml == NilReturn cXMLElseoXml Nil Return cXML Else oXml := XmlParser("<raiz>" + cXml + "</raiz>","_",@cError,@cWarning) //Gera o Objeto XML If Type("oXml:_raiz:_BusinessContent:_Observation") == "O" //Verifica se gerou corretamente o XMLcOrdemXML cOrdem := oXml:_raiz:_BusinessContent:_MainOrderCode:Text // Pega o código da O.S. que será enviado na mensagem. cOrdem := SubStr(cOrdem,1,TAMSX3("TJ_ORDEM")[1]) // Considera o tamanho correto da O.S. // Se a mensagem possui OS pega da STJ a bem utilizado. If !Empty(cOrdem) dbSelectArea("STJ") dbSetOrder(01) If dbSeek(xFilial("STJ")+cOrdem) dbSelectArea("ST9") dbSetOrder(01) If dbSeek(xFilial("ST9") + STJ->TJ_CODBEM) oXml:_raiz:_BusinessContent:_Observation:Text += " Nome Bem: " + ST9->T9_NOMEEndIfEndIfEndIfEndIfEndIf//Transforma o objeto em string SAVE oXml XMLSTRING cXmlNovcXmlNov := STRTRAN(ALLTRIM(cXmlNov),'<raiz>' ,'') cXmlNov := STRTRAN(ALLTRIM(cXmlNov),'</raiz>','') cXML := cXmlNovEndIfReturn cXML |
Exemplo:
#Include 'PROTHEUS.ch'
#Include 'FWADAPTEREAI.CH'
#Include 'XMLXFUN.ch'
#Include 'FILEIO.ch'
User Function NGMUPE01()
Local cXML := ParamIXB[1] //(Caracter) XML que será enviado e que será alterado no ponto de entrada.
Local lRet := ParamIXB[2] //(Lógico) Retorno que será enviado pelo adapter de mensagem única. Onde .T. indica que não houve erro na mensagem.
Local cMsg := ParamIXB[3] //(Caracter) Indica a função que o P.E. está sendo chamado.
Local nLoc := ParamIXB[4] //(Numérico) Indica o ponto no adapter em que é chamado a mensagem única: 1 - Final do adapter, com o XML gerado.
Local cError := " "
Local cWarning := " "
Local cOrdem := ""
Local cXmlNov := ""
Private oXml := Nil
If Upper(cMsg) == "NGMUSTOTUO" //Verifica origem da mensagem
cXmlNov := '<raiz>' + ALLTRIM(cXML) + '</raiz>'
//Cria objeto para parsear XML
oXml := XmlParser( cXmlNov, "_", @cError, @cWarning )
If oXml == Nil
Return cXML
Else
oXml := XmlParser("<raiz>" + cXml + "</raiz>","_",@cError,@cWarning) //Gera o Objeto XML
If Type("oXml:_raiz:_BusinessContent:_Observation") == "O" //Verifica se gerou corretamente o XML
cOrdem := oXml:_raiz:_BusinessContent:_MainOrderCode:Text // Pega o código da O.S. que será enviado na mensagem.
cOrdem := SubStr(cOrdem,1,TAMSX3("TJ_ORDEM")[1]) // Considera o tamanho correto da O.S.
// Se a mensagem possui OS pega da STJ a bem utilizado.
If !Empty(cOrdem)
dbSelectArea("STJ")
dbSetOrder(01)
If dbSeek(xFilial("STJ")+cOrdem)
dbSelectArea("ST9")
dbSetOrder(01)
If dbSeek(xFilial("ST9") + STJ->TJ_CODBEM)
oXml:_raiz:_BusinessContent:_Observation:Text += " Nome Bem: " + ST9->T9_NOME
EndIf
EndIf
EndIf
EndIf
EndIf
//Transforma o objeto em string
SAVE oXml XMLSTRING cXmlNov
NOME EndIf EndIf EndIf EndIf EndIf //Transforma o objeto em string SAVE oXml XMLSTRING cXmlNov cXmlNov := STRTRAN(ALLTRIM(cXmlNov),'<raiz>' ,'') |
cXmlNov := STRTRAN(ALLTRIM(cXmlNov),'</raiz>','') |
cXML |
:= cXmlNov
EndIf
Return cXML |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include |
EndIf
Return cXML
#Include'Protheus.ch' |
//--------------------------------------------------------------------- /*/{Protheus.doc} |
NGMUPE01 Ponto de entrada chamado pelos adapters da NG no envio dos XML's |
de integração via mensagem única. A implementação NGMUCANREQ visa |
identificar o RequestInternalId utilizado na integração e manipular o XML de |
cancelamento para obedecer o mesmo ID, independente do parâmetro. |
@param aPARAMIXB[1] - cXmlRet, xml montado no |
adapter @param aPARAMIXB[2] - retorno booleano para o adapter, confirma seu |
envio @param aPARAMIXB[3] - nome da mensagem |
integrada @param aPARAMIXB[4] - 1 para chamada no final do adapter, com XML |
montado @param aPARAMIXB[5] - Indica o tipo de transação. @param aPARAMIXB[6] - Indica o tipo de mensagem. @author NG |
Informática @since 07/10/ |
2016 @versiON P11, |
P12 @return Array (lRet, cXmlRet) /*/ //--------------------------------------------------------------------- User Function NGMUPE01() |
Local cXML := ParamIXB[1] //(Caracter) XML que será alterado no ponto de entrada. Local lRet := ParamIXB[2] //(Lógico) Retorno que será enviado pelo adapter de mensagem única. Local cMsg := ParamIXB[3] //(Caracter) Indica a função que o P.E. está sendo chamado. Local nLoc := ParamIXB[4] //(Numérico) Indica o ponto no adapter em que é chamado a mensagem única: 1 - Final do adapter, com o XML gerado. Local nTip := ParamIXB[5] //(Numérico) Indica o tipo de transação. Local cMen := ParamIXB[6] //(Caracter) Indica o tipo de mensagem. Local cError := ' ', cWarning := ' ' Local lAglutina, |
lAglutinou Local cInternalId := ' ' Private |
If
oXml If Upper(cMsg) == "NGMUREQUES" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_Observation") == "O" |
nPosIni := RAT('<Observation>',cXml) nPosCont := ( RAT('<ListOfApportionRequestItem>',cXml) - RAT('<Observation>',cXml) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) cObser := '<Observation>' + 'Teste de inclusao de Observacao' + '</Observation>' //Adiciona o Nome do Bem |
na Observação cXML := StrTran(cXml |
, cSubstit, cObser ) EndIf ElseIf Upper(cMsg) == "NGMUAMPPAT" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_Observation") == "O" |
nPosIni := RAT('<Observation>',cXml) nPosCont := ( RAT('</BusinessContent>',cXml) - RAT('<Observation>',cXml) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) cObser := '<Observation>' + 'Teste de inclusao de Observacao' + '</Observation>' //Adiciona o Nome do Bem |
na Observação cXML := StrTran(cXml, cSubstit, cObser |
) EndIf ElseIf Upper(cMsg) == "NGMUAPRCST" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_Observation") == "O" |
nPosIni := RAT('<Observation>',cXml) nPosCont := ( RAT('<ListOfApportionAppointmentCostItem>',cXml) - RAT('<Observation>',cXml |
) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) cObser := '<Observation>' + 'Teste de inclusao de Observacao' + '</Observation>' //Adiciona o Nome do Bem |
na Observação cXML := StrTran(cXml, cSubstit, cObser |
) EndIf ElseIf Upper(cMsg) == "NGMUCANMNO" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_CancelReason") == "O" |
nPosIni := RAT('<CancelReason>',cXml) nPosCont := ( RAT('<CancelRelatedRequests>',cXml) - RAT('<CancelReason>',cXml) ) cSubstit := SubStr(cXml,nPosIni |
,nPosCont) cCancel := '<CancelReason>' + 'Teste de cancelamento' + '</CancelReason>' //Adiciona informação no motivo |
cXML :=
de Cancelamento cXML := StrTran(cXml, cSubstit, cCancel |
) EndIf ElseIf Upper(cMsg) == "NGMUCANREQ" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_CancelReason") == "O" |
nPosIni := RAT('<CancelReason>',cXml) nPosCont := ( RAT('<CancelRelatedRequests>',cXml) - RAT('<CancelReason>',cXml) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) |
cCancel := '<CancelReason>' + 'Teste de cancelamento' + '</CancelReason>' //Adiciona informação no motivo |
cXML :=
de Cancelamento cXML := StrTran(cXml, cSubstit, cCancel |
) EndIf ElseIf Upper(cMsg) == "NGMUGETSIT" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning |
) If Type("oXml:_raiz:_BusinessContent:_RequestEmployeeSituations") == "O" |
nPosIni := RAT('<StartEmployeeCode>',cXml) nPosCont := ( RAT('<InternalId>',cXml) - RAT('<StartEmployeeCode>',cXml) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) |
cNewBra := '<StartEmployeeCode>' + 'Outro funcionario' + '</StartEmployeeCode>' //Adiciona informação de outro funcionário. |
cXML
cXML := StrTran(cXml, cSubstit, cNewBra |
) EndIf ElseIf Upper(cMsg) == "NGMUMNTORD" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_Observation") == |
"O" nPosIni := RAT('<Observation>',cXml) nPosCont := ( RAT('</BusinessContent>',cXml) - RAT('<Observation>',cXml) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) cObser := '<Observation>' + 'Teste de inclusao de Observacao' + '</Observation>' //Adiciona o Nome do Bem |
na Observação cXML := StrTran(cXml, cSubstit, cObser |
) EndIf ElseIf Upper(cMsg) == "NGMUORDER" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_BranchId") == "O" |
nPosIni := RAT('<BranchId>',cXml |
) nPosCont := ( RAT('<OrderItem>',cXml) - RAT('<BranchId>',cXml) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) |
cNewBra := '<BranchId>' + 'Teste de new branch.' + '</BranchId>' //Adiciona informação de new branch. |
cXML
cXML := StrTran(cXml, cSubstit, cNewBra |
) EndIf ElseIf Upper(cMsg) == "NGMUSTOLVL" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_RequestItem:_WarehouseInternalId") == "O" |
nPosIni := RAT('<WarehouseInternalId>',cXml) nPosCont := ( RAT('</RequestItem>',cXml) - RAT('<WarehouseInternalId>',cXml) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) |
cNewBra := '<WarehouseInternalId>' + 'Teste de local de estoque.' + '</WarehouseInternalId>' //Altera local de estoque. |
cXML
cXML := StrTran(cXml, cSubstit, cNewBra |
) EndIf ElseIf Upper(cMsg) == "NGMUSTOTUO" //Gera o Objeto XML oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning ) If Type("oXml:_raiz:_BusinessContent:_Observation") == "O" |
nPosIni := RAT('<Observation>',cXml) nPosCont := ( RAT('<ListOfApportionStockTurnoverItem>',cXml) - RAT('<Observation>',cXml |
) ) cSubstit := SubStr(cXml,nPosIni,nPosCont) cObser := '<Observation>' + 'Teste de Observação.' + '</Observation>' //Adiciona |
cXML :=
nova Observação cXML := StrTran(cXml, cSubstit, cObser |
)
EndIf
EndIf
Return cXML
|