Desconto em promoção no Carrinho

Criei uma promoção no qual só se aplica para pagamento em boleto. Mas o usuário novo que não logou e sequer escolheu a opção boleto não enxerga no checkout/cart o valor com desconto.

Exemplo se ele for pra tela pagamento, escolher a opção boleto e voltar pro checkout/cart o desconto será aplicado.

Minha dúvida é se tem como o desconto ficar aplicado antes do cliente escolher a opção de pagamento

Você escolheu que a promoção seja de boleto então ela só será ativada caso o boleto esteja selecionado.

Sendo assim, o que você precisa fazer é criar um script que quando o usuário não tem nenhuma forma de pagamento selecionada, você marque de forma transparente o boleto bancário.

O script abaixo te dá uma ideia de como fazer isso.

vtexjs.checkout.getOrderForm().done(function(o){ var value = o.value - o.totalizers.find(x=>x.id == "Discounts").value; var settings = { url: "/api/checkout/pub/orderForm/" + o.orderFormId + "/attachments/paymentData", type: "POST", dataType: "json", contentType: "application/json", accept: "application/json", data: '{"payments":[{"paymentSystem":6,"paymentSystemName":"Boleto Bancário","group":"bankInvoicePaymentGroup","installmentsValue":' + value + ',"value":' + value + ',"referenceValue":' + value + '}],"giftCards":[],"expectedOrderFormSections":["items","totalizers","clientProfileData","shippingData","paymentData","sellers","messages","marketingData","clientPreferencesData","storePreferencesData","giftRegistryData","ratesAndBenefitsData","openTextField","commercialConditionData","customData"]}' } $.ajax(settings).done(function(o){console.log(o)}).fail(function(a,b,c){console.log(a);console.log(b);console.log(c)}); });

Eu vejo esse código como o cenário já completo para funcionar. O que está faltando nele para fazer o script?

Aplicar o desconto você não conseguirá, pois você precisa da condição ser verdadeira para que a promoção funcione e pra isso é necessário ter um produto no carrinho e mesmo assim limita-se somente ao checkout.

Para que exiba o desconto na loja toda (vitrine e página de produto) será necessário desenvolver um script para que faça esse calculo e exiba onde deseja.

@Ed Rodrigues​ esse codigo que postei equivale a 85% do que você precisa. Os outros 15% é a adaptação dentro da sua loja para que ele venha a selecionar o paymentsystem=6 quando vc desejar.

@Fabio Santos de Albuquerque​ Usei a função $(document).ready(function () para esse script rodar logo quando o cliente entra na página de checkout e assim ativar a opção de boleto, o id é o mesmo do sistema = 6 e mesmo assim não está funcionando.

@Ed Rodrigues​ teria que testar no seu ambiente... porque eu testei em 2 lojas aqui e funcionou.

Passa a sua loja para eu testar.

https://www.lojasincor.com.br/