Delphi Can

Orjinalini görmek için tıklayınız: Tekli yada Çoklu İskonto Hesabı
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Selamlar
Belki birinin ihtiyacı olur diye buraya ekliyorum

CREATE FUNCTION [dbo].[IskontoHesapla] (@Tutar Float = 0, @Oran1 Float = 0,  @Oran2 Float = 0, @Oran3 Float = 0, @Oran4 Float = 0, @Oran5 Float = 0)
RETURNS @FnTable table
 ( Tutar Float, IskontoTutar Float, NetTutar Float, IskontoOran Float)
AS  
BEGIN 
 Declare @NetTutar Float, @IskontoTutar Float, @IskontoOran Float
 
 Set @NetTutar = 0
 Set @IskontoTutar = 0
 Set @IskontoOran = 0

 Set @NetTutar = @Tutar * 
                 Case When @Oran1 > 0 Then (1-(@Oran1/100)) Else 1 end * 
                 Case When @Oran2 > 0 Then (1-(@Oran2/100)) Else 1 end *
                 Case When @Oran3 > 0 Then (1-(@Oran3/100)) Else 1 end *
                 Case When @Oran4 > 0 Then (1-(@Oran4/100)) Else 1 end *
                 Case When @Oran5 > 0 Then (1-(@Oran5/100)) Else 1 end

 Set @IskontoOran = 100 - 
                 (Case When @Oran1 > 0 Then (1-(@Oran1/100)) Else 1 End) * 
                 (Case When @Oran2 > 0 Then (1-(@Oran2/100)) Else 1 End) *
                 (Case When @Oran3 > 0 Then (1-(@Oran3/100)) Else 1 End) *
                 (Case When @Oran4 > 0 Then (1-(@Oran4/100)) Else 1 End) *
                 (Case When @Oran5 > 0 Then (1-(@Oran5/100)) Else 1 End) * 100
                 
 Set @IskontoTutar = @Tutar - @NetTutar

 Insert Into @FnTable (Tutar, IskontoTutar, NetTutar, IskontoOran)
 Values (@Tutar, @IskontoTutar, @NetTutar, @IskontoOran)
 
return

End

Select * from IskontoHesapla(175, 50, 30, 5, 0, 0)

Buda Tablo Şeklinde Kullanıma Örnek
Declare @T Table (Tutar Float, O1 Float, O2 Float, O3 Float, O4 Float, O5 Float)

Insert Into @T (Tutar, O1, O2, O3, O4, O5) Values (175, 50, 50, 40, 0, 0)
Insert Into @T (Tutar, O1, O2, O3, O4, O5) Values (175, 10, 0, 0, 0, 0)
Insert Into @T (Tutar, O1, O2, O3, O4, O5) Values (175, 20, 30, 40, 0, 0)
Insert Into @T (Tutar, O1, O2, O3, O4, O5) Values (175, 15, 20, 0, 0, 0)
Insert Into @T (Tutar, O1, O2, O3, O4, O5) Values (175, 15, 20, 0, 20, 0)


Select * 
From @T t
 Outer Apply (Select * From IskontoHesapla(t.Tutar, t.O1, t.O2, t.O3, t.O4, t.O5)) i