Vergi Kimlik No Doğrulama Algoritması

'Sosyal Konular' forumunda YAREN tarafından 6 Mayıs 2011 tarihinde açılan konu


  1. Vergi Kimlik No Doğrula,
    Vergi Kimlik No Doğrulama Algoritması,
    Vergi Kimlik No Doğrulama



    Vergi Kimlik No Doğrulama SQL Fonksiyonu


    Bu küçük SQL fonksiyonunu Vergi Kimlik No’ların doğru olup olmadığını sorgulamak için kullanabilirsiniz. Kullanım şekli;

    IF dbo.FN_VKNO_DOGRUMU(1111111111)=1
    PRINT 'DOGRU VERGI KIMLIK NO'
    ELSE
    PRINT 'YANLIS VERGI KIMLIK NO'Bu kodları kullanarak rahatlıkla fonksiyonun C# versiyonunu da hazırlayabilirsiniz.

    CREATE FUNCTION [dbo].[FN_VKNO_DOGRUMU](@VKNO VARCHAR(10))
    RETURNS BIT
    BEGIN
    DECLARE
    @V_LAST_DIGIT SMALLINT,
    @V_1 SMALLINT,
    @V_2 SMALLINT,
    @V_3 SMALLINT,
    @V_4 SMALLINT,
    @V_5 SMALLINT,
    @V_6 SMALLINT,
    @V_7 SMALLINT,
    @V_8 SMALLINT,
    @V_9 SMALLINT,
    @V_11 SMALLINT,
    @V_22 SMALLINT,
    @V_33 SMALLINT,
    @V_44 SMALLINT,
    @V_55 SMALLINT,
    @V_66 SMALLINT,
    @V_77 SMALLINT,
    @V_88 SMALLINT,
    @V_99 SMALLINT,
    @TOPLAM SMALLINT,
    @R Bit
    --
    SET @V_1 = (CAST(SUBSTRING(@VKNO,1,1) AS SMALLINT) + 9) % 10
    SET @V_2 = (CAST(SUBSTRING(@VKNO,2,1) AS SMALLINT) + 8) % 10
    SET @V_3 = (CAST(SUBSTRING(@VKNO,3,1) AS SMALLINT) + 7) % 10
    SET @V_4 = (CAST(SUBSTRING(@VKNO,4,1) AS SMALLINT) + 6) % 10
    SET @V_5 = (CAST(SUBSTRING(@VKNO,5,1) AS SMALLINT) + 5) % 10
    SET @V_6 = (CAST(SUBSTRING(@VKNO,6,1) AS SMALLINT) + 4) % 10
    SET @V_7 = (CAST(SUBSTRING(@VKNO,7,1) AS SMALLINT) + 3) % 10
    SET @V_8 = (CAST(SUBSTRING(@VKNO,8,1) AS SMALLINT) + 2) % 10
    SET @V_9 = (CAST(SUBSTRING(@VKNO,9,1) AS SMALLINT) + 1) % 10
    SET @V_LAST_DIGIT = CAST(SUBSTRING(@VKNO,10,1) AS SMALLINT)
    --
    SET @V_11 = (@V_1 * 512) % 9
    SET @V_22 = (@V_2 * 256) % 9
    SET @V_33 = (@V_3 * 128) % 9
    SET @V_44 = (@V_4 * 64) % 9
    SET @V_55 = (@V_5 * 32) % 9
    SET @V_66 = (@V_6 * 16) % 9
    SET @V_77 = (@V_7 * 8) % 9
    SET @V_88 = (@V_8 * 4) % 9
    SET @V_99 = (@V_9 * 2) % 9
    --
    IF @V_1 != 0 AND @V_11 = 0 SET @V_11 = 9
    IF @V_2 != 0 AND @V_22 = 0 SET @V_22 = 9
    IF @V_3 != 0 AND @V_33 = 0 SET @V_33 = 9
    IF @V_4 != 0 AND @V_44 = 0 SET @V_44 = 9
    IF @V_5 != 0 AND @V_55 = 0 SET @V_55 = 9
    IF @V_6 != 0 AND @V_66 = 0 SET @V_66 = 9
    IF @V_7 != 0 AND @V_77 = 0 SET @V_77 = 9
    IF @V_8 != 0 AND @V_88 = 0 SET @V_88 = 9
    IF @V_9 != 0 AND @V_99 = 0 SET @V_99 = 9
    --
    SET @TOPLAM = @V_11 + @V_22 + @V_33 + @V_44 + @V_55 + @V_66 + @V_77 + @V_88 + @V_99
    IF @TOPLAM %10 =0
    BEGIN
    SET @TOPLAM=0
    END
    ELSE
    BEGIN
    SET @TOPLAM = (10 - (@TOPLAM %10))
    END
    --
    IF @TOPLAM = @V_LAST_DIGIT
    SET @R = 1 -- DOĞRU
    ELSE
    SET @R = 0 -- YANLIŞ
    --
    RETURN @R
    --
    END

    Alıntıdır..