Árvore de páginas

Introdução

Sistemas Envolvidos

  • TPR: TOTVS Planejamento de Rotas.
  • Sistema Externo: Todos os ERPs que se conectam ou pretendem se conectar com os produtos de planejamento logístico TOTVS.

Integração

  • Formato JSON, para maiores detalhes consulte os Exemplos.

Escopo

  • Integração assíncrona de roteirização, compostas pela chamada e pelos callback, nestas, receberemos uma lista pedidos e, quando possível, retornaremos rotas para o sistema externo;

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 do Callback

TPRRoutingCallback: Integração rest, Assincrona

Path: ver campo TPRrouting/CallbackURL, Método: POST

Campo

Tipo

Obrigatório

Tamanho

Descrição

Validações

Exemplos

responseDate

Date Time

Sim


Data do envio da resposta no TPR

Formato ISO8601

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

version

String

Não

4096

Versão do TPR que executou a resposta

Texto Livre

12.36.1

qualifiersStringNão4096String representando um objeto JSON que tenha o nome da variável e valor sendo String.Formato JSON.
"{ \"Usuario\": \"Pedro\",
 \"Perfil\": \"Analista\" }"
OBS: É equivalente usar:
JSON.stringify(
{"Usuario":"Pedro",
 "Perfil":"Analista"})

summary

TPRSummary

Sim





tripsResults

TPRTrip[]

Sim


Lista de rotas geradas via otimização


Tabela abaixo

rejections

TPRRejection[]

Não


Lista de rejeites geradas via otimização


Tabela abaixo

message

TPRMessage[]

Não


Campo que deve ser exibido pelo sistema externo para o usuário

-

Tabela abaixo

TPRSummary, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
totalDistancedoubleSim
Distância total do plano de rotas, em kmMaior ou igual a zero3022 [km]
totalTripsintegerSim
Quantidade total de rotas do planoMaior ou igual a zero43 [Rotas]
totalStopsintegerSim
Quantidade total de paradas do plano de rotasMaior ou igual a zero239 [Paradas]
totalVolumedoubleSim
Volume total em rotas, em m³Maior ou igual a zero50.000 [m³]
totalWeightdoubleSim
Peso total em rotas, em kgMaior ou igual a zero2.500.000 [kg]
totalDurationdoubleSim
Duração total do plano de rotas, em milissegundosMaior ou igual a zero57600000 [ms]
rejectedOrdersintegerSim
Quantidade de pedidos rejeitadosMaior ou igual a zero10 [Pedidos]
rejectedWeightdoubleSim
Total de peso rejeitado, em kgMaior ou igual a zero2.500.000 [kg]
rejectedVolumedoubleSim
Total de volume rejeitado, em m³Maior ou igual a zero50.000 [m³]

TPRTrip, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
sequentialintegerSim
Sequencial representando um número para a rota
1
distancedoubleSim
Distancia total planejada para a rota em km
123 [km]
tollValuedoubleNão
Valor do pedágioDepende do campo tollCalculation120,32 [R$]
numberOfStopsintegerSim
Quantidade total de paradas (carregamentos e descarregamentos) da rota

volumedoubleSim
Volume total na rota, em m³
14.32 [m³]
weightdoubleSim
Peso total na rota, em kg
12000 [kg]
durationdoubleSim
Duração total planejada para a rota em horas, minutos e segundosMaior que zero em Millesegundos3600000 [ms]
extraTripBooleanSim
True se o veiculo disponível, false se não disponível;

considerReturnDistanceBooleanNão

Informa se o retorno a origem na roteirização foi considerada.

Tabela para validação de campos Boolean.


vehicleTPRRoutingVehiclesSim
Veículo selecionado da rota

stopsTPRTripStop[]Sim
Lista de paradas
Tabela abaixo
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 rota extra;
Sempre será escolhido para as rotas extras os veículos que minimizem o número de rotas.
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
quantityIntegerNã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.


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.


vehicleTypeTPRVehicleTypeNão
TRUCK | CAR  | MOTORCYCLESe não preenchido será considerado TRUCK.
É utilizado no calculo do pedágio e para restrições de trafego de caminhões.

tollAxesIntegerNão
Quantidade de eixos durante a rota.Se informado será considerado no calculo do pedágio.6
tollReturnAxesIntegerNão
Quantidade de eixos durante o retorno para a origem.Se informado será considerado no calculo do pedágio.4

TPRTripStop, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
sequenceintegerSim
Ordem da parada, iniciando por 1
1, 2 ... 99
typeStringSim
LOAD: Para apenas de carregamento
UNLOAD: Parada apenas de descarregamento
BOTH: Parada de carregamento e descarregamento
-
distancedoubleSim
Distância em km da para anterior para a atualMaior ou igual a zero202 [km]
tollValues

TPRTollValue[]

Não
Lista dos valores dos pedágios da parada anterior para a atual, discriminado pelo nome da praça de pedágioDepende do campo tollCalculationTabela abaixo
localityTPRRoutingLocalitySim
Identificador da localidadeTexto Livre"Carrefour vila Mariana"
arrivalTimeDateTimeSim
Horário de chegadaFormato ISO2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD
departureTimeDateTimeSim
Horário de saídaFormato ISO2021-01-21T10:01:00.0-03:00
YYYY-MM-DDThh:mm:ss.sTZD
loadedOrdersTPRRoutedOrder[]Sim
Lista de pedidos carregados naquela parada
Tabela abaixo
unloadedOrdersTPRRoutedOrder[]Sim
Lista de pedidos descarreagados naquela parada
Tabela abaixo

TPRTripStop, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
nameStringSim
Nome da praça de pedágio.

SPMAR

valueDoubleSim
Valor do pedágio

3.9

TPRRoutingLocality, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
identifierStringSim4096Identificador da localidadeTexto Livre"Carrefour 123-1"
nameStringNão4096Nome da localidadeTexto Livre"Carrefour Vila Mariana"
countryStringSim3País do endereçoFormato ISO 3166-1 alfa-3"BRA"
latitudeDoubleSim
LatitudeIntervalo [-90; 90]-23.6114291
longitudeDoubleSim
LongitudeIntervalo [-180; 180]-46.6946795
operationStringSim
Funcionamento simplificadoOpções: UNRESTRICTED, BUSINESS_DAYS, MORNING, AFTERNOONBUSINESS_DAYS

TPRRejection, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
messagesTPRMessage[]Sim4096Lista de mensagens de rejeito do pedido
Tabela abaixo
orderTRPRoutedOrderSim
Pedido rejeitado
Tabela abaixo

TPRRoutedOrder, tipo de dado utilizado nas integrações do TPR
CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
identifierStringSim4096Identificador do pedidoTexto livre"Entrega Carrefour" "PED00133"
weightDoubleNão
Peso total os itens do pedido, em kgSe não tiver peso tem que ter volume;
Todos os pedidos da roteirização devem ter o mesmo limitador (Peso ou Volume);
25.000
volumeDoubleNão
Volume total dos itens do pedido em m³Se não tiver volume tem que ter peso;
Todos os pedidos da roteirização devem ter o mesmo limitador (Peso ou Volume);
5000

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

CampoTipoObrigatórioTamanhoDescriçãoValidaçõesExemplos
messageCodeStringSim4096Código de identificação da mensagemCódigo existente e validoTPR0001
messageStringSim4096Mensagem escritaTexto Livre"Para finalizar o cadastro acesse seu e-mail e valide o Token"

Retorno do Call Back

Não esperamos corpo na resposta para os callbacks, este, será avaliado apenas pelo HTTP status e este deve determinar o sucesso do envio.

Ainda não há arquivos compartilhados aqui.