Forum
Selamlar,
Caride yürüyen bakiye veren kullanıcı tanımlı fonksiyonu.
Kullanım Şekli : SELECT * FROM [dbo].[Carı_Bakıye_006] ('01.01.2018','31.12.2018','120.07.008')
CREATE FUNCTION [dbo].[Carı_Bakıye_006] (@TARIH1 VARCHAR(12), @TARIH2 VARCHAR(12), @KODU VARCHAR(30))
RETURNS @Report TABLE
(
ID INT NOT NULL PRIMARY KEY,
ADI VARCHAR(300) COLLATE TURKISH_CI_AS,
KODU VARCHAR(300) COLLATE TURKISH_CI_AS,
FISTUR VARCHAR(150),
TARIH DATETIME ,
BELGE VARCHAR(150),
ACIKLAMA VARCHAR(150),
BORC FLOAT,
ALACAK FLOAT,
BAKIYE FLOAT,
BA VARCHAR(4)
)
AS
BEGIN
DECLARE @COUNTER INT
DECLARE @ID INT
DECLARE @TARIH VARCHAR(12)
DECLARE @BORC FLOAT
DECLARE @ALACAK FLOAT
DECLARE @BAKIYE FLOAT
DECLARE @FISTUR VARCHAR(150)
DECLARE @ADI VARCHAR(150)
DECLARE @BELGE VARCHAR(150)
DECLARE @ACIKLAMA VARCHAR(150)
DECLARE @BA VARCHAR(4)
SET @ID = 0
SET @BAKIYE = 0
SET @TARIH1 = CONVERT(DATETIME,@TARIH1,104)
SET @TARIH2 = CONVERT(DATETIME,@TARIH2,104)
DECLARE curCARI
CURSOR LOCAL FAST_FORWARD FOR
SELECT * FROM (
SELECT '' ADI,'' KODU,'' FISTUR,NULL TARIH,'Devir' BELGE,'' ACIKLAMA,SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END) BORC,SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END)ALACAK,'' BA
FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0 AND KART.CODE=@KODU AND HAREKET.DATE_< @TARIH1
GROUP BY KART.CODE
UNION all
SELECT
KART.DEFINITION_ ADI ,
KART.CODE KODU,
FISTUR=case WHEN HAREKET.TRCODE=1 THEN 'Nakit Tahsilat'
WHEN HAREKET.TRCODE=2 THEN 'Nakit Ödeme'
WHEN HAREKET.TRCODE=3 THEN 'Borç Dekontu'
WHEN HAREKET.TRCODE=4 THEN 'Alacak Dekontu'
WHEN HAREKET.TRCODE=5 THEN 'Virman İşlemi'
WHEN HAREKET.TRCODE=6 THEN 'Kur Farkı İşlemi'
WHEN HAREKET.TRCODE=12 THEN 'Özel İşlem'
WHEN HAREKET.TRCODE=14 THEN 'Açılış Fişi'
WHEN HAREKET.TRCODE=20 THEN 'Gelen Havaleler'
WHEN HAREKET.TRCODE=21 THEN 'Gönderilen Havaleler'
WHEN HAREKET.TRCODE=31 THEN 'Mal Alım Faturası'
WHEN HAREKET.TRCODE=32 THEN 'Perakende Satış İade Faturası'
WHEN HAREKET.TRCODE=33 THEN 'Toptan Satış İade Faturası'
WHEN HAREKET.TRCODE=34 THEN 'Alınan Hizmet Faturası'
WHEN HAREKET.TRCODE=35 THEN 'Alınan Proforma Faturası'
WHEN HAREKET.TRCODE=36 THEN 'Alım İade Faturası'
WHEN HAREKET.TRCODE=37 THEN 'Perakende Satış Faturası'
WHEN HAREKET.TRCODE=38 THEN 'Toptan Satış Faturası'
WHEN HAREKET.TRCODE=39 THEN 'Verilen Hizmet Faturası'
WHEN HAREKET.TRCODE=40 THEN 'Verilen Proforma Faturası'
WHEN HAREKET.TRCODE=41 THEN 'Verilen Vade Farkı Faturası'
WHEN HAREKET.TRCODE=42 THEN 'Alınan Vade Farkı Faturası'
WHEN HAREKET.TRCODE=43 THEN 'Alınan Fiyat Farkı Faturası'
WHEN HAREKET.TRCODE=44 THEN 'Verilen Fiyat Farkı Faturası'
WHEN HAREKET.TRCODE=45 THEN 'Verilen Serbest Meslek Makbuzu'
WHEN HAREKET.TRCODE=46 THEN 'Alınan Serbest Meslek Makbuzu'
WHEN HAREKET.TRCODE=56 THEN 'Müstahsil Makbuzu'
WHEN HAREKET.TRCODE=70 THEN 'Kredi Kartı Fişi'
WHEN HAREKET.TRCODE=71 THEN 'Kredi Kartı Fişi İade'
WHEN HAREKET.TRCODE=72 THEN 'Firma Kredi Kartı Fişi'
WHEN HAREKET.TRCODE=73 THEN 'Firma Kredi Kartı Fişi İade'
WHEN HAREKET.TRCODE=61 THEN 'Çek Girişi'
WHEN HAREKET.TRCODE=62 THEN 'Senet Girişi'
WHEN HAREKET.TRCODE=63 THEN 'Çek Çıkış Cari Hesaba'
WHEN HAREKET.TRCODE=64 THEN 'Senet Çıkış Cari Hesaba'
WHEN HAREKET.TRCODE=75 THEN 'Özel Dekont'
end,
HAREKET.DATE_ TARIH,
HAREKET.DOCODE BELGE,
HAREKET.LINEEXP ACIKLAMA,
CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END BORC,
CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END ALACAK,'' as ba
FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0 AND KART.CODE=@KODU AND CONVERT(DATETIME,HAREKET.DATE_,104)>= @TARIH1 AND CONVERT(DATETIME,HAREKET.DATE_,104)<= @TARIH2
) AS TMP
ORDER BY TARIH
OPEN curCARI
FETCH NEXT FROM curCARI
INTO @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH, @BORC, @ALACAK,@BA
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ID = @ID + 1
SET @BAKIYE = round(@BAKIYE + @BORC - @ALACAK ,2)
SET @BA = CASE WHEN round(@BAKIYE ,2)>0 THEN '(B)' ELSE '(A)' END
INSERT @Report
VALUES (@ID, @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH, @BORC, @ALACAK, @BAKIYE,@BA)
FETCH NEXT FROM curCARI
INTO @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH, @BORC, @ALACAK,@BA
END
CLOSE curCARI
DEALLOCATE curCARI
RETURN
END
Bilgi için teşekkürler.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Sorun yok, portalda yenisiniz, olur böyle şeyler.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************