Introdução


Sistemas Envolvidos

Integração

  • Formato Excel e JSON, para maiores detalhes consulte os Exemplos.

Escopo

  • Integração via front end, compostas pela chamada e pelo retorno, nestas, receberemos uma lista pedidos e, quando possível, retornaremos viagens via importação e exportação de arquivos;

Pré-requisitos instalação/implantação/utilização

  • Para clientes Protheus versão xxxxxx;
  • Para clientes Datasul versão xxxxxx;
  • Para todos os clientes, contratação do trial via TOTVS Store.

Layout de Requisição

TPRRouting

Campo

Tipo

Obrigatório

Tamanho

Descrição

Validações

Exemplos

dateCallDate TimeSim
Data da criação da chamada no sistema externo.Formato ISO8601.2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD
systemStringNão4096Identificador do sistema que fez a chamada.Texto Livre.Protheus
versionStringNão4096Versão do sistema externo.Texto Livre.12.36.1
qualifiersObjectNão4096String chave valor.Formato JSON.{"Usuário": "Pedro de Alcântara", "Perfil": "Analista"}
callbackURLStringSim4096URL de Callback.Início com "https://".
callbackAuthenticationTypeStringSim4096Tipos de autenticação: BASIC, NONEOpções: BASIC, NONE.NONE
callbackAuthenticationValueStringNão4096Texto de acordo com formato indicado.Texto Livre.QWxhZGRpbjpvcGVuIHNlc2FtZQ==
ordersTPRRoutingOrders[]Sim
Lista de pedidos a serem roteirizados.
Tabela abaixo
vehiclesTPRRoutingVehicles[]Sim
Lista de veículos disponíveis para a roteirização.
Tabela abaixo
restrictionsTRPRoutingRestrictionsSim
Restrições de roteirização.
Tabela abaixo
optionsTPRRoutingOptionsSim
Opções de roteirização.
Tabela abaixo

TPRRoutingOrders, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
identifierStringSim4096Identificador do pedido

Texto livre, deve se único dentro da chamada.

"Entrega Carrefour"

"PED00133"

weightDoubleNão
Peso total os itens do pedido em quilos

Se preenchido, deve ser maior ou igual a zero;

Validado de acordo com o campo "capacityCriteria";

Se não existirem veículos que suportem este pedido sozinho  na disponibilidade, ele será rejeitado.

25000
volumeDoubleNão
Volume total dos itens do pedido em metros cúbicos

Se preenchido, deve ser maior ou igual a zero;

Validado de acordo com o campo "capacityCriteria";

Se não existirem veículos que suportem este pedido sozinho  na disponibilidade, ele será rejeitado.

5000
pickupTimeWindowStartDate TimeSim
Início da janela de carregamento

Formato ISO8601;

PickupStart deve ser anterior a PickupEnd, se ambos forem preenchidos;

PickupStart deve ser anterior ou igual a DeliveryStart , se ambos forem preenchidos;

PickupStart deve ser anterior a DeliveryEnd e ambos devem ser preenchidos.

"2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD"
pickupTimeWindowEndDate TimeNão
Final da janela de carregamentoFormato ISO8601."2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD"
deliveryTimeWindowStartDate TimeNão
Início da janela de entrega

Formato ISO8601.

"2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD"
deliveryTimeWindowEndDate TimeSim
Final da janela de entrega

Formato ISO8601;

DeliveryEnd deve vir posterior de DeliveryStart se ambos forem preenchidos;

DeliveryEnd deve vir posterior  ou igual de PickupEnd se ambos forem preenchidos;

DeliveryEnd deve vir posterior de PickupStart e ambos devem ser preenchidos.

"2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD"
serviceLoadDurationLongNão

Se não informado, ou menor que 30 minutos serão considerados 30 minutos de serviço;

Se a soma do serviço for maior que 8 horas serão consideradas 8 horas de serviço;

Se preenchido, deve ser maior que zero, em Milissegundos.3600000 [ms]
serviceUnloadDurationLongNão

Se não informado, ou menor que 30 minutos serão considerados 30 minutos de serviço;

Se a soma do serviço for maior que 8 horas serão consideradas 8 horas de serviço;

Se preenchido, deve ser maior que zero, em Milissegundos.3600000 [ms]
originTPRRoutingLocalitySim
Localidade de origem do pedido-Tabela abaixo
destinationTPRRoutingLocalitySim
Localidade de destino do pedido-Tabela abaixo

TPRRoutingLocality, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
identifierStringSim4096Identificador da localidade.Texto livre, deve se único dentro da chamada."Carrefour Vila Mariana"
countryStringSim3País do endereço.Fomato ISO 3166-1 alfa-3."BRA"
latitudeDoubleSim
Latitude.Intervalo [-90; 90].-23.6114291
longitudeDoubleSim
Longitude.Intervalo [-180; 180].-46.6946795
operationStringSim
Funcionamento simplificado.

Opções:

