Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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:

Rotina

Nome Técnico

NGMUORDER

Pedido de Compra (Mensagem Única)

Rotina(s) envolvida(s)

Nome Técnico

NGMUORDER

Pedido de Compra (Mensagem Única)

NGMUAMPPATBaixa de Estoque (Mensagem Única)
NGMUAPRCSTApropriação de Custo (Mensagem Única)
NGMUCANMNOCancelamento de OS (Mensagem Única)
NGMUCANREQCancelamento de Requisição (Mensagem Única)
NGMUGETSITSituação do Funcionário (Mensagem Única)
NGMUINFPARTítulos a Pagar (Mensagem Única)
NGMUMNTORDOrdem de Serviço (Mensagem Única)
NGMUMNTREQSolicitação de Serviço (Mensagem Única)
NGMUREQUESCancelamento de Requisição Solicitação (Mensagem Única)
NGMUSTOLVLConsulta de Saldo (Mensagem Única)
NGMUSTOTUOBaixa de Estoque (Mensagem Única)

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:

NomeTipoDescriçãoObrigatório
cXMLCaracterRetorna o XML customizado.Sim

 

Bloco de código
languagejava
firstline1
titleExemplo 1
linenumberstrue
collapsetrue
#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

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
 := cXmlNov
		
	EndIf
	
Return cXML
Bloco de código
languagejava
firstline1
titleExemplo 2
linenumberstrue
collapsetrue
#Include 

EndIf

Return cXML

#Include
'Protheus.ch'



