Introdução

Sistemas Envolvidos

  • TOTVS Otimização Logística / TOTVS Roteirização e Entrega

  • Sistema Externo: ERPs que se conectam ou pretendem se conectar com TOL/TRE

Integração

Escopo

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

  • Versões mínimas

    • TOL:  6.4.0

    • Protheus:  ?

    • Datasul: ?

  • Esta integração não demanda instalações ou atualizações adicionais.

Layout de Requisição

createOrders/updateOrders/deleteOrders: Integração SOAP, Síncrona 
NomeTipoObrigatórioTamanhoDescriçãoObservações
regionSourceIdStringSim30Identificador da regional;Deve ser uma regional válida;
identifier (order)StringSim30ID do pedido de transporte;O ID do pedido de transporte deve ser único por embarcador;
codeStringSim255Código do pedido de transporte ("descrição" do pedido de transporte);Não existe no TRE (R2);
shipperIdStringSim255ID do embarcador;

Não existe no TRE (R2);

Este campo deve ser de um embarcador válido;

orderTypeSourceIdStringSim30Código do tipo do pedido;Este campo deve ser o sourceId de um tipo de pedido válido;
orderSubTypeSourceIdStringNão30Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize uma classificação de pedido.

priorityIntegerSim2Prioridade do pedido de transporte;

Não existe no TRE (R2);

Este campo deve ser um número entre 0 e 10; quanto maior o número, maior a prioridade;

pickupStartData/hora (String)Sim29Data/hora de início da janela de embarque;pickupStart deve ser sempre menor que deliveryEnd; pickupStart deve ser sempre menor que pickupEnd (quando este for informado);
Quando não existir horário no sistema externo sempre enviar 00:01 inicio do dia;
pickupEndData/hora (String)Não29Data/hora de término da janela de embarque;pickupEnd (quando este for informado) deve ser sempre menor ou iguala deliveryEnd;
deliveryStartData/hora (String)Não29Data/hora de início da janela de entrega;deliveryStart (quando este for informado) deve ser sempre menor ou iguala deliveryEnd; Quando não existir horário no sistema externo sempre enviar 23:59 final do dia;
deliveryEndData/hora (String)Sim29Data/hora de término da janela de entrega;
billingLimitData/hora (String)Não29Data/hora limite para faturamento;Não existe no TRE (R2);
destinationIdStringSim30ID da localidade de destino do pedido de transporte (endereço principal de entrega);A localidade informada deve ter o papel logístico de "destino" ou "ambos" (não pode ser apenas "origem"); se o endereço de entrega que deve ser considerado é o alternativo, pode-se enviar um código "dummy" neste campo (isto se aplica apenas à operação de criação de pedidos de transporte);
addressCountryAcronymStringNão2Sigla do país do pedido de transporte (endereço alternativo de entrega);Deve ser uma sigla válida; se o CEP não for informado, este campo é obrigatório;
addressStateAcronymStringNão2Sigla do estado do pedido de transporte (endereço alternativo de entrega);Deve ser uma sigla válida; se o CEP não for informado, este campo é obrigatório;
addressCityStringNão50Cidade do pedido de transporte (endereço alternativo de entrega);Se o CEP não for informado, este campo é obrigatório;
addressDistrictStringNão50Bairro do pedido de transporte (endereço alternativo de entrega);
addressStreetStringNão200Endereço do pedido de transporte (endereço alternativo de entrega);
addressNumberStringNão30Número do endereço do pedido de transporte (endereço alternativo de entrega);
addressComplementStringNão30Complemento do endereço do pedido de transporte (endereço alternativo de entrega);
addressZipCodeStringNão10CEP do endereço do pedido de transporte (endereço alternativo de entrega);

O valor não pode ser inválido; se o estado e a cidade não forem informados, este campo é obrigatório;

addressLatitudeFloatNão13Latitude do pedido de transporte (endereço alternativo de entrega);

Se este campo for fornecido, a longitude da localidade também deve ser fornecida; o valor deste campo deve estar no intervalo -90,0 a 90,0;

Observações:- O TOL/TRE pode ser configurado para permitir a geocodificação automática das localidades na integração; se este comportamento estiver habilitado, as geo-coordenadas serão obtidas automaticamente via um serviço GIS durante o próprio processo de aquisição;

addressLongitudeFloatNão13Longitude do pedido de transporte (endereço alternativo de entrega);

Se este campo for fornecido, a latitude da localidade também deve ser fornecida; o valor deste campo deve estar no intervalo -180,0 a 180,0;

Observações:- O TOL/TRE pode ser configurado para permitir a geo-codificação automática das localidades na integração; se este comportamento estiver habilitado, as geo-coordenadas serão obtidas atuomaticamente via um serviço GIS durante o próprio processo de aquisição;

integrationDataSourceStringSim30ID da origem de dados;

Não existe no TRE (R2);

Este campo deve ser de uma origem de dados válida;

modalIntegerNão1Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize uma classificação de pedido.

passingHubUsageTypeStringNão10Tipo de utilização do hub de passagem;

Não existe no TRE (R2);

MANDATORY=Mandatório; OPTIONAL=Opcional; INVALID=Inválido; (este campo é case sensitive e deve vir completamente em maiúsculo)

possiblePassingHubsIdsLista <String>Não30Lista dos IDs das filiais de localidades que podem ser hubs de passagem;

Não existe no TRE (R2);

Este campo deve ter uma lista de IDs de filiais de localidades que são hubs de passagem válidas;

destinationHubUsageTypeStringNão10Tipo de utilização do hub de destino;

Não existe no TRE (R2);

MANDATORY=Mandatório; OPTIONAL=Opcional; INVALID=Inválido; (este campo é case sensitive e deve vir completamente em maiúsculo)

possibleDestinationHubsIdsLista <String>Não30Lista dos IDs das filiais de localidades que podem ser hubs de destino;

Não existe no TRE (R2);

Este campo deve ter uma lista de IDs de filiais de localidades que são hubs de destino válidas;

allowedVehicleIdsLista <String>Não255Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Não há alternativa padrão. Cada caso será avaliado individualmente.

forbiddenVehicleIdsLista <String>Não255Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Não há alternativa padrão. Cada caso será avaliado individualmente.

deliveryExclusivityBooleanNão1Flag indicando se o pedido é de entrega exclusiva;

Não existe no TRE (R2);

Se um pedido estiver com esta flag marcada, as viagens serão montadas de forma que apenas os pedidos do mesmo cliente deste pedido serão agrupados em uma mesma carga;

Exemplo: suponha os seguintes pedidos:
- Pedido 1: cliente C1 e com entrega exclusiva;
- Pedido 2: cliente C2 e sem entrega exclusiva;
- Pedido 3: cliente C1 e sem entrega exclusiva;
Neste cenário, os pedidos 1 e 3 serão enviados juntos em uma mesma carga;

Observações:
- Notar que o pedido 3, mesmo não sendo de entrega exclusiva, será enviado junto com o pedido 1 por ser do mesmo cliente;

incotermIntegerNão1Incoterm do pedido de transporte;

Não existe no TRE (R2);

0=FOB; 1=CIF; 2=FOBT; 3=OP

erpCreationDtData/hora (String)Não29Data de criação do pedido de transporte no sistema externo;

Não existe no TRE (R2);

A obrigatoriedade deste campo poderá variar por embarcador (parâmetros do OrderSysParams);

reference (order)StringNão500Campo texto livre;
observationsStringNão500Campo texto livre;
auxiliary1StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary2StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary3StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary4StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary5StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary6StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary7StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary8StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary9StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);

Como alternativa utilize um atributo de pedido.

auxiliary10StringNão500Não utilizar. Será removido em versões futuras.

Não existe no TRE (R2);
Como alternativa utilize um atributo de pedido.

classificationsclassifications []NãoN/AElemento de agrupamento de todas as classificações de um pedido;
attributes attributes[]NãoN/AElemento de agrupamento de todos os atributos de um pedido;
itemsorderitem[]SimN/AElemento de agrupamento de todos os itens de um pedido;
deliveryUnitsdeliveryUnit[]NãoN/AElemento de agrupamento de todas as unidades de entrega de um pedido;

