Mikro ERP Kapanmamış Cari Hareketler: Açık Bakiye Neden Sıfırlanmadı?

Mikro ERP'de cari bakiye neden sıfırlanmıyor? Kapanmamış borç/alacak hareketlerini bulma, borç-alacak eşleme tablosu analizi ve açık kalan evrakları...

Sorun: “Ödeme Yaptık Ama Bakiye Hâlâ Açık Görünüyor”

Müşteri ödeme yaptı, makbuz kesildi — ama Mikro’da bakiye hâlâ sıfırlanmadı. Bu sorun ERP kullanan firmaların en sık karşılaştığı problemdir.

Sebebi genellikle şudur: Borç ve alacak hareketleri birbirine eşlenmemiş (kapatılmamış). Mikro’da bir tahsilat makbuzu kestiğinizde, o tahsilatın hangi faturayı kapadığı CARI_HAREKET_BORC_ALACAK_ESLEME tablosunda tutulur. Bu eşleme yapılmadıysa, ERP borcu açık olarak gösterir.

Hangi Tabloları Kullanacağız?

TabloAçıklamaRolü
CARI_HESAP_HAREKETLERITüm borç/alacak hareketleriBorçlu evrakları bulmak
CARI_HAREKET_BORC_ALACAK_ESLEMEKapama eşleştirmeleriHangi ödeme hangi borcu kapadı

Kritik alanlar:

AlanTabloAçıklama
cha_GuidCARI_HESAP_HAREKETLERIHer hareketin benzersiz ID’si
cha_tpozCARI_HESAP_HAREKETLERI0=Açık, 1=Kapalı
chk_Borc_uidCARI_HAREKET_BORC_ALACAK_ESLEMEKapatılan borç kaydının UID’si
chk_Alc_uidCARI_HAREKET_BORC_ALACAK_ESLEMEKapatılan alacak kaydının UID’si
chk_TutarCARI_HAREKET_BORC_ALACAK_ESLEMEKapatma tutarı

Kaynak: CARI_HAREKET_BORC_ALACAK_ESLEME · CARI_HESAP_HAREKETLERI

Adım 1: Açık Kalan Borç Hareketlerini Bulma

Bakiyesi kapanmamış (pozisyonu açık) tüm borç hareketlerini listeleyen sorgu:

SELECT 
    cha_kod                                       AS [Cari Kodu],
    CONVERT(VARCHAR(10), cha_tarihi, 104)          AS [Tarih],
    CASE cha_evrak_tip
        WHEN 63 THEN 'Satis Faturasi'
        WHEN 0  THEN 'Alis Faturasi'
        WHEN 31 THEN 'Borc Dekontu'
        WHEN 29 THEN 'Acilis Fisi'
        ELSE 'Tip: ' + CAST(cha_evrak_tip AS VARCHAR)
    END                                            AS [Evrak Tipi],
    cha_evrakno_seri + '-' + 
        CAST(cha_evrakno_sira AS VARCHAR)           AS [Evrak No],
    cha_belge_no                                   AS [Belge No],
    cha_meblag                                     AS [Tutar],
    cha_vade                                       AS [Vade],
    DATEDIFF(DAY, 
        CASE
            WHEN cha_vade = 0 THEN cha_tarihi
            WHEN cha_vade BETWEEN 1 AND 3650 
            THEN DATEADD(DAY, cha_vade, cha_tarihi)
            WHEN cha_vade BETWEEN 19000101 AND 20991231 
            THEN TRY_CONVERT(datetime, CONVERT(char(8), cha_vade), 112)
            ELSE cha_tarihi
        END, GETDATE())                            AS [Geciken Gun]
FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK)
WHERE cha_tip = 0               -- Borc hareketleri
  AND cha_tpoz = 0              -- Pozisyonu: Acik
  AND cha_iptal = 0             -- Iptal olmayanlar
  AND cha_kod = '120.001'       -- Cari kodu (isletmenize gore degistirin)
ORDER BY cha_tarihi;

cha_tpoz = 0: Bu alan Mikro’nun kendi kapama mekanizmasıyla güncellenir. 0 = Açık, 1 = Kapalı.

Adım 2: Bir Evrağın Kapama Detayını Görme

Belirli bir faturanın hangi ödemelerle ne kadar kapatıldığını görmek için:

-- Faturanın Guid'ini bul
DECLARE @FaturaGuid UNIQUEIDENTIFIER;

SELECT @FaturaGuid = cha_Guid
FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK)
WHERE cha_kod = '120.001'
  AND cha_evrakno_seri = 'B'
  AND cha_evrakno_sira = 4521;

-- Bu faturayı kapatan ödemeleri getir
SELECT 
    'Fatura → Ödeme' AS [Yön],
    E.chk_Tutar                                    AS [Kapatılan Tutar],
    CONVERT(VARCHAR(10), O.cha_tarihi, 104)         AS [Ödeme Tarihi],
    CASE O.cha_evrak_tip
        WHEN 1  THEN 'Tahsilat Makbuzu'
        WHEN 2  THEN 'Kasa Tahsilat'
        WHEN 4  THEN 'Çek Giriş'
        WHEN 34 THEN 'Gelen Havale'
        ELSE 'Tip: ' + CAST(O.cha_evrak_tip AS VARCHAR)
    END                                             AS [Ödeme Tipi],
    O.cha_evrakno_seri + '-' + 
        CAST(O.cha_evrakno_sira AS VARCHAR)         AS [Ödeme Evrak No]
FROM CARI_HAREKET_BORC_ALACAK_ESLEME E WITH (NOLOCK)
INNER JOIN CARI_HESAP_HAREKETLERI O WITH (NOLOCK) 
    ON E.chk_Alc_uid = O.cha_Guid
WHERE E.chk_Borc_uid = @FaturaGuid
  AND E.chk_iptal = 0
ORDER BY O.cha_tarihi;

Çıktı:

Yön              │ Kapatılan Tutar │ Ödeme Tarihi │ Ödeme Tipi        │ Ödeme Evrak No
─────────────────┼─────────────────┼──────────────┼───────────────────┼───────────────
Fatura → Ödeme   │ 5.000,00        │ 20.01.2026   │ Tahsilat Makbuzu  │ C-102
Fatura → Ödeme   │ 3.500,00        │ 05.02.2026   │ Çek Giriş         │ D-45

Fatura tutarı 8.500 TL ise ve toplam kapatılan 8.500 TL ise fatura tam kapanmıştır. Fark varsa kısmi kapama söz konusudur.

Adım 3: Tüm Carilerin Açık Bakiye Özeti

Hangi müşterinin ne kadar açık borcu var, kaç evrak açık kalmış:

SELECT 
    H.cha_kod                              AS [Cari Kodu],
    C.cari_unvan1                          AS [Unvan],
    COUNT(*)                               AS [Acik Evrak Sayisi],
    SUM(H.cha_meblag)                      AS [Toplam Acik Borc],
    MIN(H.cha_tarihi)                      AS [En Eski Evrak],
    MAX(DATEDIFF(DAY, 
        CASE
            WHEN H.cha_vade = 0 THEN H.cha_tarihi
            WHEN H.cha_vade BETWEEN 1 AND 3650 
            THEN DATEADD(DAY, H.cha_vade, H.cha_tarihi)
            WHEN H.cha_vade BETWEEN 19000101 AND 20991231 
            THEN TRY_CONVERT(datetime, CONVERT(char(8), H.cha_vade), 112)
            ELSE H.cha_tarihi
        END, GETDATE()))                   AS [Max Geciken Gun]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
INNER JOIN CARI_HESAPLAR C WITH (NOLOCK) ON H.cha_kod = C.cari_kod
WHERE H.cha_tip = 0             -- Borc
  AND H.cha_tpoz = 0            -- Acik
  AND H.cha_iptal = 0
GROUP BY H.cha_kod, C.cari_unvan1
HAVING SUM(H.cha_meblag) > 0
ORDER BY [Toplam Acik Borc] DESC;

Neden Farklı Çıkabilir?

  1. Mikro sürüm farkı: Eski Mikro sürümlerinde cha_tpoz alanı güncellenmeyebilir. Bu durumda kapama tablosundan kontrol yapılması gerekir.
  2. Manuel kapama yapılmadı: Tahsilat kesildi ama “Borç/Alacak Eşleştirme” menüsünden bağlanmadı.
  3. Kısmi kapama: Faturanın bir kısmı ödendi, geri kalanı hâlâ açık.
  4. Kur farkı: Dövizli hareketlerde kur farkından kaynaklanan küçük tutarlar açık kalabilir.

İlgili Yazılar


Bu rehber Mikro ERP API Docs tablo yapısına dayanarak hazırlanmıştır.

📚 İlgili Yazılar