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


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 disponíveis 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 - https://tdn.totvs.com/x/LB2XJg 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: https://tdn.totvs.com/x/FYcJIw





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.

  • Os veículos devem estar cadastrados - Raquel QUAL O Programa?

  • Os pedidos devem ter sido gerados e liberados - Raquel, onde libera? qual o status? onde olha




Pré-requisitos Instalação / Implantação / Utilização

Informações
titleATENÇÃO

Prezado cliente, esta Integração permanece disponível de forma nativa somente no Release 12.1.37 do Protheus, conforme Ciclo de Vida de Software - TOTVS Linha Protheus
Caso tenha interesse em adquirir esta solução nos Releases 12.1.27 ou 12.1.33 do Protheus, baixe os pacotes listados abaixo:

Para realizar a integração é necessário possuir os dicionários, novas rotinas ou atualizações das rotinas do Faturamento, OMS e TMS.

IMPORTANTE
Aplique o pacote da expedição contínua conforme sua versão do sistema.

Raquel Na tabela abaixo é possível colocar uma versão mínima/data? listar pacotes da expedição contínua

MóduloRotinaDescriçãoVersão mínima
FaturamentoFATXFUN.PRXFunções genéricas FAT05/11/2021 19:21:13
FaturamentoMATA410.PRXPedidos05/11/2021 19:21:13
FaturamentoMATA461.PRXPreparação dos Documentos de Saída05/11/2021 19:21:13
FaturamentoMATV410.PRWFunções para o Estorno de Pedidos05/11/2021 19:21:13
OMSOMSA200.PRWMontagem 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 - TPR23/11/2021 23:09:29
OMSOMSATPR2.PRWProcessamento do CallBack do retorno das viagens/carga - TPR25/11/2021 11:53:05
OMSOMSATPR3.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 TPR16/11/2021 16:38:22
OMSOMSXFUN.PRWFunções genéricas OMS16/11/2021 16:38:22
TMSTMSAC18.PRWMétodos de Envio - Integração Planejamento de Rotas12/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 Mapa10/11/2021 10:57:59
TMSTMSAC25.PRWMontagem e visualização do Mapa08/11/2021 17:15:43
TMSTMSAO15.PRWCadastro Referência Geográfica08/11/2021 17:14:03
TMSTMSAO48.PRWIntegração Rota Inteligente04/11/2021 19:11:31
TMSTMSO46API.PRWMétodos CallBack Planejamento de Rotas18/10/2021 09:29:54
TMSindex.htmlArquivo para exibição do mapa na pasta web03/12/2021 15:51:41
TMStprchannel.jsArquivo para exibição do mapa na pasta web18:10:2021 08:22:31


Para que a integração ocorra é necessário realizar algumas configurações no Appserver.ini.

  • Configuração do REST do Protheus (Appserver.ini)

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 (Appserver.ini)

Bloco de código
titleConfiguração HTTP
collapsetrue
[HTTP]
ENABLE=1
PATH=C:\Bases\environment1\data\web  (Pasta que contém os arquivos index.html e tprchannel.js)
PORT=8021   
INSTANCES=1,10    
SESSIONTIMEOUT=60
INSTANCENAME=WS_HTTP

[10.173.11.38:8021/ws] (Informação importante para apresentar o mapa. O campo URL Mapa HTML do programa TMSAC20, é realizado com "http://" + "10.173.11.38:8021/ws" + "/index.html").
ENABLE=1
PATH=C:\Bases\environment1\data\web  (Pasta que contém os arquivos index.html e tprchannel.js)
ENVIRONMENT=environment1
INSTANCENAME=WS_OMSCARGA
RESPONSEJOB=JOB_WS_OMS
DEFAULTPAGE=wsindex.apw

O IP e a Porta "10.173.11.38:8021" são exemplos para o cadastro.

O IP e a Porta cadastrados nessa seção precisam ser visualizados em toda a rede de acesso Smartclient. Caso exista algum bloqueio de rede, o mapa não será apresentado no Protheus.

  • Configuração de Portais e Webservices (Appserver.ini)

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
  • Parâmetros Utilizados (SIGACFG)

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


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.

Preencha o campo DAK_CDTPOP.


MV_CDCLFR

Código da Classificação de Frete Padrão utilizado na importação de Documentos de Carga.

Preencha 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
Informações
titleATENÇÃO

Ao aplicar o pacote OMS 009560 - Expedição Contínua verifique os seguintes campos:

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

DAK_VIAEXT: marque via SIGACFG como usado. Este campo informa se a carga gerada é uma viagem extra.



  • Arquivos Relacionados ao Mapa (Data / Web)