Não existe no TRE (R2);
Não utilizar. Será removido em versões futuras.

orderitem, tipo de dado utilizado nas integrações do TOL\TRE

Nome

TipoObrigatórioTamanhoDescriçãoObservações
orderIdStringSim30ID do pedido de transporte;Mesmo valor do campo identifier (order);
sourceIdStringSim30ID do item de pedido de transporte;A lista de itens de pedidos não pode conter sourceIds repetidos; o sourceId irá identificar univocamente o item de um pedido; o sourceId de um item não pode se repetir mesmo entre outros pedidos;
orderItemClassificationSourceIdStringNão30Não utilizar. Será removido em versões futuras.Como alternativa utilize uma classificação de item de pedido.
productIdStringSim30ID do SKU;Este campo deve ser de um SKU valido; se o parâmetro de palletização no pedido estiver habilitado e a localidade de destino suportar palletização, este SKU deve ter um pallet associado já definido;
originIdStringSim30ID da localidade de origem do item de pedido;Este campo deve ser de uma localidade válida, deve possuir o papel logístico de "origem" e deve ser distinto da localidade de destino do pedido de transporte (ver campo "destinationId");
proportionalityIdStringNão255Chave de proporcionalidadeIndicador de quais produtos devem ser mantidos em uma mesma proporção dentro de uma carga (exemplo: 1 pote = 1 tampa + 1 envase);
Os SKUs que devem ter esta proporcionalidade respeitada precisam ter o mesmo valor neste campo;
shipmentUnitWrapperCodeStringSim30Código do invólucro de unidade de embarque;Este campo deve ser de um sourceId de invólucro de UE válido e não pode ser um invólucro composto.
priceFloatNão13Valor total de unidades de produtos em todas as unidades de embarque deste item;Cenário 1: Invólucro de embarque é por produto;
Este campo será "sobrescrito" pelo respectivo valor cadastrado no produto;
Cenário 2: Invólucro de embarque é por item;
O valor informado no item será utilizado;
heightFloatNão13Altura do invólucro de embarque (unitário);

Cenário 1: Invólucro de embarque é por produto;
Este campo será "sobrescrito" pelo respectivo valor cadastrado no produto;

Cenário 2: Invólucro de embarque é por item;
Se informado, este campo deve ser maior que zero e seu valor deve ser informado em metros; se a política da categoria de invólucro for por item de pedido, este campo é obrigatório; este campo deve ser fornecido necessariamente com o valor 0 (zero) para as categorias de invólucros que sejam dos tipo "bobina" e "feixe de tubos"; se o parâmetro de palletização no pedido estiver habilitado e a localidade de destino suportar palletização, a altura do SKU deve ser menor que a altura máxima suportada para pallets na localidade de destino;

lengthFloatNão13Comprimento do invólucro de embarque (unitário);

Cenário 1: Invólucro de embarque é por produto;
Este campo será "sobrescrito" pelo respectivo valor cadastrado no produto;

Cenário 2: Invólucro de embarque é por item;
Se informado, este campo deve ser maior que zero e seu valor deve ser informado em metros; se a política da categoria de invólucro for por item de pedido, este campo é obrigatório;

widthFloatNão13Largura do invólucro de embarque (unitário);

Cenário 1: Invólucro de embarque é por produto;
Este campo será "sobrescrito" pelo respectivo valor cadastrado no produto;

Cenário 2: Invólucro de embarque é por item;
Se informado, este campo deve ser maior que zero e seu valor deve ser informado em metros; se a política da categoria de invólucro for por item de pedido, este campo é obrigatório; se o tipo da categoria de invólucro for "tubo", o valor deste campo deve ser menor ou igual ao valor do campo "height" (quando informado);

weightFloatNão13Peso do invólucro de embarque (unitário);

Cenário 1: Invólucro de embarque é por produto;
Este campo será "sobrescrito" pelo respectivo valor cadastrado no produto;

Cenário 2: Invólucro de embarque é por item;
Se informado, este campo deve ser maior que zero e seu valor deve ser informado em quilogramas; se a política da categoria de invólucro for por item de pedido, este campo é obrigatório;