UNRESTRICTED  (00:00-23:59 de Dom-Sab)
BUSINESS_DAYS (08:00-17:59 de Seg-Sex)
MORNING (08:00-11:59 de Seg-Sex)
AFTERNOON (14:00-17:59 de Seg-Sex)
BUSINESS_DAYS

TPRRoutingVehicles, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
identifierStringSim4096Identificador do tipo do veículo;
Quando a disponibilidade for insuficiente, podemos retornar novas instâncias deste veículo marcados como viagem extra;
Sempre será escolhido para as viagens extras os veículos que minimizem o número de viagens.
Texto livre, deve se único dentro da chamada.

"Truck"

"Carreta"

weightCapacityDoubleSim
Capacidade do veículo em quilos.

Se preenchido, deve ser maior ou igual a zero.
Validado de acordo com o campo "capacityCriteria".

25000
volumeCapacityDoubleSim
Capacidade do veículo em metros cúbicos.Se preenchido, deve ser maior ou igual a zero.
Validado de acordo com o campo "capacityCriteria".
5000
speedDoubleNão
Define a velocidade que dos veículos em uma roteirização.

Se preenchido, deve ser maior que zero. 

Senão, utilizaremos 30 km/h.


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

Zerado, nulo ou omitido para os cenários de "Frota Ideal".

Se passados valores quebrados apenas a parte inteira será considerada.


TPRRoutingRestrictions, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
maxLoadingStopsIntNão

Quantidade máxima de paradas de carregamento por viagem.


Se preenchido, deve ser maior que zero;

Se passados valores quebrados apenas a parte inteira será considerada.

1
maxUnloadingStopsIntNão
Quantidade máxima de paradas de descarregamento por viagem.

Se preenchido, deve ser maior que zero.

Se passados valores quebrados apenas a parte inteira será considerada.

15
allowInterleavingBooleanNão
Permite carregamento após descarregamento na mesma viagem. Default: false

Tabela para validação de campos Boolean.


maxDistanceBetweenLoadStopsDoubleNão
Máxima distância, em km, entre paradas de carregamento.Se preenchido, deve ser maior que zero.100
maxDistanceBetweenUnloadStopsDoubleNão
Máxima distância, em km, entre paradas de descarregamento.Se preenchido, deve ser maior que zero.100

TPRRoutingOptions, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
capacityCriteriaStringSim4096Tipos de roteirização: WEIGHT, VOLUME ou BOTHOpções: WEIGHT, VOLUME ou BOTH."WEIGHT"
routingInstantTypeStringNão4096Define o instante em que as viagens podem ser expedidas. Valor default D+1
"Now" considera a saída como hora do servidor no momento da roteirização + 1 hora
"D+1" Primeiro horário factível na origem de acordo com o funcionamento da mesma.
Valores: "D+1", "NOW"."NOW"
considerReturnDistanceBooleanNão

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

Tabela para validação de campos Bolean.

Se não informado assumiremos "False".


minServiceDurationLongNão

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

Se preenchido, não pode ser negativo, em Milissegundos.

3600000 [ms]
maxServiceDurationLongNão

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

Se preenchido, não pode ser negativo, em Milissegundos.

3600000 [ms]
driverRestTimesStringNão
Descanso do motoristaOpções: Default"Default"
tollCalculationBooleanNão
Calculo do pedágio

Tabela para validação de campos Bolean.

Se não informado assumiremos "False".


Layout de Resposta

TPRRoutingResponse, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
responseDateDate TimeSim
Data do envio da resposta no TPR.-2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD
versionStringSim4096Versão do TPR que executou a resposta.-0.0.0.1
successBooleanSim
True se sucesso, false se falha.Se uma única validação falhar, todo o pacote falha.True
messageTPRMessage[]Sim
Lista de mensagens a serem exibidas pelo sistema externo para o usuário.-

TPRMessage: Tipo de dado utilizado nas integrações do TPR

CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
messageCodeStringSim4096Código de identificação da mensagem.Código existente e válido.TPR0001
messageStringSim4096Mensagem escrita.Texto Livre."Para finalizar o cadastro, acesse seu e-mail e valide o Token"

Frota Ideal: A roteirização com a frota ideal, ocorre quando não limitamos as quantidades disponíveis dos veículos que serão utilizados em uma determinada roteirização, definimos apenas os tipos destes, por exemplo:

Dada uma cesta de pedidos com vinte pedidos de 5.000 kg sem janela de coleta ou entrega e os veículos disponíveis são Carretas com capacidade de 25.000 kg e Trucks com capacidade de 10.000 kg: 

Se eu não limito a quantidade disponível de veículos, o sistema roteirizara quatro viagens com Carretas, e esta é a frota ideal para este cenário;

Se eu limito os veículos disponíveis em duas Carretas e vinte Truckso sistema roteirizara sete viagens, duas com Carretas e cinco com Trucks e esta é a melhor frota factível para este cenário, porem não é a frota ideal;

Tabela de Boolean:

Valor Assumido

Valor recebido

True

"true"

true12-1-2""
False

false

0"false"null


Anexos