
Logo Tiger ve Go 3'te SQL ile cari bakiye, belirli tarihteki bakiye ve yürüyen bakiyeli cari ekstre sorguları. CLFLINE alanları ve dönem devri açıklamalı.
Cari hesap bakiyesi ve ekstresi, Logo kullanan her işletmenin en sık ihtiyaç duyduğu rapordur. Logo'nun kendi ekranlarından alınabildiği gibi, SQL ile alındığında Excel'e, bir yönetim paneline veya müşteri portalına doğrudan aktarılabilir. Bu rehberde cari bakiye, belirli bir tarihteki bakiye ve yürüyen bakiyeli cari ekstre sorgularını adım adım veriyoruz.
Cari Hareketler Nerede Tutulur?
| Tablo | Açıklama |
|---|---|
LG_001_CLCARD | Cari hesap kartları (kod, unvan, vergi no…) |
LG_001_01_CLFLINE | Cari hesap hareketleri — fatura, tahsilat, ödeme, dekont, çek, kredi kartı… |
LV_001_01_GNTOTCL | Logo'nun hazır cari toplamları (view) |
Faturalar, kasa ve banka işlemleri, çek/senet bordroları — cariyi etkileyen her işlem CLFLINE tablosuna bir satır olarak düşer. Bu yüzden bakiye ve ekstre için tek kaynak bu tablodur.
Temel Alanlar
| Alan | Açıklama |
|---|---|
CLIENTREF | Cari kartı (CLCARD.LOGICALREF) |
DATE_ | İşlem tarihi |
TRCODE | Hareket türü (aşağıdaki tabloya bakın) |
SIGN | 0 = borç, 1 = alacak |
AMOUNT | Tutar (yerel para birimi) |
TRANNO | Fiş / belge numarası |
LINEEXP | Satır açıklaması |
CANCELLED | 0 geçerli, 1 iptal |
Satış faturası kestiğinizde müşteri borçlanır (SIGN = 0), tahsilat yaptığınızda alacaklanır (SIGN = 1). Bakiye = borçlar toplamı − alacaklar toplamı; pozitif sonuç müşterinin size borcu olduğunu gösterir.
En sık görülen hareket türleri
| TRCODE | Hareket Türü |
|---|---|
| 1 | Nakit tahsilat |
| 2 | Nakit ödeme |
| 3 | Borç dekontu |
| 4 | Alacak dekontu |
| 5 | Virman |
| 14 | Açılış (devir) fişi |
| 20 | Gelen havale |
| 21 | Gönderilen havale |
| 31 | Satınalma faturası |
| 34 | Alınan hizmet faturası |
| 36 | Satınalma iade faturası |
| 37 | Perakende satış faturası |
| 38 | Toptan satış faturası |
| 39 | Verilen hizmet faturası |
| 61 | Çek girişi |
| 63 | Çek çıkışı (cari hesaba) |
| 70 | Kredi kartı fişi |
1. Tüm Carilerin Bakiyesi
SELECT C.CODE AS CariKodu, C.DEFINITION_ AS Unvan,
SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE 0 END) AS Borc,
SUM(CASE WHEN L.SIGN = 1 THEN L.AMOUNT ELSE 0 END) AS Alacak,
SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END) AS Bakiye
FROM LG_001_CLCARD C
JOIN LG_001_01_CLFLINE L ON L.CLIENTREF = C.LOGICALREF
WHERE L.CANCELLED = 0
GROUP BY C.CODE, C.DEFINITION_
HAVING SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END) <> 0
ORDER BY Bakiye DESCHAVING satırı bakiyesi sıfır olan carileri listeden çıkarır.
Alternatif: Logo'nun hazır toplamları ile
Daha hızlı bir yol olarak Logo'nun hazır cari toplam view'ını kullanabilirsiniz. TOTTYP = 1 yerel para birimi toplamlarıdır; şube ve bölüm bazında satırlar olduğu için cari bazında toplanır.
SELECT C.CODE AS CariKodu, C.DEFINITION_ AS Unvan,
SUM(G.DEBIT) AS Borc, SUM(G.CREDIT) AS Alacak,
SUM(G.DEBIT - G.CREDIT) AS Bakiye
FROM LV_001_01_GNTOTCL G
JOIN LG_001_CLCARD C ON C.LOGICALREF = G.CARDREF
WHERE G.TOTTYP = 1
GROUP BY C.CODE, C.DEFINITION_
ORDER BY Bakiye DESC2. Belirli Bir Tarihteki Bakiye
Ay sonu veya yıl sonu bakiyesi için tarih koşulu eklemek yeterlidir:
SELECT C.CODE AS CariKodu, C.DEFINITION_ AS Unvan,
SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END) AS Bakiye
FROM LG_001_CLCARD C
JOIN LG_001_01_CLFLINE L ON L.CLIENTREF = C.LOGICALREF
WHERE L.CANCELLED = 0
AND L.DATE_ <= '2026-06-30'
GROUP BY C.CODE, C.DEFINITION_
HAVING SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END) <> 0
ORDER BY C.CODE3. Yürüyen Bakiyeli Cari Ekstre
Tek bir carinin tüm hareketlerini tarih sırasıyla, her satırda o ana kadarki bakiyeyle birlikte listeler. '120.01.001' yerine kendi cari kodunuzu yazın.
SELECT L.DATE_ AS Tarih, L.TRANNO AS BelgeNo,
CASE L.TRCODE
WHEN 1 THEN 'Nakit Tahsilat' WHEN 2 THEN 'Nakit Ödeme'
WHEN 3 THEN 'Borç Dekontu' WHEN 4 THEN 'Alacak Dekontu'
WHEN 5 THEN 'Virman' WHEN 14 THEN 'Devir'
WHEN 20 THEN 'Gelen Havale' WHEN 21 THEN 'Gönderilen Havale'
WHEN 31 THEN 'Satınalma Faturası' WHEN 34 THEN 'Alınan Hizmet Faturası'
WHEN 36 THEN 'Satınalma İade Faturası' WHEN 37 THEN 'Perakende Satış Faturası'
WHEN 38 THEN 'Toptan Satış Faturası' WHEN 39 THEN 'Verilen Hizmet Faturası'
WHEN 61 THEN 'Çek Girişi' WHEN 63 THEN 'Çek Çıkışı'
WHEN 70 THEN 'Kredi Kartı'
ELSE CAST(L.TRCODE AS varchar(10)) END AS IslemTuru,
L.LINEEXP AS Aciklama,
CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE 0 END AS Borc,
CASE WHEN L.SIGN = 1 THEN L.AMOUNT ELSE 0 END AS Alacak,
SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END)
OVER (ORDER BY L.DATE_, L.LOGICALREF ROWS UNBOUNDED PRECEDING) AS Bakiye
FROM LG_001_01_CLFLINE L
JOIN LG_001_CLCARD C ON C.LOGICALREF = L.CLIENTREF
WHERE C.CODE = '120.01.001' AND L.CANCELLED = 0
ORDER BY L.DATE_, L.LOGICALREFBelirli tarih aralığı için ekstre (devreden bakiye ile)
Ekstreyi bir tarih aralığına daraltırken, aralığın başındaki bakiyeyi "devreden bakiye" satırı olarak eklemek gerekir:
DECLARE @Cari varchar(50) = '120.01.001',
@Bas date = '2026-01-01', @Bit date = '2026-03-31';
SELECT CAST(NULL AS datetime) AS Tarih, 0 AS Sira, 'Devreden Bakiye' AS Aciklama,
CAST(0 AS float) AS Borc, CAST(0 AS float) AS Alacak,
ISNULL(SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END), 0) AS Bakiye
FROM LG_001_01_CLFLINE L
JOIN LG_001_CLCARD C ON C.LOGICALREF = L.CLIENTREF
WHERE C.CODE = @Cari AND L.CANCELLED = 0 AND L.DATE_ < @Bas
UNION ALL
SELECT L.DATE_, L.LOGICALREF, L.LINEEXP,
CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE 0 END,
CASE WHEN L.SIGN = 1 THEN L.AMOUNT ELSE 0 END,
(SELECT ISNULL(SUM(CASE WHEN X.SIGN = 0 THEN X.AMOUNT ELSE -X.AMOUNT END), 0)
FROM LG_001_01_CLFLINE X
WHERE X.CLIENTREF = L.CLIENTREF AND X.CANCELLED = 0 AND X.DATE_ < @Bas)
+ SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END)
OVER (ORDER BY L.DATE_, L.LOGICALREF ROWS UNBOUNDED PRECEDING)
FROM LG_001_01_CLFLINE L
JOIN LG_001_CLCARD C ON C.LOGICALREF = L.CLIENTREF
WHERE C.CODE = @Cari AND L.CANCELLED = 0
AND L.DATE_ >= @Bas AND L.DATE_ < DATEADD(day, 1, @Bit)
ORDER BY Tarih, SiraDönem Geçişlerinde Dikkat Edilmesi Gerekenler
Yeni döneme geçildiğinde Logo, her carinin önceki dönem sonu bakiyesini yeni dönemin ilk gününe açılış (devir) fişi olarak yazar (TRCODE = 14, açıklaması genellikle "Önceki Dönemden Devir"). Bu sayede:
- Yeni dönemin
CLFLINEtablosu tek başına doğru bakiyeyi verir; önceki dönemi eklemenize gerek yoktur. - Birden fazla dönemi birleştirerek ekstre alıyorsanız (
UNION ALL), sonraki dönemlerin devir satırlarını (TRCODE = 14) hariç tutun, yoksa bakiye iki kez sayılır.
Sık Sorulan Sorular
Bakiye Logo ekranındakiyle tutmuyor, neden?
En sık sebepler: iptal edilmiş fişlerin (CANCELLED = 1) toplama girmesi, yanlış dönem tablosunun kullanılması veya şube / bölüm filtresinin farklı olmasıdır. Ayrıca Logo ekranında döviz veya raporlama dövizi seçiliyse tutarlar farklı görünecektir; bu sorgular yerel para birimi (AMOUNT) üzerinden hesaplar.
Sadece müşterileri (alıcıları) nasıl listelerim?
CLCARD.CARDTYPE alanını kullanın: 1 alıcı, 2 satıcı, 3 alıcı + satıcı. Örneğin WHERE C.CARDTYPE IN (1, 3) yalnızca müşterileri getirir.
Vadesi geçmiş alacakları nasıl bulurum?
Vade bilgisi PAYTRANS tablosundadır. Hazır sorgu için SQL rapor sorguları rehberimize bakabilirsiniz.
Cari ekstrelerinizi müşterilerinize otomatik e-posta ile göndermek, bir müşteri portalında göstermek veya Excel'e bağlamak istiyorsanız Logo iş ortağı olarak ekibimiz yardımcı olabilir.