Entrega de Lockers
Visão Geral
Que tal disponibilizar lockers para aumentar a quantidade de pontos de retirada da sua loja? O Linx OMS está pronto para isso!
O presente documento tem como objetivo a apresentação de como o OMS irá disponibilizar essa nova modalidade.
Algumas definições:
-
Lockers: armários inteligentes ou “Smart Lockers” equipados com tecnologia que permite a abertura automática das portas, muito parecido com um guarda-volumes. O sistema de travas é monitorado remotamente e liberado com senhas únicas.
-
Clique Retire: É uma empresa que disponibiliza lockers para que o consumidor compre online e escolha um ponto fixo mais perto de casa para retirar o pedido. Dependendo da empresa, pode ser uma loja da rede ou um locker. Varejo de roupas, eletroeletrônico, construção, decoração, farmácias, joalheria e até supermercados já utilizam este serviço.
Atenção
Esta nova funcionalidade só será disponibilizada após o cliente realizar acordo comercial com a Clique Retire. Para isso, se faz necessário que este preencha os dados da Landing Page https://info.cliqueretire.com.br/linx.
Benefícios
A funcionalidade apresenta alguns benefícios:
- Possibilidade de processos de retirada de produtos fora das lojas;
- A retirada nos lockers é mais eficiente. O consumidor só precisa se identificar no painel, por meio de dados como CPF e QR Code da compra. Com isso, se evita congestionamento em lojas;
- Área de recebimento totalmente acessível e com localização estratégica. Com isso, acaba o problema com a impossibilidade de receber encomendas em casa/apto;
- A encomenda fica disponível no armário poucas horas após a aprovação do pedido. A concentração das entregas em um mesmo ponto, garante um custo mais baixo e maior efetividade. Melhora o rastreamento, atrasos e custo de frete com entregas espalhadas.
Há grandes possibilidades de aumento de clientes e pedidos para o seu negócio.
Configurações de Produto
A funcionalidade necessita de ajuste de configuração.
Editar/Criar Filiais
1.Filiais → 2.Cadastro de filiais → 3.Envio para locker (marcar esta opção significa que a loja participará das cotações de frete e poderá receber pedidos a serem enviados para lockers).
Editar/Criar de Modalidades
1.Envio pela Loja → 2.Modalidades de Frete → 3.Tornar modalidade exclusiva para 'lockers' (ao habilitar o campo, a modalidade se torna exclusiva para cotações usando lockers.)
Atenção
Após habilitado, não será possível editar ou desfazer essa configuração.
No cadastro da modalidade, é necessário informar se ela é exclusiva para lockers para ser possível retornar na cotação. Além disso, o nome da modalidade deve ser exatamente igual ao nome do company que fornecerá o locker como retirada.
Exemplo: Se a company na tabela de lockers for igual a cliqueretire, o nome da modalidade deverá ser cliqueretire, também.
Cadastrar Transportadora
- Envio pela Loja → 2.Transportadoras (informar os dados da transportadora)
Cadastrar Tabela de Frete
- Envio pela Loja → 2.Tabela de Frete (informar os dados da tabela de frete)
No cadastro da tabela de frete associe a transportadora cadastrada com a modalidade, defina o ID do contrato e vincule as filiais que realizarão o ship to locker.
Obs.: Para possibilitar o retorno de lockers com os preços e prazos, se faz subir uma tabela de frete.
Configurações de API
A nova funcionalidade disponibiliza via API o retorno de lockers com preço, prazo e a referência que cada locker pode atender.
POST /v1/clients/{clientId}/channels/{channelId}/freights
Endpoint responsável por retornar todos os armários (E-Boxes) sempre que alguma location do mesmo estado dos lockers possibilitar uma entrega de shipment e o cliente possuir uma tabela de frete cadastrada para a Clique Retire.


