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 | 12.1.15: XXXXXX | ||||||||||||||||||||||||||||||
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: |
|
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 :=
ParamIXB[5]//(Numérico) Indica o tipo de transação." "
Local
cWarning :=
ParamIXB[6]//(Caracter) Indica o tipo de mensagem." "
Local
cOrdem :=
' ',cWarning:=' 'Local lAglutina,lAglutinou""
Local cXmlNov := ""
Private oXml := Nil
Local cInternalId:=' 'Private oXml
//Localiza a mensagem que será alterada
If Upper(cMsg) == "
NGMUREQUES"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
//Gera o Objeto XML
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:_
ObservationoType:=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:_
TypeObservation:Text += " Nome Bem: " + ST9->T9_NOME
EndIf
EndIf
EndIf
EndIf
EndIf
//
Busca as posições inicial e final para alterar o XMLnPosIni :=RAT('<Observation>',cXml)nPosCont:=(RAT('<ListOfApportionRequestItem>',cXml)-RAT('<Observation>',cXml))//Localiza posição exata da alteração
cSubstit:=SubStr(cXml,nPosIni,nPosCont)cObser:='<Observation>'+'Teste de inclusao de Observacao'+'</Observation>'//Adiciona o Nome do Bem na ObservaçãoTransforma o objeto em string
SAVE oXml XMLSTRING cXmlNov
cXmlNov := STRTRAN(ALLTRIM(cXmlNov),'<raiz>' ,'')
cXmlNov := STRTRAN(ALLTRIM(cXmlNov),'</raiz>','')
cXML := cXmlNov
//Atualiza o XML com os dados alterados
cXML:=StrTran(cXml,cSubstit,cObser)EndIfEndIf
Return cXML