Páginas filhas
  • Integração TOTVS OMS x TOTVS Planejamento de Rotas (TPR)

Versões comparadas

Chave

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

Conteúdo

Âncora
indice
indice
Índice
maxLevel3
exclude.*Conteúdo
stylenone
printablefalse


1. Contexto de Negócio

O TOTVS OMS passa a ter uma nova funcionalidade para realizar a montagem das cargas, o sequenciamento das entregas e a visualização do mapa das entregas.

Com base na seleção de um grupo de pedidos ou itens de pedidos de vendas liberados, veículos e mais algumas configurações serão geradas cargas automaticamente de forma a otimizar a ocupação dos veículos e traçar a melhor rota de entrega dos pedidos.

Para utilizar essa funcionalidade, basta aderir ao plano (Complemento do termo de uso da TOTVS Store) que mais se adequa ao seu cenário e seguir as orientações descritas na sequência desse documento.

Mais informações sobre como será realizada a montagem da carga/sequenciamento da entrega podem ser consultados em: TOTVS Planejamento de Rotas.


2. Instalação / Configuração

Informações
titleATENÇÃO

Esta funcionalidade será disponibilizada oficialmente no Release 12.1.37 do Protheus, conforme Ciclo de Vida de Software - TOTVS Linha Protheus
Entretanto, já é possível utilizar a mesma estando nos Releases 12.1.27 ou 12.1.33 do Protheus, basta baixar os pacotes de Expedição Contínua dos módulos: OMS, TMS e FAT.

Aplique o pacote da expedição (Expedição Contínua Protheus) contínua conforme a versão da sua Release, aceitando somente os fontes atualizados.

Informações
titleIMPORTANTE

A funcionalidade não pode ser executada pelo SmartClient Html (Web App).


2.1. Arquivos Relacionados ao Mapa (Data / Web)

(RAQUEL  REVISAR) Verifique se os arquivos index.html e tprchannel.js enviados no pacote de expedição contínua do Protheus OMS constam na pasta Web, conforme PATH configurado (PATH=C:\Bases\environment1\data\web).

2.2. Atualização do Menu do OMS


Atualize o menu do Protheus OMS baixando somente o arquivo sigaoms.xnu conforme o seu ambiente: 

Atualização de menu com dicionário no banco: Atualização de menus que estão no Banco de Dados 

Atualização de menu sem dicionário no banco: Atualizar menus dos módulos


Novos programas de menu do TPR:

RotinaMenu
OMSATPR1Envio de Pedidos
TMSAO15Cadastro Referência Geográfica
TMSAC19Painel Integração Planejamento de Rotas
TMSAC23Controle de Integração Planejamento de Rotas
TMSAC20Configuração Planejamento de Rotas

2.1. Fontes / Versões Mínimas

Após a atualização dos pacotes da expedição contínua, caso desejar conferir se a aplicação dos pacotes está correta, na tabela abaixo são listados os fontes e suas versões mínimas:

MóduloRotinaDescriçãoVersão Mínima
Faturamento  FATXFUN.PRXFunções Genéricas FAT05/11/2021 19:21:13
FaturamentoMATA410.PRXPedidos05/11/2021 19:21:13
FaturamentoMATA461.PRX Preparação dos Documentos de Saída05/11/2021 19:21:13
Faturamento MATV410.PRWFunções para o Estorno de Pedidos05/11/2021 19:21:13
OMSOMSA200.PRW Montagem de Carga25/11/2021 11:53:05
OMSOMSATPR1.PRWEnvio de Pedidos - TPR (Menu)23/11/2021 23:09:29
OMSOMSATPR1A.PRWFunções do Envio de Pedidos - TPR.23/11/2021 23:09:29
OMSOMSATPR2.PRWProcessamento do CallBack do retorno das viagens/carga - TPR.25/11/2021 11:53:05
OMS  OMSATPR3.PRWVisualização do mapa da carga gerada (OMSA200 > Ações Relacionadas > Visualizar Mapa).16/11/2021 16:38:22
OMSOMSATPR4.PRWValidações para a alteração e estorno de pedidos integrados com o TPR.16/11/2021 16:38:22
OMSOMSXFUN.PRWFunções Genéricas WMS.16/11/2021 16:38:22
TMSTMSAC18.PRWMétodos de Envio - Integração Planejamento de Rotas.12/11/2021 17:41:08
TMSTMSAC19.PRWPainel Integração Planejamento de Rotas (TPR): Rotina que armazenará as informações referentes ao envio de informações para a integração TOTVS Planejamento de Rotas (TPR).21/10/2021 15:44:14
TMSTMSAC20.PRWConfiguração Planejamento de Rotas: Rotina principal para realizar o cadastro e habilitar a integração TOTVS Planejamento de Rotas (TPR).24/11/2021 08:36:16
TMSTMSAC23.PRWControle de Integração Planejamento de Rotas: Rotina que armazenará as informações enviadas e recebidas. Toda a integração é enviado um arquivo no formato JSON e esse arquivo é armazenado na tabela DLU - Controle Integração Roteirizador.18/10/2021 08:31:30
TMSTMSAC24.PRWMontagem e visualização do Mapa.10/11/2021 10:57:59
TMS TMSAC25.PRWMontagem e visualização do Mapa.08/11/2021 17:15:43
TMS TMSAO15.PRWCadastro de Referência Geográfica.08/11/2021 17:14:03
TMSTMSAO48.PRWIntegração Rota Inteligente.04/11/2021 19:11:31
TMSTMSO46API.PRWMétodos CallBack Planejamento de Rotas.18/10/2021 09:29:54
TMSindex.html Arquivo para exibição do mapa na pasta Web.03/12/2021 15:51:41
TMStprchannel.jsArquivo para exibição do mapa na pasta Web. 18:10:2021 08:22:31

