Validar um Número de Contribuinte (NIF)

Marcas Technorati: ,,,

Mudámos de casa – visitem o novo site em www.istomesmo.com

Hoje vou começar uma nova categoria de artigos, denominada de utilidades. O objectivo desta categoria será fornecer pequenas funções que nos possam ajudar no desenvolvimento de aplicações.

Neste artigo vou demonstrar como podemos efectuar a validação de um número de contribuinte.

O número de contribuinte é constituído por 9 algarismos, dos quais o último é um algarismo de validação, uma espécie de checksum. A função que vamos desenvolver hoje efectua estas duas validações (9 algarismos e CheckBit).

Em C#, a função de validação é a seguinte:

/// <summary>
/// Validates a NIF (Número de Identificação Fiscal)
/// </summary>
/// <param name=”nif”></param>
/// <returns></returns>
public static bool IsValidNIF(string nif)
{
//Check if is numeric and if has 9 numbers
if (Utils.IsNumeric(nif) && nif.Length == 9)
{
//Get the first number of NIF
char c = nif[0];

//Check firt number is (1, 2, 5, 6, 8 or 9)
if (c.Equals(’1′) || c.Equals(’2′) || c.Equals(’5′) || c.Equals(’6′) || c.Equals(’8′) || c.Equals(’9′))
{
//Perform CheckDigit calculations
int checkDigit = (Convert.ToInt32(c.ToString()) * 9);
for (int i = 2; i <= 8; i++)
{
checkDigit += Convert.ToInt32(nif[i - 1].ToString()) * (10 – i);
}
checkDigit = 11 – (checkDigit % 11);

//if checkDigit is higher than ten set it to zero
if (checkDigit >= 10) checkDigit = 0;

//Compare checkDigit with the last number of NIF
//If equal the NIF is Valid.
if (checkDigit.ToString() == nif[8].ToString()) return true;
}
}
return false;
}
}

//###Class Utils###

/// <summary>
/// Test if a String is Numeric
/// </summary>
/// <param name=”inputString”></param>
/// <returns></returns>
public static bool IsNumeric(string inputString)
{
return Regex.IsMatch(inputString, “^[0-9]+$”);
}

Esta função é usada para efectuar a validação no codebehind. Para efectuarmos a validação com a ajuda dos validators do ASP.NET usamos a mesma função mas em javascript:

function IsValidNIF(nif)
{
var c;
var checkDigit = 0;
//Check if is not null, is numeric and if has 9 numbers
if(nif != null && IsNumeric(nif) && nif.length == 9)
{
//Get the first number of NIF
c = nif.charAt(0);
//Check firt number is (1, 2, 5, 6, 8 or 9)
if(c == ’1′ || c == ’2′ || c == ’5′ || c == ’6′ || c == ’8′ || c == ’9′)
{
//Perform CheckDigit calculations
checkDigit = c * 9;
var i = 0;
for(i = 2; i <= 8; i++)
{
checkDigit += nif.charAt(i-1) * (10-i);
}
checkDigit = 11 – (checkDigit % 11);
//if checkDigit is higher than ten set it to zero
if(checkDigit >= 10)
checkDigit = 0;
//Compare checkDigit with the last number of NIF
//If equal the NIF is Valid.
if(checkDigit == nif.charAt(8))
return true;
}
}
return false;
}

function IsNumeric(ObjVal)
{
return /^\d+$/.test(ObjVal);
}

image

No link seguinte podem efectuar o download de um pequeno projecto, onde podem testar estas duas funções. :)

http://www.megaupload.com/?d=7Q1VXMNV

Qualquer dúvida, deixem um comentário, terei todo o prazer em ajudar.

About these ads

18 Respostas

  1. I heve been here in Portugal for 3 yaers ago and benn back . I have my ex number it was 1911121924, I am living in Sitio dos Pinheiros CX.Postal 122 Z Loule, with a friend of my , I woul;d like to know if I need a new contribuinte number or another one. tanks. Martin

  2. Have I to go in de Financas house or can I wait for the number at home?

  3. perdi o meu número de contribuinte.
    ha alguma forma de o saber sem ter de tirar um novo cartao?
    obrigada

  4. perdi o meu cartao de contribuinte ha alguma forma de o adquirir sem ter que ir as finanças

  5. A todas as pessoas que perderam o número de contribuinte, podem solicitar uma segunda via através do portal do cidadão:

    http://www.portaldocidadao.pt/PORTAL/pt/Dossiers/DOS_perdi+os+meus+documentos.htm?passo=2

    No site indicado em cima dispõem de todas as informações necessárias.

  6. saber se este e o meu numero de cotribuinte

  7. saber se este nunero e o meu 212616358

  8. resido no estrangeiro e queria adquirir o cartao contribuint via internet .nao sei se e possivel?
    obrigado

  9. Precisava de obter, pela primeira vez, o meu cartao de contribuinte.
    Nao me encontro em Portugal, mas na Colombia.
    Como posso fazer para obte-lo?

    Muito agradeceria a sua orientaçao.
    Com atenciosos cumprimentos

    Beatriz de Pérez

  10. Realmente… estes comentários tem tudo a ver com o post lol
    Sei que também há rotinas para validação do NISS, BI, cartoes de credito, etc…

  11. Perdi a noção do tempo e hoje reparei que o meu cartão de contribuinte expirou em 2005!!Devo derigir-me a uma repartição de finanças ou posso validar on-line?

  12. perdi o meu numero de contribuinte mas como vivo no estrangueiro gostava de saber como posso obter um novo?tenho um filho e gostava de obter o numero de contribuinte tb para ele, como o posso fazer e sera q e possivel via net??? obrigado

  13. qual é a morada que esta no NIF?NIF-140997180

  14. Mas de onde apareceram estas pessoas a fazer estas perguntas?
    ???

  15. fiz meu contribuinte no dia 17/05/08 e ate a presente data nao chegou e o documento que tenho nao é mais valido, o que devo fazer? com os melhores cumprimentos aguardo vossa resposta

  16. COMO POSSO OBETER O MEU NUMARO DE CONTRIBUINTE MAS RESIDO NO ESTRANGEIRO JA TIVE MAS PERDI O MESMO CARTAO QUE PASSOS TENHO QUE SEGUIR

  17. perdi o meu número de contribuinte.
    ha alguma forma de o saber sem ter de tirar um novo cartao?
    obrigada

  18. resido no estranjeiro e gostaria de saber se me podem informar a morada actual de um irmão Antonio Maria xavier Leite Negrão, que vive em portugal cuja ultima morada que tinha era Rua Antero de Quental, 160 1º Dto Porto, casado com a sra. maria fernanda de carvalho pinto negrao e cujos nrs. de contribuintes eram respectivamente 107153157 e
    107153190

Deixar uma resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

WordPress.com Logo

Está a comentar usando a sua conta WordPress.com Log Out / Modificar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Log Out / Modificar )

Facebook photo

Está a comentar usando a sua conta Facebook Log Out / Modificar )

Google+ photo

Está a comentar usando a sua conta Google+ Log Out / Modificar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

%d bloggers like this: