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!!!
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!!!
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
caso eu tenha esse codigo aqui que valida posso transformar ele como um gerador certo?
[code]
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;
}
} [/code]
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);
}
Você testou?
Deu certo?
não apenas demostrei a validação e onde que ele vai gerar se por desse modo pode ser feito!!!
fiz isso ate agora
mas agora enpacou
[code]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);
}
}
[/code]
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.