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 TOTVS Otimização Logística, possibilitando assim a gravação de outras informações presentes no XML.

Exemplo

Acessar a informação de data de início da viagem no XML, tag startServiceTime e gravar em um campo customizado na tabela da Viagem CPL (DK0).

  • 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 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.

05. RETORNO

Não se aplica.

06. VERSÕES

Protheus 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>