Árvore de páginas

Versões comparadas

Chave

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

...

Nome

Tipo

Descrição

oViagem

Objeto

Objeto contendo todos os atributos do XML referentes ao cabeçalho da viagem TOL.

aStops

 Array de Objetos

 Array de objetos contendo todos os atributos do XML referentes às paradas da viagem TOL, mais especificamente os atributos da tag stops.

aSubStopsArray de ObjetosArray de objetos contendo todos os atributos do XML referentes as subparadas da viagem TOL, mais especificamente os atributos da tag subStop.
cConteudoStringString contendo todo o conteúdo do XML recebido, permitindo assim acessar qualquer tag da Viagem recebida.
cNameSpaceStringString contendo a namespace existente no XML recebido.

05. RETORNO

Não se aplica.

...

Bloco de código
#INCLUDE "PROTHEUS.CH"

User Function OMSCPLAV()
	Local oViagem := PARAMIXB[1] //Objeto com todos os atributos da viagem
	Local aStops := PARAMIXB[2] //Array com os objetos de todas as paradas, tag "stop"
	Local aSubStops := PARAMIXB[3] //Array com os objetos de todas as sub-paradas, tag "subStop"
	Local cConteudo := PARAMIXB[4] //String com todo o conteúdo do XML
	Local cNameSpace := PARAMIXB[5] //String com a namespace do arquivo XML

	Local cRegional := Padr(oViagem:regionSourceId,TamSx3("DK0_REGID")[1])
	Local cViagem := Padr(oViagem:identifier,TamSx3("DK0_VIAGID")[1])

	Local cDesVei := Padr(oViagem:vehicleDescription,TamSx3("DK0_DESVEI")[1])
	Local nKmVei := 0

	Local cError := ""
	Local cWarning := ""

	If !Empty(oViagem:loads[1]:distance)
		nKmVei := Val(oViagem:loads[1]:distance)
	EndIf

	DK0->(DbSetOrder(1))
	If DK0->(DbSeek(xFilial('DK0')+cRegional+cViagem))
		RecLock('DK0',.F.)
		DK0->DK0_DESVEI := cDesVei
		DK0->DK0_KMVEI := nKmVei
		DK0->(MsUnlock())
	EndIf

	TmsLogMsg("INFO","[" + cValToChar(ThreadId()) + "-OMSCPLAV] PE OMSCPLAV Executado.")

Return

...

Bloco de código
#include "protheus.ch"
#include "parmtype.ch"
#INCLUDE "TOTVS.CH"

User Function OMSCPLAV()
	Local oViagem   := PARAMIXB[1] //Objeto com todos os atributos da viagem
	Local aStops    := PARAMIXB[2] //Array com os objetos de todas as paradas, tag "stop"
	Local aSubStops := PARAMIXB[3] //Array com os objetos de todas as sub-paradas, tag "subStop"
	Local cConteudo := PARAMIXB[4] //String com todo o conteúdo do XML
	Local cNameSpace := PARAMIXB[5] //String com a namespace do arquivo XML
	Local cRegional := AvKey(oViagem:regionSourceId, "DK0_REGID")
    Local cViagem   := AvKey(oViagem:identifier, "DK0_VIAGID")
	Local nVlrFret  := 0
	Local cTrsHub   := ""
	Local cTrsNme   := ""
	Local cTrnPrim  := ""
	Local cTpVcPrm  := ""
	Local oSubStop
	Local cError    := ""
	Local cWarning  := ""
	Local oXml      := NIL

	nVlrFret :=	oViagem:freightValue
	cTrnPrim := oViagem:carrierId
	cTpVcPrm := oViagem:vehicleId

	oXml := XmlParser( cConteudo, "_", @cError, @cWarning )
	If (oXml != NIL )
		IF ValType(XmlChildEx(oXml:_SOAP_ENVELOPE:_SOAP_BODY:_NS2_PUBLISHRELEASEDTRIP:_TRIPRELEASEREQUESTS:_TRIPRELEASEREQUEST[1]:_LOADS:_LOAD:_STOPS:_STOP[1]:_SUBSTOPS:_SUBSTOP:_LOADEDSHIPMENTUNITS:_SHIPMENTUNIT:_DELIVERYUNITLIST:_DELIVERYUNIT,"_ATTRIBUTES")) <> "U" 
			cTrsNme := OXML:_SOAP_ENVELOPE:_SOAP_BODY:_NS2_PUBLISHRELEASEDTRIP:_TRIPRELEASEREQUESTS:_TRIPRELEASEREQUEST[1]:_LOADS:_LOAD:_STOPS:_STOP[1]:_SUBSTOPS:_SUBSTOP:_LOADEDSHIPMENTUNITS:_SHIPMENTUNIT:_DELIVERYUNITLIST:_DELIVERYUNIT:_ATTRIBUTES:_ATTRIBUTE:_NAME:TEXT
			cTrsHub := OXML:_SOAP_ENVELOPE:_SOAP_BODY:_NS2_PUBLISHRELEASEDTRIP:_TRIPRELEASEREQUESTS:_TRIPRELEASEREQUEST[1]:_LOADS:_LOAD:_STOPS:_STOP[1]:_SUBSTOPS:_SUBSTOP:_LOADEDSHIPMENTUNITS:_SHIPMENTUNIT:_DELIVERYUNITLIST:_DELIVERYUNIT:_ATTRIBUTES:_ATTRIBUTE:_VALUE:TEXT
		EndIF	
	else
		OsLogCpl("PE OMSCPLAV -> Falha ao gerar Objeto XML : "+cError+" / "+cWarning,"INFO")
	EndIF

	DK0->(DbSetOrder(1))
	If DK0->(DbSeek(FwXFilial("DK0") + cRegional + cViagem))
		RecLock("DK0", .F.)
		DK0->DK0_XFRETE	:= nVlrFret
		DK0->DK0_XTRHB	:= cTrsHub
		DK0->(MsUnlock())
	EndIf

Return Nil

...