Skip to content

Instantly share code, notes, and snippets.

@suatatan
Created December 15, 2016 09:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suatatan/522f00a6213083add84aaf617d7a79ab to your computer and use it in GitHub Desktop.
Save suatatan/522f00a6213083add84aaf617d7a79ab to your computer and use it in GitHub Desktop.
Asgari geçim indirimi hesaplamak için SQLSERVER fonksiyonu. Şu sayfadaki sonuçlarla uyumludur: http://www.muhasebetr.com/2016-asgari-gecim-indirimi-agi.html
USE [MaasDB]
GO
/****** Object: UserDefinedFunction [dbo].[fnAGIHesaplaYalin] Script Date: 15.12.2016 11:59:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fnAGIHesaplaYalin]
(
@asgariUcret float,
@esCalisiyor int,
@cocukSayisi int
)
RETURNS float --döndürecegi degerin tipi
AS
BEGIN
--Logic
--Declare and init
--A değeri hesabı
declare @a float
set @a=0
--Oranlar
declare @oran1 float
set @oran1=0
declare @oran2 float
set @oran2=0
--Return deger
declare @AGI_RETURN_VAL float
set @AGI_RETURN_VAL=0
--Sabit hesabi
declare @sabit float
set @sabit=0
-- Cocuk Yardimi
declare @cocuk1_oran float
declare @cocuk2_oran float
declare @cocuk3_oran float
declare @cocuk4_oran float
declare @cocuk5_oran float
-- Cocuk mevcudiyetleri
declare @ch1 as int
set @ch1=0
declare @ch2 as int
set @ch2=0
declare @ch3 as int
set @ch3=0
declare @ch4 as int
set @ch4=0
declare @ch5 as int
set @ch5=0
--2015 yılındaki düzenlemeden sonra
set @cocuk1_oran=0.075
set @cocuk2_oran=0.075
set @cocuk3_oran=0.100
set @cocuk4_oran=0.050
set @cocuk5_oran=0.050
declare @cocukyardimi float
set @cocukyardimi=0
declare @cocukYardimTavanDeger float
set @cocukYardimTavanDeger=0
--es yardimi-
declare @esyardimi float
set @esyardimi=0
declare @esYardimOrani float
set @esYardimOrani=0.1
--end of declarations---
--Agi hesabında kullanilacak 2 oran
set @oran1=0.15
set @oran2=0.50
--
if @cocukSayisi=0
begin
set @ch1=0;
set @ch2=0;
set @ch3=0;
set @ch4=0;
set @ch5=0;
end
else if @cocukSayisi=1
begin
set @ch1=1;
set @ch2=0;
set @ch3=0;
set @ch4=0;
set @ch5=0;
end
else if @cocukSayisi=2
begin
set @ch1=1;
set @ch2=1;
set @ch3=0;
set @ch4=0;
set @ch5=0;
end
else if @cocukSayisi=3
begin
set @ch1=1;
set @ch2=1;
set @ch3=1;
set @ch4=0;
set @ch5=0;
end
else if @cocukSayisi=4
begin
set @ch1=1;
set @ch2=1;
set @ch3=1;
set @ch4=1;
set @ch5=0;
end
else if @cocukSayisi=5
begin
set @ch1=1;
set @ch2=1;
set @ch3=1;
set @ch4=1;
set @ch5=1;
end
else
--5 cocuktan sonra hep 5 cocuk gibi say
begin
set @ch1=1;
set @ch2=1;
set @ch3=1;
set @ch4=1;
set @ch5=1;
end
--A değeri ve sabit değer hesabı
--0.15*0.50 oranı sabittir
set @a=@asgariUcret*@oran1
set @sabit=@a*@oran2
--cocukyardimi
set @cocukyardimi=@a*@ch1*@cocuk1_oran
+@a*@ch2*@cocuk2_oran
+@a*@ch3*@cocuk3_oran
+@a*@ch4*@cocuk4_oran
+@a*@ch5*@cocuk5_oran
set @cocukyardimi= round(@cocukyardimi,2)
--aile(es) yardimi
if @esCalisiyor=1
begin
set @esyardimi=0
end
else
begin
set @esyardimi=@esYardimOrani*@a
end
--AGI YEKUN
set @AGI_RETURN_VAL=@sabit+@cocukyardimi+@esyardimi
--Kural: AGI a değerinin %85'ini geçemez. Geçerse en fazla %85 kadar değer alınır
set @cocukYardimTavanDeger=@a*0.85
if(@AGI_RETURN_VAL>=@cocukYardimTavanDeger)
begin
set @AGI_RETURN_VAL=@cocukYardimTavanDeger
end
--Logic//
set @AGI_RETURN_VAL=round(@AGI_RETURN_VAL,2)
RETURN(@AGI_RETURN_VAL)
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment