O Cadastro Nacional da Pessoa Jurídica (CNPJ) compreende as informações cadastrais das entidades de interesse das administrações tributárias da União, dos Estados, do Distrito Federal e dos Municípios. A administração do CNPJ compete à Secretaria da Receita Federal do Brasil (RFB). (Cadastro Nacional da Pessoa Jurídica (CNPJ))
O Anexo II do Ato Declaratório Executivo COFIS nº 41 Maio de 2017 diz o seguinte na página 13 para verificar se dígito verificador é válido: “O dígito verificador do CNPJ é baseado no cálculo do módulo 11 e corresponde aos 2 últimos dígitos do CNPJ, o restante dos dígitos são a base para cálculo dos dígitos verificadores. No caso do CNPJ, o DV módulo 11 corresponde ao resto da divisão por 11 do somatório da multiplicação de cada algarismo da base respectivamente por 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6 e 5, a partir da unidade. O resto 10 é considerado 0”. Veja também CNPJ Alfanumérico para obter mais informações.
O código-fonte da função, o arquivo Makefile
e o comando CREATE FUNCTION, que vincula a função
C à função SQL,
encontram-se na página
Validação CNPJ alfanumérico no GitLab.
Criação e teste da função no PostgreSQL:
postgres=# CREATE FUNCTION rfb_cnpj(text) RETURNS boolean
AS '$libdir/udf/rfb_cnpj', 'rfb_cnpj'
LANGUAGE C STRICT;
CREATE FUNCTION
postgres=# \pset null <nulo>
Null display is "<nulo>".
postgres=# SELECT rfb_cnpj(NULL);
rfb_cnpj
----------
<nulo>
(1 linha)
postgres=# SELECT rfb_cnpj('18781203000128');
rfb_cnpj
----------
t
(1 linha)
Notas:
O número do CNPJ utilizado para testar a função é o mesmo mostrado no Anexo II referenciado acima. Foi utilizado como massa de teste para a função os CNPJs que constam na página Governo Estadual da Paraíba do Banco do Brasil.
Veja também Cálculo dos digitos de verificação - CPF CNPJ CAEPF.