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:
Quando configurado por modalidade na tela de filial, o horário de corte será prioritário ao configurado no cadastro da modalidade de Frete.