Request/Response
{
"destinationZipcode": "05550900",
"clientId": "qa",
"channelId": "site",
"groups": {
"light": {
"items": {
"TesteLocker": {
"quantity": 1,
"price": 54.99,
"weight": 1,
"height": 100,
"width": 100,
"length": 100,
"stockType": "PHYSICAL"
}
}
}
}
}
{
"quoteId": "56ec578a-cae5-496f-b147-d4a0e308528f",
"groups": {
"light": {
"pickup": {},
"pickupExceptions": {},
"shipment": {},
"shipmentExceptions": {},
"locker": {
"CR0177": {
"method": "PICKUP",
"methodId": "cliqueretire",
"allowReservation": false,
"allowPrePaidPickup": false,
"latitude": -23.4827802,
"longitude": -46.6448071,
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "CR0177",
"locationType": "locker",
"type": "PICKUP",
"freightCosts": {
"deliveryEstimatedDate": "2022-04-15",
"handlingPrice": 0,
"extraDeadlineTime": 0,
"handlingTime": 0,
"recessDays": 0,
"totalPrice": 15,
"stockArrivalTime": 0,
"totalTime": 4
},
"items": {
"testelocker": {
"sku": "testelocker",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null
}
},
"stockTypes": {
"testelocker": {
"PHYSICAL": 1
}
}
}
},
"price": 15,
"time": 4,
"reserveDeadline": 0,
"pickupDeadline": 0,
"deliveryEstimatedDate": "2022-04-15"
},
"CR0304": {
"method": "PICKUP",
"methodId": "cliqueretire",
"allowReservation": false,
"allowPrePaidPickup": false,
"latitude": -23.6184873,
"longitude": -46.6821143,
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "CR0304",
"locationType": "locker",
"type": "PICKUP",
"freightCosts": {
"deliveryEstimatedDate": "2022-04-15",
"handlingPrice": 0,
"extraDeadlineTime": 0,
"handlingTime": 0,
"recessDays": 0,
"totalPrice": 15,
"stockArrivalTime": 0,
"totalTime": 4
},
"items": {
"testelocker": {
"sku": "testelocker",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null
}
},
"stockTypes": {
"testelocker": {
"PHYSICAL": 1
}
}
}
},
"price": 15,
"time": 4,
"reserveDeadline": 0,
"pickupDeadline": 0,
"deliveryEstimatedDate": "2022-04-15"
}
},
"lockerExceptions": {}
}
}
}
POST /v1/clients/{clientId}/channels/{channelId}/freights/{locationId}/pickup
Endpoint responsável por realizar shipto dos itens da filial para o locker e sfor do mesmo estado deste, caso o cliente possua uma tabela de frete cadastrada para a Clique Retire.


Request/Response
{
"clientId": "qa",
"channelId": "site",
"locationId": "CR0177",
"groups": {
"light": {
"items": {
"testelocker": {
"quantity": 1,
"price": 54.99,
"weight": 1,
"height": 100,
"width": 100,
"length": 100,
"stockType": "PHYSICAL"
}
}
}
}
}
{
"quoteId": "37d0505e-ebfb-4027-8fee-abda2170477e",
"groups": {
"light": {
"pickup": {
"CR0177": {
"allowPrePaidPickup": false,
"allowReservation": false,
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "L1",
"locationType": "Own Store",
"type": "SHIPMENT",
"freightCosts": {
"handlingPrice": 0,
"totalPrice": 15,
"handlingTime": 5,
"extraDeadlineTime": 0,
"recessDays": 0,
"totalTime": 9,
"deliveryEstimatedDate": "2022-04-19",
"transferPrice": 0,
"transferTime": 0,
"stockArrivalTime": 0,
"waitingTransferTime": 0
},
"shipment": {
"shippingPrice": 15,
"shippingTime": 4,
"carrierId": "621",
"carrierName": "Clique e retire",
"contractId": "1559",
"methodId": "cliqueretire",
"method": "cliqueretire",
"recessDays": 0,
"details": {
"minWeight": 0,
"maxWeight": 30000,
"overweightFactor": 0,
"dimensionalFactor": 0,
"grisType": "",
"grisValue": 0,
"grisMinValue": 0,
"adValorenType": "",
"adValorenValue": 0,
"adValorenMinValue": 0,
"otherCharges": 0,
"icmsCost": 0,
"provider": {
"id": "OMS",
"type": "INTERNAL"
}
}
},
"items": {
"testelocker": {
"sku": "testelocker",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null
}
},
"stockTypes": {
"testelocker": {
"PHYSICAL": 1
}
},
"shipToStore": true
},
"F2": {
"id": "F2",
"locationId": "CR0177",
"locationType": "locker",
"type": "PICKUP",
"dependsOn": "F1",
"freightCosts": {
"handlingPrice": 0,
"handlingTime": 0,
"totalPrice": 0,
"stockArrivalTime": 0,
"totalTime": 9
},
"items": {
"testelocker": {
"sku": "testelocker",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null
}
},
"stockTypes": {
"testelocker": {
"PHYSICAL": 1
}
}
}
},
"price": 15,
"time": 9
}
},
"pickupExceptions": []
}
}
}
POST /v1/clients/{clientId}/channels/{channelId}/reservations
Endpoint responsável por criar as reservas dos itens que serão armazenado no lockers.


Request/Response
{
"quoteId": "37d0505e-ebfb-4027-8fee-abda2170477e",
"clientId": "qa",
"channelId": "site",
"orderId": "51917008",
"freightQuotes": {
"light": {
"id": "L1",
"type": "PICKUP"
}
}
}
{
"clientId": "qa",
"channelId": "site",
"orderId": "12313123131",
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "L1",
"locationType": "Own Store",
"type": "SHIPMENT",
"freightCosts": {
"transferPrice": 0,
"handlingPrice": 0,
"totalPrice": 15,
"transferTime": 0,
"handlingTime": 5,
"stockArrivalTime": 0,
"waitingTransferTime": 0,
"totalTime": 9,
"recessDays": 0
},
"items": {
"testelocker": {
"sku": "testelocker",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null,
"stockType": "PHYSICAL"
}
},
"status": "PENDING",
"shipToStore": true,
"shipment": {
"shippingPrice": 15,
"shippingTime": 4,
"carrierId": "621",
"carrierName": "Clique e retire",
"contractId": "1559",
"recessDays": 0,
"method": "cliqueretire",
"methodId": "cliqueretire"
}
},
"F2": {
"id": "F2",
"locationId": "CR0177",
"locationType": "locker",
"type": "PICKUP",
"freightCosts": {
"transferPrice": 0,
"handlingPrice": 0,
"totalPrice": 0,
"transferTime": 0,
"handlingTime": 0,
"stockArrivalTime": 0,
"waitingTransferTime": 0,
"totalTime": 9,
"recessDays": 0
},
"items": {
"testelocker": {
"sku": "testelocker",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null,
"stockType": "PHYSICAL"
}
},
"status": "PENDING",
"pickup": {},
"dependsOn": "F1"
}
}
}
POST /v2/clients/{clientId}/locations/{id}
Endpoint responsável por atualizar as locations, é necessário habilitar a configuração canShipToLocker (true) para que seja possível realizar o shipto para Locker.


Request
{
"id": "my-location-id",
"clientId": "clientId",
"tradingName": "trading name",
"canShipToLocker": true,
"address": {
"zip": "00000012",
}
}
GET /v2/lockers
Endpoint responsável por retornar as informações de locker filtrando através dos parâmetros company, ID, IDs, address.state.


Response
{
"id": "CR0039",
"name": "MetroRio Fazenda Botafogo",
"company": "cliqueretire",
"compartmentType": [
{
"type": "L",
"depth": 47.2,
"width": 34.2,
"height": 39.1,
"internalType": "L"
},
{
"type": "M",
"depth": 47.2,
"width": 34.2,
"height": 18.8,
"internalType": "M"
},
{
"type": "S",
"depth": 47.2,
"width": 34.2,
"height": 7.8,
"internalType": "S"
}
],
"address": {
"address1": "Av. Pastor Martin Luther King Junior",
"city": "Rio de Janeiro",
"state": "RJ",
"number": "S/N",
"neighbourhood": "Acari",
"description": "Área Paga, Plataforma: Central - Cabeceira Sul",
"zip": "21531010"
},
"addressPoint": {
"latitude": -43.3518906,
"longitude": -22.8245123
},
"createdAt": {
"date": "2022-04-10 21:55:01.000000",
"timezone_type": 3,
"timezone": "UTC"
}
}
GET /v2/lockers/{id}
Endpoint responsável por retornar as informações de locker individualmente filtrando através dos parâmetros company, address.state.