Verifique se os arquivos index.html e tprchannel.js constam na pasta Web, conforme PATH configurado (PATH=C:\Bases\environment1\data\web).

  • Atualização do Menu do OMS

SIGAOMS.XNU

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
  • Atualização do Help

hlppor.txt

  • Aplicação do Pacote de Dicionários do TMS 009506 - Expedição Contínua

Para que sejam geradas as tabelas DMR e DMS.

O pacote criará os campos nas tabelas DLU e DLV.


  • Aplicação do Pacote de Dicionários do OMS 009560 - Expedição Contínua

Para que sejam gerados os campos nas tabelas DA3 e DAK.

O pacote criará o parâmetro MV_TPRCLOG e os campos abaixo:

Campo Novo

Campo

DA3_VELOC

Tipo

Numérico

Tamanho

6

Decimal

0

Formato

Título

Veloc. média

Descrição

Velocidade média

Usado

Sim

Obrigatório

Não

Browse

Sim

Opções

When

Relação

Val. Sistema

Help

Informar a velocidade média do veículo.

Campo Novo

Campo

DAK_INTTPR

Tipo

Caractere

Tamanho

1

Decimal

0

Formato

Título

Int. TPR

Descrição

Integração TPR

Usado

Sim

Obrigatório

Não

Browse

Não

Opções

1=Carga gerada pelo TPR

When

Relação

Val. Sistema

Help

Informa se a carga foi gerada através da integração com o TPR (TOTVS Planejamento de Rotas).

Campo Novo

Campo

DAK_VIAEXT

Tipo

Caractere

Tamanho

1

Decimal

0

Formato

Título

Viagem Extra

Descrição

Viagem extra do TPR

Usado

Sim

Obrigatório

Não

Browse

Não

Opções

1=Sim, 2=Não

When

Relação

"2"

Val. Sistema

Help

Indica se a viagem gerada pelo TPR é uma 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.

Parâmetro Novo

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

DA3_VELOC: Neste campo pode ser informada a velocidade média do veículo via rotina OMSA060 (Cadastro de Veículos), DAK e o parâmetro MV_TPRCLOG.


  • Configuração das URLs de Integração TPR

Passo a passo TMSAC20


  • Após a Geração e Ativação do Token no Passo Anterior Via TMSAC20

Ao alterar um cliente via MATA030 é realizada uma integração para obter a geolocalização, com base no cadastro do endereço. 


  • Visualização da Geolocalização

A geolocalização pode ser incluída/alterada ou visualizada pela rotina Referência Geográfica (TMSA015 - SIGATMS).


 Integrações

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:

  • 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

ElementoCampoDescrição
identifierFwXfilial("SA1") + A1_COD+A1_LOJA ou FwXfilial("SA2")+A2_NOME+A2_LOJA   Chave do Cliente ou Fornecedor
countryA1_PAIS ou A2_PAIS  (SYA.YA_SIGLA)País do Cliente ou Fornecedor (EICA100) Países
stateA1_EST ou A2_EST  Campo do Estado
cityA1_MUN ou A2_MUN  Campo do Município
zipCodeA1_CEP ou A2_CEP  Campo do CEP
addressA1_END ou A2_END  Campo do endereço, número
  • 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çãoElementoRegra do elementoExemplo
Critério da capacidade ?TPRRoutingOptions:capacityCriteriaTipo 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)

ElementoCampoDescrição
identifierFwXfilial("DA3") + DA3_CODChave 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.
quantity1Quantidade de veículos, semelhantes a este, disponíveis.

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

ElementoCampoDescrição
identifierFwXfilial("SC9") + C9_PEDIDOOs 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).

pickupTimeWindowEndParâmetro "Horário final das entregas ?" + "Qtd. dias limite p/ entregas ?"O prazo de carregamento é o limite da entrega.
deliveryTimeWindowStartParâ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. 
deliveryTimeWindowEndParâ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
identifierSM0->M0_CODFIL - SM0->M0_FILIAL - SM0->M0_NOMEIdentificador 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.
countryBRAPaís padrão da filial.
latitudeDAR_LATITUInformação de coordenadas da filial (SM0) mantida na tabela de coordenadas geográficas (DAR).
longitudeDAR_LONGITInformação de coordenadas da filial (SM0) mantida na tabela de coordenadas geográficas (DAR).
operationParâmetro informado em "Funcionamento filial" OMSATPR1AParâ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
identifierFwXfilial("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).
operationParâmetro informado em "Funcionamento entregas" OMSATPR1AParâmetro de funcionamento das entregas (Sem restrição, dias úteis, de manhã, a tarde) informado antes de enviar os pedidos para planejamento via OMSATPR1.


 Processo de Utilização

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.

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.