2.2. Configurações no Appserver.ini

Para realizar as integrações com o TPR é necessário possuir a configuração REST no ambiente. Pode ser reutilização um appserver ou criar outro appserver para receber as integrações REST.

Também é necessário realizar 3 blocos de configurações dentro do appserver.ini conforme exemplos a seguir.

  • Configuração do REST do Protheus

Link para o documento: 1. Configuração do REST do Protheus

Bloco de código
titleConfiguração REST
collapsetrue
;************************************
;*** REST
;************************************
[HTTPV11]
Enable=1
Sockets=HTTPREST
MAXSTRINGSIZE=500

[HTTPREST]
Port=8084
URIs=URIHTML
SECURITY=0

[URIHTML]
URL=/rest
PrepareIn=All
Instances=1,2
CORSEnable=1
AllowOrigin=*

[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=environment1

[ONSTART]
JOBS=HTTPJOB
RefreshRate=120
  • Configurações HTTP

As configurações HTTP servem para a exibição do mapa de roteirizações. 

Bloco de código
titleConfiguração HTTP
collapsetrue
[HTTP]
ENABLE=1
PATH=C:\Bases\environment1\data\web
PORT=8021   
INSTANCES=1,10    
SESSIONTIMEOUT=60
INSTANCENAME=WS_HTTP

[10.173.11.38:8021/ws]
ENABLE=1
PATH=C:\Bases\environment1\data\web
ENVIRONMENT=environment1
INSTANCENAME=WS_OMSCARGA
RESPONSEJOB=JOB_WS_OMS
DEFAULTPAGE=wsindex.apw
Informações
titleIMPORTANTE

PATH: Diretório dos arquivos index.html e tprchannel.js que foram enviados para a pasta web conforme passo 2.1.

[Ip:Porta/WS]: Informação importante para apresentar o mapa. O IP e a Porta cadastrados nessa seção precisam ser visualizados em toda a rede de acesso Smartclient do ambiente. Caso exista algum bloqueio de rede interna, o mapa não será apresentado no Protheus.

Para que o mapa seja exibido, o servidor precisa ter acesso para a api externa https://planejamentorotas.totvs.com/tpr-client/v1


  • Configuração de Portais e Webservices

Link para o documento: Configurar Portais e Webservices

Bloco de código
titleConfiguração JOB
collapsetrue
[JOB_WS_OMS]
TYPE=WEBEX
ENVIRONMENT=environment1
INSTANCES=1,10               
INSTANCENAME=JOB_WS_OMS
ONSTART=__WSSTART
ONCONNECT=__WSCONNECT
PREPAREIN=All
SIGAWEB=WS

2.3. Campos e Parâmetros Utilizados (SIGACFG)

Campos

Informações
titleIMPORTANTE

Marque via SIGACFG os seguintes campos como usado:

DAK_INTTPR: Este campo informa se a origem da geração da carga será via TPR.

DAK_VIAEXT: Este campo informa se a carga gerada é uma viagem extra.


Parâmetros:

ParâmetroDescriçãoValor
MV_ROTAINTHabilita rotas inteligentes.T.
MV_TPRCLOG

Define a visualização do log de operações do TPR no ConsoleFile configurado.

Informe .F. após a implantação. 

Inclua no ini do REST, na seção do Enviroment, a chave FWTRACELOG=1

.F.
MV_HVERAOVerifique se o local físico do servidor está em Horário de Verão .F. Não / .T. Sim   (MV_HVERAO).F.
MV_CDTPOP

Indica qual código de operação será enviado ao TOTVS GFE, na geração da carga. O mesmo deve ser cadastrado previamente no TOTVS GFE e vinculado.

Esse parâmetro alimentará o campo DAK_CDTPOP

1
MV_CDCLFR

Código da Classificação de Frete Padrão utilizado na importação de Documentos de Carga. Esse parâmetro alimentará o campo DAK_CDCLFR.


MV_OMSENTR

Define o número de incremento do campo Sequência de Entrega (DAK_SEQENT), na rotina OMSA200 (Montagem de Cargas).

Deve ser informado o conteúdo padrão igual a 5 (cinco).

5

2.6. Atualização do Help

Para atualizar o help de campos é necessário inserir (somente) o arquivo da expedição contínua hlppor.txt na pasta systemload e seguir os passos conforme documentação: Como atualizar help no Protheus


2.7. Configuração das URLs de Integração TPR

2.7.1 Configuração de e-mail do usuário para utilização do TPR:

Acesse o SIGACFG > Usuário > Senhas > Usuários e selecione um usuário para receber o token de ativação TPR. Este token será enviado após a configuração do TPR no TMSAC20.


2.7.2 Acesse Atualizações > Planejamento de Rotas > Config. Planejamento de Rotas (TMSAC20) e realize as parametrizações conforme descrito abaixo:

a. URL Callback: Informar o IP e Porta externa do servidor Rest do Protheus (IP:PORTA + /REST/V1/WSTPRNEOLOG/) para utilização no recebimento dos retornos do TOTVS Planejamento de Rotas (TPR) referente a Roteirização.

Informações
titleIMPORTANTE

Essa URL de callback precisa ser acessada exclusivamente através do IP do TPR: 35.231.153.141 (planejamentorota.totvs.com). É possível realizar um teste de acesso liberando a URL IP:PORTA + /REST/V1/WSTPRNEOLOG/ para outro computador e acessando via navegador. Caso a liberação de acesso seja realizada corretamente, o retorno abaixo será realizado:

 


b. Bloqueado: Informe 2 - Não.
c. Tipo Retorno: Informe 1- Callback.
d. URL Mapa HTML: Informe o IP e Porta do servidor web-service do Protheus (IP:PORTA + /ws/index.html) para utilização no serviço de Mapa do TOTVS Planejamento de Rotas (TPR). Ip e porta informados no appserver.ini em Configurações HTTP.
e. Roteirizador: Informe 2 - TPR Neolog.
f.  URL Token: URL disponibilizada pelo TPR para controle do Token do TOTVS Planejamento de Rotas (TPR).
g. URL Roteirização: URL disponibilizada pelo TPR para controle dos serviços de Roteirização do TOTVS Planejamento de Rotas (TPR).
h. URL Geocode: URL disponibilizada pelo TPR para controle dos serviços de Geolocalização do TOTVS Planejamento de Rotas (TPR).
i. Tempo Exp. : Informe o prazo em horas para que o TOTVS Logística TMS Protheus execute a limpeza das Roteirizações pendentes de resposta do TOTVS Planejamento de Rotas (TPR).
j.  Rota: Informe Rota do serviço de Entrega, cuja região da rota seja igual ao do parâmetro MV_CDRORI (Cidade TMS da Filial em questão). Somente será permitido inserir uma rota com estas características.

Os campos Token, Data Token e Hora Token serão preenchidos automaticamente pelo retorno do TPR.

Após realizada a inclusão do registro, clique em Outras Ações > Testar Conexão para obter os dados do Token do TPR.


Essa ação irá enviar um e-mail e será necessário clicar em Ativar Token:




Informações
titleIMPORTANTE

Caso possua a integração Maplink configurada, é necessário desabilitar a integração. Para isso, favor acessar o programa TMSAO52(Cadastro Roteirizador) e alterar o campo Bloqueado para "1 - Sim".


3. Processo de Utilização

3.1. Premissas

  • É necessário preencher o endereço completo dos clientes (endereço com número, CEP, bairro, cidade, estado e país) ou gerar as geolocalizações para as entidades na rotina TMSA015 (Referência Geográfica). Quanto maior for a qualidade das informações do endereço, maior a probabilidade de identificar corretamente as coordenadas atreladas ao mesmo. Também será possível verificar no mapa as coordenadas geolocalizadas e, caso as mesmas não representem o ponto exato, pode ser ajustado manualmente o marcador para a posição exata.

  • Os veículos devem estar cadastrados na rotina OMSA060 (Cadastro de Veículos).

  • Os pedidos de vendas (MATA410 - Pedidos de Venda) devem ter sido gerados e liberados (MATA440 - Liberação de Pedidos de Venda).

Mais informações sobre as rotinas podem ser consultadas na tabela abaixo:

RotinaImplementação

TMSAC20 - Configuração Planejamento de Rotas

Parametrize as URLs e gere o token. 
MATA030 - Cadastro de ClientesVerifique os endereços dos clientes e o país.
EICA100 - Países Verifique a sigla BRA para o país Brasil.
OMSA060 - Veículos

Informe o novo campo DA3_VELOC.

Se este campo não for preenchido, o TPR considerará 30km/h.

TMSAO15 - Coordenadas Geográficas

Verifique as coordenadas geradas para os clientes e a localização no mapa.

Importante

  • A rotina permite que sejam geradas as coordenadas para o cliente, mesmo que ele não possua endereço cadastrado.
  • É possível alterar as coordenadas geradas de um cliente por meio do marcador no mapa. Deste modo, é possível destacar o ponto exato para o endereço, caso não existam formas de geolocalizá-lo via api.

MATA010 - Produtos

Verifique os campos B1_PESO, B1_PESBRU, B5_ALTURLC, B5_LARGLC e B5_COMPRLC.

MATA410 - Pedidos

Gere os pedidos para os clientes e libere.
OMSATPR1 - Envio de Pedidos - TOTVS Planejamento de Rotas

Selecione os pedidos, os veículos e informe os parâmetros (F6).

Ao enviar os pedidos, o browse de pedidos será atualizado e este pedidos aparecerão com o status Pendente.

Será gerada uma roteirização na tabela DMR (Roteirização - TPR) e os itens serão identificados na tabela DMS (Itens Roteirização - TPR).

Para visualizar esta integração, clique em Integrações do Item, na rotina OMSATPR1 (Envio de Pedidos) ou acesse diretamente a rotina TMSAC19 (Consulta Planejamento de Rotas).

TMSAC19 - Consulta Planejamento de Rotas

Apresenta o status da integração, bem como, o resultado de cada item, sendo que os itens são gravados separadamente através de cada SC9 do pedido liberado.

Ao realizar a seleção de um pedido para integração, serão considerados apenas os itens liberados.

Os itens poderão ser apresentados nos seguintes status:

  • Pendente: quando o item foi enviado e está aguardando retorno do planejamento TPR.
  • Processado: quando houve retorno do TPR e foi gerada carga (viagem) para o item. Apresenta o código da carga gerada para o item. Permite visualizar o mapa através da rotina. Existem 2 possibilidades: Todas as cargas geradas através do botão do browse superior Visualizar mapa ou apenas a carga relacionada a um item (DMS), clicando em Visualizar mapa no botão do browse inferior.
  • Rejeitado: quando houve retorno do TPR, mas o mesmo informa que por regra de negócio informada para planejamento é impossível gerar viagem para o item). Exemplo: a capacidade do veículo é menor do que qualquer um dos pedidos selecionados.
  • Falha no processamento: quando houve alguma inconsistência no ERP, que não permitiu o processamento com os dados de retorno. Apresenta o motivo da rejeição do TPR. Exemplo: quando o Protheus não foi configurado corretamente (patch ou dicionários).

O TMSAC19 permite o cancelamento do envio para a alteração dos pedidos por meio do botão Cancelar EnvioA alteração do envio não será realizada no TPR. Este cancelamento apenas desconsidera qualquer resultado do planejamento.

Nessa rotina é possível acionar o JSONS gerados na API de roteirização, por meio da aba Controle de Integração. Esta aba acessa a rotina TMSAC23 (Controle de Integração).

TMSAC23 - Controle de Integração

Apresenta o JSON de envio de pedidos, no qual o TPR realiza uma validação prévia para processamento e retorna ao Protheus.

Caso a validação retorne sucesso, o TPR mantém o processamento e retornará um CallBack para o Protheus, após alguns minutos.

Todas essas mensagens são registradas para análise, caso seja necessário.

OMSA200 - Montagem de Carga

 No sucesso do planejamento TPR serão geradas as cargas, sendo que estas poderão ser visualizadas.

O campo que apresenta a disponibilização do mapa é o DAK_STROTE, com a informação Integrado com TPR (Mapa disponível).

Para visualizar o mapa, clique em Outras Ações > Visualizar Mapa TPR. 

A visualização do mapa apresenta a ordem de entregas, o tempo de serviço, quilometragem, peso, volume, duração, o retorno para a filial (caso parametrizado), viagem extra (uma viagem extra é quando o TPR informa que durante a análise faltaram veículos para todos os pedidos. Para poder entregar os pedidos, o planejamento sugeriu reutilizar um dos veículos enviados).

