Estou tendo um problema aqui em relação ao salesChannel.
Por exemplo, quando eu tento adicionar um produto com desconto ao carrinho, estou recebendo um erro 401 na api de adicionar o produto no carrinho. Ai no caso o produto vai pro carrinho sem o desconto.
Verificando o problema, descobri que na primeira tentativa ao tentar comprar o produto com desconto, o orderForm vem com o salesChannel = 1 sendo que na verdade deveria ser salesChannel = 3.
orderForm na primeira tentativa →
Já na segunda tentativa o produto é adicionado no carrinho com desconto, e verificando o mesmo orderForm, o salesChanel vem correto, vem setado como 3.
orderForm na segunda tentativa →
Essa loja possui uma conta principal que é a dmvfarma, e dentro dela ela possui 4 lojas, que é drogasmil, rosario, tamoio e farmalife. E a politica comercial de todos os produtos vem assim → .
Verificando o salesChannel de cada loja, descobri que:
Drogasmil = salesChannel = 1;
Farmalife = salesChannel = 2;
Tamoio = salesChannel = 3;
Rosario = salesChannel = 4;
Tentei algumas coisas aqui + a solução que você enviou e não deram certo.
Verificando o salesChannel com esse hook da VTEX → useProduct do ‘vtex.product-context’, ele está retornando o salesChannel correto da loja, no entanto testando pela extensão da VTEX, o VTEX helpers, o salesChannel está como 1:
O que você precisa verificar é se no carrinho e na finalização esta o que você precisa.
Lembrando que essa extensão não é da VTEX em si, e ela vai ser referente a o que você tinha quando carregou a página na primeira vez, ela não fica atualizando sempre.
O que você pode ver também, é colocando o orderForm num useEffect(), para ver se ele atualizou corretamente.
Não creio que seja o ideal se basear por essa extensão.
Olá @Erik-Corebiz, já quebrei a cabeça com temas relacionados. Porém nos meus testes a mudança do sales channel só funciona de fato para usuários logados.
Se forçar a mudança pode até refletir em algumas partes do site, porém na hora que chega no checkout, quando o usuário informa o e-mail, pelo o que entendi o checkout verifica-se se o usuário está logado, senão está logado, salvo engano volta para o sales channel principal.
Refletindo sobre este comportamento, faz sentido que seja assim, já que seria muito fácil para qualquer pessoa setar na própria URL em qualquer loja virtual VTEX o parâmetro ?sc=1 ou ?sc=2 ou sc=3 e puxar o preço de outra política comercial que não a principal.
Está sim, tem a dmvfarma que é o account principal, e nele tem as 4 lojas ticadas.
Em nas outras accounts de drogasmil, tamoios, rosario e farmalife, cada uma está ticada de acordo com a loja, segue as evidências:
Verifique se você no momento de adicionar o carrinho esta especificando o salesChannel.
Por padrão, sempre que tentarmos adicionar um produto ao carrinho e não especificarmos a VTEX considera o SC como 1.
Então caso seu cenário você utilize outro salesChannel eu recomendo fortemente repassar ele no momento de adicionar ao carrinho.
A questão é qual o método de adicionar ao carrinho você esta utilizando, vou te passar a base com a api da VTEX, mas com graphql podem conter variações e provavelmente vai aceitar um campo sc.
Com endpoint da VTEX você vai precisar adicionar o queryParam sc e seu respectivo valor.