- Katılım
- 25 May 2018
- Mesajlar
- 1,610
- En iyi yanıt
- 14
- Puanları
- 113
- Konum
- İstanbul
- Web sitesi
- excelarsivi.com
- Ad Soyad
- Murat OSMA
- Office Vers.
- Microsoft 365 TR+EN
Ü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.
Fonksiyonun Kullanılışı :
Bu fonksiyon 2 parametre alır ve Gelir vergisi sonucunu verir.
Sonuç : 600
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