Importante

  • O ponto 1 será sempre a partida (filial).
  • O retorno para a filial considera mais um ponto de parada.
  • Uma carga roteirizada pode ser alterada, mas perderá o mapa gerado.
  • O estorno na carga liberará os itens dos pedidos da carga para serem utilizados em outro planejamento no OMSATPR1 (Envio de Pedidos).
  • O motorista pode ser informado depois da carga gerada.
  • O campo DAK_INTTPR informa se a origem da carga é no TPR.
  • O campo DAK_VIAEXT informa se é uma carga/viagem extra.
  • O campo de time service é calculado via integração com base na subtração da data/hora de saída da entrega - data/hora de saída de chegada na entrega.
3.2
  • .
Operações em Pedidos que Possuem Roteirização (Validações)
RotinaValidação
MATA410 - Pedidos

Ao realizar a alteração de um pedido que foi enviado para roteirizar, o usuário receberá um alerta sobre o relacionamento.

Neste caso, o usuário tem a opção de manter o pedido sem alteração e manter a roteirização ou de continuar a alteração do pedido e perder os dados de roteirização.

MATA461 - Preparação dos Documentos de SaídaAo confirmar o estorno da liberação de um pedido que possua roteirização, o usuário receberá um alerta que perdeu a roteirização relacionada ao item.


Image Modified4.

Integrações

Informações técnicas sobre as integrações - Incluindo exemplos

A integração é realizada em APIS REST. 

Abaixo segue um resumo das integrações:

  1. Criação do Token (gerado na instalação). Documentação API: Criação de token.

  2. Geolocalização síncrona (realizada ao alterar clientes ou no envio de pedidos, quando o cliente não possui geolocalização). Documentação API: Integração de Geolocalização - Síncrona.

  3. Roteirização. Essa API acontece em 3 etapas: O Protheus envia os pedidos (1) e recebe uma resposta do recebimento do TPR (2). Após o recebimento, o TPR retornará as viagens geradas em alguns minutos (3). Documentação API: Integração de Roteirização - ERPs

Segue o detalhamento das integrações:

4.1. Geolocalização

Retorna as coordenadas geográficas de acordo com o endereço do cliente cadastrado (MATA030).

Integração executada ao alterar o cliente via MATA030 (Cadastro de Clientes) ou via Envio de Pedidos - TPR (OMSATPR1), quando o Cliente não possui coordenadas geradas (TMSAO15 - Tabela DAR).

  • Exemplo de Envio
Bloco de código
titleJSON de Envio ao TPR
collapsetrue
{
   "address":{
      "identifier":"  MG000101",
      "address":"AVENIDA CONTORNO, 6283                                                          ",
      "state":"MG",
      "zipCode":"30110931",
      "country":"BRA",
      "city":"BELO HORIZONTE                                              "
   },
   "callbackAuthenticationType":"NONE",
   "dateCall":"2021-10-28T22:46:14",
   "callbackURL":"HTTP://179.223.161.99:8084/REST/V1/WSTPRNEOLOG/",
   "version":"7.00.191205P-20210601",
   "qualifiers":"{\"usuario\":\"Administrador\"}",
   "callbackAuthenticationValue":"",
   "system":"OMS"
}
  • Exemplo de Retorno
Bloco de código
titleJSON de Retorno do TPR
collapsetrue
{
   "dateCall":"2021-10-29T01:46:32.413Z",
   "version":"",
   "geolocationResult":{
      "identifier":"  MG000101",
      "success":true,
      "latitude":-19.9405175,
      "longitude":-43.9359666,
      "messages":[
         {
            "messageCode":"TPRGS0000",
            "message":"Sucesso."
         }
      ]
   }
}
  • De / Para Campos

Elemento

Campo

Descrição

identifier

FwXfilial("SA1") + A1_COD+A1_LOJA ou FwXfilial("SA2")+A2_NOME+A2_LOJA   

Chave do Cliente ou Fornecedor

country

A1_PAIS ou A2_PAIS  (SYA.YA_SIGLA)

País do Cliente ou Fornecedor (EICA100) Países

state

A1_EST ou A2_EST  

Campo do Estado

city

A1_MUN ou A2_MUN  

Campo do Município

zipCode

A1_CEP ou A2_CEP  

Campo do CEP

address

A1_END ou A2_END  

Campo do endereço, número

4.2. Envio de Pedidos para Roteirização

A integração depende dos pedidos, dos veículos selecionados e dos parâmetros de integração:

Bloco de código
titleJSON de Envio ao TPR
collapsetrue
{
   "vehicles":[
      {
         "identifier":"  000001",
         "speed":80,
         "weightCapacity":11000,
         "volumeCapacity":58,
         "quantity":1
      },
      {
         "identifier":"  PAM001",
         "speed":60,
         "weightCapacity":3220,
         "volumeCapacity":96,
         "quantity":1
      },
      {
         "identifier":"  000002",
         "speed":80,
         "weightCapacity":12500,
         "volumeCapacity":57,
         "quantity":1
      }
   ],
   "routingOptions":{
      "capacityCriteria":"WEIGHT",
      "routingInstantType":"D+1",
      "minServiceDuration":900000,
      "maxServiceDuration":7200000,
      "driverRestTimes":"Default",
      "considerReturnDistance":"True",
      "tollCalculation":"False"
   },
   "callbackAuthenticationType":"NONE",
   "dateCall":"2021-11-04T16:50:38",
   "callbackURL":"HTTP://179.223.161.99:8084/REST/V1/WSTPRNEOLOG/",
   "qualifiers":"{\"sistema\":\"PROTHEUS\",\"identifier\":\"04000000108\",\"usuario\":\"Administrador\",\"modulo\":\"OMS\",\"empresa\":\"99\",\"filial\":\"04\"}",
   "orders":[
      {
         "identifier":"04543517",
         "pickupTimeWindowEnd":"2021-11-12T18:00-03:00",
         "deliveryTimeWindowStart":"2021-11-05T08:00-03:00",
         "deliveryTimeWindowEnd":"2021-11-12T18:00-03:00",
         "serviceLoadDuration":null,
         "serviceUnloadDuration":null,
         "destination":{
            "identifier":"  CLISC101",
            "latitude":-18.85791,
            "longitude":-41.942810000000001,
            "name":"CL GOV. VALADARES MG",
            "country":"BRA",
            "operation":"UNRESTRICTED"
         },
         "weight":1500,
         "volume":0.25,
         "pickupTimeWindowStart":"2021-11-05T08:00-03:00",
         "origin":{
            "identifier":"04-NEPO JUNDIAI - SP-TESTE",
            "latitude":-19.516919999999999,
            "longitude":-40.652200000000001,
            "name":"",
            "country":"BRA",
            "operation":"UNRESTRICTED"
         }
      },
      {
         "identifier":"04543520",
         "pickupTimeWindowEnd":"2021-11-12T18:00-03:00",
         "deliveryTimeWindowStart":"2021-11-05T08:00-03:00",
         "deliveryTimeWindowEnd":"2021-11-12T18:00-03:00",
         "serviceLoadDuration":null,
         "serviceUnloadDuration":null,
         "destination":{
            "identifier":"  00458501",
            "latitude":-19.361229999999999,
            "longitude":-40.050609999999999,
            "name":"CLIENTE LINHARES -ES",
            "country":"BRA",
            "operation":"UNRESTRICTED"
         },
         "weight":5000,
         "volume":0.019008,
         "pickupTimeWindowStart":"2021-11-05T08:00-03:00",
         "origin":{
            "identifier":"04-NEPO JUNDIAI - SP-TESTE",
            "latitude":-19.516919999999999,
            "longitude":-40.652200000000001,
            "name":"",
            "country":"BRA",
            "operation":"UNRESTRICTED"
         }
      },
      {
         "identifier":"04543526",
         "pickupTimeWindowEnd":"2021-11-12T18:00-03:00",
         "deliveryTimeWindowStart":"2021-11-05T08:00-03:00",
         "deliveryTimeWindowEnd":"2021-11-12T18:00-03:00",
         "serviceLoadDuration":null,
         "serviceUnloadDuration":null,
         "destination":{
            "identifier":"  PFISIC01",
            "latitude":-20.306419999999999,
            "longitude":-40.350720000000003,
            "name":"VITÓRIA - ES",
            "country":"BRA",
            "operation":"UNRESTRICTED"
         },
         "weight":30,
         "volume":0.005,
         "pickupTimeWindowStart":"2021-11-05T08:00-03:00",
         "origin":{
            "identifier":"04-NEPO JUNDIAI - SP-TESTE",
            "latitude":-19.516919999999999,
            "longitude":-40.652200000000001,
            "name":"",
            "country":"BRA",
            "operation":"UNRESTRICTED"
         }
      }
   ],
   "restrictions":{
      "maxLoadingStops":1,
      "maxUnloadingStops":99,
      "maxDistanceBetweenLoadStops":9000,
      "allowInterleaving":"False",
      "maxDistanceBetweenUnloadStops":3000
   }
}
  • Mensagem de Resposta
