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);
}

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.
Arquivado em: ASP.NET | Tagged: AJAX.NET, ASP.NET, Número de Contribuinte, NIF, Tutoriais, Utilidades, Validação, Validar NIF

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
Have I to go in de Financas house or can I wait for the number at home?
perdi o meu número de contribuinte.
ha alguma forma de o saber sem ter de tirar um novo cartao?
obrigada
perdi o meu cartao de contribuinte ha alguma forma de o adquirir sem ter que ir as finanças
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.
saber se este e o meu numero de cotribuinte
saber se este nunero e o meu 212616358
resido no estrangeiro e queria adquirir o cartao contribuint via internet .nao sei se e possivel?
obrigado
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
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…
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?
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
qual é a morada que esta no NIF?NIF-140997180
Mas de onde apareceram estas pessoas a fazer estas perguntas?
???
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
COMO POSSO OBETER O MEU NUMARO DE CONTRIBUINTE MAS RESIDO NO ESTRANGEIRO JA TIVE MAS PERDI O MESMO CARTAO QUE PASSOS TENHO QUE SEGUIR
perdi o meu número de contribuinte.
ha alguma forma de o saber sem ter de tirar um novo cartao?
obrigada
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