SQL KTF Gelir Vergisini Hesaplayan KTF

Admin

Yönetici
Site Sahibi
Katılım
25 May 2018
Mesajlar
999
En İyi Yanıtlar
72
Beğeniler
773
Puanları
93
Konum
İstanbul
#1
Ülkemizde gelir vergisi artan tarifeli olup kümülatif kazanca göre ilgili vergi diliminden gelir vergi hesaplanmaktadır.
Eğer bu hesaplama işlemini database seviyesinde yapılması gerekirse aşağıdaki SQL için ile yazmış olduğum kullanıcı tanımlı fonksiyon ile Gelir Vergisi hesaplayabilirsiniz.

Bu fonksiyon Kümülatif vergi matrahı ve Vergi matrahını parametre olarak alır. Sonuç olarak gelir vergisi döndürür.

SQL:
CREATE FUNCTION FN_GELIRVERGISI (@KMATRAH AS FLOAT,@VMATRAH AS FLOAT)

RETURNS FLOAT AS
BEGIN
DECLARE @SONUC AS FLOAT
DECLARE @DILIM1 AS FLOAT
DECLARE @DILIM2 AS FLOAT
DECLARE @DILIM3 AS FLOAT
DECLARE @DILIM4 AS FLOAT
DECLARE @ORAN1 AS INT
DECLARE @ORAN2 AS INT
DECLARE @ORAN3 AS INT
DECLARE @ORAN4 AS INT
DECLARE @GV1 AS FLOAT
DECLARE @GV2 AS FLOAT
DECLARE @GV3 AS FLOAT
DECLARE @GV4 AS FLOAT
DECLARE @TMATRAH AS FLOAT
DECLARE @SOR AS FLOAT

SET @DILIM1 = 0
SET @DILIM2 = 14800
SET @DILIM3 = 34000
SET @DILIM4 = 120000
SET @ORAN1 =15
SET @ORAN2 =20
SET @ORAN3 =27
SET @ORAN4 =35

SET @TMATRAH = @KMATRAH + @VMATRAH
IF @TMATRAH<=@DILIM2
BEGIN
SET @GV1=@VMATRAH*@ORAN1/100
SET @SONUC=@GV1
RETURN @SONUC
END

IF @TMATRAH>=@DILIM2 AND @TMATRAH<@DILIM3
BEGIN
SET @SOR = (@VMATRAH - (@TMATRAH - @DILIM2))
IF @SOR>0
BEGIN
SET @GV1=(@TMATRAH-@DILIM2)*@ORAN2/100
SET @GV2=@SOR*@ORAN1/100
END
ELSE
BEGIN
SET @GV1=@VMATRAH*@ORAN2/100
SET @GV2 = 0
END
SET @SONUC=@GV1+@GV2
RETURN @SONUC
END

IF @TMATRAH>=@DILIM3 AND @TMATRAH<@DILIM4 AND @KMATRAH<@DILIM2
BEGIN
SET @GV1=(@DILIM2-@KMATRAH)*@ORAN1/100
SET @GV2=(@DILIM3-@DILIM2)*@ORAN2/100
SET @GV3=(@TMATRAH-@DILIM3)*@ORAN3/100
SET @SONUC= @GV1 + @GV2 + @GV3
RETURN @SONUC
END

IF @TMATRAH>=@DILIM3 AND @TMATRAH<@DILIM4 AND @KMATRAH>@DILIM2
BEGIN
SET @SOR=(@VMATRAH-(@TMATRAH-@DILIM3))
IF @SOR>0
BEGIN
SET @GV1 = (@TMATRAH - @DILIM3) * @ORAN3 / 100
SET @GV2 = @SOR * @ORAN2 / 100
END
ELSE
BEGIN
SET @GV1 = @VMATRAH * @ORAN3 / 100
SET @GV2 = 0
END
SET @SONUC= @GV1 + @GV2
RETURN @SONUC
END

