LimaJonas / magento-autocomplete-cep-br

Simples solução para auto-completar campos ao preencher o CEP no campo de Checkout
8 stars 4 forks source link

Não funciona com endereço de cobrança #2

Open rjslegall opened 3 years ago

rjslegall commented 3 years ago

Olá!

Poderia nos ajudar com este problema por favor?

Temos em nossa loja o endereço de entrega padrão: shippingAddress.postcode

E o endereço de cobrança que o cliente habilita quando precisa que os dados de faturamento sejam diferentes: billingAddressshared.postcode

Quando o cliente preenche o endereço de entrega, os dois campos são preenchidos. Assim o módulo precisa funcionar independentemente para os dois endereços.

LimaJonas commented 3 years ago

Não havia reparado nisso. Na minha loja por padrão está o mesmo endereço para os dois, então não houve necessidade e não sei qual é o site. Mas acho que sei a solução. Veja qual o nome do arquivo XML para a página que altera o endereço de cobrança e copie para a pasta Jonaslima/Autocomplete/view/frontend/layout/, então copie o texto do arquivo customer_address_form.xml para este XML copiado. Acho que assim já irá funcionar.

rjslegall commented 3 years ago

Olá!

Nosso modelo de checkout é de uma página.

Como pode ver o formulário para endereço de entrega e cobrança ficam na mesma página. 01

Neste caso quando logado, o cliente pode cadastrar um novo endereço ai abre um popup com outro formulário para um novo endereço. Neste formulário o autopreenchimento não funciona. 02

Será que sua sugestão de alterar o XML funcionaria no meu caso? Se puder me dar mais alguns detalhes sobre sua sugestão seria grato.

obrigado!

rjslegall commented 3 years ago

Olá Jonas!

Relatei mais alguns detalhes sobre a questão. Poderia verificar e reabrir a questão?

Obrigado!

Em ter., 27 de jul. de 2021 às 09:41, Jonas Lima @.***> escreveu:

Não havia reparado nisso. Na minha loja por padrão está o mesmo endereço para os dois, então não houve necessidade e não sei qual é o site. Mas acho que sei a solução. Veja qual o nome do arquivo XML para a página que altera o endereço de cobrança e copie para a pasta Jonaslima/Autocomplete/view/frontend/layout/ https://imgur.com/9UCLraI, então copie o texto do arquivo customer_address_form.xml https://imgur.com/bUN0dDX para este XML copiado. Acho que assim já irá funcionar.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/LimaJonas/magento-autocomplete-cep-br/issues/2#issuecomment-887478024, or unsubscribe https://github.com/notifications/unsubscribe-auth/APRO4OHCHS4SVE73CYONJZLTZ2SNZANCNFSM5A5ROJPQ .

-- Att; Rafael Jorge 11 93152-4470

LimaJonas commented 3 years ago

Desculpe, acho que me confundi em algo.

Quando você preenche o CEP no endereço de entrega ele já preenche também no endereço de cobrança e você precisa que cada um seja independente. isso?

Já que ambos ficam na página de checkout não precisaria alterar o XML, apenas o arquivo checkoutAddress.js. Poderia me passar os names () dos campos a serem auto preenchidos? Talvez eu consiga alterar e disponibilizar para você testar

rjslegall commented 3 years ago

Olá Jonas, obrigado pelo retorno!

Isso. Quando digito o CEP no endereço de entrega ele preenche o de cobrança também. porém quando digito o CEP no endereço de cobrança ele não preenche nenhum campo dos dois formulários.

No meu checkout (Firecheckout) os names, exemplo: [name="street[0]"] são exatamente os mesmos para os formulários do endereço de entrega, cobrança e novo endereço. O que muda é apenas a referência ao formulário que está o "name".

Abaixo segue um exemplo de uma função do Firecheckout que aplica a necessidade de obrigatoriedade ou não de campos específicos. Esta função é aplicada no admin do módulo. Observe que ela está endereçada apenas ao formulário
var scopes = [ '.checkout-billing-address',
];

// Mandatory/optional billing address fields require([ 'jquery', 'underscore', 'Swissup_Firecheckout/js/utils/form-field/label', 'Swissup_Firecheckout/js/utils/form-field/manager', 'Swissup_Firecheckout/js/utils/form-field/dependency', 'Swissup_Firecheckout/js/utils/form-field/mask', 'Swissup_Firecheckout/js/utils/form-field/validator', 'Swissup_Firecheckout/js/utils/form-field/watcher', 'SwissupFirecheckout/js/utils/form-field/placeholder', 'mage/translate' ], function ($, , label, manager, dependency, mask, validator, watcher, placeholder, $t) { 'use strict';

var scopes = [
    '.checkout-billing-address',      
];

_.each(scopes, function (scope) {
    dependency({
        scope: scope,
        watch: {
            '[name="street[0]"]': '*'
        },
        react: {                
            '[name="street[1]"]': 'required|required', 
            '[name="street[2]"]': 'required|required', 
            '[name="street[3]"]': 'required|required',
            '[name="firstname"]': 'optional|optional',
            '[name="lastname"]':  'optional|optional', 
            '[name="telephone"]': 'optional|optional',
            '[name="company"]': 'required|required',
            '[name="vat_id"]': 'required|required',
            '[name="fax"]': 'required|required'
        }

    });
});

});

Já esta outra função (parte dela) é endereçada ao formulário de entrega e cobrança juntos. Segue um exemplo:

//define address form in which need to use the CPF/CNPJ code var scopes = [ '.form-shipping-address',
'.billing-address-form' ];

Me parece que para funcionar o autopreenchimento preciso adaptar esta função. O que acha?