Cari bakiyelerin belirli referans tarihine göre durumlarını göstermektedir.
Vadesi geçen ve vadesi geçmemiş bakiyelerin bilgisini verir. Vadesi geçenlerin de kaç gün geçtiğini, yani yaşının ne olduğunu gösterir.
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 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.
Merhaba,
Mikro Menü Sorgu Yönetimi için hazırlanacak dosya içeriğini nasıl hazırlayabilirim ?
İyi çalışmalar.
Merhaba Mustafa Bey,
Menü Sorgu Yönetiminde Görüntü Sorgu Dosyası Oluşturma sayfasından detaylı bilgi edinebilirsiniz.
Merhabalar, bu sorgu için teşekkürler. gerekli procedure oluştu. çalışıyor. ancak bu veriyi VERİ AL yaparak sürekli excele almak istiyoruz. DB analiz kısmına nasıl alabiliriz. SELECT ve FROM ile halledemedim.
Yardım ederseniz sevinirim
Sorgu procedure olduğu için DBANALIZ ile kullanmanız mümkün değil. Mikro FLY ürünlerinde Menü Sorgu Yönetimi özelliği bulunmaktadır.
Örnek bu ekranda kullanılmak üzere hazırlanmıştır.
Menü sorgu yönetimi linkini kullanarak detaylı bilgi edinebilirsiniz.
(DBANALIZde kullanmak için sorgunun VIEW kullanımına uygun şekilde düzenlenmesi gerekir.)
İstediğimiz depoların Tüm depo olarak gözükmesini istiyoruz bunu nasıl yapabılırız. Örneğin 1,2,3,4,5 nolu depolar olsun ama biz sadece 1,4,5’in tek bir depo olarak gözükmesini istiyoruz. Bunu nasıl ayabılırız
Bu sorgu cari hesap bakiye yaşlandırma için kullanılıyor ve depo ayırımı / seçimi olamaz.
Merhabalar,
Sorgu için teşekkürler. Bu sorguyu Döviz Türleri ayrı olacak şekilde nasıl düzenleyebilirim.
Teşekkürler.
Örnek
Cari 1 / Döviz Türü (TL) / Vadesi Geçen Bakiye
Cari 1 / Döviz Türü (USD) / Vadesi Geçen Bakiye
Cari 1 / Döviz Türü (EUR) / Vadesi Geçen Bakiye
Merhaba Yücel bey
Proforma siparişte tetiklenecek bir triggere ihtiyacım var. Örnek olarak aşağıda gibi bir çalışma yaptım fakat istediğim gibi olmadı. Triggerın satırdaki tutardan değilde evrakın toplam tutarı üzerinden çalışacak şekilde nasıl düzenleyebilirim. Şİmdiden teşekkür ederim.İyi çalışmalar dilerim.
ALTER TRIGGER [dbo].[PRFSIP03]
ON [dbo].[PROFORMA_SIPARISLER]
AFTER INSERT, UPDATE
AS
BEGIN
IF (SELECT sum(pro_tutari) FROM PROFORMA_SIPARISLER WHERE pro_evrakno_seri=(select pro_evrakno_seri FROM inserted )
AND pro_evrakno_sira=(select pro_evrakno_sira FROM inserted ) and pro_tipi = 0 AND pro_cinsi= 2 and
pro_cinsi=(select pro_cinsi from PROFORMA_SIPARISLER) and pro_tipi=(select pro_tipi from PROFORMA_SIPARISLER)
GROUP BY pro_tipi, pro_cinsi, pro_evrakno_seri, pro_evrakno_sira)<1000
BEGIN
RAISERROR('1.000 TL ALTINDA KAYIT GİRMEYİN… !', 16, 1)
ROLLBACK
RETURN
END
END