Mikro Cari Ekstre ve Bakiye Raporu: Doğru Hesaplamanın Püf Noktaları
Cari ekstre ve bakiye raporu, muhasebenin kalbidir: kim size ne kadar borçlu, siz kime ne kadar borçlusunuz? Görünüşte basit bu soru, Mikro'da yanlış kurulduğunda en sık hata yapılan rapordur. Çünkü bakiye, tek bir kolonda durmaz; borç ve alacak hareketlerinin doğru yönle toplanmasından doğar. Bu yazıda Mikro'da cari ekstre ve bakiyenin doğru hesaplanmasının püf noktalarını anlatıyoruz.
Bakiye neden "hesaplanır", okunmaz?
Bir carinin bakiyesi, o cariye ait tüm hareketlerin (borç − alacak) toplamıdır. Mikro hareketleri borç ve alacak olarak ayrı tutar; bakiye bu ikisinin farkıdır:
Bakiye = Toplam Borç − Toplam Alacak
Bu yüzden "bakiye" raporu aslında bir toplama işlemidir. Hareket yönünü (borç mu alacak mı) yanlış yorumlarsanız, müşterinizi borçlu yerine alacaklı gösterirsiniz — ve tahsilat tamamen şaşar.
Cari bakiye listesi (özet)
Aşağıdaki örnek, her carinin net bakiyesini hesaplar. (Kolon adları sürüme göre değişebilir.)
SELECT
ch.cari_kod AS [Cari Kodu],
ch.cari_unvan1 AS [Unvan],
SUM(CASE WHEN h.cha_tip = 0 THEN h.cha_meblag ELSE 0 END) AS [Borç],
SUM(CASE WHEN h.cha_tip = 1 THEN h.cha_meblag ELSE 0 END) AS [Alacak],
SUM(CASE WHEN h.cha_tip = 0 THEN h.cha_meblag ELSE -h.cha_meblag END) AS [Bakiye]
FROM CARI_HESAPLAR ch
LEFT JOIN CARI_HESAP_HAREKETLERI h ON h.cha_kod = ch.cari_kod
GROUP BY ch.cari_kod, ch.cari_unvan1
ORDER BY [Bakiye] DESC;
LEFT JOIN kullanmak önemlidir: hiç hareketi olmayan cariler de listede (bakiye 0) görünür. INNER JOIN kullansaydınız, yeni açılmış cariler kaybolurdu.
Cari ekstre (hareket dökümü + yürüyen bakiye)
Ekstre, tek bir carinin tarih sıralı hareketlerini ve her satırdan sonraki yürüyen bakiyeyi gösterir:
SELECT
h.cha_tarihi AS [Tarih],
h.cha_evrak_tip AS [Evrak],
CASE WHEN h.cha_tip = 0 THEN h.cha_meblag END AS [Borç],
CASE WHEN h.cha_tip = 1 THEN h.cha_meblag END AS [Alacak],
SUM(CASE WHEN h.cha_tip = 0 THEN h.cha_meblag ELSE -h.cha_meblag END)
OVER (ORDER BY h.cha_tarihi, h.cha_RECno
ROWS UNBOUNDED PRECEDING) AS [Yürüyen Bakiye]
FROM CARI_HESAP_HAREKETLERI h
WHERE h.cha_kod = '120.01.001'
ORDER BY h.cha_tarihi, h.cha_RECno;
Yürüyen bakiye için pencere fonksiyonu (SUM() OVER) kullanmak, satır satır döngü kurmaktan hem daha hızlı hem daha doğrudur.
Püf noktaları ve sık hatalar
- Yön (borç/alacak) tuzağı. En kritik nokta. Tip kolonunun anlamı yanlışsa tüm rapor ters döner.
- Döviz/yerel para ayrımı. Dövizli cariler varsa, hangi tutar kolonunu topladığınıza dikkat edin (yerel mi, orijinal döviz mi).
- İptal ve virman hareketleri. Bazı teknik hareketler ekstreye dâhil edilmemeli ya da ayrı gösterilmelidir.
- Tarih aralığı + devir. "Bu yıl ekstre" isteniyorsa, dönem başı devir bakiyesini açılış satırı olarak eklemek gerekir; yoksa yürüyen bakiye yanlış başlar.
- Sıralama belirsizliği. Aynı tarihli hareketlerde ikincil bir sıra (kayıt no) vermezseniz, yürüyen bakiye satır sırasına göre oynar.
Doğal dille cari raporu
Bu inceliklerin hepsini elle yönetmek yerine yazarsınız:
- "Borcu 10.000 TL üstündeki carileri büyükten küçüğe listele"
- "120.01.001 kodlu carinin bu yıl ekstresi, devir dâhil"
- "90 günü geçmiş alacaklarım"
Erp Asistanı; borç/alacak yönünü, devir bakiyesini, tarih aralığını ve sıralamayı sizin sürümünüze göre doğru kurar. İptal/virman gibi tuzaklar otomatik ele alınır.
Sık sorulanlar
Bakiyem neden Mikro ekranıyla tutmuyor? Genellikle yön, devir bakiyesi ya da iptal hareketleri kaynaklıdır. Doğru kurulmuş sorgu Mikro'nun foy/ekstresiyle tutar.
Yürüyen bakiye nasıl hesaplanır? Tarih sıralı hareketlerin kümülatif toplamıyla; pencere fonksiyonu en temiz yöntemdir.
Vadesi geçmiş alacakları görebilir miyim? Evet. Vade tarihine göre yaşlandırma (30/60/90 gün) raporu üretilebilir.
Cari bakiyenizi doğru yön, doğru devir ve doğru tarihle hesaplayın. Tahsilatınız şaşmasın.
Mikro'da SQL ve raporu konuşarak alın
Türkçe sorunuzu yazın, şemanıza uygun çalışan SQL'i ya da hazır uygulamanızı saniyeler içinde alın. Kredi kartı gerekmez.