Gerar cnpj

6 respostas
L

galera pesquisei na net e não encontrei,alguem teria o codigo pronto que faça o algoritmo de gerar o cnpj.

alguem teria ele?

valeu!!!

6 Respostas

davidbuzatto

Gerar ou validar?

Mesmo que seja gerar, vc pode usar o algoritmo de validação para gerar um CNPJ. Vc criar valores aleatórios para no final gerar os dígitos de verificação. Pronto, vc tem um CNPJ “válido”.

[]´s

L

caso eu tenha esse codigo aqui que valida posso transformar ele como um gerador certo?

public static  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;   
    	
    	    
        }     
           
    }

apos isso teria que fusar isso certo?

public static String geraCNPJ() {     
        String iniciais = "";     
        Integer numero;     
        for (int i = 0; i < 9; i++) {     
            numero = new Integer((int) (Math.random() * 10));     
            iniciais += numero.toString();     
        }     
        return iniciais + calcDigVerif(iniciais);     
    }
davidbuzatto

Você testou?
Deu certo?

L

não apenas demostrei a validação e onde que ele vai gerar se por desse modo pode ser feito!!!

L

fiz isso ate agora

mas agora enpacou

public class gera {   
    
	
    /** Creates a new instance of ValidaCnpj */  
    public gera() {   
    	
    }   
    //public static  boolean validaCnpj( String str_cnpj ) {   
        
           
    	 public static boolean validaCnpj(String str_cnpj) {     
 	        if (str_cnpj.length() != 14)  
// 	        str_cnpj=str_cnpj.replace('.',' ');   
//            str_cnpj=str_cnpj.replace('/',' ');   
//            str_cnpj=str_cnpj.replace('-',' ');   
//            str_cnpj=str_cnpj.replaceAll(" ","");  	        	
 	            return false; 
 	        String numDig = str_cnpj.substring(0, 12);     
 	        return calcDigVerif(numDig).equals(str_cnpj.substring(0, 12));     
 	    }
    	 
    		private static String calcDigVerif(String str_cnpj) { 
    		     
    			Integer primDig, segDig;
    			
                int soma = 0, aux, dig;   
                String cnpj_calc = str_cnpj.substring(0,12);                    
                if ( str_cnpj.length() != 14 )   
                   
                	return false; ----ele não aceita isso pois ele pede pro metodo retornar boolean...teria outra possiblidade de não fazer isso!!
                
                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);   
            }   
    		  public static String geraCNPJ() {     
    		        String iniciais = "";     
    		        Integer numero;     
    		        for (int i = 0; i < 14; i++) {     
    		            numero = new Integer((int) (Math.random() * 13));     
    		            iniciais += numero.toString();     
    		        }     
    		        return iniciais + calcDigVerif(iniciais);     
    		    }     
           	
    	    
        }
E

http://ghiorzi.org/cgcancpf.htm

Se for simplesmente gerar um número de 14 dígitos e então verificar com a fórmula de verificação de CNPJ, Você tem de gerar em média 500 números aleatórios para que um deles seja um CNPJ válido.

É que há 3 dígitos de verificação: o oitavo dígito é um dígito de verificação, assim como o penultimo e o último dígitos.

Ou seja, apenas 1 número de 14 dígitos em cada 1000 (10 * 10 * 10) é um CNPJ válido.

Em vez disso, gere para as posições de 1 a 7, e de 9 a 12, um número aleatório. Então, para as posições 8, 13 e 14, ache os dígitos de verificação.

Criado 14 de dezembro de 2010
Ultima resposta 14 de dez. de 2010
Respostas 6
Participantes 3