Bloco de código
titleJSON de Resposta do TPR
collapsetrue
{
   "success":true,
   "messages":[
      {
         "messageCode":"TPRRT0000",
         "message":"Sucesso."
      }
   ]
}
  • Mensagem de Retorno
Bloco de código
titleJSON de Retorno do TPR
collapsetrue
{
   "responseDate":"2021-11-04T13:50:38.000-03:00",
   "version":null,
   "summary":{
      "totalTrips":1,
      "totalDistance":790.2284089297932,
      "totalStops":4,
      "totalVolume":0.27400800000000003,
      "totalWeight":6530.0,
      "totalDuration":3.9160278E7,
      "rejectedOrders":0,
      "rejectedWeight":0.0,
      "rejectedVolume":0.0
   },
   "tripsResults":[
      {
         "sequential":0,
         "distance":790.2284089297932,
         "numberOfStops":5,
         "volume":0.27400800000000003,
         "weight":6530.0,
         "duration":39160278,
         "extraTrip":false,
         "tollValue":0.0,
         "considerReturnDistance":true,
         "vehicle":"  000001",
         "stops":[
            {
               "sequence":0,
               "type":"LOAD",
               "locality":{
                  "identifier":"04-NEPO JUNDIAI - SP-TESTE",
                  "name":"",
                  "country":"BR",
                  "latitude":-19.51692,
                  "longitude":-40.6522,
                  "operation":"UNRESTRICTED"
               },
               "arrivalTime":"2021-11-05T08:00:00.000-03:00",
               "departureTime":"2021-11-05T08:15:00.000-03:00",
               "tollValue":0.0,
               "distance":0.0,
               "loadedOrders":[
                  {
                     "identifier":"04543517",
                     "volume":0.25,
                     "weight":1500.0
                  },
                  {
                     "identifier":"04543520",
                     "volume":0.019008,
                     "weight":5000.0
                  },
                  {
                     "identifier":"04543526",
                     "volume":0.005,
                     "weight":30.0
                  }
               ],
               "unloadedOrders":[
                  
               ]
            },
            {
               "sequence":1,
               "type":"UNLOAD",
               "locality":{
                  "identifier":"  PFISIC01",
                  "name":"VITÓRIA - ES",
                  "country":"BR",
                  "latitude":-20.30642,
                  "longitude":-40.35072,
                  "operation":"UNRESTRICTED"
               },
               "arrivalTime":"2021-11-05T10:00:37.292-03:00",
               "departureTime":"2021-11-05T10:15:37.292-03:00",
               "tollValue":0.0,
               "distance":140.82872152560284,
               "loadedOrders":[
                  
               ],
               "unloadedOrders":[
                  {
                     "identifier":"04543526",
                     "volume":0.005,
                     "weight":30.0
                  }
               ]
            },
            {
               "sequence":2,
               "type":"UNLOAD",
               "locality":{
                  "identifier":"  00458501",
                  "name":"CLIENTE LINHARES -ES",
                  "country":"BR",
                  "latitude":-19.36123,
                  "longitude":-40.05061,
                  "operation":"UNRESTRICTED"
               },
               "arrivalTime":"2021-11-05T12:04:01.970-03:00",
               "departureTime":"2021-11-05T12:19:01.970-03:00",
               "tollValue":0.0,
               "distance":144.54840026439211,
               "loadedOrders":[
                  
               ],
               "unloadedOrders":[
                  {
                     "identifier":"04543520",
                     "volume":0.019008,
                     "weight":5000.0
                  }
               ]
            },
            {
               "sequence":3,
               "type":"UNLOAD",
               "locality":{
                  "identifier":"  CLISC101",
                  "name":"CL GOV. VALADARES MG",
                  "country":"BR",
                  "latitude":-18.85791,
                  "longitude":-41.94281,
                  "operation":"UNRESTRICTED"
               },
               "arrivalTime":"2021-11-05T15:57:57.551-03:00",
               "departureTime":"2021-11-05T16:12:57.551-03:00",
               "tollValue":0.0,
               "distance":291.9018079442051,
               "loadedOrders":[
                  
               ],
               "unloadedOrders":[
                  {
                     "identifier":"04543517",
                     "volume":0.25,
                     "weight":1500.0
                  }
               ]
            },
            {
               "sequence":4,
               "type":"LOAD",
               "locality":{
                  "identifier":"04-NEPO JUNDIAI - SP-TESTE",
                  "name":"",
                  "country":"BR",
                  "latitude":-19.51692,
                  "longitude":-40.6522,
                  "operation":"UNRESTRICTED"
               },
               "arrivalTime":"2021-11-05T18:52:40.278-03:00",
               "departureTime":"2021-11-05T18:52:40.278-03:00",
               "tollValue":0.0,
               "distance":212.9494791955932,
               "loadedOrders":[
                  
               ],
               "unloadedOrders":[
                  
               ]
            }
         ]
      }
   ],
   "rejections":[
      
   ],
   "messages":[
      
   ],
   "qualifiers":"{\"sistema\":\"PROTHEUS\",\"identifier\":\"04000000108\",\"usuario\":\"Administrador\",\"modulo\":\"OMS\",\"empresa\":\"99\",\"filial\":\"04\"}"
}
  • Parâmetros para o Planejamento que Devem ser Informados no Envio de Pedidos

