Logo Cari Yaşlandırma SQL: PAYTRANS ile Vade Analizi
Logo ERP'de PAYTRANS tablosuyla cari yaşlandırma ve vadesi geçen alacak analizi yapın. 30, 60, 90 gün kova sorguları ve SQL örnekleri rehberimizde.
Erp Asistanı
Editör ekibi
7 dk okuma
İçindekiler
Logo ERP (GO 3, Tiger 3) veritabanında cari yaşlandırma ve vadesi geçen alacak raporu hazırlamak isteyenlerin düştüğü en yaygın tuzak, cari hareket tablosu olan CLFLINE üzerinden tahsilatları faturalarla FIFO yöntemiyle eşleştirmeye çalışmaktır. Oysa Logo, fatura veya finans belgesi kaydedildiği anda ödeme planına bağlı olarak borç takip kayıtlarını doğrudan PAYTRANS tablosuna yazar. Faturanın vadesi, taksit kırılımları ve yapılan kısmi tahsilatlar bu tabloda satır satır izlenir.
Bu rehberde; PAYTRANS tablosunun borç takip mimarisini, açık vade satırlarının nasıl filtrelendiğini ve finans yönetiminin temel göstergesi olan 0-30, 31-60, 61-90 ile 90+ gün cari yaşlandırma kova raporunu SQL ile nasıl alacağınızı inceleyeceğiz.
Logo Tablo Adlandırma ve Genel Kurallar
Sorguları çalıştırmadan önce Logo veritabanı mimarisinin temel kurallarını dikkate almalısınız:
- Firma ve Dönem Önekleri: Aşağıdaki sorgularda tablolar mantıksal adlarıyla (
PAYTRANS,CLCARD,INVOICE) verilmiştir. Kendi SQL Server veritabanınızda çalıştırırken kart tablolarının başınaLG_{firma}_(örneğinLG_001_CLCARD), hareket tablolarının başına iseLG_{firma}_{dönem}_(örneğinLG_001_01_PAYTRANS) önekini eklemeniz gerekir. Mimari detaylar için Logo tablo yapısı rehberi yazımızı inceleyebilirsiniz. - Ters Mantık Aktiflik ve İptal Kontrolü: Logo kartlarında
ACTIVE = 0aktif kart demektir (ACTIVE = 1pasiftir). Hareket tablolarında ise geçerli kayıtlarCANCELLED = 0filtresiyle seçilir. - Sayısal Anahtarlar: Tablolar cari kodu veya fatura numarası ile değil, sistemin otomatik ürettiği
LOGICALREFanahtarıyla birleştirilir (PAYTRANS.CARDREF = CLCARD.LOGICALREF).
PAYTRANS Tablo Mimarisi ve Borç Takip Mantığı
Borç takip sistemi, her satış ve alış belgesi için vadelere bölünmüş ödeme satırları üretir. Tablonun çekirdek kolonları şu şekildedir:
| Kolon Adı | Veri Tipi | İşlevi ve Raporlama Kuralı |
|---|---|---|
CARDREF |
int | Cari kart referansı (CLCARD.LOGICALREF). |
FICHEREF |
int | Kaynak fatura referansı (INVOICE.LOGICALREF). |
DATE_ |
datetime | Vade tarihi (ödemenin beklendiği gün). |
PROCDATE |
datetime | İşlem veya fatura tarihi. |
TOTAL |
float | İlgili vade satırının toplam borç tutarı. |
PAID |
float | Bu vade satırına yapılan tahsilat veya kapatma tutarı. |
SIGN |
smallint | İşlem yönü: 0 = Borç (Müşteri alacağı), 1 = Alacak (Tedarikçi borcu). |
CANCELLED |
smallint | İptal durumu: 0 = Aktif, 1 = İptal. |
Bir vade satırının açık (ödenmemiş) olduğunu PAID < TOTAL koşuluyla anlarız. Satırdan kalan tahsil edilmemiş net alacak ise TOTAL - PAID farkıdır. Tarih analizinde PROCDATE faturanın kesildiği tarihi, DATE_ ise vadenin dolduğu günü temsil eder. Yaşlandırma hesaplarında mutlaka DATE_ kolonu baz alınmalıdır.
1. Açık Vade Satırları ve Gecikme Günleri
Müşterilerden tahsil edilmemiş tüm açık fatura ve taksit satırlarını, vade tarihlerine ve gecikme günlerine göre listelemek için aşağıdaki sorguyu kullanabilirsiniz:
SELECT
C.CODE AS cari_kodu,
C.DEFINITION_ AS cari_unvani,
P.PROCDATE AS fatura_tarihi,
P.DATE_ AS vade_tarihi,
P.TOTAL AS toplam_tutar,
P.PAID AS odenen_tutar,
(P.TOTAL - P.PAID) AS kalan_tutar,
DATEDIFF(DAY, P.DATE_, GETDATE()) AS gecikme_gunu
FROM PAYTRANS P
JOIN CLCARD C ON C.LOGICALREF = P.CARDREF
WHERE P.CANCELLED = 0
AND C.ACTIVE = 0
AND P.SIGN = 0
AND P.PAID < P.TOTAL
ORDER BY P.DATE_ ASC;
Bu raporu SQL yazmadan, Türkçe sorarak alın: Logo raporlama
Bu sorgu, işletmenizin nakit akışında geciken tahsilatları gün bazında tespit etmek için temel kaynaktır. Operasyonel takip adımları için vadesi geçen alacak takibi içeriğimize bakabilirsiniz.
2. Fatura ve Taksit Detaylı Açık Alacaklar
Bir fatura birden fazla taksite bölünmüşse PAYTRANS tablosunda aynı faturaya (FICHEREF) ait birden fazla satır oluşur. Fatura numarasıyla birlikte açık taksit durumunu görmek için INVOICE tablosuyla bağlantı kurulur:
SELECT
I.FICHENO AS fatura_no,
C.CODE AS cari_kodu,
C.DEFINITION_ AS cari_unvani,
I.DATE_ AS fatura_tarihi,
P.DATE_ AS taksit_vadesi,
P.TOTAL AS taksit_tutari,
P.PAID AS tahsil_edilen,
(P.TOTAL - P.PAID) AS kalan_bakiye,
DATEDIFF(DAY, P.DATE_, GETDATE()) AS gecikme_gunu
FROM PAYTRANS P
JOIN CLCARD C ON C.LOGICALREF = P.CARDREF
JOIN INVOICE I ON I.LOGICALREF = P.FICHEREF
WHERE P.CANCELLED = 0
AND I.CANCELLED = 0
AND C.ACTIVE = 0
AND P.SIGN = 0
AND P.PAID < P.TOTAL
ORDER BY I.DATE_ DESC, P.DATE_ ASC;
Genel hesap ekstresi ile borç takibi arasındaki farkları anlamak adına Logo stok ve cari bakiye hesaplama rehberinde yer alan CLFLINE mantığını da incelemeniz önerilir.
3. Cari Bazında Yaşlandırma Kovaları (0-30, 31-60, 61-90, 90+ Gün)
Finans raporlamalarında müşterilerin borç dağılımı belirli vade aralıklarına (kovalara) bölünerek özetlenir. Aşağıdaki sorgu, her cari için vadesi henüz gelmemiş tutarı ve vadesi geçmiş alacakları 30'ar günlük dilimler halinde gruplar:
SELECT
C.CODE AS cari_kodu,
C.DEFINITION_ AS cari_unvani,
SUM(CASE WHEN DATEDIFF(DAY, P.DATE_, GETDATE()) <= 0
THEN (P.TOTAL - P.PAID) ELSE 0 END) AS vadesi_gelmemis,
SUM(CASE WHEN DATEDIFF(DAY, P.DATE_, GETDATE()) BETWEEN 1 AND 30
THEN (P.TOTAL - P.PAID) ELSE 0 END) AS gun_01_30,
SUM(CASE WHEN DATEDIFF(DAY, P.DATE_, GETDATE()) BETWEEN 31 AND 60
THEN (P.TOTAL - P.PAID) ELSE 0 END) AS gun_31_60,
SUM(CASE WHEN DATEDIFF(DAY, P.DATE_, GETDATE()) BETWEEN 61 AND 90
THEN (P.TOTAL - P.PAID) ELSE 0 END) AS gun_61_90,
SUM(CASE WHEN DATEDIFF(DAY, P.DATE_, GETDATE()) > 90
THEN (P.TOTAL - P.PAID) ELSE 0 END) AS gun_90_uzeri,
SUM(CASE WHEN DATEDIFF(DAY, P.DATE_, GETDATE()) > 0
THEN (P.TOTAL - P.PAID) ELSE 0 END) AS toplam_vadesi_gecen,
SUM(P.TOTAL - P.PAID) AS genel_acik_alacak
FROM PAYTRANS P
JOIN CLCARD C ON C.LOGICALREF = P.CARDREF
WHERE P.CANCELLED = 0
AND C.ACTIVE = 0
AND P.SIGN = 0
AND P.PAID < P.TOTAL
GROUP BY C.CODE, C.DEFINITION_
HAVING SUM(P.TOTAL - P.PAID) > 0
ORDER BY toplam_vadesi_gecen DESC;
4. Vadesi En Çok Geciken 20 Açık Alacak Kalemi
Tahsilat biriminin acil aksiyon alması gereken en riskli kalemleri listelemek için gecikme gününe göre sıralı bir liste oluşturulabilir:
SELECT TOP 20
C.CODE AS cari_kodu,
C.DEFINITION_ AS cari_unvani,
P.DATE_ AS vade_tarihi,
DATEDIFF(DAY, P.DATE_, GETDATE()) AS gecikme_gunu,
(P.TOTAL - P.PAID) AS kalan_alacak
FROM PAYTRANS P
JOIN CLCARD C ON C.LOGICALREF = P.CARDREF
WHERE P.CANCELLED = 0
AND C.ACTIVE = 0
AND P.SIGN = 0
AND P.PAID < P.TOTAL
AND DATEDIFF(DAY, P.DATE_, GETDATE()) > 0
ORDER BY gecikme_gunu DESC, kalan_alacak DESC;
Sık yapılan hatalar
DATE_yerinePROCDATEkullanmak:PROCDATEevrak tarihidir,DATE_ise vadedir. Yaşlandırma hesabındaPROCDATEkullanılırsa vadesi gelmemiş ancak 40 gün önce kesilmiş bir fatura haksız yere vadesi geçmiş görünür.SIGN = 0filtresini unutmak: SIGN değeri 0 olan kayıtlar müşteriden alacakları, 1 olanlar tedarikçiye borçları gösterir. Filtre verilmezse işletmenin ödeyeceği borçlar ile tahsil edeceği tutarlar birbirine girer.- Taksitli faturayı tek satır varsaymak: Taksitli bir satışta
INVOICEtablosunda 1 satır varkenPAYTRANStablosunda taksit sayısı kadar satır yer alır. Fatura toplam tutarı aranıyorsaSUM(TOTAL)kullanılmalıdır. ACTIVE = 0veCANCELLED = 0kontrollerini atlamak: Logo'da pasif kartlarACTIVE = 1değerini alır; iptal edilmiş evrak ve vade kayıtları iseCANCELLED = 1olur. Bu kayıtlar filtrelenmezse tutarlar hatalı çıkar.- Firma/dönem öneklerini eklememek:
PAYTRANSveCLCARDmantıksal adlardır. Sorgu çalıştırılmadan önceLG_{firma}_{dönem}_PAYTRANSveLG_{firma}_CLCARDbiçimine dönüştürülmelidir.
Sık sorulanlar
Cari bakiye ile açık vade toplamı neden tutmaz?
CLFLINE tablosu borç ve alacak hareketlerini doğrudan tutar; ancak tahsilat makbuzu veya dekont girildiğinde borç takip penceresinden fatura ile eşleştirilmediyse (kapatma yapılmadıysa) fatura PAYTRANS tablosunda açık (PAID < TOTAL) görünmeye devam eder.
Vadesi henüz gelmemiş faturalar kovalarda nerede yer alır?
DATEDIFF(DAY, P.DATE_, GETDATE()) <= 0 koşulu, vadesi bugün veya gelecekte olan satırları yakalar. Yukarıdaki kova sorgumuzda bu tutarlar vadesi_gelmemis sütununda toplanır.
SIGN kolonu satış iade faturalarında nasıl çalışır?
Satış faturası SIGN = 0 (borç) üretirken, satış iade faturası SIGN = 1 (alacak) satırı üretir. Yaşlandırma sorgularında net alacağı hesaplamak için müşteri iadeleri ayrıca incelenmelidir.
Kısmi tahsilat yapıldığında PAYTRANS nasıl güncellenir?
Tahsilat makbuzu faturayla ilişkilendirildiğinde Logo ilgili PAYTRANS satırının PAID kolonunu tahsilat tutarı kadar artırır. Satır silinmez; TOTAL - PAID formülüyle kalan bakiye güncel kalır.
Logo tablolarındaki borç takip yapılarını elle sorgulamak yerine Erp Asistanı ile tanışın →. Erp Asistanı, firmanıza özel tablo öneklerini ve LOGICALREF ilişkilerini otomatik çözerek finans analizlerinizi dakikalar içinde hazırlar.
Bu raporu SQL yazmadan, Türkçe sorarak 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.




