Preços Diferentes para o Mesmo SKU no Checkout API

Boa tarde, pessoal!

Atualmente, estou utilizando a API de checkout da VTEX para atualizar os itens do pedido através do endpoint /api/checkout/pub/orderForm/:orderFormId/items?allowedOutdatedData=paymentData.

No entanto, estou enfrentando dificuldades para passar o mesmo SKU com preços distintos. O exemplo abaixo mostra a estrutura que estou utilizando:

{
  "orderItems": [
    {
      "id": "68463",
      "quantity": 1,
      "price": 42954,
      "seller": "1",
      "index": 0
    },
    {
      "id": "68463",
      "quantity": 1,
      "price": 42955,
      "seller": "1",
      "index": 1
    }
  ]
}

O preço total da venda deveria ser 859,09 (ou seja, 85909 centavos). No entanto, estou enviando os dados da seguinte forma:

{
  "orderItems": [
    {
      "id": "68463",
      "quantity": 2,
      "price": 42954,
      "seller": "1",
      "index": 0
    }
  ]
}

Com essa abordagem, o valor total da venda não está batendo corretamente com o valor do pedido. Alguém já passou por isso ou tem alguma sugestão de como resolver essa discrepância no valor final?

Agradeço desde já pela ajuda!

1 Like

Oi @mauriiciofrancelino, tudo bem?

Não sei se tem haver, mas pegando pelo Direito do Consumidor, quando um produto apresenta dois preços diferentes, a legislação geralmente determina que prevaleça o menor valor. Esse princípio está alinhado ao funcionamento do módulo VTEX Pricing, que sempre entrega o menor preço ao usuário dentro de um determinado contexto.

Sempre que dois ou mais SkuIds iguais são enviados ao OrderForm, ocorre um agrupamento automático, e a simulação de preços entrega o menor preço para o contexto do usuário, multiplicando pelo total de itens enviados.

Uma alternativa que talvez possa funcionar seja configurar o uso de priceTables e enviá-las junto com os SKUs no payload. Isso talvez altere o contexto de preço para cada SKU individualmente. Mas só testando mesmo.

Poderia comentar um pouco mais sobre a regra de negócio que você está implementando?

Abraços!

2 Likes

O que está acontecendo:

O preço unitário do meu produto é 447,00. Com duas unidades à venda, o valor total deveria ser 894,00. No entanto, na aplicação externa, houve um desconto de 34,91, fazendo com que o valor final da venda ficasse em 859,09.

O problema surge porque, ao informar o preço manualmente, não encontrei uma opção para passar valores com 3 casas decimais. Se eu coloco o manualPrice como 429,54 por unidade (429,54 x 2 = 859,08), o valor total fica 859,08, ou seja, 1 centavo abaixo do valor real de 859,09. Isso causa problemas na hora de fechar o pedido.

Minha possível solução:

Uma forma que acredito que resolveria o problema seria adicionar 1 centavo em uma das unidades. Assim, o preço ficaria algo como:

  • 429,54 para uma unidade
  • 429,55 para a outra unidade

Dessa forma, o total seria 859,09, que corresponde exatamente ao valor da venda após o desconto.