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.