volumeFloatNão13Não utilizar. Será removido em versões futuras.Não necessário. O sistema calculará o volume automaticamente baseado nas dimensões e no invólucro da unidade de embarque.
quantityFloatSim13Quantidade total de unidades de produtos em todas as unidades de embarque deste item;Este campo deve ser maior que zero; se a categoria do invólucro não for do tipo "granel não unitizável", este campo deve ter um valor Integer;
quantityInShipmentUnitsFloatSim13Quantidade de unidades de embarque;Este campo deve ser maior que zero; se a categoria do invólucro for do tipo "feixe de tubos", a divisão de "quantity" por este campo não deve deixar resto (i.e., o campo "quantity" deve ser divisivel por este campo); se a categoria do invólucro for do tipo "pallet", e o sistema não estiver habilitado para trabalhar com unidade de embarque (UE) fracionada, este campo deve ter um valor Integer;
palletFractionationForbiddenBooleanNão1Não utilizar. Será removido em versões futuras.Como alternativa utilize uma classificação de item de pedido.
hlwAllowBooleanNão1Flag indicando se o invólucro de embarque pode ser tombado na orientação ACL;A=Altura; L=Largura; C=Comprimento; ver possíveis orientações de um SKU; um invólucro de embarque não pode ser tombado em todas as suas orientações;
hwlAllowBooleanNão1Flag indicando se o invólucro de embarque pode ser tombado na orientação ALC;A=Altura; L=Largura; C=Comprimento; ver possíveis orientações de um SKU; um invólucro de embarque não pode ser tombado em todas as suas orientações;
lhwAllowBooleanNão1Flag indicando se o invólucro de embarque pode ser tombado na orientação CAL;A=Altura; L=Largura; C=Comprimento; ver possíveis orientações de um SKU; um invólucro de embarque não pode ser tombado em todas as suas orientações;
lwhAllowBooleanNão1Flag indicando se o invólucro de embarque pode ser tombado na orientação CLA;A=Altura; L=Largura; C=Comprimento; ver possíveis orientações de um SKU; um invólucro de embarque não pode ser tombado em todas as suas orientações;
whlAllowBooleanNão1Flag indicando se o invólucro de embarque pode ser tombado na orientação LAC;A=Altura; L=Largura; C=Comprimento; ver possíveis orientações de um SKU; um invólucro de embarque não pode ser tombado em todas as suas orientações;
wlhAllowBooleanNão1Flag indicando se o invólucro de embarque pode ser tombado na orientação LCA;A=Altura; L=Largura; C=Comprimento; ver possíveis orientações de um SKU; um invólucro de embarque não pode ser tombado em todas as suas orientações;
MITStringNão50"Merge in Transit";

Itens de pedido que possuam o mesmo MIT serão transportados na mesma carga; itens de pedido que possuam MITs distintos, poderão ser transportados na mesma carga; esta restrição é aplicada apenas no último trecho da "web" (i.e., quando será feita a entrega efetiva para o cliente); se o DSK for informado, itens de pedido com o mesmo DSK devem ter MITs iguais, que por sua vez precisam ser diferentes de todos os MITs dos outros itens de pedido;

DSKStringNão50Senha de agendamento ("Delivery Schedule Key");

Itens de pedido que possuam o mesmo DSK serão transportados na mesma carga; itens de pedido que possuam DSKs distintos, serão transportados em cargas distintas; esta restrição é aplicada apenas no último trecho da "web" (i.e., quando será feita a entrega efetiva para o cliente); se o MIT for informado, itens de pedido com o mesmo DSK devem ter MITs iguais, que por sua vez precisam ser diferentes de todos os MITs dos outros itens de pedido;

reference (order item)StringNão255Campo texto livre;
classificationsclassifications []NãoN/AElemento de agrupamento de todas as classificações de um item de pedido;
attributes attributes[]NãoN/AElemento de agrupamento de todos os atributos de um item de pedido;

deliveryUnit, tipo de dado utilizado nas integrações do TOL\TRE

Nome

