Gerador de CNPJ
Uma rotina muito utilizada por programadores em softwares
comerciais é a
da validação do Cadastro Nacional de Pessoa Jurídica (CNPJ).
Muitos pegam essas rotinas prontas na internet, milhares de sites oferecem nas
mais diversas linguagens de programação. Aos invés de você confiar
seu software a essas rotinas que tal você mesmo desenvolver a sua tendo
a certeza que a mesma está certa e funciona perfeitamente?
Para isso fomos atrás do algoritmo responsável pela validação
de acordo com a regras do Ministério da Fazenda para você mesmo
fazer seu algoritmo e ter certeza de que o mesmo funcionará corretamente
além ter o controle do mesmo para eventuais modificações.
Entendendo o CNPJ
O número que compõe o CNPJ é composto por três
segmentos de algarismos, sendo o primeiro o número da inscrição
propriamente dito, o segundo (após a barra) o número de filiais
e o terceiro representados pelos últimos dois valores que são
os dígitos verificadores.
Oficialmente o cálculo do número do CNPJ prevê também
a verificação do oitavo dígito, mas algumas empresas possuem
números que ao serem validados segundo esse critério são
considerados inválidos.
Por isso o mais seguro é você fazer a validação
dos dígitos verificadores, pois assim nenhum número será inválido
e sua rotina está protegida da mesma forma, já que a regra é única
e funciona com qualquer CNPJ válido.
Validando os dígitos verificadores
Vamos mostrar o modo de cálculo de modo prático, para isso vamos
adotar um número de CNPJ hipotético e calcularemos seus dígitos
verificadores: 11.222.333/0001-XX.
Vamos começar alinhando os números que compõe
o CNPJ com os algarismos 5,4,3,2,9,8,7,6,5,4,3 e 2 nesta ordem, veja:
1 1 2 2 2 3 3 3 0 0 0 1
5 4 3 2 9 8 7 6 5 4 3 2
Feito isso efetuaremos a multiplicação de cada uma das colunas,
assim:
1 1 2 2 2---3--3--3--0 0 0 1
5 4 3 2 9---8--7--6--5 4 3 2
5 4 6 4 18 24 21 18 0 0 0 2
Com os valores encontrados em cada uma das colunas efetuaremos
o somatório,
desta forma: 5+4+6+4+18+24+21+18+0+0+0+2 e com o número obtido, nesse
caso 102, realizaremos a divisão por 11 (102/11).
Vamos considerar como quociente somente o valor inteiro,
o resto da divisão
será responsável pelo cálculo do primeiro dígito
verificador. Assim sendo, no nosso caso o resto da divisão é o
número 3.
Neste momento temos a seguinte regra: Caso o resto da divisão seja
menor que 2 o valor do dígito verificador passa a ser 0, caso contrário
subtraímos o valor de 11 para obter o dígito, que é o
nosso caso, portanto nosso primeiro dígito verificador é (11
- 3) o número 8.
Para seguirmos com a nossa validação tomaremos o CNPJ com o
primeiro dígito já calculado para efetuarmos a validação
do segundo e último dígito verificador: 11.222.333/0001-8X.
O processo é semelhante a primeira etapa, a única mudança é a
seqüência de números que serão alinhados na tabela,
como a tabela ficou maior com a presença do dígito já calculado
a seqüência agora tem que ter mais um número e ficará assim:
6,5,4,3,2,9,8,7,6,5,4,3 e 2, confira:
1 1 2 2 2 3---3--3- 0 0 0 1 8
6 5 4 3 2 9---8--7- 6 5 4 3 2
6 5 8 6 4 27 24 21 0 0 0 3 16
Como você pode notar efetuamos também, como na primeira etapa,
a multiplicação das colunas e faremos agora o somatório
das resultados obtidos: 6+5+8+6+4+27+24+21+0+0+0+3+16. Com o resultado obtido,
nesse caso 120, efetuamos a divisão por 11.
Nessa divisão, assim como no cálculo anterior, vamos apenas
considerar o valor inteiro do quociente, pois o cálculo do último
dígito verificador será feito com o resto da divisão seguindo
a seguinte regra: caso o resto da divisão seja menor que 2 (dois), esse
valor passa automaticamente a ser zero; caso contrário, que é o
nosso caso, subtrai-se o resto de 11 para obter o valor do último dígito
verificador, acompanhe: 120/11=10 com resto 10, 11-10 dígito verificador
1 - Nosso CNPJ agora completo 11.222.333/0001-81.