Oi pessoal, tudo bom?
Temos um script que valida se o usuário está com 12 itens no carrinho para liberar o checkout... Mas as vezes ele dá problema porque é chamando com a função .onload e as vezes ele carrega antes do orderForm, dando erro ao tentar buscar no .orderForm.items.
Alguma ideia de como faço pra garantir que ele seja executado somente após o orderForm ser criado? Procurei nos docs do orderForm algum evento que informa isso mas não achei :(
OBS: não usamos o recurso nativo da vtex pois nossas lojas B2B e B2C usam o mesmo oms e essa validação não se aplica para o B2C.
var permitBuy = 0;
(cartB2B = function(){
let qtd = 0;
vtexjs.checkout.orderForm.items.forEach(function(el,i){
qtd = qtd + el.quantity;
});
let ch = vtexjs.checkout.orderForm.salesChannel;
console.log('p='+ch);
if( ( (+ch)=='2') ){
if( ((+qtd)>=12) ){
console.log('compra');
document.querySelector('.btn-place-order-wrapper').innerHTML = permitBuy;
}else{
console.log('nao');
document.querySelector('.btn-place-order-wrapper').innerHTML = 'Compra mínima 12 itens.';
}
}else{
document.querySelector('.btn-place-order-wrapper').innerHTML = permitBuy;
}
});
window.onload = function(){
cartB2B();
$(window).on('orderFormUpdated.vtex', function(evt, orderForm) {
document.querySelector('.btn-place-order-wrapper').innerHTML = 'Aguarde...';
cartB2B();
});
$(document).ajaxStop(function(){
cartB2B();
});
};
document.addEventListener('DOMContentLoaded', function(){
permitBuy = document.querySelector('.btn-place-order-wrapper').innerHTML;
document.querySelector('.btn-place-order-wrapper').innerHTML = 'Aguarde...';
}, false);