Mikro ERP Kasa Raporu ve Nakit Akış Takibi: Anlık Bakiye SQL Sorgusu

Mikro ERP'de kasa bakiyesi nasıl sorgulanır? Kasa hareketleri, günlük nakit akışı, kasa bazlı bakiye ve gün sonu raporu SQL sorguları.

Sorun: “Kasada Ne Kadar Nakit Var?”

Kasa sorumlusu her gün sonu soruyor: “Kasada ne kadar var? Bugün tahsil edilen ne, ödenen ne?” Mikro’da kasa hareketleri de cari hesap sistemiyle yönetilir.

Kasa Hareketlerini Filtreleme

Kasa hareketleri cha_cari_cins = 4 ile filtrelenir:

cha_cari_cinsAçıklama
4Kasamız
0Carimiz
2Bankamız

Kasa evrak tipleri:

Evrak TipiKodHareket
Kasa Tahsilat Fişi2Giriş
Kasa Tediye Fişi65Çıkış
Kasa Masraf Fişi37Çıkış

Kaynak: CARI_HESAP_HAREKETLERI

Tüm Kasaların Anlık Bakiyesi

SELECT 
    H.cha_kod                                      AS [Kasa Kodu],
    K.kas_isim                                     AS [Kasa Adi],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE 0 END) AS [Toplam Giris],
    SUM(CASE WHEN H.cha_tip = 1 THEN H.cha_meblag ELSE 0 END) AS [Toplam Cikis],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
             ELSE -H.cha_meblag END)               AS [Bakiye]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
LEFT JOIN KASALAR K WITH (NOLOCK) ON H.cha_kod = K.kas_kod
WHERE H.cha_cari_cins = 4                          -- Kasamiz
  AND H.cha_iptal = 0
GROUP BY H.cha_kod, K.kas_isim
HAVING SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE -H.cha_meblag END) <> 0
ORDER BY [Bakiye] DESC;

Günlük Kasa Hareketi (Gün Sonu Raporu)

SELECT 
    CONVERT(VARCHAR(10), H.cha_tarihi, 104)        AS [Tarih],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE 0 END) AS [Tahsilat],
    SUM(CASE WHEN H.cha_tip = 1 THEN H.cha_meblag ELSE 0 END) AS [Tediye],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
             ELSE -H.cha_meblag END)               AS [Net],
    SUM(SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
                 ELSE -H.cha_meblag END))
        OVER (ORDER BY H.cha_tarihi 
              ROWS UNBOUNDED PRECEDING)             AS [Bakiye]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
WHERE H.cha_kod = 'K.01'                             -- Kasa kodu (isletmenize gore degistirin)
  AND H.cha_cari_cins = 4
  AND H.cha_iptal = 0
  AND H.cha_tarihi >= '2026-01-01'
GROUP BY H.cha_tarihi
ORDER BY H.cha_tarihi;

Bugünün Kasa Detayı

SELECT 
    CONVERT(VARCHAR(8), H.cha_create_date, 108)    AS [Saat],
    CASE H.cha_evrak_tip
        WHEN 2  THEN 'Kasa Tahsilat'
        WHEN 65 THEN 'Kasa Tediye'
        WHEN 37 THEN 'Kasa Masraf'
        WHEN 5  THEN 'Çek Tahsilat'
        ELSE 'Tip: ' + CAST(H.cha_evrak_tip AS VARCHAR)
    END                                             AS [İşlem],
    H.cha_aciklama                                  AS [Açıklama],
    H.cha_kod                                       AS [Karşı Taraf],
    CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE 0 END AS [Giriş],
    CASE WHEN H.cha_tip = 1 THEN H.cha_meblag ELSE 0 END AS [Çıkış]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
WHERE H.cha_kasa_hizmet = 4                        -- Kasa tarafı
  AND H.cha_kasa_hizkod = 'K.01'                    -- Kasa kodu (isletmenize gore degistirin)
  AND H.cha_iptal = 0
  AND H.cha_tarihi = CAST(GETDATE() AS DATE)       -- Bugün
ORDER BY H.cha_create_date;

Toplam Nakit Pozisyonu (Kasa + Banka)

Tüm kasa ve banka bakiyelerini birleştiren özet:

SELECT 
    CASE H.cha_cari_cins
        WHEN 2 THEN 'Banka'
        WHEN 4 THEN 'Kasa'
    END                                             AS [Tur],
    H.cha_kod                                       AS [Hesap Kodu],
    ISNULL(B.ban_ismi, K.kas_isim)                  AS [Hesap Adi],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
             ELSE -H.cha_meblag END)                AS [Bakiye]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
LEFT JOIN BANKALAR B WITH (NOLOCK) ON H.cha_kod = B.ban_kod AND H.cha_cari_cins = 2
LEFT JOIN KASALAR K WITH (NOLOCK) ON H.cha_kod = K.kas_kod AND H.cha_cari_cins = 4
WHERE H.cha_cari_cins IN (2, 4)                    -- Banka + Kasa
  AND H.cha_iptal = 0
GROUP BY H.cha_cari_cins, H.cha_kod, B.ban_ismi, K.kas_isim
HAVING SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE -H.cha_meblag END) <> 0
ORDER BY H.cha_cari_cins, [Bakiye] DESC;

Dikkat Edilecekler

  1. Kasa kodu: Mikro’da kasalar genellikle 400.xxx aralığında tanımlanır.
  2. Vardiya bazlı: Perakende satış yapılıyorsa cha_vardiya_no ile vardiya bazlı rapor çıkarılabilir.
  3. Kasa sayımı: SQL bakiyesi ile fiziksel kasa sayımı tutmuyor mu? Sayım farkı kaydı olup olmadığını kontrol edin.

İlgili Yazılar


Bu rehber CARI_HESAP_HAREKETLERI | KASALAR | BANKALAR tablo yapılarına dayanarak hazırlanmıştır.

📚 İlgili Yazılar