• Resolved vinomundi

    (@vinomundi)


    Fernando, muito obrigado pelo plugin! Ele é simples e eficiente.

    A única coisa que eu acho que seria interessante melhorar, é tirar alguns complementos que vêm com o endere?o. Exemplo:

    CEP: 04544-051
    Rua Ministro Jesuíno Cardoso – de 221/222 ao fim

    Se der pra tirar esse de… ao fim seria perfeito!
    Alguns sistemas já fazem isso, ent?o com certeza tem algum jeito de fazer…

    The page I need help with: [log in to see the link]

Viewing 15 replies - 1 through 15 (of 16 total)
  • Plugin Author fernandopaglacci

    (@fernandopaglacci)

    Olá. Obrigado Vino Mundi. Vou implementar essa melhoria nas próximas atualiza??es.

    Thread Starter vinomundi

    (@vinomundi)

    Fernando, obrigado pelo retorno.

    Nesse meio-tempo, eu tomei a liberdade de corrigir direto no código, e o resultado foi bom. Além disso, alterei o provedor para usar o ViaCEP, que me pareceu com tempo de resposta mais rápido, e com menos restri??es.

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    @vinomundi Vino. Fiz as melhorias sugeridas. Nossa vers?o está compatível inclusive com o Fluid checkout.

    Obriagado por compartilhar seu conhecimento. Nos ajudou muito.

    Thread Starter vinomundi

    (@vinomundi)

    Fernando, identifiquei outra quest?o, que n?o sei se é exclusivo do Fluid Checkout, ou ocorre no checkout padr?o também.

    é o seguinte: quando o usuário simula o frete no carrinho, e prossegue pra Finaliza??o, o campo CEP vem preenchido, mas o endere?o n?o.

    E um caso ainda pior: se ele retorna ao carrinho, simula um frete pra um novo endere?o, e segue pra finaliza??o, o CEP é atualizado, e o endere?o continua o anterior!

    Eu fiz um teste colocando uma chamada na fun??o quando o usuário coloca o foco no campo CEP. Melhorou, mas n?o resolveu, pois se ele vai direto no campo da rua, acaba tendo que preencher manualmente.

    Você tem alguma ideia de como resolver isso?

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    @vinomundi

    Vou pensar em algo para popular esses campos e preencher também automático a partir do cep no carrinho.

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    @vinomundi Esse auto preencher cep e endere?os através do carrinho ocorre apenas com o Fluid checkout.

    Com o checkout padr?o dos temas, funciona legal.

    Thread Starter vinomundi

    (@vinomundi)

    Fernando, testei com o Fluid Checkout desligado, e o mesmo problema ocorreu…

    Inclusive troquei o tema pra ver se era ali o problema, mas aconteceu do mesmo jeito.

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    Fiz algumas melhorias.

    Thread Starter vinomundi

    (@vinomundi)

    Fernando, n?o rolou… Mas, mexi no código colocando algumas melhorias, e posso lhe passar, caso queira.

    Pelo menos para meu uso, ficou satisfatório.

    N?o sei se posso colocar aqui, ent?o, se for o caso, mando por email. Passe seu contato, por favor.

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    Pode colocar sim o código aqui.

    Obrigado

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    Mas com a atualiza??o que fiz. Ficou bom pra mim. Pelo menos está aplicando o cep do carrinho para o checkout de forma total.

    Thread Starter vinomundi

    (@vinomundi)

    Segue o código com minhas modifica??es:

    Espero que seja útil!

    jQuery(document).ready(function ($) {
        // Variável para controlar se o campo de CEP já recebeu foco
        var firstFocus = true;
    
        // Fun??o para preencher automaticamente o endere?o com base no CEP
        function autocompleteAddressByCEP(cep, prefix) {
            // Mostra o ícone de carregamento
            $(#${prefix}_postcode_field).block({
                message: null,
                overlayCSS: {
                    background: '#fff',
                    opacity: 0.6
                }
            });
    
            // URL da API Viacep
            const url = https://viacep.com.br/ws/${cep}/json/;
    
            $.ajax({
                url: url,
                method: 'GET',
                dataType: 'json',
                success: function (data) {
                    if (!data.erro) {
                        // Preenche os campos de endere?o com os dados obtidos da API
                        $(#${prefix}_state).val(data.uf).change();
                        setTimeout(function () {
                            $(#${prefix}_state).trigger('chosen:updated');
                        }, 100);
                        $(#${prefix}_city).val(data.localidade);
                        $(#${prefix}_neighborhood).val(data.bairro);
                        $(#${prefix}_address_1).val(data.logradouro);
                    } else {
                        console.error('CEP n?o encontrado');
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    console.error('Erro ao obter dados da API:', textStatus, errorThrown);
                },
                complete: function () {
                    // Esconde o ícone de carregamento
                    $(#${prefix}_postcode_field).unblock();
                }
            });
        }
    
        // Evento de foco no campo de CEP
        $('form.checkout').on('focus', '#billing_postcode, #shipping_postcode', function () {
            var prefix = this.id.split('_')[0];
            var cep = $(this).val().replace(/\D/g, ''); // Remover n?o dígitos do CEP
            
            if (firstFocus) {
                autocompleteAddressByCEP(cep, prefix);
                firstFocus = false; // Altera o valor do flag após o primeiro foco
            }
        });
    
        // Evento de foco no campo de logradouro (address_1)
        $('form.checkout').on('focus', '#billing_address_1, #shipping_address_1', function () {
            var prefix = this.id.split('_')[0];
            var addressField = $(this);
            
            // Verifica se o campo de logradouro está vazio antes de preencher
            if (!addressField.val().trim()) {
                var cepField = $(#${prefix}_postcode);
                var cep = cepField.val().replace(/\D/g, ''); // Remover n?o dígitos do CEP
                autocompleteAddressByCEP(cep, prefix);
            }
        });
    	
        // Evento de mudan?a no campo de CEP
        $('form.checkout').on('input', '#billing_postcode, #shipping_postcode', function () {
            var prefix = this.id.split('_')[0];
            var cep = $(this).val().replace(/\D/g, ''); // Remover n?o dígitos do CEP
            if (cep.length === 8) {
                autocompleteAddressByCEP(cep, prefix);
            }
        });
    
    });
    
    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    @vinomundi O plugin está funcionando para da seguinte forma:

    Para usuários n?o-loagados quando você preenche o cep do carrinho de compras para o checkout o endere?o é carregado automático. E quando preenche no checkout o cep, o endere?o também preenche automático.

    Para usuários logados quando preenche o cep no carrinho e vai para o checkout n?o atualiza todo endere?o. Mas atualiza no checkout.

    Na próxima vers?o vou fazer essa melhoria para usuários logados.

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    @vinomundi Obrigado pelo código. Vai ser útil sim.

    Plugin Author fernandopaglacci

    (@fernandopaglacci)

    @vinomundi Mas no caso eu fiz um teste na loja ali, Vino. Quando eu coloquei o cep novo no carrinho e fui para o checkout n?o atualizou automático o endere?o.

    Veja.
    https://www.loom.com/share/c0492892ddfd4ed2acf833358119aad7?sid=d8ef2095-8295-4269-b910-d2bffa3a79e6

Viewing 15 replies - 1 through 15 (of 16 total)
  • The topic ‘Endere?o sem complementos’ is closed to new replies.