Autocomplete ao digitar um cnpj

De Tek-System Wiki
Ir para navegação Ir para pesquisar

O algoritmo a seguir deve ser implantado na pagina:

vendor/experius/module-addresslines/view/frontend/templates/expirius/customer/form/register.phtml

O algoritmo a seguir consiste em uma requisicao ao webservice do governo para obter varios dados do cliente a partir de seu cnpj.


    <script type="text/javascript">
        
            function limpaFormularioCnpj() {
                document.getElementById('razao_social').value=("");
                document.getElementById('street_1').value=("");
                document.getElementById('street_2').value=("");
                document.getElementById('street_3').value=("");
                document.getElementById('street_4').value=("");
                document.getElementById('city').value=("");
                document.getElementById('region_id').value=("");
                document.getElementById('telephone').value=("");
                document.getElementById('email_address').value=("");
                document.getElementById('zip').value=("");
            }

            function meu_callback(conteudo) {
                if (!("erro" in conteudo)) {
                    //Atualiza os campos com os valores.
                    conteudo.nome != null && conteudo.nome != undefined ? document.getElementById('razao_social').value=(conteudo.nome) : document.getElementById('razao_social').value = "";
                    conteudo.logradouro != null && conteudo.logradouro != undefined ? document.getElementById('street_1').value=(conteudo.logradouro) : document.getElementById('street_1').value = "";
                    conteudo.numero != null && conteudo.numero != undefined ? document.getElementById('street_2').value=(conteudo.numero) : document.getElementById('street_2').value = "";
                    conteudo.bairro != null && conteudo.bairro != undefined ? document.getElementById('street_3').value=(conteudo.bairro) : document.getElementById('street_3').value = "";
                    conteudo.complemento != null && conteudo.complemento != undefined ? document.getElementById('street_4').value=(conteudo.complemento) : document.getElementById('street_4').value = "";
                    conteudo.municipio != null && conteudo.municipio != undefined ? document.getElementById('city').value=(conteudo.municipio) : document.getElementById('city').value="";
                    if(conteudo.uf != null && conteudo.uf != undefined) converteUFemPadraoValueDoMagento(conteudo.uf);
                    conteudo.telefone != null && conteudo.telefone != undefined ? document.getElementById('telephone').value=(conteudo.telefone) : document.getElementById('telephone').value="";
                    conteudo.email != null && conteudo.email != undefined ? document.getElementById('email_address').value = (conteudo.email) : document.getElementById('email_address').value ="";
                    conteudo.cep != null && conteudo.cep != undefined ? document.getElementById('zip').value = (conteudo.cep) : document.getElementById('zip').value ="";

                }

                if( document.getElementById('zip').value != null &&  document.getElementById('zip').value != ""){
                    document.getElementById("informacoesExtraEnderecoCadastro").style.display = "block";
                }

                else {
                    limpaFormularioCnpj();
                    // cnpj nao encontrado
                }
            }

            function pesquisaCnpj(valor) {

                var cnpj = retiraPontuacaoDoCnpjParaPesquisa(valor);

                //Verifica se campo cnpj possui valor informado.
                if (verificaSeTemOtamanhoCnpj() && realizaValidacaoTotalDeCpfECpnj(valor)) {

                    // document.getElementById('razao_social').value="...";
                    // document.getElementById('street_1').value="...";
                    // document.getElementById('street_2').value="...";
                    // document.getElementById('street_3').value="...";
                    // document.getElementById('street_4').value="...";
                    // document.getElementById('city').value="...";
                    // document.getElementById('telephone').value="...";
                    // document.getElementById('email_address').value="...";
                    // document.getElementById('zip').value="...";

                    //Cria um elemento javascript.
                    var script = document.createElement('script');

                    //Sincroniza com o callback.
                    script.src = 'https://www.receitaws.com.br/v1/cnpj/'+ cnpj +'/?callback=meu_callback';

                    //Insere script no documento e carrega o conteúdo.
                    document.body.appendChild(script);
                }else{
                    realizaValidacaoTotalDeCpfECpnj(valor);
                }
            };


            document.getElementById("taxvat").onblur = function() {
                pesquisaCnpj(document.getElementById("taxvat").value)
            };

            function verificaSeTemOtamanhoCnpj(){
                return document.getElementById("taxvat").value != null && document.getElementById("taxvat").value.length >= 16;
            }

            function retiraPontuacaoDoCnpjParaPesquisa(valor){

                var palavra = valor;

                for(var i = 0; i < valor.length; i++){
                    palavra = palavra.replace(".", "");
                    palavra = palavra.replace("/", "");
                    palavra = palavra.replace("-", "");
                }

                return palavra;
            }
    



    </script>