← Detay Sayfası
Nesne Düzenle
|
sp_RAPOR_AYLIK_IADE_HIZLI
İlgili Uygulama
-- Seçiniz --
SQL Server
Nesne Türü
View
Stored Procedure
Trigger
Job
Nesne Adı
Bu nesne dönem devrinden etkileniyor mu? (Örn: İçinde _01_ gibi sabit dönem kodu var mı?)
Genel Kullanım Amacı ve Notlar
Tam SQL Kodu
CREATE PROCEDURE [dbo].[sp_RAPOR_AYLIK_IADE_HIZLI] @YIL INT AS BEGIN DECLARE @SAYAC INT DECLARE @AYLIK TINYINT DECLARE @TOPLAM TINYINT DECLARE @TOPLAM1 FLOAT DECLARE @TOPLAM2 FLOAT DECLARE @PLAS INT DECLARE @MAHLAS VARCHAR(50) DECLARE @MNG VARCHAR(50) DECLARE @DEF VARCHAR(50) DECLARE @KONTROL INT DECLARE @DEGER FLOAT DECLARE @JN FLOAT = 0 DECLARE @FB FLOAT = 0 DECLARE @MR FLOAT = 0 DECLARE @AP FLOAT = 0 DECLARE @MY FLOAT = 0 DECLARE @JU FLOAT = 0 DECLARE @JL FLOAT = 0 DECLARE @AU FLOAT = 0 DECLARE @SP FLOAT = 0 DECLARE @OC FLOAT = 0 DECLARE @NV FLOAT = 0 DECLARE @DC FLOAT = 0 DECLARE @PLSD VARCHAR(50) DECLARE @CURRENT_MONTH TINYINT = MONTH(GETDATE()) -- Bu ayi al -- Geçici bir tablo olustur DECLARE @TempTable TABLE ( MAHLAS VARCHAR(50), DEF VARCHAR(50), JAN FLOAT, FEB FLOAT, MAR FLOAT, APR FLOAT, MAY FLOAT, JUN FLOAT, JUL FLOAT, AUG FLOAT, SEP FLOAT, OCT FLOAT, NOV FLOAT, DEC FLOAT, TOPLAM FLOAT, TOPLAM2023 FLOAT, TOPLAM2022 FLOAT, PLAS INT, TPLAS VARCHAR(50), MANG VARCHAR(50) ); -- Tablonun içerigini temizle SET @SAYAC = 1 SET @TOPLAM = ISNULL((SELECT COUNT(*) FROM [UNIVERSALDB].[dbo].[PLASIYERLER_IADE_SIRALI]), 0); WHILE @SAYAC <= @TOPLAM BEGIN SELECT @MAHLAS = PLAS, @PLAS = LOGICALREF ,@MNG=MANG FROM [UNIVERSALDB].[dbo].[PLASIYERLER_IADE_SIRALI] WHERE SIRA = @SAYAC; SET @AYLIK = 1; WHILE @AYLIK <= 12 BEGIN IF @AYLIK <= @CURRENT_MONTH -- Sadece geçerli ay ve öncesine bak BEGIN SELECT @DEGER = ISNULL(TUTAR, 0), @PLSD = PLS FROM dbo.PLAS_RAPOR_AYLIK_IADE_TOPLAM WHERE MONTH_ = @AYLIK AND LOGICALREF = @PLAS AND YEAR_ = @YIL; IF @@ROWCOUNT = 0 BEGIN SET @DEGER = 0; END IF @AYLIK = 1 SET @JN = @DEGER; ELSE IF @AYLIK = 2 SET @FB = @DEGER; ELSE IF @AYLIK = 3 SET @MR = @DEGER; ELSE IF @AYLIK = 4 SET @AP = @DEGER; ELSE IF @AYLIK = 5 SET @MY = @DEGER; ELSE IF @AYLIK = 6 SET @JU = @DEGER; ELSE IF @AYLIK = 7 SET @JL = @DEGER; ELSE IF @AYLIK = 8 SET @AU = @DEGER; ELSE IF @AYLIK = 9 SET @SP = @DEGER; ELSE IF @AYLIK = 10 SET @OC = @DEGER; ELSE IF @AYLIK = 11 SET @NV = @DEGER; ELSE IF @AYLIK = 12 SET @DC = @DEGER; END SET @AYLIK = @AYLIK + 1; END SELECT @TOPLAM1 = TUTAR FROM dbo.PLAS_RAPOR_YILLIK_IADE_TOPLAM WHERE YEAR_ = @YIL - 1 AND LOGICALREF = @PLAS; SELECT @TOPLAM2 = TUTAR FROM dbo.PLAS_RAPOR_YILLIK_IADE_TOPLAM WHERE YEAR_ = @YIL - 2 AND LOGICALREF = @PLAS; INSERT INTO @TempTable (MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG) VALUES (@MAHLAS, @DEF, @JN, @FB, @MR, @AP, @MY, @JU, @JL, @AU, @SP, @OC, @NV, @DC, (@JN + @FB + @MR + @AP + @MY + @JU + @JL + @AU + @SP + @OC + @NV + @DC), @TOPLAM1, @TOPLAM2, @PLAS, @PLSD, @MNG); -- Degerleri sifirlama SET @JN = 0; SET @FB = 0; SET @MR = 0; SET @AP = 0; SET @MY = 0; SET @JU = 0; SET @JL = 0; SET @AU = 0; SET @SP = 0; SET @OC = 0; SET @NV = 0; SET @DC = 0; SET @SAYAC = @SAYAC + 1; END -- Geçici tablodan ana tabloya veri ekleme INSERT INTO [UNIVERSALDB].[dbo].RAPOR_PLAS_AYLIK_IADE (MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM2024, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG, YIL) SELECT MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG, @YIL FROM @TempTable; END
Oluşturulma: 23.12.2025 07:15
Son Güncelleme: 23.12.2025 17:28
İptal
Nesneyi Sil
Değişiklikleri Kaydet