//---------------------------------------------------------------------
/*/{Protheus.doc}
NGMUPE01Ponto
 NGMUPE01
Ponto de entrada chamado pelos adapters da NG no envio dos XML's
deintegração
 de
integração via mensagem única. A implementação NGMUCANREQ visa
identificaro
 identificar
o RequestInternalId utilizado na integração e manipular o XML de
cancelamentopara
 cancelamento
para obedecer o mesmo ID, independente do parâmetro.



@param aPARAMIXB[1] - cXmlRet, xml montado no
adapter@param
 adapter
@param aPARAMIXB[2] - retorno booleano para o adapter, confirma seu
envio@param
 envio
@param aPARAMIXB[3] - nome da mensagem
integrada@param
 integrada
@param aPARAMIXB[4] - 1 para chamada no final do adapter, com XML
montado@param
 montado
@param aPARAMIXB[5] - Indica o tipo de transação.
@param aPARAMIXB[6] - Indica o tipo de mensagem.
@author NG
Informática@since
 Informática
@since 07/10/
2016@versiON
2016
@versiON P11,
P12@return
 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,
lAglutinouLocal
 lAglutinou
Local cInternalId := ' '
Private
oXml
   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 

			
			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 :=
 na Observação    
			 
			cXML := StrTran(cXml
, cSubstit, cObser )    EndIfElseIf
, 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 

			
			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 :=
 na Observação    
			
			cXML := StrTran(cXml, cSubstit, cObser
)    EndIfElseIf
 )    
			
		EndIf
	
	ElseIf Upper(cMsg) == "NGMUAPRCST"
	
		//Gera o Objeto XML
		oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning )
		If Type("oXml:_raiz:_BusinessContent:_Observation") == "O"
nPosIni 

			
			nPosIni  := RAT('<Observation>',cXml)
			nPosCont := ( RAT('<ListOfApportionAppointmentCostItem>',cXml) - RAT('<Observation>',cXml
) )cSubstit
) )
			
			cSubstit := SubStr(cXml,nPosIni,nPosCont)
			cObser := '<Observation>' + 'Teste de inclusao de Observacao' + '</Observation>' //Adiciona o Nome do Bem
na Observação    cXML :=
 na Observação    
			
			cXML := StrTran(cXml, cSubstit, cObser
)    EndIfElseIf
 )    
			
		EndIf
	
	ElseIf Upper(cMsg) == "NGMUCANMNO"
	
		//Gera o Objeto XML
		oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning )
		If Type("oXml:_raiz:_BusinessContent:_CancelReason") == "O"
nPosIni 

			
			nPosIni  := RAT('<CancelReason>',cXml)
			nPosCont := ( RAT('<CancelRelatedRequests>',cXml) - RAT('<CancelReason>',cXml) )
			
			cSubstit := SubStr(cXml,nPosIni
,nPosCont)cCancel 
,nPosCont)
			cCancel  := '<CancelReason>' + 'Teste de cancelamento' + '</CancelReason>' //Adiciona informação no motivo
de Cancelamento    
cXML :=
 de Cancelamento    

			cXML := StrTran(cXml, cSubstit, cCancel
)    EndIfElseIf
 )    
			
		EndIf
	
	ElseIf Upper(cMsg) == "NGMUCANREQ"
	
		//Gera o Objeto XML
		oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning )
		If Type("oXml:_raiz:_BusinessContent:_CancelReason") == "O"
nPosIni 

			
			nPosIni  := RAT('<CancelReason>',cXml)
			nPosCont := ( RAT('<CancelRelatedRequests>',cXml) - RAT('<CancelReason>',cXml) )
			
			cSubstit := SubStr(cXml,nPosIni,nPosCont)
cCancel 

			cCancel  := '<CancelReason>' + 'Teste de cancelamento' + '</CancelReason>' //Adiciona informação no motivo
de Cancelamento    
cXML :=
 de Cancelamento    

			cXML := StrTran(cXml, cSubstit, cCancel
)    EndIfElseIf
 )    
			
		EndIf
	
	ElseIf Upper(cMsg) == "NGMUGETSIT"
	
		//Gera o Objeto XML
		oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning
)
 )
		If Type("oXml:_raiz:_BusinessContent:_RequestEmployeeSituations") == "O"
nPosIni 

			
			nPosIni  := RAT('<StartEmployeeCode>',cXml)
			nPosCont := ( RAT('<InternalId>',cXml) - RAT('<StartEmployeeCode>',cXml) )
			
			cSubstit := SubStr(cXml,nPosIni,nPosCont)
cNewBra 

			cNewBra  := '<StartEmployeeCode>' + 'Outro funcionario' + '</StartEmployeeCode>' //Adiciona informação de outro funcionário.
  
cXML
  

			cXML := StrTran(cXml, cSubstit, cNewBra
)    EndIf   ElseIf
 )    
			
		EndIf
	
   	ElseIf Upper(cMsg) == "NGMUMNTORD"
	
		//Gera o Objeto XML
		oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning )
		If Type("oXml:_raiz:_BusinessContent:_Observation") ==
"O"nPosIni 
 "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 :=
 na Observação    
			
			cXML := StrTran(cXml, cSubstit, cObser
)    EndIfElseIf
 )    
			
		EndIf
	
	ElseIf Upper(cMsg) == "NGMUORDER"
	
		//Gera o Objeto XML
		oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning )
		If Type("oXml:_raiz:_BusinessContent:_BranchId") == "O"
nPosIni 

			
			nPosIni  := RAT('<BranchId>',cXml
)
)
			nPosCont := ( RAT('<OrderItem>',cXml) - RAT('<BranchId>',cXml) )
			
			cSubstit := SubStr(cXml,nPosIni,nPosCont)
cNewBra 

			cNewBra  := '<BranchId>' + 'Teste de new branch.' + '</BranchId>' //Adiciona informação de new branch.
  
cXML
  

			cXML := StrTran(cXml, cSubstit, cNewBra
)    EndIf     ElseIf
 )    
			
		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 

		
			nPosIni  := RAT('<WarehouseInternalId>',cXml)
			nPosCont := ( RAT('</RequestItem>',cXml) - RAT('<WarehouseInternalId>',cXml) )
			
			cSubstit := SubStr(cXml,nPosIni,nPosCont)
cNewBra 

			cNewBra  := '<WarehouseInternalId>' + 'Teste de local de estoque.' + '</WarehouseInternalId>' //Altera local de estoque.
  
cXML
  

			cXML := StrTran(cXml, cSubstit, cNewBra
)    EndIf   ElseIf
 )    
			
		EndIf
	
   	ElseIf Upper(cMsg) == "NGMUSTOTUO"	
	
		//Gera o Objeto XML
		oXml := XmlParser( "<raiz>"+cXml+"</raiz>", "_", @cError, @cWarning )
		If Type("oXml:_raiz:_BusinessContent:_Observation") == "O"
nPosIni 

			
			nPosIni  := RAT('<Observation>',cXml)
			nPosCont := ( RAT('<ListOfApportionStockTurnoverItem>',cXml) - RAT('<Observation>',cXml
) )cSubstit
) )
			
			cSubstit := SubStr(cXml,nPosIni,nPosCont)
			cObser := '<Observation>' + 'Teste de Observação.' + '</Observation>' //Adiciona
nova Observação    
cXML :=
 nova Observação    

			cXML := StrTran(cXml, cSubstit, cObser
)    EndIf  EndIfReturn cXML
 )    
			
		EndIf  
	
	EndIf
	
Return cXML