Merhabalar ,
Vade hesaplama işlemlerimizi bizim için otomatik oluşturan belirtilen duruma göre AYLIK/HAFTALIK ödeme çizelgesi oluşturan SP'yi ekliyorum.
Öncelikle bir Adet tablo oluşturalım
CREATE TABLE [OPE].[TBL_TEMP](
[VADE_TARIH] [datetime] NULL,
[VADE_TUTAR] [decimal](8, 2) NULL,
[ODEME_TUTAR] [decimal](8, 2) NULL,
[REF_ID] [int] NULL,
[ODENDI] [bit] NULL,
[ACIKLAMA] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [OPE].[TBL_TEMP] ADD CONSTRAINT [DF_TBL_TEMP_ODENDI] DEFAULT ((0)) FOR [ODENDI]
GO
SP ekliyelim
CREATE PROCEDURE [dbo].[SP_VADE_HESAPLA] (@VADE_AY INT,
@TARIH DATETIME,
@TUTAR DECIMAL(8, 2),
@TURU NVARCHAR(50),
@REF_ID INT)
AS
BEGIN
TRUNCATE TABLE OPE.TBL_TEMP
DECLARE @VADE_TUTAR DECIMAL(8, 2);
IF @TURU = 'HAFTALIK' BEGIN
SELECT
@VADE_TUTAR = @TUTAR / @VADE_AY
WHILE @VADE_AY > 0
BEGIN
INSERT INTO OPE.TBL_TEMP (VADE_TARIH, VADE_TUTAR, REF_ID)
VALUES (DATEADD(WEEK, @VADE_AY, @TARIH), @VADE_TUTAR, @REF_ID);
SET @VADE_AY = @VADE_AY - 1
END
SELECT
ROW_NUMBER() OVER (ORDER BY VADE_TARIH ASC) AS SIRA_NO
,CONVERT(NVARCHAR(50), VADE_TARIH, 104) AS VADE_TARIH
,REF_ID
,ISNULL(VADE_TUTAR, 0) AS VADE_TUTAR
,ISNULL(ODEME_TUTAR, 0) AS ODEME_TUTAR
,ODENDI
,ACIKLAMA
FROM OPE.TBL_TEMP
END
IF @TURU='AYLIK' BEGIN
SELECT
@VADE_TUTAR = @TUTAR / @VADE_AY
WHILE @VADE_AY > 0
BEGIN
INSERT INTO OPE.TBL_TEMP (VADE_TARIH, VADE_TUTAR, REF_ID)
VALUES (DATEADD(MONTH, @VADE_AY, @TARIH), @VADE_TUTAR, @REF_ID);
SET @VADE_AY = @VADE_AY - 1
END
SELECT
ROW_NUMBER() OVER (ORDER BY VADE_TARIH ASC) AS SIRA_NO
,CONVERT(NVARCHAR(50), VADE_TARIH, 104) AS VADE_TARIH
,REF_ID
,ISNULL(VADE_TUTAR, 0) AS VADE_TUTAR
,ISNULL(ODEME_TUTAR, 0) AS ODEME_TUTAR
,ODENDI
,ACIKLAMA
FROM OPE.TBL_TEMP
END
END
SP çağıralım
EXECUTE SP_VADE_HESAPLA @VADE_AY = 12
,@TARIH = '2018-08-29 11:53:58.501'
,@TUTAR = 1000
,@TURU = N'AYLIK'
,@REF_ID = 22
Sonuç Ekranı
Yararlı olması dileğiyle