Response
[
{
"id": "CR0039",
"name": "MetroRio Fazenda Botafogo",
"company": "cliqueretire",
"compartmentType": [
{
"type": "L",
"depth": 47.2,
"width": 34.2,
"height": 39.1,
"internalType": "L"
},
{
"type": "M",
"depth": 47.2,
"width": 34.2,
"height": 18.8,
"internalType": "M"
},
{
"type": "S",
"depth": 47.2,
"width": 34.2,
"height": 7.8,
"internalType": "S"
}
],
"address": {
"address1": "Av. Pastor Martin Luther King Junior",
"city": "Rio de Janeiro",
"state": "RJ",
"number": "S/N",
"neighbourhood": "Acari",
"description": "Área Paga, Plataforma: Central - Cabeceira Sul",
"zip": "21531010"
},
"addressPoint": {
"latitude": -43.3518906,
"longitude": -22.8245123
},
"createdAt": {
"date": "2022-04-10 21:55:01.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
{
"id": "CR0177",
"name": "Posto Duque Zagottis",
"company": "cliqueretire",
"compartmentType": [
{
"type": "L",
"depth": 47,
"width": 34.2,
"height": 40,
"internalType": "L"
},
{
"type": "M",
"depth": 47,
"width": 34.2,
"height": 18.5,
"internalType": "M"
},
{
"type": "S",
"depth": 47,
"width": 34.2,
"height": 8,
"internalType": "S"
}
],
"address": {
"address1": "AV ENGENHEIRO ALBERTO DE ZAGOTTIS",
"city": "São Paulo",
"state": "SP",
"number": "567",
"neighbourhood": "Jardim Taquaral",
"description": "Ao lado da loja de conveniência e ao lado do freezer",
"zip": "04675085"
},
"addressPoint": {
"latitude": -46.6959666,
"longitude": -23.6689842
},
"createdAt": {
"date": "2022-04-10 21:55:01.000000",
"timezone_type": 3,
"timezone": "UTC"
}
}
}
/clients/{clientId}/channels/{channelId}/orders*
Endpoint responsável pela criação do pedido.
Response
{
"id": "LOCKERBA009",
"pointOfSaleId": "qa",
"channelId": "site",
"clientId": "qa",
"status": "PROCESSING",
"total": 164.97,
"placedAt": "2021-05-06T10:00:00.000Z",
"billingAddress": {
"zip": "05427010",
"city": "São Paulo",
"state": "SP",
"number": "110",
"status": "ACTIVE",
"country": "BR",
"address1": "Rua Fernao Dias",
"address2": "casa",
"lastName": "Linx",
"firstName": "Barbara",
"telephone": {
"type": "billing",
"number": "48991141688"
},
"description": "Barbara Linx",
"neighbourhood": "Pinheiros"
},
"customer": {
"id": "1000000000000",
"type": "INDIVIDUAL",
"email": "[email protected]",
"gender": "F",
"fullName": "Barbara linx",
"lastName": "Linx",
"addresses": {
"billing": {
"zip": "05427010",
"city": "São Paulo",
"state": "SP",
"number": "110",
"status": "ACTIVE",
"country": "BR",
"address1": "Rua Fernao dias",
"address2": "casa",
"lastName": "Linx",
"firstName": "Barbara",
"telephone": {
"type": "billing",
"number": "48991141688"
},
"description": "Barbara Linx",
"neighbourhood": "Pinheiros"
}
},
"birthdate": "1991-10-01T02:00:00.000Z",
"documents": [
{
"type": "rg",
"number": "331739100"
},
{
"type": "cpf",
"number": "32344524827"
}
],
"firstName": "Barbara",
"telephones": [
{
"type": "billing",
"number": "48991141688"
}
],
"socialNumber": "32344524827"
},
"discount": 0,
"items": [
{
"sku": "TesteLocker",
"url": "",
"gtin": "630509365814",
"name": "",
"gtins": {
"630509365814": 0
},
"image": "",
"price": 54.99,
"width": 100,
"height": 100,
"length": 100,
"weight": 10,
"discount": 0,
"quantity": 1,
"basePrice": 54.99,
"categories": [
"738",
"756",
"826"
],
"acquisitionType": "PURCHASE"
},
{
"sku": "TesteLocker2",
"url": "",
"gtin": "630509365814",
"name": "",
"gtins": {
"630509365814": 0
},
"image": "",
"price": 54.99,
"width": 100,
"height": 100,
"length": 100,
"weight": 10,
"discount": 0,
"quantity": 2,
"basePrice": 54.99,
"categories": [
"738",
"756",
"826"
],
"acquisitionType": "PURCHASE"
}
],
"comments": [],
"fulfillments": {
"F1": {
"id": "F1",
"channelId": "site",
"clientId": "qa",
"locationId": "L1",
"ownership": "oms",
"shipment": {
"address": {
"zip": "30130110", // CEP da LocationId do fulfillment dependent
"city": "São Paulo", // Cidade da LocationId do fulfillment dependent
"state": "SP", // Estado da LocationId do fulfillment dependent
"number": "CR0137", //lockerId
"country": "BR", // País da LocationId do fulfillment dependent
"address1": "Av seila", // Endereço principal da LocationId do fulfillment dependent
"address2": "APTO", // Complemento da LocationId do fulfillment dependent
"lastName": "Linx",
"firstName": "Barbara",
"telephone": {
"type": "SHIPMENT",
"number": "11999991111", // Número do Telefone da LocationId do fulfillment dependent
"countryCode": "+55"
},
"description": "comercial"
},
"method": "cliqueretire",
"methodId": "cliqueretire",
"carrierId": "cliqueretire",
"contractId": "cliqueretire",
"recessDays": 0,
"carrierName": "Clique e retire",
"shippingTime": 4,
"shippingPrice": 15
},
"status": "WAITING",
"type": "SHIPMENT",
"createdAt": "2022-04-12T19:15:22.000Z",
"updatedAt": "2022-04-12T19:15:23.000Z",
"freightCosts": {
"totalTime": 9,
"recessDays": 0,
"totalPrice": 15,
"handlingTime": 5,
"transferTime": 0,
"handlingPrice": 0,
"transferPrice": 0,
"stockArrivalTime": 0,
"waitingTransferTime": 0
},
"processedAt": "2022-04-12T19:15:22.000Z",
"enablePrePicking": false,
"prePickingFinished": false,
"locationType": "Own Store",
"allowDeliveryParcial": false,
"items": {
"TesteLocker": {
"sku": "TesteLocker",
"quantity": 1,
"stockType": "PHYSICAL",
"orderedQuantity": 1,
"returnedQuantity": 0,
"canceledQuantity": 0,
"daysToDelivery": 0,
"itemType": "OTHER",
"acquisitionType": "PURCHASE",
"presale": false,
"enablePicking": true
},
"TesteLocker2": {
"sku": "TesteLocker2",
"quantity": 2,
"stockType": "PHYSICAL",
"orderedQuantity": 2,
"returnedQuantity": 0,
"canceledQuantity": 0,
"daysToDelivery": 0,
"itemType": "OTHER",
"acquisitionType": "PURCHASE",
"presale": false,
"enablePicking": true
}
},
"presale": false,
"enablePicking": true,
"enableShipping": true,
"enableBilling": true,
"invoices": [],
"volumes": [],
"exceptions": [],
"treatments": [],
"statusHistory": [
{
"status": "WAITING",
"processedAt": "2022-04-12T19:15:22.000Z",
"createdAt": "2022-04-12T19:15:22.000Z",
"updatedAt": "2022-04-12T19:15:22.000Z",
"locationId": "L1",
"oldData": [],
"state": "WAITING"
}
],
"transportationHistory": [],
"comments": []
},
"F2": {
"id": "F2",
"channelId": "site",
"dependsOn": "F1", // LocationId que este fulfillment depende receber a mercadoria
"clientId": "qa",
"locationId": "L2", // LocartionId de retirada do pedido, neste caso, será considerado o lockerId que contém no FF relacionado no ""dependsOn" = shipment.address.number
"ownership": "oms",
"status": "PENDING",
"type": "PICKUP",
"createdAt": "2022-04-12T19:15:22.000Z",
"updatedAt": "2022-04-12T19:15:24.000Z",
"freightCosts": {
"totalTime": 9,
"recessDays": 0,
"totalPrice": 0,
"handlingTime": 0,
"transferTime": 0,
"handlingPrice": 0,
"transferPrice": 0,
"stockArrivalTime": 0,
"waitingTransferTime": 0
},
"pickup": {
"token": "189d161e4ba4f2114c07410379f27ed6",
"prepaid": true
},
"processedAt": "2022-04-12T19:15:22.000Z",
"enablePrePicking": false,
"prePickingFinished": false,
"locationType": "locker",
"allowDeliveryParcial": false,
"items": {
"TesteLocker": {
"sku": "TesteLocker",
"quantity": 1,
"stockType": "PHYSICAL",
"orderedQuantity": 1,
"returnedQuantity": 0,
"canceledQuantity": 0,
"daysToDelivery": 0,
"itemType": "OTHER",
"acquisitionType": "PURCHASE",
"presale": false,
"enablePicking": true
},
"TesteLocker2": {
"sku": "TesteLocker2",
"quantity": 2,
"stockType": "PHYSICAL",
"orderedQuantity": 2,
"returnedQuantity": 0,
"canceledQuantity": 0,
"daysToDelivery": 0,
"itemType": "OTHER",
"acquisitionType": "PURCHASE",
"presale": false,
"enablePicking": true
}
},
"presale": false,
"enablePicking": true,
"enableShipping": true,
"enableBilling": true,
"invoices": [],
"volumes": [],
"exceptions": [],
"treatments": [],
"statusHistory": [
{
"status": "PENDING",
"processedAt": "2022-04-12T19:15:22.000Z",
"createdAt": "2022-04-12T19:15:22.000Z",
"updatedAt": "2022-04-12T19:15:22.000Z",
"locationId": "CR0177",
"oldData": [],
"state": "PENDING"
}
],
"transportationHistory": [],
"comments": []
}
}
}
Configurações de Integração
Essa nova funcionalidade tem o objetivo técnico de criar o caminho multitenant para o envio do pedido após a escolha na cotação, faturamento (Aprovação da NF-e) e retorno de status finalizadores.
Integração de pedidos (regras):
- Ambiente que devemos criar essa primeira integração: QA (Ambiente do cliente EX: youcom).
- Esse processo sempre irá iniciar após recebemos o faturamento dos sistemas responsáveis (INVOICED OU BILLED).
- No campo trackingNumber inserir o número do pedido quando não receber informação no pedido.
- Enviar as informações de volume que recebemos dos sistemas que faz o faturamento.
- Quando receber os status de (INVOICED OU BILLED) andar com o status do pedido de SEND_READY até SHIPPING_READY.
- Inserir o pedido no status de aguardando transportadora (SHIPPING_READY).
- Quando receber 200 da postagem colocar o pedido automaticamente em SHIPPED (DESPACHADO).
- Fazer a integração no fluxo somente para pedidos que contêm: "methodId": "cliqueretire".
- Incluir um valor fixo "55" no campo cellphone do payload.
Payload
{
"orderNumber": "ID0026", //fulfillments.orderId + fulfillments.id//
"boxCode": "CB0001", // order.fulfillment.shipment.address.number//
"urlCallback": "https://urlcallback.com.br", //Url Webhook de retorno de status//
"endCustomer": {
"cellphone": "+5521991467790", /55order.customer.addresses.billing.telephone//
"documentNumber": "999.999.999-99", //order.customer.documents."type": "cpf"//
"email": "[email protected]", //order.customer.email//
"fullName": "Chermont Teste" //order.customer.fullName//
},
"volumes": [
{
"expressNumber": "WF0102031", //fulfillments.orderId + fulfillments.id//
"invoice": [
{
"series": "999999", //invoice.series//
"number": "999", //invoice.number//
"key": "9999999" //invoice.nfe.eletronicKey//
}
]
}
]
}
Retorno de status (regras):
- Criar Webhook para receber modelo padrão acordado com a transportadora;
- Ler fluxo de recebimento do retorno de status do clique e retire;
- Com o retorno da transportadora para os status (DELIVERY_FAILED, DELIVERED), criar o tratamento no pedido somente para itens com a quantidade >0;
- Incluir todos os status que recebemos no WEBHOOK no transportationHistory do pedido;
- fazer um de/para com a informação que recebemos no campo "message" com a informação que temos de clientID;
Ex:
Deixar essa config disponível no RemoteConfig
Ambiente Linx = QA (Ambiente do cliente EX: youcom)
Payload
{
"event": "{status}",
"expressNumber": "{{expressNumber}}",
"eventimeTime": "2021-03-25T17:38:15-03:00",
"message": "{{message}}", --//campo que vai conter o nome do cliente//
"orderId": "{{referenceNumber}}",
"accessCode": "accessCode",
"shortLink": "shortLink"
}
Necessário entrar em contato com o time de Operação Linx OMS, para a conclusão e ativação da nova funcionalidade.
Updated 18 days ago