16 Ağustos 2012 Perşembe

C# Vergi Kimlik Numarası Doğrulama Kodu

Merhabalar;
JavaScript ile yazılan Vergi Kimlik No Doğrulama Algoritması yazımız, oldukça ilgi gördü. Bu yazıya yorum olarak paylaşılmış bulunan, C# ile yazılmış doğrulama kodunu da blogumuzda paylaşmak istedik.

Merhabalar;
JavaScript ile yazılan Vergi Kimlik No Doğrulama Algoritması yazımız, oldukça ilgi gördü. Bu yazıya yorum olarak paylaşılmış bulunan, C# ile yazılmış doğrulama kodunu da blogumuzda paylaşmak istedik.

Yorum yapan arkadaşımız, maalesef isim belirtmediği için, kendisine ismen teşekkür edemiyoruz.

public static Boolean FirmaVergiKontrol(string kno)
{

if (kno.ToSt().Length != 10) return false;
if (!kno.ToArray().All(n => char.IsNumber(n))) return false;


var v_last_digit = kno[9].ToInt();
int Toplam = 0;
for (int i = 9; i >= 1; i--)
{
int dig = kno[9 - i].ToInt(-111);
if (dig < 0) return false;
var v1 = ((dig + i) % 10);
int v11 = (int)(v1 * Math.Pow(2, i)) % 9;
if (v1 != 0 && v11 == 0) v11 = 9;
Toplam += v11;
// v11 = (v1 * 512) % 9;
}

if (Toplam % 10 == 0) Toplam = 0; else Toplam = (10 - (Toplam % 10));

if (Toplam == v_last_digit) return true;


return false;

}

6 yorum:

Adsız dedi ki...

ah bir de copy/paste olmayan derlenebilir kod gönderseydin ne güzel olurdu be kuzum

Ziyahan ALBENiZ dedi ki...

Merhaba. Alakanız için teşekkür ederim. Copy/paste olmayan derlenebilir kod ne demek tam anlayamadım. Bu kodu kullanamadınız mı?

Adsız dedi ki...

ToSt() ve .ToInt(-111) methodları extension sanırım, biz bu methodları derleyemiyoruz. Kapiş?

zyhn dedi ki...

Alakaniz için çok teşekkür ederim. Yazıyı okursanız kod bana ait değil. Siz kolaylıkla toSt ve ToInt metodlarını, derleyici tarafından desteklenen toString() ve parse.toInt32() metodlarına çevirebilirsiniz. Teşekkür ederim.

Volkan Salmanli dedi ki...

Gerçekten işime yaradı.Teşekkürler.

Açık Kafa Sineması

pirimoglu dedi ki...

Çalışan kod
------------------

if (input == null || input.Length != 10) return false;
var vkn = input.ToArray();
if (!vkn.All(n => char.IsNumber(n))) return false;

var lastDigit = Convert.ToInt32(vkn[9].ToString());
int total = 0;
for (int i = 9; i >= 1; i--)
{
int digit = Convert.ToInt32(vkn[9 - i].ToString());
var v1 = ((digit + i) % 10);
int v11 = (int)(v1 * Math.Pow(2, i)) % 9;
if (v1 != 0 && v11 == 0) v11 = 9;
total += v11;
}

total = (total % 10 == 0) ? 0 : (10 - (total % 10));
return (total == lastDigit);