01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

Módulo:SIGAOMS - Gestão de Distribuição
Função:OMSXCPLA - Recebimento de Viagem
País:Todos Países
Ticket:-
Requisito/Story/Issue (informe o requisito relacionado) :-


02. DESCRIÇÃO

Este Ponto de Entrada permite a manipulação das tabelas responsáveis por armazenar a viagem recebida pelo Cockpit Logístico, possibilitando assim a gravação de outras informações presentes no XML.

Exemplo

  • Os códigos armazenados nos campos DK0_VEIC2 e DK0_VEIC3 deverão estar previamente cadastrados na tabela DA3 (Veículos).
  • O código armazenado no campo DK0_MOTORI deverá estar previamente cadastrado na tabela DA4 (Motoristas).
  • Os códigos armazenados nos campos DK0_AJUDA1, DK0_AJUDA2 e DK0_AJUDA3 deverão estar previamente cadastrados na tabela DAU (Ajudantes).
  • Portanto, a partir do dado recebido (placa para veículos, CPF para Motoristas ou Ajudantes) deverá ser efetuada a busca do código relacionado na 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).

04. PARÂMETROS

Nome

Tipo

Descrição

oViagem

Objeto

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

aStops

 Array de Objetos

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

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

05. RETORNO

Este Ponto de Entrada não possui retorno.

06. VERSÕES

12.1.17 ou superiores

07. OBSERVAÇÃO

Todos os parâmetros são recebidos na User Function via PARAMIXB, conforme consta em Execblock / Customização.

08. EXEMPLO

#INCLUDE "PROTHEUS.CH"

User Function OMSCPLAV()
Local oSubStop   := Nil
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 cRegional  := Padr(oViagem:regionSourceId,TamSx3("DK0_REGID")[1])
Local cViagem    := Padr(oViagem:identifier,TamSx3("DK0_VIAGID")[1])
Local cDateStart := ""

	//primeiro subStop
	oSubStop := aSubStops[1]
	
	cDateStart := SubStr(oSubStop:startServiceTime,9,2)+'/'+;
				  SubStr(oSubStop:startServiceTime,6,2)+'/'+;
				  SubStr(oSubStop:startServiceTime,1,4)
	
    DK0->(DbSetOrder(1))
    If DK0->(DbSeek(xFilial('DK0')+cRegional+cViagem))
        RecLock('DK0',.F.)
        DK0->DK0_XCPO := cDateStart //Campo customizado
        DK0->(MsUnlock())
    EndIf

    //A função TmsLogMsg exibe mensagens no corpo do arquivo console.log
    If Empty(cConteudo)
       TmsLogMsg("WARN","[" + cValToChar(ThreadId())  + "-OMSCPLAV] Variável 'cConteudo' está vazia.")
    else
       TmsLogMsg("WARN","[" + cValToChar(ThreadId())  + "-OMSCPLAV] Variável 'cConteudo' está preenchida com " + cValToChar(Len(cConteudo)) + " bytes.")   

	   oXml    := XmlParser(cConteudo, "NS1", @cError,  @cWarning )
   	   cViagem := oXml:_SOAP_ENVELOPE:_SOAP_BODY:_NS2_PUBLISHRELEASEDTRIP:_TRIPRELEASEREQUESTS:_TRIPRELEASEREQUEST:_IDENTIFIER:TEXT
       TmsLogMsg("WARN","[" + cValToChar(ThreadId())  + "-OMSCPLAV] Viagem " + cViagem + " recebida com sucesso.")      
    Endif

Return




<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}

.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
	background: #FF9900; !important 
}

.menu-item.active-tab { 
	border-bottom: none !important; 
}

</style>