none
Inclusão e Validação de campo CNPJ

    Question

  • Senhores, preciso de uma ajuda.

    Estou iniciando com o Dynamics Workgroup 2011 e preciso incluir um campo CNPJ e validar o mesmo.

    O campo já foi criado e incluído no Formulário correto, porém quando tento incluir o script de validação do campo no Evento onChange, o Dynamics informa que pelo menos uma biblioteca deve ser incluida no formulário.

    Qual seria essa biblioteca? Como devo proceder?

    Friday, October 28, 2011 10:56 AM

Answers

  • Pode usar esse código que funciona perfeitamente:

    na chamada do codigo no campo vc deve colcoar:

    Onde está escrito Função você coloca : validaMascaraCnpj

    Na parte de parâmeteso vc coloca: crmForm.all.new_cnpj.DataValue

    //Mascara e Valida CNPJ
    function validaMascaraCnpj(CNPJ) {
        if (CNPJ != null) {
            var exp = /\-|\.|\/|\(|\)| /g;
            CNPJ = CNPJ.replace(exp, "");
            if (CNPJ.length == 14) {
                /*Bloco de Código de Validação de CNPJ*/
                var valida = new Array(6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
                var dig1 = new Number;
                var dig2 = new Number;
                var digito = new Number(eval(CNPJ.charAt(12) + CNPJ.charAt(13)));
                for (i = 0; i < valida.length; i++) {
                    dig1 += (i > 0 ? (CNPJ.charAt(i - 1) * valida[i]) : 0);
                    dig2 += CNPJ.charAt(i) * valida[i];
                }
                dig1 = (((dig1 % 11) < 2) ? 0 : (11 - (dig1 % 11)));
                dig2 = (((dig2 % 11) < 2) ? 0 : (11 - (dig2 % 11)));
                if (((dig1 * 10) + dig2) != digito) {
                    alert("Número de CNPJ inválido.");
                    CNPJ = '';
                } else {
                    /*Formata como ##.###.###/####-##*/
                    CNPJ = CNPJ.substr(0, 2) + '.' + CNPJ.substr(2, 3) + '.' + CNPJ.substr(5, 3) + '/' + CNPJ.substr(8, 4) + '-' + CNPJ.substr(12, 2);
                }

            } else {
                alert('CPF - CNPJ fora da 14 dígitos sequenciais! Ex: 125362142362179');
                CNPJ = '';
            }
            Xrm.Page.getAttribute("new_cnpj").setValue(CNPJ);
        }
    }

     

     


    Tiago Henrique Consultor de Implantação
    Monday, November 28, 2011 3:24 PM

All replies

  • Fábio,

    Segue um link que irá lhe ajudar:

    http://social.msdn.microsoft.com/Forums/pt-BR/dynamicscrmpt/thread/f18a4105-bcfb-405a-8fac-eba46a403ce6

    Vale lembrar que tudo que já faz com javascript e jquery continua valendo no CRM, é só tomar cuidado com comandos não suportados, para verificar isso, consulte o SDK.

    Att


    Tiago Michelini Cardoso MCTS - MCC
    https://tiagomcardoso.wordpress.com/
    Monday, October 31, 2011 1:09 PM
  • Tiago,

    As referências que informou pra mim não ficaram muito claras, minha dúvida é bem específica.

    Vou tentar explicar passo-a-passo:

    Crio o campo CNPJ, conforme abaixo em: Componentes > Entidades > Conta > Campos:

     

    Depois de criar o campo, adiciono o mesmo no formulário em Componentes > Entidades > Conta > Formulários > Principal.


    Clicando duas vezes sobre o campo é aberta a tela de propriedades onde na guia Eventos deveria seguir com as orientações do link, porém aí vem a dúvida, se eu tentar simplesmente adicionar o código em Manipuladores de Eventos é exigibida a tela:

     

     

    Aí está minha principal dúvida, tenho que adicionar primeio uma biblioteca em "Bibliotecas de Formulários" para somente depois inserir o código?

    Qual é essa biblioteca?

    Depois de inserida a biblioteca como devo adicionar o código em "onChange" ???

     

     

     


    Friday, November 04, 2011 10:47 AM
  • Olá Fábio,

     

    Exatamente como você disse.

     

    No CRM2011 os Scripts são mais centralizados, escritos em bibliotecas.

     

    Bibliotecas não nada além de repositorio de código, ou seja, você cria um biblioteca como se estivesse colocando todo o código em um arquivo a parte, mas nesse caso todos dentro do CRM.

     

    Crie uma biblioteca com um nome qualquer, dentro desse arquivo você coloca apenas funções (no seu caso a de validação de CNPJ function ValidaCNPJ(){ } ). Depois no OnChange indique a biblioteca e apenas chame a função.

     

    Abs,

     

     


    Ricardo Alves | www.ricardoalves.me
    • Proposed as answer by RicardoAlves Tuesday, November 08, 2011 10:13 PM
    Tuesday, November 08, 2011 10:12 PM
  • Ricardo,

     

    Segui todos os passos, porém quanto entro no formulário para testar o campo é exibido o seguinte erro:

     

    Nas propriedades do Manipulador devo fazer alguma inclusão ou está correto como na figura abaixo:

     

    Friday, November 18, 2011 1:57 PM
  • Fábio,

    Você realizou a tradução da versão 4 para a versão 2011, certo?

    http://crm2011scriptconvert.codeplex.com/

    Talvez o problema esteja na nomenclatura de algum atributo, para o testar poderia debuggar o javascript, veja:

    http://tiagomcardoso.wordpress.com/2011/10/05/crm-javascript-debugger/

     

    Att,


    Tiago Michelini Cardoso MCTS - MCC
    https://tiagomcardoso.wordpress.com/
    Friday, November 18, 2011 2:15 PM
  • Tiago,

    Utilizei o conversor para versão 2011.

    Segue o código utilizado abaixo:

    function valida_cnpj(cnpj)
          {
          var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
          digitos_iguais = 1;
          if (cnpj.length < 14 && cnpj.length < 15)
                return false;
          for (i = 0; i < cnpj.length – 1; i++)
                if (cnpj.charAt(i) != cnpj.charAt(i + 1))
                      {
                      digitos_iguais = 0;
                      break;
                      }
          if (!digitos_iguais)
                {
                tamanho = cnpj.length – 2
                numeros = cnpj.substring(0,tamanho);
                digitos = cnpj.substring(tamanho);
                soma = 0;
                pos = tamanho – 7;
                for (i = tamanho; i >= 1; i–)
                      {
                      soma += numeros.charAt(tamanho – i) * pos–;
                      if (pos < 2)
                            pos = 9;
                      }
                resultado = soma % 11 < 2 ? 0 : 11 – soma % 11;
                if (resultado != digitos.charAt(0))
                      return false;
                tamanho = tamanho + 1;
                numeros = cnpj.substring(0,tamanho);
                soma = 0;
                pos = tamanho – 7;
                for (i = tamanho; i >= 1; i–)
                      {
                      soma += numeros.charAt(tamanho – i) * pos–;
                      if (pos < 2)
                            pos = 9;
                      }
                resultado = soma % 11 < 2 ? 0 : 11 – soma % 11;
                if (resultado != digitos.charAt(1))
                      return false;
                return true;
                }
          else
                return false;
          }

    var exp = /\-|\.|\/|\(|\)| /g
    var cnpjFormatado = Xrm.Page.getAttribute("new_cnpj").getValue();
    if(cnpjFormatado == null){return;}

    /*Somente números*/
    cnpjFormatado = cnpjFormatado.replace(exp,"");

    /*Validação de CNPJ*/
    if(valida_cnpj(cnpjFormatado )){
       /*Formata como ##.###.###/####-##*/
       cnpjFormatado = cnpjFormatado.replace(exp,"");
       cnpjFormatado = cnpjFormatado.substr(0, 2) + ‘.’ + cnpjFormatado.substr(2, 3) + ‘.’ + cnpjFormatado.substr(5, 3) + ‘/’ + cnpjFormatado.substr(8, 4) + ‘-’ + cnpjFormatado.substr(12, 2);
       Xrm.Page.getAttribute("new_cnpj").setValue(cnpjFormatado);
    }else{
       alert("Número de CNPJ inválido.");
       Xrm.Page.getAttribute("new_cnpj").setValue("");
    }

    Friday, November 18, 2011 3:26 PM
  • Poderiam me ajudar?
    Wednesday, November 23, 2011 1:02 PM
  • Deu algum erro na hora de executar?
    Tiago Henrique Consultor de Implantação
    Monday, November 28, 2011 3:05 PM
  • Pode usar esse código que funciona perfeitamente:

    na chamada do codigo no campo vc deve colcoar:

    Onde está escrito Função você coloca : validaMascaraCnpj

    Na parte de parâmeteso vc coloca: crmForm.all.new_cnpj.DataValue

    //Mascara e Valida CNPJ
    function validaMascaraCnpj(CNPJ) {
        if (CNPJ != null) {
            var exp = /\-|\.|\/|\(|\)| /g;
            CNPJ = CNPJ.replace(exp, "");
            if (CNPJ.length == 14) {
                /*Bloco de Código de Validação de CNPJ*/
                var valida = new Array(6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
                var dig1 = new Number;
                var dig2 = new Number;
                var digito = new Number(eval(CNPJ.charAt(12) + CNPJ.charAt(13)));
                for (i = 0; i < valida.length; i++) {
                    dig1 += (i > 0 ? (CNPJ.charAt(i - 1) * valida[i]) : 0);
                    dig2 += CNPJ.charAt(i) * valida[i];
                }
                dig1 = (((dig1 % 11) < 2) ? 0 : (11 - (dig1 % 11)));
                dig2 = (((dig2 % 11) < 2) ? 0 : (11 - (dig2 % 11)));
                if (((dig1 * 10) + dig2) != digito) {
                    alert("Número de CNPJ inválido.");
                    CNPJ = '';
                } else {
                    /*Formata como ##.###.###/####-##*/
                    CNPJ = CNPJ.substr(0, 2) + '.' + CNPJ.substr(2, 3) + '.' + CNPJ.substr(5, 3) + '/' + CNPJ.substr(8, 4) + '-' + CNPJ.substr(12, 2);
                }

            } else {
                alert('CPF - CNPJ fora da 14 dígitos sequenciais! Ex: 125362142362179');
                CNPJ = '';
            }
            Xrm.Page.getAttribute("new_cnpj").setValue(CNPJ);
        }
    }

     

     


    Tiago Henrique Consultor de Implantação
    Monday, November 28, 2011 3:24 PM
  • Thiago,

     

    Funcionou perfeitamente.. Obrigado!!!!!

    Wednesday, December 28, 2011 3:26 PM
  • Boa tarde Tiago,

    Também estou com a mesa necessidade para criação de um campo de CNPJ com validação e máscara.

    Minha dúvida é anterior ao script: que tipo de campo preciso criar antes de incluir o script?

    Quais parametrizações preciso colocar nesse campo?

    Obrigado.

    Wednesday, September 05, 2012 7:51 PM
  • Adriano,

    Esta thread já foi fechada pelo autor, pode por gentileza criar um nova para lhe ajudarmos?

    Att,


    Tiago Michelini Cardoso MVP - MCC - MCTS
    https://tiagomcardoso.wordpress.com/

    Wednesday, September 05, 2012 8:07 PM
  • Tiago,

    Sou novo aqui.

    Como faço isso?

    Eu convidei você no LinkedIn e gostaria de um apio seu aqui em Ribeirão Preto. 

    Como podemos nos falar?

    Obrigado.

    Wednesday, September 05, 2012 8:45 PM
  • Adriano,

    Seja bem vindo!

    Para abrir uma nova thread, na página inicial, clique em "Fazer um pergunta".

    Apenas uma breve descrição do que o fórum propõem para seus usuários. A ideia consiste em ajuda (gratuita) contínua entre os membros do fórum, afim de prover caminhos ou soluções para seus problemas. Toda troca de informação deve ser feita no fórum, pois via qualquer outro dispositivo não ficaria registrada e não ajudaria outras pessoas no futuro. Por fim, propagandas e consultorias avançadas não são permitidas e serão moderadas pelos moderadores.

    Quanto ao linkedin irei adicioná-lo.

    Att,


    Tiago Michelini Cardoso MVP - MCC - MCTS
    https://tiagomcardoso.wordpress.com/

    Wednesday, September 05, 2012 9:08 PM