1. Visão Geral:
O Linx Omni, buscando ofertar critérios de cotação que propicie uma jornada de venda para modalidades de same day delivery, criou uma nova evolução - Cotação em Horas e Minutos.
2. Funcionamento:
Para a utilização dessa evolução, se faz necessário o preenchimento de novos campos da tabela de frete (figura abaixo):
- QT_HRS_ENTREGA: Prazo para realização da entrega em horas. Será somado junto ao QT_DIAS_ENTREGA e QT_MIN_ENTREGA.
- QT_MIN_ENTREGA: Prazo para realização da entrega em minutos. Será somado junto ao QT_DIAS_ENTREGA e QT_HRS_ENTREGA.
Importante:
- Os dois novos campos da Tabela de Frete são opcionais. Caso não estejam preenchidos, o calculo da tabela de frete continuará sendo realizado normalmente. Quanto ao campo QT_DIAS_ENTREGA, ele continua sendo obrigatório. Logo, caso seja necessário prazos apenas em horas ou minutos, este campo deverá estar preenchido como "0" (zero).
- A Tabela de Frete é o único preenchimento a ser feito a respeito das unidades de cotação Horas e Minutos.
- Os itens abaixo permanecem com o tratamento em dias:
- Prazo de Manuseio
- Prazo de Manuseio por modalidade
- Horário de corte na Modalidade
- Horário de corte na Retirada na Loja
- Horário de corte por filial/fluxo/modalidade
- Dias de recesso
- Contingência de frete
- Regras Inteligentes de Frete
- Realocação de Pedidos
- Capacidade de atendimento com cotação estendida
3. Response da cotação:
Segue modelo de JSON do payload do response da cotação de frete.
{
"quoteId": "60d7ab9a-768c-44a9-b2b1-5b1c8d5d6086",
"groups": {
"1": {
"pickup": {
"0046": {
"method": "PICKUP",
"allowReservation": false,
"allowPrePaidPickup": true,
"pickupDeadline": 10,
"reserveDeadline": 10,
"price": 5,
"time": 1,
"deliveryEstimatedDate": "2018-05-22",
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "0046",
"locationType": "Own Store",
"type": "PICKUP",
"freightCosts": {
"handlingPrice": 0,
"handlingTime": 1,
"totalPrice": 5,
"rulePrice": 5,
"stockArrivalTime": 0,
"totalTime": 1,
"ruleTime": 0,
"recessDays": 0,
"deliveryEstimatedDate": "2018-05-22",
},
"appliedRules": {
"originalTotalPrice": 0,
"originalTotalTime": 1,
"rules": [
{
"id": "Extra Freight Price Rule",
"action": [
{
"name": "increaseFreightCost",
"value": 5,
"isPercentage": false
}
]
}
]
},
"items": {
"920449002215": {
"sku": "920449002215",
"lotId": "1",
"quantity": 2,
"deliveryDate": null,
"daysToDelivery": null,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null
}
},
"stockTypes": {
"920449002215": {
"PHYSICAL": 2
}
}
}
}
}
},
"shipment": {
"37fdd8f5-58b5-4db2-8552-767214a676f9": {
"id": "37fdd8f5-58b5-4db2-8552-767214a676f9",
"method": "Entrega Econômica",
"methodId": "1",
"price": 16.08,
"time": 5, // continuará sendo utilizado para representar os dias
"deliveryEstimate": {
"days": 5, // prazo em dias
"hours": 10, // prazo em horas
"minutes": 45, // prazo em minutos
"dateTime": "2018-05-22T14:30:00.000Z" // data e horário estimado da entrega
},
"deliveryEstimatedDate": "2018-05-22",
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "0046",
"locationType": "Own Store",
"type": "SHIPMENT",
"freightCosts": {
"handlingPrice": 0,
"totalPrice": 11.08,
"rulePrice": -5,
"handlingTime": 2,
"totalTime": 15,
"ruleTime": 0,
"transferPrice": 0,
"transferTime": 0,
"stockArrivalTime": 0,
"waitingTransferTime": 0,
"recessDays": 0,
"deliveryEstimatedDate": "2018-05-22",
"deliveryEstimate": {
"days": 5, // prazo em dias, igual ao totalTime - criado por questões de organização
"hours": 10, // prazo em horas
"minutes": 45, // prazo em minutos
"dateTime": "2018-05-22T14:30:00.000Z" // data e horário estimado da entrega
},
}
}
}
}
}
}
}
}
Novidades a partir de 02 de Setembro 2024
1. Funcionamento
Surgiu a necessidade de configurar a cotação em horas e minutos por tipo de fluxo, permitindo ao cliente oferecer aos consumidores a opção de receber ou retirar o pedido no mesmo dia, conforme suas capacidades logísticas. Portanto, a cotação deve retornar o campo dateTime considerando a parametrização precisa de horas e minutos.
2. Response da cotação:
{
"quoteId": "6f9d6d17-099f-4d95-9e3e-06095c415bdb",
"groups": {
"qatest": {
"pickup": {
"locationId-001": {
"method": "PICKUP",
"allowReservation": true,
"allowPrePaidPickup": true,
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "locationId-001",
"locationType": "Own Store",
"location": {
"address": {
"zip": "01425070",
"city": "São Paulo",
"state": "SP",
"number": "7221",
"country": "Brasil",
"address1": "Av. Dra. Ruth Cardoso",
"address2": "Conj 701, Bloco A, Departamento 20, Sala 02, Edifício Birmann 21",
"neighbourhood": "Pinheiros",
"defaultBilling": false,
"defaultShipping": false
},
"tradingName": "locationId-001",
"businessName": "locationId-001",
"cnpj": "57695739000104",
"latitude": -29.93265056,
"longitude": -52.03780316
},
"type": "PICKUP",
"freightCosts": {
"deliveryEstimatedDate": "2024-08-28",
"deliveryEstimate": {
"days": 11,
"hours": 24,
"minutes": 6,
"dateTime": "2024-08-28 09:06"
},
"handlingPrice": 1,
"extraDeadlineTime": 1,
"handlingTime": 6,
"handlingHours": 24, // CAMPO NOVO
"handlingMinutes": 6, // CAMPO NOVO
"totalUtilDays": 7,
"recessDays": 4,
"totalPrice": 1,
"rulePrice": null,
"stockArrivalTime": 0,
"totalTime": 11,
"ruleTime": null
},
"appliedRules": {},
"items": {
"skuId-001": {
"sku": "skuId-001",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null,
"groupIds": [
11,
12,
13,
14
],
"categoryIds": [
"categoryId-001",
"categoryId-002",
"categoryId-003",
"categoryId-004"
]
}
},
"stockTypes": {
"skuId-001": {
"PHYSICAL": 1
}
}
}
},
"price": 1,
"time": 11,
"reserveDeadline": 2,
"pickupDeadline": 2,
"deliveryEstimatedDate": "2024-08-28",
"utilDays": 7,
"beforeRules": {}
}
},
"pickupExceptions": [],
"shipment": {
"776c9870-8eeb-47b3-a651-fb3168a128c0": {
"id": "776c9870-8eeb-47b3-a651-fb3168a128c0",
"method": "Normal - methodId-001",
"methodId": "methodId-001",
"poolDeadline": 10,
"price": 3.22,
"time": 5,
"deliveryEstimatedDate": "2024-08-21",
"deliveryEstimate": {
"days": 5,
"hours": 24,
"minutes": 2,
"dateTime": "2024-08-21 20:28"
},
"fulfillments": {
"F1": {
"id": "F1",
"locationId": "locationId-001",
"locationType": "Own Store",
"type": "SHIPMENT",
"freightCosts": {
"handlingPrice": 1,
"totalPrice": 3.22,
"rulePrice": null,
"handlingTime": 1,
"handlingHours": 24, // CAMPO NOVO
"handlingMinutes": 1, // CAMPO NOVO
"extraDeadlineTime": 1,
"recessDays": 2,
"totalTime": 5,
"ruleTime": null,
"totalUtilDays": 3,
"deliveryEstimatedDate": "2024-08-21",
"deliveryEstimate": {
"days": 5,
"hours": 24,
"minutes": 2,
"dateTime": "2024-08-21 20:28"
},
"transferPrice": 0,
"transferTime": 0,
"stockArrivalTime": 0,
"waitingTransferTime": 0
},
"shipment": {
"shippingPrice": 2.2222222222222223,
"shippingTime": 1,
"carrierId": "carrierId-001",
"carrierName": "Razão social carrierId-001",
"contractId": "contractId-001",
"methodId": "methodId-001",
"method": "Normal - methodId-001",
"recessDays": 0,
"details": {
"minWeight": 0,
"maxWeight": 10,
"overweightFactor": 1,
"dimensionalFactor": 1,
"grisType": "",
"grisValue": 1,
"grisMinValue": 0,
"adValorenType": "",
"adValorenValue": 1,
"adValorenMinValue": 0,
"otherCharges": 1,
"icmsCost": 0.022222222222222143,
"provider": {
"id": "OMS",
"type": "INTERNAL"
}
}
},
"appliedRules": {},
"items": {
"skuId-001": {
"sku": "skuId-001",
"lotId": null,
"quantity": 1,
"deliveryDate": null,
"daysToDelivery": 0,
"salesStartsAt": null,
"salesEndsAt": null,
"billingStartsAt": null,
"groupIds": [
11,
12,
13,
14
],
"categoryIds": [
"categoryId-001",
"categoryId-002",
"categoryId-003",
"categoryId-004"
]
}
},
"stockTypes": {
"skuId-001": {
"PHYSICAL": 1
}
}
}
},
"utilDays": 3,
"beforeRules": {}
}
},
"shipmentExceptions": []
}
}
}
3. Configuração COCKPIT - Prazo de Manuseio e Horário de Corte
Anteriormente ao utilizar a cotação em horas e minutos para shipment era necessário configurar o prazo de manuseio em uma modalidade de frete especifica deixando o campo "Prazo de manuseio (dias)" vazio, para que pudesse considerar somente os novos campos importados da tabela de frete.
O mesmo acontecia para o horario de Corte, onde só era considerado o inicio na modalidade de frete.
Como alternativa foi acrescentado os campos: Prazo de manuseio (horas) e Prazo de manuseio (minutos), Horário de corte início e Horário de corte fim na tela de FILIAIS dentro de "Configurações por modalidade"
Exemplos:
Shipment:
Para Pickup é necessário alterar o tipo para: Retira em Loja
Atenção:
Prazo de Manuseio:
Quando não configurado por modalidade, será considerado a configuração genérica já existente de prazo de manuseio da Filial
Horário de Corte:
Exemplificando na prática:
Exemplo 1:
Quando não informado o horario de corte fim e a flag "Manter filial disponivel" estiver = Não , como no cenário acima, a filial ficará indisponivel na cotação a partir das 15h até 23h59, após esse horário a mesma passará a ser retornada e seguirá o prazo de entrega conforme a modalidade de frete.
Exemplo2:
Quando não informado o horario de corte fim e a flag "Manter filial disponivel" estiver = Sim, como no cenário acima, a filial ficará disponivel na cotação após as 15h, entretanto o prazo de entrega será calculado a partir das 23:59.
Exemplo 3:
Quando informado o horario de corte fim e a flag: "Manter filial disponivel" estiver = Não como no cenário acima, a filial ficará indisponivel na cotação até as 23:59. Das 00h até 8:59, o prazo de entrega passar a ser calculado a partir das 9h.
Exemplo 4:
Quando informado o horario de corte fim e a flag: "Manter filial disponivel" estiver = Sim, como no exemplo acima, entre 15h até 8h59, o prazo de entrega para essa filial será calculado a partir das 9h.
Atenção:
Quando configurado por modalidade na tela de filial, o horário de corte será prioritário ao configurado no cadastro da modalidade de Frete.







