Cadastro Nacional da Pessoa Jurídica: diferenças entre revisões
m A migrar 1 interwikis, agora providenciados por Wikidata em d:q1444804 |
|||
Linha 2: | Linha 2: | ||
O Cadastro funciona como uma identidade e nele estão informados: |
O Cadastro funciona como uma identidade e nele estão informados: |
||
* Data de |
* Data de abertur... |
||
* Nome da empresa, |
* Nome da empresa, |
||
* Título ou nome fantasia - se tiver, |
* Título ou nome fantasia - se tiver, |
Revisão das 02h04min de 22 de abril de 2013
No Brasil, o Cadastro Nacional da Pessoa Jurídica (acrônimo: CNPJ) é um número único que identifica uma pessoa jurídica e outros tipos de arranjo jurídico sem personalidade jurídica (como condomínios, orgãos públicos, fundos)[1] junto à Receita Federal brasileira (órgão do Ministério da Fazenda). O 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[2] e é necessário para processar (Art. 15, da Lei 11.419/2006)[3]. O CNPJ veio substituir o CGC, Cadastro Geral de Contribuintes e por vezes também é grafado como CNPJ-MF.
O Cadastro funciona como uma identidade e nele estão informados:
- Data de abertur...
- Nome da empresa,
- Título ou nome fantasia - se tiver,
- Código e descrição da atividade econômica principal - o CNAE,
- Código e descrição das atividades econômicas secundárias - se tiver,
- Código e descrição da natureza jurídica,
- Endereço e
- Situação cadastral - Na consulta realizável na página da internet da Receita Federal.
Um número típico de CNPJ tem o formato: 03.847.655/0001-98 e 14.218.835/0001-27 onde os oito primeiros números formam a "raiz" - que identifica a empresa, os quatro seguintes formam o "sufixo" que identifica uma unidade de atuação de empresa, ou seja, um endereço de atividade da pessoa jurídica, e os dois últimos formam o "dígito verificador" que é resultado de uma equação com os doze números anteriores. Deste modo, o número acima exemplificado identifica a matriz da empresa.
O CNPJ deve estar informado em qualquer nota fiscal de qualquer empresa, bem como na embalagem de qualquer produto industrializado.
Algoritmo de Validação
Pseudocode
function ValidarCNPJ(cnpj: int[14]) -> bool
var v: int[2]
//Nota: Calcula o primeiro dígito de verificação.
v[1] := 5×cnpj[1] + 4×cnpj[2] + 3×cnpj[3] + 2×cnpj[4]
v[1] += 9×cnpj[5] + 8×cnpj[6] + 7×cnpj[7] + 6×cnpj[8]
v[1] += 5×cnpj[9] + 4×cnpj[10] + 3×cnpj[11] + 2×cnpj[12]
v[1] := 11 - v[1] mod 11
v[1] := 0 if v[1] ≥ 10
//Nota: Calcula o segundo dígito de verificação.
v[2] := 6×cnpj[1] + 5×cnpj[2] + 4×cnpj[3] + 3×cnpj[4]
v[2] += 2×cnpj[5] + 9×cnpj[6] + 8×cnpj[7] + 7×cnpj[8]
v[2] += 6×cnpj[9] + 5×cnpj[10] + 4×cnpj[11] + 3×cnpj[12]
v[2] += 2×cnpj[13]
v[2] := 11 - v[2] mod 11
v[2] := 0 if v[2] ≥ 10
//Nota: Verdadeiro se os dígitos de verificação são os esperados.
return v[1] = cnpj[13] and v[2] = cnpj[14]
Delphi
function ValidarCNPJ(CNPJ: String): Boolean;
var vCNPJ, vDigito: String;
DF1, DF2: Integer;
begin
Result := False;
vCNPJ := CNPJ;
// Removendo caracteres especiais
vCNPJ := StringReplace( vCNPJ, '.', '', [rfReplaceAll] );
vCNPJ := StringReplace( vCNPJ, '-', '', [rfReplaceAll] );
vCNPJ := StringReplace( vCNPJ, '/', '', [rfReplaceAll] );
// Verificar tamanho dos dígitos do CNPJ
if ( Length( vCNPJ ) <> 14 ) then
Exit;
// Armazena o número do CNPJ e o digito separados
vDigito := Copy( vCNPJ, 13, 02 );
vCNPJ := Copy( vCNPJ, 01, 12 );
// Somar e multiplicar os pesos do digito 1 em cada número
DF1 := (StrToInt(vCNPJ[01])*05) + (StrToInt(vCNPJ[02])*04);
DF1 := DF1 + (StrToInt(vCNPJ[03])*03) + (StrToInt(vCNPJ[04])*02) + (StrToInt(vCNPJ[05])*09);
DF1 := DF1 + (StrToInt(vCNPJ[06])*08) + (StrToInt(vCNPJ[07])*07) + (StrToInt(vCNPJ[08])*06);
DF1 := DF1 + (StrToInt(vCNPJ[09])*05) + (StrToInt(vCNPJ[10])*04) + (StrToInt(vCNPJ[11])*03) + (StrToInt(vCNPJ[12])*02);
// Cálculo da diferença de 11 com o resto de DF1
DF1 := 11 - ( DF1 mod 11 );
// Se o resultado anterior for maior ou igual a 10, o dígito 1 é 0,
// caso contrário, o digito 1 é o próprio resultado.
if DF1 >= 10 then DF1 := 0;
// Somar e multiplicar os pesos do digito 2 em cada número
DF2 := (StrToInt(vCNPJ[01])*06) + (StrToInt(vCNPJ[02])*05);
DF2 := DF2 + (StrToInt(vCNPJ[03])*04) + (StrToInt(vCNPJ[04])*03) + (StrToInt(vCNPJ[05])*02);
DF2 := DF2 + (StrToInt(vCNPJ[06])*09) + (StrToInt(vCNPJ[07])*08) + (StrToInt(vCNPJ[08])*07);
DF2 := DF2 + (StrToInt(vCNPJ[09])*06) + (StrToInt(vCNPJ[10])*05) + (StrToInt(vCNPJ[11])*04) + (StrToInt(vCNPJ[12])*03);
// Somar o resultado do digito 2 com o dobro do digito 1
DF2 := DF2 + ( DF1 * 2 );
// Cálculo da diferença de 11 com o resto de DF2
DF2 := 11 - ( DF2 mod 11 );
// Se o resultado anterior for maior ou igual a 10, o dígito 2 é 0,
// caso contrário, o digito 2 é o próprio resultado.
if DF2 >= 10 then DF2 := 0;
// Retorna verdadeiro ou falso, caso o dígito informado coincida ou não com o calculado
Result := vDigito = IntToStr(DF1) + IntToStr(DF2);
end;
Javascript com Biblioteca Prototype
'''String.prototype.isCNPJ''' = function() {
var b = [6,5,4,3,2,9,8,7,6,5,4,3,2], c = this;
if((c = c.replace(/[^\d]/g,"").split("")).length != 14) return false;
'''for''' (var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
if(c[12] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
'''for''' (var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
if(c[13] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
return true;
};
C#
public static bool iscnpj(string cnpj)
{
int[] conj1 = new int[12] { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
int[] conj2 = new int[13] { 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
int scale;
int restante;
string tudo;
string cnpjtemporario;
tudo = "";
cnpj = cnpj.Trim();
cnpj = cnpj.Replace(".", "").Replace("-", "").Replace("/", "");
if (cnpj.Length != 14) return false;
cnpjtemporario = cnpj.Substring(0, 12);
scale = 0;
for (int i = 0; i < 12; i++)
scale += int.Parse(cnpjtemporario[i].ToString()) * conj1[i];
restante = (scale % 11);
if (restante < 2) restante = 0;
else restante = 11 - restante;
tudo = restante.ToString();
cnpjtemporario = cnpjtemporario + tudo;
scale = 0;
for (int i = 0; i < 13; i++)
scale += int.Parse(cnpjtemporario[i].ToString()) * conj2[i];
restante = (scale % 11);
if (restante < 2) restante = 0;
else restante = 11 - restante;
tudo = tudo + restante.ToString();
return cnpj.EndsWith(tudo);
}
Ver também
- CPF (número único de identificação de pessoa física)
- Receita Federal do Brasil
- Simples
- SPED
- SPED Fiscal
- SPED Contábil
- Nota Fiscal Eletrônica
- Impressora fiscal
- Secretaria da fazenda
- Junta comercial
- Direito tributário
- NIPC, Número de Identificação de Pessoa Colectiva (equivalente em Portugal)