Árvore de páginas

Versões comparadas

Chave

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

...

Informações
titleIMPORTANTE!
  • Os códigos armazenados nos campos DK0_VEIC2 e DK0_VEIC3 deverão estar previamente  devem ser previamente cadastrados na tabela DA3 (Veículos).
  • O código armazenado no campo DK0_MOTORI deverá estar deve ser previamente cadastrado na tabela DA4 (Motoristas).
  • Os códigos armazenados nos campos DK0_AJUDA1, DK0_AJUDA2 e DK0_AJUDA3 deverão estar devem ser previamente cadastrados na tabela DAU (Ajudantes).
  • Portanto, a partir do dado recebido (placa para veículos, CPF para Motoristas ou Ajudantes) deverá ser será efetuada a busca do código relacionado na respectiva tabela mencionada.
  • Caso algum dos códigos mencionados acima não esteja cadastrado conforme indicado, ao gerar a carga o código em questão será descartado e não será replicado para a Carga (tabela DAK).

03. LOCALIZAÇÃO

Localizado na função ProcViagem da rotina OMSXCPLA, logo após a gravação das tabelas de Viagem (DK0  e DK1).

...

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.

...

Caso encontre o elemento do xml XML desejado na tabela abaixo, o exemplo 01 Exemplo 1 pode ser utilizado. Caso contrário será , é necessário realizar o parser do xml XML conforme exemplo o Exemplo 2.

ElementoTipoTamanhoDecimal
oViagem:carrierIdC30
oViagem:freightValueN154
oViagem:identifierC50
oViagem:regionSourceIdC70
oViagem:vehicleDescriptionC140
oViagem:vehicleId C60
oViagem:loads[1]:distanceC90
oViagem:loads[1]:freightC30
oViagem:loads[1]:loadModeC10
oViagem:loads[1]:modalC10
oViagem:loads[1]:serviceDescriptionTypeC150
oViagem:loads[1]:serviceTypeIdC10
oViagem:loads[1]:stops[1][1]:identifierC40
oViagem:loads[1]:stops[1][1]:localitySourceIdC90
oViagem:loads[1]:stops[1][1]:sequenceOnLoadC10
oViagem:loads[1]:stops[1][1]:transportZoneDescriptionC190
oViagem:loads[1]:stops[1][1]:transportZoneIdC190
oViagem:loads[1]:stops[1][1]:SUBstops[1]:arrivalTimeC290
oViagem:loads[1]:stops[1][1]:SUBstops[1]:departureTimeC290
oViagem:loads[1]:stops[1][1]:SUBstops[1]:endServiceTimeC290
oViagem:loads[1]:stops[1][1]:SUBstops[1]:identifierC40
oViagem:loads[1]:stops[1][1]:SUBstops[1]:startServiceTimeC290

08. EXEMPLO 1

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

09. EXEMPLO 2

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&("OXML:_SOAP_ENVELOPE:_SOAP_BODY:_NS2" + cNameSpace + "_PUBLISHRELEASEDTRIP:_TRIPRELEASEREQUESTS:_TRIPRELEASEREQUEST[1]:_LOADS:_LOAD:_STOPS:_STOP[1]:_SUBSTOPS:_SUBSTOP:_LOADEDSHIPMENTUNITS:_SHIPMENTUNIT:_DELIVERYUNITLIST:_DELIVERYUNIT","_ATTRIBUTES"))) <> "U" 
			cTrsNme := &("OXML:_SOAP_ENVELOPE:_SOAP_BODY:_NS2" + cNameSpace + "_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" + cNameSpace + "_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

...