GARANTIR DESCONTO

Fórum Validar: CPF / CNPJ e consultar CEP #569160

09/04/2009

0

Boa tarde amigos, venho aqui solicitar uma grande ajuda de vcs amigos, estou desenvolvendo um sistema de controle patrimonial para empresa onde trabalho, mas um dos diretos esta exigindo que o sistema valide CPF / CNPJ e que consulte automaticamente o CEP, alguem tem alguma dica pra me ajudar?? Obrigado
Luis Antonio

Luis Antonio

Responder

Posts

09/04/2009

Sergio Pantano

Aqui tem uma biblioteca muito útil: https://brazilutils.dev.java.net/ Além desses que você precisa tem outros documentos.
Responder

Gostei + 0

09/04/2009

Luis Antonio

Humm, Obrigado Serp, realmente esta biblioteca aparenta ser muito boa... Só tem um probleminha, vim aqui de ousado q sou na area de Java Avançado, mas ainda sou iniciante, e vou precisar de mais uma ajudinha... Como faço para utilizar esta biblioteca??? Se podessem demonstrar um codigo simples mesmo de exemplo seria muito util pessoal... Obrigado
Responder

Gostei + 0

09/04/2009

Luis Antonio

Luiz, abaixo a função que valida cpf e reotrma um boolean. Quanto ao validação de CNPJ recomendo: http://www.imasters.com.br/artigo/2451
	/**
	 * Metodo validacaoCPF - Responsavel em validar o CPF
	 * 
	 * @return Boolean
	 * @since 29/12/2006
	 */
	public boolean validacaoCPF(String cpf) {
		      int     d1, d2;
		      int     digito1, digito2, resto;
		      int     digitoCPF;
		      String  nDigResult;

		      d1 = d2 = 0;
		      digito1 = digito2 = resto = 0;

		      for (int nCount = 1; nCount < cpf.length() -1; nCount++)
		      {
		         digitoCPF = Integer.valueOf (cpf.substring(nCount -1, nCount)).intValue();

		         //multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.
		         d1 = d1 + ( 11 - nCount ) * digitoCPF;

		         //para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.
		         d2 = d2 + ( 12 - nCount ) * digitoCPF;
		      };

		      //Primeiro resto da divisão por 11.
		      resto = (d1 % 11);

		      //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
		      if (resto < 2)
		         digito1 = 0;
		      else
		         digito1 = 11 - resto;

		      d2 += 2 * digito1;

		      //Segundo resto da divisão por 11.
		      resto = (d2 % 11);

		      //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
		      if (resto < 2)
		         digito2 = 0;
		      else
		         digito2 = 11 - resto;

		      //Digito verificador do CPF que está sendo validado.
		      String nDigVerific = cpf.substring (cpf.length()-2, cpf.length());

		      //Concatenando o primeiro resto com o segundo.
		      nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

		      //comparar o digito verificador do cpf com o primeiro resto + o segundo resto.
		      return nDigVerific.equals(nDigResult);
		   }
Responder

Gostei + 0

09/04/2009

Jeferson Mayer

[quote="testaal"]mas um dos diretos esta exigindo que o sistema valide CPF / CNPJ
Bem, a primeira pergunta é: "o que significa validar um CPF/CNPJ"? Se for [b]apenas[/b] calcular e checar os dígitos de verificação, é só procurar no Google o algoritmo e implementar. [b]Porém[/b], se "validar o CPF/CNPJ" significa "verificar se o CPF/CNPJ realmente existe", por exemplo, aí o buraco é muito mais embaixo. A simples verificação do dígito é utilizada apenas para evitar erros de digitação, e não garante que o CPF/CNPJ seja realmente válido. Como em tese somente a Receita Federal possui esses dados, isso provavelmente não dá para fazer.
e que consulte automaticamente o CEP, alguem tem alguma dica pra me ajudar??
Consulte o CEP onde? Os Correios [b]vendem[/b] licenças para o DNE (Diretório Nacional de Endereços), seria isso?
Responder

Gostei + 0

09/04/2009

Luis Antonio

hahaha então vamos deixar a consulta ao CEP de lado... Quanto ao CPF e CNPJ só validação numérica mesmo... Com isso já estaria bom d+... Obrigado...
Responder

Gostei + 0

09/04/2009

Thomas Rafael

caras estou precisando também fazer isso.. valeu pelas dicas, mas como eu validaria o CPF mesmo ?? saber se o cara é devedor, ou se ele paga, essas coisas...é possivel ? estou montando um site de E-Commerce e isso seria fundamental.
Responder

Gostei + 0

09/04/2009

Edson Amorim

Prezado Ari e colegas, E então, como é que eu implemento esta rotina da validação do cpf, para que após a digitação do mesmo, eu saber se foi digitado correto ou ter que voltar a digitar novamente ou ainda corrigir parte do que foi digitado? estou usando um campo textField de nome tCPF. Como ficaria o meu código para receber os dados com esta validação? Grato, Edson
Responder

Gostei + 0

09/04/2009

Edson Amorim

Olá pessoal, Alguma idéia de como fazer isso? Grato, Edson
Responder

Gostei + 0

09/04/2009

Rodrigo Scorsatto

para validar cpf:

/**
 *
 * @author Rodrigo Scorsatto
 */
public class ValidaCpf {
    
    /** Creates a new instance of ValidaCpf */
    public ValidaCpf() {
    }
    public  boolean validacpf(String strCpf){ // formato XXX.XXX.XXX-XX
        if (! strCpf.substring(0,1).equals("")){
            try{
                boolean validado=true;
                int     d1, d2;
                int     digito1, digito2, resto;
                int     digitoCPF;
                String  nDigResult;
                strCpf=strCpf.replace('.',' ');
                strCpf=strCpf.replace('-',' ');
                strCpf=strCpf.replaceAll(" ","");
                d1 = d2 = 0;
                digito1 = digito2 = resto = 0;
                
                for (int nCount = 1; nCount < strCpf.length() -1; nCount++) {
                    digitoCPF = Integer.valueOf(strCpf.substring(nCount -1, nCount)).intValue();
                    
                    //multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.
                    d1 = d1 + ( 11 - nCount ) * digitoCPF;
                    
                    //para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.
                    d2 = d2 + ( 12 - nCount ) * digitoCPF;
                };
                
                //Primeiro resto da divisão por 11.
                resto = (d1 % 11);
                
                //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
                if (resto < 2)
                    digito1 = 0;
                else
                    digito1 = 11 - resto;
                
                d2 += 2 * digito1;
                
                //Segundo resto da divisão por 11.
                resto = (d2 % 11);
                
                //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
                if (resto < 2)
                    digito2 = 0;
                else
                    digito2 = 11 - resto;
                
                //Digito verificador do CPF que está sendo validado.
                String nDigVerific = strCpf.substring(strCpf.length()-2, strCpf.length());
                
                //Concatenando o primeiro resto com o segundo.
                nDigResult = String.valueOf(digito1) + String.valueOf(digito2);
                
                //comparar o digito verificador do cpf com o primeiro resto + o segundo resto.
                return nDigVerific.equals(nDigResult);
            }catch (Exception e){
                System.err.println("Erro !"+e);
                return false;
            }
        }else return false;
    }
}
chamada:
ValidaCpf cpf = new ValidaCpf();
                        validado=cpf.validacpf(strcpf.getText()); //validacpf
                        if(validado){
                                //faz alguma coisa
                        } else msgErroCpf();
Valida CNPJ:

/**
 *
 * @author Rodrigo Scorsatto
 */
public class ValidaCnpj {
    
    /** Creates a new instance of ValidaCnpj */
    public ValidaCnpj() {
    }
    public  boolean validaCnpj( String str_cnpj ) {
        if (! str_cnpj.substring(0,1).equals("")){
            try{
                str_cnpj=str_cnpj.replace('.',' ');
                str_cnpj=str_cnpj.replace('/',' ');
                str_cnpj=str_cnpj.replace('-',' ');
                str_cnpj=str_cnpj.replaceAll(" ","");
                int soma = 0, aux, dig;
                String cnpj_calc = str_cnpj.substring(0,12);
                
                if ( str_cnpj.length() != 14 )
                    return false;
                char[] chr_cnpj = str_cnpj.toCharArray();
                /* Primeira parte */
                for( int i = 0; i < 4; i++ )
                    if ( chr_cnpj[i]-48 >=0 && chr_cnpj[i]-48 <=9 )
                        soma += (chr_cnpj[i] - 48 ) * (6 - (i + 1)) ;
                for( int i = 0; i < 8; i++ )
                    if ( chr_cnpj[i+4]-48 >=0 && chr_cnpj[i+4]-48 <=9 )
                        soma += (chr_cnpj[i+4] - 48 ) * (10 - (i + 1)) ;
                dig = 11 - (soma % 11);
                cnpj_calc += ( dig == 10 || dig == 11 ) ?
                    "0" : Integer.toString(dig);
                /* Segunda parte */
                soma = 0;
                for ( int i = 0; i < 5; i++ )
                    if ( chr_cnpj[i]-48 >=0 && chr_cnpj[i]-48 <=9 )
                        soma += (chr_cnpj[i] - 48 ) * (7 - (i + 1)) ;
                for ( int i = 0; i < 8; i++ )
                    if ( chr_cnpj[i+5]-48 >=0 && chr_cnpj[i+5]-48 <=9 )
                        soma += (chr_cnpj[i+5] - 48 ) * (10 - (i + 1)) ;
                dig = 11 - (soma % 11);
                cnpj_calc += ( dig == 10 || dig == 11 ) ?
                    "0" : Integer.toString(dig);
                return str_cnpj.equals(cnpj_calc);
            }catch (Exception e){
                System.err.println("Erro !"+e);
                return false;
            }
        }else return false;
        
    }
}
Chamada:
  ValidaCnpj cnpj = new ValidaCnpj();
                        validado=cnpj.validaCnpj(strcnpj.getText());
                        if (validado){//validacnpj
                            // faz alguma coisa
                        else  msgerroCnpj();
Responder

Gostei + 0

09/04/2009

Edson Amorim

Prezado Rodrigo, Lhe agradeço muito por ter postado este código. Gostaria na oportunidade, se for possível é clar, que voce me mostrasse como é que eu uso a chamada da classe ValidaCpf a partir da minha classe de inclusão dos dados. Não sei fazer isso ainda. Eu tenho na minha tela de inclusão os campos: Nome Cpf Endereço Ficarei mais uma vez muito agradecido com mais essa ajuda, Edson
Responder

Gostei + 0

09/04/2009

Rodrigo Scorsatto

cara recomendo você ler um bom livro de java ou mais de um, a chamada eu postei no codigo acima, na tua clase é só vc usar o que eu coloquei...
Responder

Gostei + 0

09/04/2009

Edson Amorim

Rdrigo, Boa dica quanto a ler um bom livro, já estou fazendo isso mas leva tempo para aprender e muitas vezes a gente tem mesmo que perguntar sobre uma dúvida e outra, nem sempre a gente deve deixar tudo para resolver só mesmo com as leituras. A gente precisa de ajudas como esta que voce mesmo já postou aqui. Só que tem mais detalhes, por exemplo: eu estou na tela de inclusão e num determinado momento, chega a hora de digitar o numero do cpf aí tudo bem eu digito o cepf e como não tem critica nehuma a fazer neste campo, automaticamente após um "entra" ou "tab", eu vou para o outro campo onde eu digito o endereço e assim sucessivamente. Quero saber como é que eu faço aí neste momento quando eu acabo de digitar o cpf, como que eu completo o código do meu programa. Conto com a ajuda de voce e de outras colegas também. Antecipadamente, meus agradecimentos. Edson
Responder

Gostei + 0

09/04/2009

Rodrigo Scorsatto

cara o que vc pode fazer eh adicionar um evento no teu proximo campo, quando o usuário da um tab ou clicar com o mouse no proximo campo faz a validação do cpf...
Responder

Gostei + 0

09/04/2009

Edson Amorim

Prezado Rodrigo, Acho que já estou entendendo. Ainda não deu certo mas vai aí mais uma pergunta: Assim que eu defino o campo JtextField eu já devo chamar a rotina de validação? Como? Grato, Edson
Responder

Gostei + 0

09/04/2009

Rodrigo Scorsatto

[quote="Amamorim"]Prezado Rodrigo, Acho que já estou entendendo. Ainda não deu certo mas vai aí mais uma pergunta: Assim que eu defino o campo JtextField eu já devo chamar a rotina de validação? Como? Grato, Edson
digamos que teu proximo campo JtextField seja o rg que chamamos de strrg, vc deve criar um evento nesse campo e dai vc faz a validação ex:
 private void strrgActionPerformed (java.awt.event.ActionEvent evt) {                                      
   aqui vc chama a rotina de validação       
}     

e no codigo abaixo vc irá adicionar o evento no campo no caso o rg...

strrg.addActionListener(new java.awt.event.ActionListener() {
                     public void actionPerformed(java.awt.event.ActionEvent evt) {
                            strrgActionPerformed(evt);
                     }
              });
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar