Cadastro de Pessoa Física (CNPJ)
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 a função isCNPJ, implementada na biblioteca de códigos "ValidaCNPJ" apresentada 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 Delphi
Criar uma nova aplicação no ambiente de desenvolvimento Delphi 7 através da opção do menu "File|New|Application..." e realizar os três passos descritos a seguir:
1º Passo:
Desenvolver o formulário principal da aplicação como sugere a Figura 1. Atenção: observe que as caixas de textos explicativos utilizadas na figura apresentam a ordem sequencial e o nome do componente, a página da sua localização e as propriedades que devem ser alteradas com os respectivos valores.
Figura 1. Formulário principal da aplicação. |
2º Passo:
Na unidade de códigos (unit), apresentada na Listagem 1, construída através da opção do menu "File|New|Unit" deve-se implementar os subprogramas:
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. Unit "ValidaCNPJ" com as funções "isCNPJ" e "imprimeCNPJ". |
|
As unidades ou bibliotecas de códigos (unit's) representam no Delphi a forma de disponibilizar um conjunto de subprogramas (functions e/ou procedures) destinados a solucionar uma série de tarefas bastante corriqueiras, como por exemplo, a função para validar números de CNPJ. Na Listagem 2 pode-se observar a estrutura básica de uma unit.
Listagem 2. Estrutura básica de uma unit. |
// Cabeçalho da unidade de códigos. // Atenção: O nome interno da unit deve ser o mesmo nome dado ao arquivo fonte unit NomeDaUnit; interface // Comunicação entre dois meios (dispositivos). Contêm o cabeçalho // dos procedimentos e funções declarados na unit, declaração // de objetos globais e o uso de outras unidades. implementation // Corpo dos procedimentos e funções anunciados na seção de // interface e declarações de objetos locais. end. |
Outro aspecto destacável da programação foi a utilização da estrutura de controle de erros "try – except - end" que irá proteger o código para eventuais erros de conversão de tipo com a função "StrToInt".
3º Passo:
Agora novamente no formulário principal da aplicação deve-se:
3.1: fazer a referência a unit "ValidaCNPJ", implementada no passo 2, através da opção do menu "File|Use Unit..." . A conclusão deste passo resulta na seguinte linha de código:
uses ValidaCNPJ;
3.2: implementar o seguinte código no evento "onClick" do botão "Verificar CNPJ":
// usando as funções isCNPJ e imprimeCNPJ da unit "ValidaCNPJ"
if isCNPJ(CNPJ.Text)
then Result.Caption := imprimeCNPJ(CNPJ.Text)
else Result.Caption := 'Erro: CNPJ inválido !!!';
Veja também: Validando o CPF em uma Aplicação Delphi.
Ilustrando a execução da aplicação:: | |
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 Delphi (http://www.pb.utfpr.edu.br/omero/Delphi/Exercicios.htm)
Download da Aplicação (http://www.pb.utfpr.edu.br/omero/Delphi/Artigos/CNPJ_Delphi.rar)