TipoObrigatórioTamanhoDescriçãoObservações
deliveryUnitShipmentUnitsQuantityIntegerSim10Não utilizar. Será removido em versões futuras.
shipmentUnitWrapperCodeStringSim30Não utilizar. Será removido em versões futuras.
orderItems Lista <String>SimN/ANão utilizar. Será removido em versões futuras.

Orderitem

OrderitemSourceid

orderItemShipmentUnitsQuantityIntegerSim10Não utilizar. Será removido em versões futuras.

classifications, tipo de dado utilizado nas integrações do TOL\TRE

Nome

TipoObrigatórioTamanhoDescriçãoObservações
typeStringSim255Tipo da classificação da viagem;
valueStringSim255Valor da classificação da viagem;

attributes, tipo de dado utilizado nas integrações do  TOL\TRE

Nome

TipoObrigatórioTamanhoDescriçãoObservações
nameStringSim255Nome do atributo da viagem;
valueStringSim255Valor do atributo da viagem;

Layout de Resposta

ordersResponse, tipo de dado utilizado nas integrações do TOL\TRE
NomeTipoObrigatórioTamanhoDescriçãoObservações
resultresult[]SimN/AElemento de agrupamento de todos os pedidosDeverá haver pelo menos 1 localidade nesta lista;
sucessBooleanSim1Flag de sucesso ou falha

result, tipo de dado utilizado nas integrações do TOL\TRE
NomeTipoObrigatoriedadeTamanhoDescriçãoObservações
errorCodesStringNão30Lista de códigos de erros
errorMessageStringNão255Mensagens de erros
identifierStringNão30Identificador da tabela dos erros
sucessBooleanSim1Flag de sucesso ou falha

Catalogo de mensagens

CódigoMensagemDescrição

Incoterm

FOB:

  • Representam pedidos que serão retirados pelos clientes nas plantas (a responsabilidade pelo frete é do cliente);
  • Pedidos FOB nunca são misturados com pedidos CIF em uma mesma viagem;
  • Como estes pedidos são retirados pelos clientes nas plantas eles nunca são distribuídos a transportadoras (As viagens destes pedidos nascem com o status "Criada" e não com o status "Distribuída");

CIF:

  • Representam pedidos que serão entregues aos clientes pelo próprio Embarcador (a responsabilidade pelo frete é do Embarcador)
  • Pedidos CIF nunca são misturados com pedidos FOB em uma mesma viagem;
  • Como estes pedidos são entregues pelo Embarcador, eles precisam ser distribuídos a transportadoras que farão a entrega (As viagens destes pedidos nascem com o status "Distribuída" e não com o status "Criada");

FOBT:

  • Equivale a um pedido FOB com a diferença de que a transportadora que fará a coleta já é conhecida É feita a vinculação automática da carga com esta transportadora;
  • Pedidos FOBT nunca serão misturados com pedidos FOB;

OP:

  • Equivale a um pedido CIF;
  • Pedidos OP nunca serão misturados com pedidos CIF;

Anexos

  Arquivo Modificado
Arquivo XML OrderAcquisitionService.xml 07 jul, 2021 by Julio Vinicius Oliveira dos Santos
Arquivo XML R2_order-alternative-address-example.xml 07 jul, 2021 by Julio Vinicius Oliveira dos Santos
Arquivo XML R2_order-example.xml 07 jul, 2021 by Julio Vinicius Oliveira dos Santos
Arquivo R2_OrderAcquisitionService.wsdl 07 jul, 2021 by Julio Vinicius Oliveira dos Santos
Arquivo TRE_Aquisicao_pedidos draw.io diagram 31 ago, 2021 by fernando.m
Arquivo PNG TRE_Aquisicao_pedidos.png TRE_Aquisicao_pedidos exported to image 31 ago, 2021 by fernando.m
Arquivo Copy of TRE_Aquisicao_pedidos 31 ago, 2021 by fernando.m
Arquivo PNG Copy of TRE_Aquisicao_pedidos.png 31 ago, 2021 by fernando.m
Arquivo drawio-backup-TRE_Aquisicao_pedidos-rev-1 draw.io diagram backup 24 out, 2023 by Anônimo

  • Sem rótulos