Mikro v16 programlarında, cari hesap bakiyelerinin belirli gün aralıklarında yaşlandırılması ve rapor olarak alınabilmesi için örnek kod ve kullanım örneğinin aşağıda bulabilirsiniz. SQL procedure, veri tabanına kayıt edildikten sonra Mikro programlarında yer alan Menü Sorgu Yönetimi yönetimi uygulamasıyla aşağıda belirtilen şekilde rapor dosyası içeriği eklenip kullanıcı menülerine kayıt edilebilir. Örnek ekran görüntüsünde olduğu gibi açık cari hesap bakiyelerinin belirlenen gün aralıklarında yaşlandırma özeti elde edilir.
CREATE PROCEDURE dbo.sp_Zukod_Cari_Bakiye_Yaslandirma ( @CariIlkKod NVARCHAR(25)='', @CariSonKod NVARCHAR(25)='', @CariKodYapisi NVARCHAR(25)='', @RaporTarihi DATETIME=NULL, @HangiHesaplar TINYINT=0 ) AS BEGIN IF @RaporTarihi IS NULL SET @RaporTarihi=dbo.fn_DatePart(GETDATE()) DECLARE @CariKodu NVARCHAR(25), @TmpBakiye FLOAT, @Id UNIQUEIDENTIFIER, @KayitTutar FLOAT, @KapanmamisTutar FLOAT, @Vade DATETIME DECLARE @BakiyeyeKonuKayitlar TABLE ( Id UNIQUEIDENTIFIER, CariKodu NVARCHAR(25), KapanmamisTutar FLOAT, GecikenGun INT ) SELECT TOP 100 PERCENT cha_Guid, cha_kod, cha_tarihi, CHA_VADE_TARIHI, CASE WHEN CHA_CARI_BORC_ALACAK_TIP=0 THEN 1.0 ELSE -1.0 END AS MEBLAG_SIGN, CHA_CARI_MEBLAG_ANA AS TUTAR, CAST(0.0 AS FLOAT) CHA_KAPANAN_MEBLAG INTO #CariHareketler FROM dbo.CARI_HESAP_HAREKETLERI_VIEW_WITH_INDEX_02 WITH (NOLOCK) LEFT OUTER JOIN CARI_HESAPLAR WITH(NOLOCK) ON (cari_kod=cha_kod) WHERE (cha_cari_cins=0) AND (cari_kod >= @CariIlkKod OR @CariIlkKod= N'') AND (cari_kod <= @CariSonKod OR @CariSonKod = N'') AND (cari_kod like @CariKodYapisi+'%') AND (cha_tarihi<=@RaporTarihi) ORDER BY cha_kod,cha_grupno DECLARE CariCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT DISTINCT cha_kod FROM #CariHareketler ORDER BY cha_kod OPEN CariCursor FETCH NEXT FROM CariCursor INTO @CariKodu WHILE @@FETCH_STATUS = 0 BEGIN SELECT @TmpBakiye=SUM(TUTAR*MEBLAG_SIGN) FROM #CariHareketler WHERE cha_kod=@CariKodu IF ((@HangiHesaplar=0 AND @TmpBakiye>0) OR (@HangiHesaplar=1 AND @TmpBakiye<0) OR (@HangiHesaplar=2 AND @TmpBakiye<>0)) BEGIN DECLARE HareketCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT TOP 100 PERCENT cha_Guid, (TUTAR-CHA_KAPANAN_MEBLAG)*MEBLAG_SIGN, CHA_VADE_TARIHI FROM #CariHareketler WHERE (cha_kod=@CariKodu) AND ((@TmpBakiye>0 AND MEBLAG_SIGN>0) OR (@TmpBakiye<0 AND MEBLAG_SIGN<0)) AND (TUTAR>CHA_KAPANAN_MEBLAG) ORDER BY CHA_VADE_TARIHI DESC,cha_tarihi DESC OPEN HareketCursor FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade WHILE @@FETCH_STATUS = 0 AND ABS(@TmpBakiye)>1 BEGIN IF @TmpBakiye>0 SET @KapanmamisTutar = dbo.fn_MIN(@TmpBakiye,@KayitTutar) ELSE SET @KapanmamisTutar = dbo.fn_MAX(@TmpBakiye,@KayitTutar) SET @TmpBakiye = @TmpBakiye - @KapanmamisTutar INSERT INTO @BakiyeyeKonuKayitlar VALUES (@Id,@CariKodu,@KapanmamisTutar,dbo.fn_gunfarkibul(@RaporTarihi,@Vade)) FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade END CLOSE HareketCursor DEALLOCATE HareketCursor END FETCH NEXT FROM CariCursor INTO @CariKodu END CLOSE CariCursor DEALLOCATE CariCursor SELECT TOP 100 PERCENT cari_kod AS [CARİ KODU], cari_unvan1 AS [CARİ İSMİ], SUM(CASE WHEN GecikenGun<=0 THEN KapanmamisTutar ELSE 0.0 END) AS [VADESİ GEÇEN BAKİYE\T], SUM(CASE WHEN GecikenGun>0 THEN KapanmamisTutar ELSE 0.0 END) AS [VADESİ GEÇMEMİŞ BAKİYE\T], SUM(KapanmamisTutar) AS [TOPLAM BAKİYE\T], CASE WHEN SUM(KapanmamisTutar)>0 THEN 'Borç' ELSE 'Alacak' END AS [BAKİYE TİPİ], SUM(CASE WHEN GecikenGun BETWEEN -30 AND 0 THEN KapanmamisTutar ELSE 0.0 END) AS [30 GÜN\T], SUM(CASE WHEN GecikenGun BETWEEN -60 AND -31 THEN KapanmamisTutar ELSE 0.0 END) AS [60 GÜN\T], SUM(CASE WHEN GecikenGun BETWEEN -90 AND -61 THEN KapanmamisTutar ELSE 0.0 END) AS [90 GÜN\T], SUM(CASE WHEN GecikenGun BETWEEN -120 AND -91 THEN KapanmamisTutar ELSE 0.0 END) AS [120 GÜN\T], SUM(CASE WHEN GecikenGun <= -121 THEN KapanmamisTutar ELSE 0.0 END) AS [+120 GÜN\T] FROM @BakiyeyeKonuKayitlar LEFT OUTER JOIN CARI_HESAPLAR WITH (NOLOCK) ON (cari_kod=CariKodu) GROUP BY cari_kod, cari_unvan1 HAVING ROUND(SUM(KapanmamisTutar),2)<>0 ORDER BY cari_kod, cari_unvan1 END
Mikro Menü Sorgu Yönetimi için hazırlanacak dosya içeriği
[<
<@P1;NAME=Cari ilk kod,25;TYPE=S;TABLEID=31;FIELDNAME=cari_kod;CHOOSEID=2>
<@P2;NAME=Cari son kod,25;TYPE=S;TABLEID=31;FIELDNAME=cari_kod;CHOOSEID=2>
<@P3;NAME=Cari kod yapısı,25;TYPE=S;TABLEID=31;FIELDNAME=cari_kod;CHOOSEID=2>
<@P4;NAME=Referans tarihi,10;TYPE=T>
<@P5;NAME=Hangi hesaplar,20;TYPE=B;ITEMS=Borçlu hesaplar|0,Alacaklı hesaplar|1,Hepsi|2>
>]
exec dbo.sp_Zukod_Cari_Bakiye_Yaslandirma @P1,@P2,@P3,@P4,@P5
Menü çalıştırıldığında ortaya çıkacak olan parametre formu

