Multi-frete com cotação para retira em loja

Nesta seção iremos abordar como utilizar o Multi-frete combinado com cotação para todas as lojas com retira em loja.

❗️

Esse recurso só deve ser utilizado por lojas em construção!!

Se você está trabalhando em uma loja que já está em produção e precisa utilizar o recurso de Multi-frete, entre em contato com o Suporte Wake solicitando ajuda.

Cotação para todas as lojas de retirada com Multi-frete:

Esta funcionalidade expande as opções de retirada, mostrando todas as lojas físicas disponíveis que podem atender a um pacote de produtos, independentemente do CD priorizado para aquele pacote.

Pré-requisitos

Para habilitar esta funcionalidade, ambas as configurações a seguir devem estar ativas, e podem ser encontradas em Fretes> Configurações :

  1. Multi fretes nos produtos de CDs diferentes (Storefront)


  2. Exibir todas as lojas físicas disponíveis para cotação

Como funciona

Quando as configurações estão ativas, o campo pickups dentro de cada ShippingQuoteGroup será populado.

  • shippingQuotes: Contém as cotações padrão (entrega e/ou retirada) vinculadas ao CD principal do pacote. A opção de retirada neste campo refere-se à loja física associada ao CD priorizado para o pacote.
  • pickups: Contém todas as outras opções de retirada em CDs que atendem àquele grupo de produtos, mas que não são o CD principal do pacote.

Estrutura de PickupShippingQuote (item do array pickups):

type PickupShippingQuote {
  deadline: Int!
  deadlineInHours: Int
  distributionCenter: DistributionCenter # O CD da loja de retirada
  name: String
  shippingQuoteId: Uuid!
  value: Float!
}

Diferença na Seleção

Ao usar a funcionalidade de cotação para todas as lojas com Multi-frete, é importante saber que as opções de retirada em lojas (pickups) exigem uma lógica de seleção diferente das cotações padrão (shippingQuotes).

A diferença está na origem do distributionCenterId. Para ficar mais claro, vamos comparar dois cenários:

Cenário 1: Selecionando uma cotação padrão (do array shippingQuotes)

  • shippingQuoteId: Vem do item selecionado em shippingQuotes.
  • distributionCenterId: Vem do objeto distributionCenter no nível raiz do grupo.

Cenário 2: Selecionando uma retirada (do array pickups)

  • shippingQuoteId: Vem do item selecionado em pickups.
  • distributionCenterId: Vem do objeto distributionCenter dentro do item selecionado no array pickups.

Exemplo de Query com Comentários

O exemplo abaixo ilustra onde obter cada ID necessário para a seleção.

query CheckoutShippingChoice($checkoutId: Uuid!) {
  shippingQuoteGroups(checkoutId: $checkoutId, useSelectedAddress: true) {
    # Nível Raiz do Grupo
    distributionCenter {
      id # Para selecionar cotações de 'shippingQuotes', use este ID.
      sellerName
    }
    shippingQuotes {
      shippingQuoteId # Para selecionar, use este shippingQuoteId e o ID do CD acima.
      name
      type
      value
    }

    # Opções de Retirada Adicionais
    pickups {
      # Para selecionar uma retirada daqui...
      shippingQuoteId # ...use este shippingQuoteId.
      name
      value
      distributionCenter {
        id # ...e use este distributionCenterId, que está DENTRO do objeto de pickup.
        sellerName
      }
    }
    
    products {
      productVariantId
    }
  }
}

A verificação das cotações selecionadas e a finalização da etapa seguem o mesmo fluxo descrito na documentação principal do Multi-frete. Você pode consultar os detalhes neste link.