Python  1.0
Functions | Variables
_05c_cnpj Namespace Reference

CNPJ validation. More...

Functions

def areValidDigits (cnpj, dv)
 Validates a CNPJ using the verification digits (DV). More...
 
def main (argv=None)
 

Variables

 input = raw_input
 

Detailed Description

CNPJ validation.

Some valid cnpjs:

  1. 14.358.805/0001-16
  2. 72.181.240/0001-40
  3. 91.655.845/0001-70
  4. 72.060.999/0001-75

Para exemplificar o processo de validação, serão calculados os dígitos verificadores de um CNPJ hipotético, 11.444.777/0001-XX.

Calculando o Primeiro Dígito Verificador.

O primeiro dígito verificador do CNPJ é calculado utilizando-se o seguinte algoritmo:

  1. Distribua os 12 primeiros dígitos em um quadro colocando os pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
    da esquerda para a direita, conforme indicado abaixo:
             1       1       4       4       4       7       7       7       0      0       0       1
             5       4       3       2       9       8       7       6       5      4       3       2
        
  2. Multiplique os valores de cada coluna:
             1       1       4       4       4       7       7       7       0      0       0       1
             5       4       3       2       9       8       7       6       5      4       3       2
             5       4       12      8       36      56      49      42      0      0       0       2
        
  3. Calcule o somatório dos resultados (5+4+...+0+2) = 214.
  4. O resultado obtido (214) será divido por 11.
    O resto da divisão indicará o primeiro dígito verificador: 214 % 11 = 5.

Se o resto da divisão for menor do que 2, o primeiro dígito verificador se torna zero.
Caso contrário, subtraia o valor obtido de 11, para obter o primeiro dígito verificador: 11-5 = 6.
Portanto, o CNPJ até agora está assim: 111.444.777-6X.

Calculando o Segundo Dígito Verificador

Para o cálculo do segundo dígito, será usado o primeiro dígito verificador já encontrado:

  1. Monte uma tabela semelhante à anterior, só que desta vez usando na segunda linha os valores
    6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, já que foi incorporado mais um algarismo ao cálculo.
             1       1       4       4       4       7       7       7       0      0       0       1      6
             6       5       4       3       2       9       8       7       6      5       4       3      2
        
  2. Multiplique os valores de cada coluna e efetue o somatório dos resultados obtidos: (6+5+...+3+12) = 221.
             1       1       4       4       4       7       7       7       0      0       0       1      6
             6       5       4       3       2       9       8       7       6      5       4       3      2
             6       5       16      12      8       63      56      49      0      0       0       3      12
        
  3. Divida o total do somatório por 11 e considere o resto da divisão: 221 % 11 = 10.
  4. Se o resto da divisão for menor do que 2, o segundo dígito verificador se torna zero.
    Caso contrário, é necessário subtrair o valor obtido de 11, para gerar o segundo dígito verificador: 11-10 = 1.

Ao final dos cálculos, descobre-se que os dígitos verificadores do CNPJ hipotético são os números 6 e 1.
Portanto, o CNPJ completo é: 11.444.777/0001-61.

Author
Paulo Roma
Since
30/12/2008
See also
http://www.geradorcnpj.com/

Function Documentation

◆ areValidDigits()

def _05c_cnpj.areValidDigits (   cnpj,
  dv 
)

Validates a CNPJ using the verification digits (DV).

Parameters
cnpjCNPJ.
dvverification digits.
Returns
True if the cnpj is valid, and False otherwise.

References _03e_multiply.dotProd(), and _01f_getDigit.getDigit().

Referenced by main().

◆ main()

def _05c_cnpj.main (   argv = None)

References areValidDigits(), and input.

Variable Documentation

◆ input

_05c_cnpj.input = raw_input

Referenced by main().