IF @TMATRAH>=@DILIM4 AND @KMATRAH<@DILIM2
BEGIN
SET @GV1=(@DILIM2-@KMATRAH)*@ORAN1/100
SET @GV2=(@DILIM3-@DILIM2)*@ORAN2/100
SET @GV3=(@DILIM4-@DILIM3)*@ORAN3/100
SET @GV4=(@TMATRAH-@DILIM4)*@ORAN4/100
SET @SONUC= @GV1 + @GV2 + @GV3+ @GV4
RETURN @SONUC
END

IF @TMATRAH>=@DILIM4 AND @KMATRAH<@DILIM3
BEGIN
SET @GV1=0
SET @GV2=(@DILIM3-@KMATRAH)*@ORAN2/100
SET @GV3=(@DILIM4-@DILIM3)*@ORAN3/100
SET @GV4=(@TMATRAH-@DILIM4)*@ORAN4/100
SET @SONUC= @GV1 + @GV2 + @GV3+ @GV4
RETURN @SONUC
END

IF @TMATRAH>=@DILIM4 AND @KMATRAH<@DILIM4
BEGIN
SET @SOR=(@VMATRAH-(@TMATRAH-@DILIM4))
IF @SOR>0
BEGIN
SET @GV1 = (@TMATRAH - @DILIM4) * @ORAN4 / 100
SET @GV2 = @SOR * @ORAN3 / 100
END
ELSE
BEGIN
SET @GV1 = @VMATRAH * @ORAN4 / 100
SET @GV2 = 0
END
SET @SONUC= @GV1 + @GV2
RETURN @SONUC
END

IF @KMATRAH>=@DILIM4
BEGIN
SET @GV1=@VMATRAH*@ORAN4/100
SET @SONUC=@GV1
RETURN @SONUC
END
RETURN @SONUC
END
Fonksiyonun Kullanılışı :
Bu fonksiyon 2 parametre alır ve Gelir vergisi sonucunu verir.
dbo.FN_GELIRVERGISI (Kümülatif Gelir Matrahı, Gelir Vergisi Matrahı)

SELECT dbo.FN_GELIRVERGISI (10000,4000)

Sonuç : 600
 
Katılım
19 Haz 2018
Mesajlar
34
En İyi Yanıtlar
1
Beğeniler
9
Puanları
8
Yaş
73
Konum
Emekli YMM
#2
Sayın Admin,

Günaydın ve hayırlı işler.
Yukarıdaki kodlar. Logo yazılımı için mi?
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
79
En İyi Yanıtlar
4
Beğeniler
147
Puanları
33
Yaş
28
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
#3
Logo yazılımı için de olur piyasada bütün proğramlar içinde olur. Gelir Vergisi matrahını hesaplamak için ya sorgu içinde yukarıdaki mantıkta bir sorgu yazacan yada bu fonksiyona değer gönderip sonuçlarını alacan.
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
79
En İyi Yanıtlar
4
Beğeniler
147
Puanları
33
Yaş
28
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
#5
Selamlar,

Yukarıdaki sorgu Mssql veri tabanına uygun yazılmıştır. Excelvba yerine Mssql yapıştırıp F5 tuşuna basın ;)
 
Katılım
19 Haz 2018
Mesajlar
34
En İyi Yanıtlar
1
Beğeniler
9
Puanları
8
Yaş
73
Konum
Emekli YMM
#6
Üstadım,

Zaman ayırarak bilgilendirdiğiniz için sağ olun. Hiç kod bilgisi olmayan bir kişi olarak, çözüm önerisini uygulamam zor.
İyi çalışmalar ve bol kazançlar dilerim.
 

yken

Yeni Üye
Katılım
26 Haz 2018
Mesajlar
4
En İyi Yanıtlar
0
Beğeniler
0
Puanları
1
Yaş
49
Konum
istanbul
#7
[dbo].[FN_GELIRVERGISI(PNTC.BALN_SSKNBASE_PTD,GETDATE()) as GelirVergisi,

Vedat Bey, Getdate yerine ne yazacağız?
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
79
En İyi Yanıtlar
4
Beğeniler
147
Puanları
33
Yaş
28
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
#8
Fonksiyona yanlış değer gönderiyorsunuz.

select dbo.FN_GELIRVERGISI (KMATRAH ,VMATRAH)
 
Üst Alt