- Katılım
- 4 Haz 2018
- Mesajlar
- 298
- En iyi yanıt
- 4
- Puanları
- 63
- Yaş
- 34
- Konum
- Antalya / Merkez
- Ad Soyad
- Vedat ÖZER
- Office Vers.
- 2019
Selamlar,
Cari hesaplardan yürüyen bakiye için örnek sorgu paylaşıyorum. SQL'de Kullanıcı tanımlı fonksiyon ile başka raporlar yapabilirsiniz.
[HIDEREPLYTHANKS]
Kullanım;
[/HIDEREPLYTHANKS]
Cari hesaplardan yürüyen bakiye için örnek sorgu paylaşıyorum. SQL'de Kullanıcı tanımlı fonksiyon ile başka raporlar yapabilirsiniz.
[HIDEREPLYTHANKS]
SQL:
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(30) COLLATE TURKISH_CI_AS,
KODU VARCHAR(30) COLLATE TURKISH_CI_AS,
FISTUR VARCHAR(150),
TARIH VARCHAR(12) ,
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 '','','','','Devir','',SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END) ,SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END),''
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,
CONVERT(VARCHAR(12),HAREKET.DATE_,104) 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,''
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
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
Kullanım;
SQL:
SELECT * FROM [dbo].[Carı_Bakıye_006] ('01.04.2016','31.12.2020','120.07.008') ORDER BY KODU
Moderatör tarafında düzenlendi: