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.