Este artigo apresenta como é realizada a validação de um número de CNPJ que é o documento de identificação do contribuinte Pessoa Jurídica perante a Receita Federal.
O CNPJ é um número formado por 14 dígitos dos quais os dois últimos são chamados de dígitos verificadores (DV). Cada DV é calculado com base nos dígitos anteriores e juntos servem para validar o número do CNPJ como um todo. Assim, torna-se importante quando um número de CNPJ é digitado pelo usuário final em uma aplicação utilizar o método isCNPJ(), implementado no pacote "meuPacote" apresentado na Listagem 1, para verificar se o número informado está correto evitando, por exemplo, o cadastro de CNPJs inválidos.
Para exemplificar o algoritmo de verificação do CNPJ será utilizado como exemplo o CNPJ número 14.572.457.0001-85.
O cálculo dos DVs é executado em duas etapas usando para isto o módulo de divisão 11 (módulo de divisão é a parte inteira do resultado de uma divisão): | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Para calcular o 1º dígito verificador: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
a) Cada um dos doze primeiros números do CNPJ, a partir do 12º número até o 1º, é multiplicado por um peso que começa de 2 e que vai sendo incrementado de 1 a cada passo, somando-se as parcelas calculadas. Sempre que o peso atingir o valor 10 ele deve novamente receber o valor inicial 2: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
b) calcula-se o dígito através da seguinte expressão: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
179 % 11 = 3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
obs. se o resto da divisão (operador %) calculado for 0 ou 1, o dígito verificador será 0; nos outros casos, o dígito verificador é definido pela expressão: 11 - 3 = 8 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Para calcular o 2º dígito verificador: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
a) Cada um dos treze primeiros números do CNPJ, a partir do primeiro DV (13º número) até o 1º, é multiplicado por um peso que começa de 2 e que vai sendo incrementado de 1 a cada passo, somando-se as parcelas calculadas. Sempre que o peso atingir o valor 10 ele deve novamente receber o valor inicial 2: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
b) calcula-se o dígito através da seguinte expressão: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
215 % 11 = 6 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
obs. se o resto da divisão (operador %) calculado for 0 ou 1, o dígito verificador será 0; nos outros casos, o dígito verificador é definido pela expressão: 11 - 6 = 5 |
Desenvolvendo a Aplicação Java
Criar um novo projeto no ambiente de desenvolvimento NetBeans através da opção do menu "Arquivo|Novo Projeto..." e realizar os dois passos descritos a seguir:
1º Passo:
Criar um pacote Java e identificá-lo com o nome "meuPacote". No pacote criado implementar a classe Java ValidaCNPJ, mostrada na Listagem 1, com os métodos:
a) isCNPJ()- retorna um valor booleano que indica se o número de CNPJ é válido ou inválido;
b) imprimeCNPJ()- retorna o CNPJ formatado na máscara: 99.999.999.9999-99.
Listagem 1. Classe ValidaCNPJ do pacote "meuPacote". |
|
Na implementação de uma classe ou de um conjunto de classes em um pacote Java o código fonte deve ser iniciado com a diretiva package, seguida do nome do pacote (meuPacote). Um pacote ou package em Java nada mais é do que um conjunto de classes (framework). Usualmente, são colocadas em um package classes relacionadas, construídas com um propósito comum; assim, sob certos aspectos, os packages reproduzem a ideia das bibliotecas de código (libraries e unit's) de outras linguagens de programação.
Outro aspecto destacável da programação foi a utilização da estrutura de controle de erros "try – catch" que irá proteger o código para eventuais erros de conversão de tipo feita pelo operador de coerção (int).
2º Passo:
Implementar a classe principal ExemploCNPJ mostrada na Listagem 2.
Listagem 2. Classe principal da aplicação. |
|
Alguns aspectos da programação utilizada na classe ValidaCNPJ apresentada na Listagem 1 foram abordados no post:
O que são String em Java: Métodos da Classe String: String em Java - Parte 2.
Veja também: Validando o CPF em uma Aplicação Java.
Testando a execução da aplicação da Listagem 2: | |
1. CNPJ 44.444.444.4444-44 é inválido: | 2. CNPJ é um número formado por 14 dígitos: |
3. Existem caracteres alfabéticos no CNPJ: | 4. CNPJ informado está correto (ou válido): |
Obrigado e um abraço.
Prof. Omero Francisco Bertol (http://www.pb.utfpr.edu.br/omero/)
Aplicações Java (http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)
Download do Projeto NetBeans IDE (http://www.pb.utfpr.edu.br/omero/Java/Artigos/Aplicacoes.rar)