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:
ah bir de copy/paste olmayan derlenebilir kod gönderseydin ne güzel olurdu be kuzum
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ı?
ToSt() ve .ToInt(-111) methodları extension sanırım, biz bu methodları derleyemiyoruz. Kapiş?
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.
Gerçekten işime yaradı.Teşekkürler.
Açık Kafa Sineması
Ç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);
Yorum Gönder