TOTVS Planejamento de Rotas (TPR) - Rotina OMSATPR1 - (Grupo OMSATPR1A )

Descrição

Elemento

Regra do elemento

Exemplo

Critério da capacidade ?

TPRRoutingOptions:capacityCriteria

Tipo de roteirização: PESO, VOLUME ou AMBOS.

PESO

Planejamento para ?

TPRRoutingOptions:routingInstantType

Define o instante a partir do qual as viagens podem ser expedidas:

  • Agora - Início das viagens na primeira hora factível, a partir do momento da roteirização mais uma hora.

  • D+1 - Inicio das viagens para amanhã no primeiro horário factível de carregamento.

D+1

Qtd. dias limite p/ entregas ?

TPRRoutingOrders:deliveryTimeWindowEnd

Quantidade de dias para realizar a entrega.

Se estiver planejado como D+1, começará a contar a partir do próximo dia.

2

Horário de carregamento ?

TPRRoutingOrders:pickupTimeWindowStart

Horário inicial da janela de carregamento dos pedidos.

08:00

Funcionamento filial ?

TPRRoutingLocality:operation

Informar horário de trabalho da filial.

Este parâmetro definirá o início do carregamento dos pedidos, nas seguintes opções:

  • Sem restrição (00:00-23:59 de Dom-Sab)

  • Dias úteis (08:00-17:59 de Seg-Sex)

  • De manhã (08:00-11:59 de Seg-Sex)

  • À tarde (14:00-17:59 de Seg-Sex).

Dias úteis

Considera retorno p/ filial ?

TPRRoutingOptions:considerReturnDistance

Verifica se é para contabilizar a distância de retorno a origem na roteirização.

Sim

Qtd. máx. carregamentos ?

TPRRoutingRestrictions:maxLoadingStops

Quantidade máxima de paradas de carregamento por viagem.

1

Km máx. entre carregamentos ?

TPRRoutingRestrictions:maxDistanceBetweenLoadStops

Máxima distância, em km, entre paradas de carregamento.

700

Km máx. entre entregas ?

TPRRoutingRestrictions:maxDistanceBetweenUnloadStops

Máxima distância, em km, entre paradas de entregas.

700

Qtd. máx. de entregas ?

TPRRoutingRestrictions:maxUnloadingStops

Quantidade máxima de paradas de entregas por viagem.

4

Tempo mín. de serviço ?

TPRRoutingOptions:minServiceDuration

O montante mínimo do tempo de serviço.

Caso a soma dos tempos de carregamento e descarregamento não ultrapassem o valor mínimo, este será utilizado.

Valor padrão: 30m

00:30

Tempo máx. de serviço ?

TPRRoutingOptions:maxServiceDuration

O montante máximo do tempo de serviço.

Caso a soma dos tempos de carregamento e descarregamento ultrapassem o valor máximo, este será utilizado.

Valor padrão: 8h

04:00

Horário final das entregas ?

TPRRoutingOrders:deliveryTimeWindowEnd

Horário final da janela de entregas.

18:00

Funcionamento entregas ?

TPRRoutingLocality:operation

Horário das empresas que receberão as entregas.

Este parâmetro definirá a janela entregas e possui as seguintes opções:

  • Sem restrição (00:00-23:59 de Dom-Sab)

  • Dias úteis (08:00-17:59 de Seg-Sex)

  • De manhã (08:00-11:59 de Seg-Sex)

  • À tarde (14:00-17:59 de Seg-Sex).

Dias úteis
  • Informações Enviadas dos Veículos (DE / PARA)

Elemento

Campo

Descrição

identifier

FwXfilial("DA3") + DA3_COD

Chave do veículo

weightCapacity

DA3_CAPACM

Capacidade do veículo em quilos.

volumeCapacity

DA3_VOLMAX

Capacidade do veículo, em metros cúbicos.

speed

DA3_VELOC

Define a velocidade que dos veículos em uma roteirização.

quantity

1

Quantidade de veículos, semelhantes a este, disponíveis.

  • Informações Enviadas dos Pedidos (DE / PARA)

Elemento

Campo

Descrição

identifier

FwXfilial("SC9") + C9_PEDIDO

Os pedidos são enviados identificados pela filial + código do pedido.

weight

C9_QTDLIB * SB1.B1_PESBRU

O peso enviado do pedido é a quantidade liberada multiplicada pelo peso bruto do pedido liberado.

volume

(SB5.B5_ALTURLC * SB5.B5_LARGLC * SB5.B5_COMPRLC)*C9_QTDLIB

O volume calculado é baseado nos campos de medidas do produto multiplicado pela quantidade liberada do pedido.

pickupTimeWindowStart

Parâmetro "Horário de carregamento" + parâmetro "Planejamento para ?"

O início da janela de carregamento é o horário inicial da filial e a data depende do parâmetro Agora ou D+1.

Se preenchido Agora, o planejamento somará uma hora para as entregas do mesmo dia.

Se preenchido D+1, o carregamento será para o próximo dia, de acordo com a forma de trabalho da filial (Sem restrição, dias úteis, de manhã, a tarde).

pickupTimeWindowEnd

Parâmetro "Horário final das entregas ?" + "Qtd. dias limite p/ entregas ?"

O prazo de carregamento é o limite da entrega.

deliveryTimeWindowStart

Parâmetro "Horário de carregamento" + parâmetro "Planejamento para ?"

O início das entregas depende do Funcionamento entregas ?, que significa o horário de trabalho dos clientes e o início de carregamento da carga. 

deliveryTimeWindowEnd

Parâmetro "Horário final das entregas ?" + "Qtd. dias limite p/ entregas ?"

O limite da entrega é considerado através do horário limite das entregas, prazo em quantidade de dias, planejamento do carregamento (Agora, D+1) e a forma de trabalho do cliente (Sem restrição, dias úteis, de manhã, a tarde).

origin

identifier

SM0->M0_CODFIL - SM0->M0_FILIAL - SM0->M0_NOME

Identificador para integração e apresentação da filial no mapa de roteirização.

name

SM0->M0_CODFIL - SM0->M0_FILIAL - SM0->M0_NOME

Identificador para integração e apresentação da filial no mapa de roteirização.

country

BRAPaís padrão da filial.

latitude

DAR_LATITUInformação de coordenadas da filial (SM0) mantida na tabela de coordenadas geográficas (DAR).

longitude

DAR_LONGIT

Informação de coordenadas da filial (SM0) mantida na tabela de coordenadas geográficas (DAR).

operationParâmetro informado em "Funcionamento filial" OMSATPR1A

Parâmetro de funcionamento da filial (Sem restrição, dias úteis, de manhã, a tarde) informado antes de enviar os pedidos para planejamento via OMSATPR1

destination

identifier

FwXfilial("SA1") + A1_COD+A1_LOJA ou FwXfilial("SA2")+A2_NOME+A2_LOJA  

Identificador para integração dos cliente ou fornecedores.

name

A1_NREDUZ ou A2_NREDUZ

Nome do cliente ou fornecedor apresentado no mapa de roteirização.

country

A1_PAIS ou A2_PAIS

País cadastrado na entidade.

latitude

DAR_LATITU

Informação de coordenadas do cliente (SA1) ou fornecedor (SA2) mantida na tabela de coordenadas geográficas (DAR).

longitude

DAR_LONGIT

Informação de coordenadas do cliente (SA1) ou fornecedor (SA2) mantida na tabela de coordenadas geográficas (DAR).

operation

Parâmetro informado em "Funcionamento entregas" OMSATPR1A

Parâmetro de funcionamento das entregas (Sem restrição, dias úteis, de manhã, a tarde) informado antes de enviar os pedidos para planejamento via OMSATPR1.