Olá pessoal, Gostaríamos de colocar uma validação de dados própria no "Finalizar Compra". Alguém já fez algo parecido?

Nossa loja é um b2b com acesso restrito por login, atendemos revendedoras e o endereço não é cadastrado pela revendedora na VTEX (a alteração é bloqueada) e sim em um sistema próprio integrado com o MasterData VTEX.

Criamos um versionamento de endereço na entidade CL do MasterData e carregamos esta versão quando o usuário se loga.

Como a revendedora pode alterar o endereço estando logada na plataforma queremos comparar a versão na Sessão com versão do MasterData para orientar/forçar um logoff para atualização dos dados.

Pensamos em incluir uma botão dummie para realizar a validação e depois chamar o botão nativo, mas não tivemos sucesso considerando as restrições do checkout em fazer uma função no botão "dummie".

Evoluindo na ideia do botão Dummie, encontramos uma loja que conseguiu inserir uma mensagem com opção fechar no checkout (ou isso é nativo e desconheço...), mas não conseguimos fazer algo parecido nem no mesmo ponto...

Clicar_checkout

não é nativo.

É possível sim o dummie. Já cansei de fazer :)

Mas, pelo que você citou, não seria melhor apenas esconder/apagar os icones de alteração do cadastro e endereço? Lembrando de fazer o mesmo na tela "MInha conta".

Olá @Fabio Santos de Albuquerque​ , muito obrigado pelo retorno. Já desabilitamos a alteração de cadastro/endereço tanto no Minha Conta quanto no Checkout. As alterações de Cadastro/Endereço são realizadas em um outro sistema e posteriormente atualizadas no MasterData. Fazemos um versionamento no MasterData que é gravado no login e precisamos no momento de "Finalizar Compra" checar se a versão carregada na sessão do usuário é a mesma da atualizada no MasterData (o usuário pode ter alterado os dados no outro sistema). No "Fechar pedido" conseguimos colocar uma validação sem problemas, mas no "payment" estamos com dificuldades.

Tem algum detalhe do ponto para incluir este tipo de validação na área do "payment" e mais especificamente, se possível, no "Finalizar Compra"?

Abs,

eu geralmente troco o botão.

crio um clone e deixo o original oculto.

ai faço as validações que preciso no clone. Se estiver tudo ok, eu aciono o evento de click do original.

@Fabio Santos de Albuquerque​ obrigado pelo retorno. Conseguimos fazer.

Segue um trecho do código alterado no "checkout6-custom.js" como referência caso alguém consulte este post.

window.addEventListener("hashchange", () => { isPayment = window.location.hash === '#/payment'; isCart = window.location.hash === '#/cart'; setTimeout(() => { updateShippingDate(); }, 1); if (isPayment) { var paymentSubmitWrap = document.querySelector('.payment-submit-wrap'); var btn = document.querySelectorAll('#payment-data-submit'); btn[1].classList.add('hidden'); var newBtn = document.createElement('DIV'); newBtn.className = 'newBtn'; newBtn.innerHTML = `<i class="icon-lock" data-bind="visible: !window.checkout.disablePaymentButton()" style=""></i> <i class="icon-spinner icon-spin" data-bind="visible: window.checkout.disablePaymentButton()" style="display: none;"></i> <span data-i18n="paymentData.confirm">Finalizar compra</span>`; newBtn.addEventListener('click', () => { checkUserInformation(null, true, btn, newBtn); }); paymentSubmitWrap.append(newBtn); } });