Rapor çalıştırıldıktan sonra elde edilen görüntü

Merhaba,
Çok güzel bir çalışma teşekkür ederim. İlaveten Menü sorgu yönetiminde sorumluluk merkezli ortalama vadeyi tarih biçiminde görmek istiyorum. Yardım rica ediyorum.
Merhaba Ali Bey,
Talep ettiğiniz kod yakında buradan yayınlanacaktır.
Merhaba
güncel sürüm sql sorgusu var mı ?
Merhabalar,
Sorgu Mikro v16 ürünlerinin son exesinde çalışmaktadır.
Güncel sürüm sql sorgu kütüphanesini nerden bulabilirim.
Merhaba,
Biz Mikro kullanmıyoruz fakat prosedürde ufak değişiklikler yaparak kendi programımızda çalışmasını sağladık. Hesaplamalar birebir tutuyor.
Elinize sağlık. Gerçekten çok işimize yaradı. Belki haftalarca uğraşmamız gerekecek hesaplamayı sizin prosedürünüzle 2 günde tamamladık.
Çok teşekkür ederiz.
Merhaba Elif Hanım,
Kodlarımızın, Mikro programları dışında da kullanılabilir şekilde düzenlenmiş olması paylaşım motivasyonumuzu daha da arttıracaktır.
Olumlu yorumlarınız için çok teşekkür ederiz.
Merhaba, ellerinize sağlık.
Çok faydalı bir paylaşım, emeği geçenlere teşekkür ederim.
Para birimine göre nasıl ayırabiliriz?
Merhaba, çok faydalı bir paylaşım olmuş ellerinize sağlık.
Para birimi bazında nasıl ayırabiliriz?
Yardımlarınız için şimdiden teşekkür ederim.