Logo SQL Rapor Sorguları: Hazır ve Test Edilmiş 10 Sorgu

قاعدة المعرفة › Logo Veritabanı & SQL

Logo Veritabanı & SQL9 دقيقة قراءة4 نوفمبر 20266 görüntülenme
Logo SQL Rapor Sorguları: Hazır ve Test Edilmiş 10 Sorgu

Logo Tiger ve Go 3 için kopyala-çalıştır SQL rapor sorguları: aylık ciro, en çok satan ürünler, ambar bazında stok, vadesi geçen alacaklar, kasa ve banka bakiyeleri.

Logo Tiger ve Go 3'ün kendi raporları çoğu ihtiyacı karşılar, ama "şu müşterinin bu yılki cirosu", "en çok satan 20 ürün" veya "hangi ambarda ne kadar stok var" gibi soruların cevabını Excel'e ya da bir panele aktarmak istediğinizde doğrudan SQL ile rapor almak çok daha hızlıdır. Bu sayfadaki sorguların tamamı gerçek bir Logo Tiger veritabanında çalıştırılarak test edilmiştir; kopyalayıp SQL Server Management Studio'da (SSMS) çalıştırabilirsiniz.

ℹ️Sorgularda firma numarası 001, dönem numarası 01 olarak yazılmıştır. Kendi firma ve dönem numaranızla değiştirin. Tablo isimlerinin mantığı için Logo Veritabanı Tablo İsimleri rehberimize bakabilirsiniz.

Başlamadan Önce

  • Sorguları her zaman yalnızca okuma (SELECT) amaçlı çalıştırın. Logo tablolarına doğrudan yazmak veri bütünlüğünü bozar.
  • Canlı veritabanında ağır sorguları mesai saatleri dışında çalıştırmak veya bir test kopyası kullanmak iyi bir alışkanlıktır.
  • İptal edilmiş fişleri dışarıda bırakmak için hemen her sorguda CANCELLED = 0 koşulu bulunur.
  • Firma ve dönem numaranızı SELECT NR, NAME FROM L_CAPIFIRM ve SELECT FIRMNR, NR, BEGDATE, ENDDATE FROM L_CAPIPERIOD ile öğrenebilirsiniz.
Logo Veritabanı Tablo İsimleri ve Açıklamaları

Satış Raporları

1. Aylık net satış cirosu

Satış faturalarından iadeleri düşerek ay ay net ciroyu verir. Fatura türleri: 7 perakende satış, 8 toptan satış, 9 verilen hizmet; 2 ve 3 satış iadeleridir.

SELECT YEAR(F.DATE_) AS Yil, MONTH(F.DATE_) AS Ay,
       SUM(CASE WHEN F.TRCODE IN (7, 8, 9) THEN F.NETTOTAL ELSE -F.NETTOTAL END) AS NetSatis,
       SUM(CASE WHEN F.TRCODE IN (7, 8, 9) THEN F.TOTALVAT ELSE -F.TOTALVAT END) AS KDV
FROM LG_001_01_INVOICE F
WHERE F.TRCODE IN (2, 3, 7, 8, 9) AND F.CANCELLED = 0
GROUP BY YEAR(F.DATE_), MONTH(F.DATE_)
ORDER BY Yil, Ay

2. En çok satan 20 ürün

Satış satırlarından (STLINE) malzeme bazında miktar ve tutar toplar. LINETYPE = 0 yalnızca malzeme satırlarını alır; indirim, masraf ve hizmet satırları hariç tutulur.

SELECT TOP 20 I.CODE AS MalzemeKodu, I.NAME AS MalzemeAdi,
       SUM(S.AMOUNT) AS Miktar, SUM(S.LINENET) AS NetTutar
FROM LG_001_01_STLINE S
JOIN LG_001_ITEMS I ON I.LOGICALREF = S.STOCKREF
WHERE S.TRCODE IN (7, 8) AND S.LINETYPE = 0 AND S.CANCELLED = 0
GROUP BY I.CODE, I.NAME
ORDER BY NetTutar DESC

3. Müşteri bazında satış

SELECT C.CODE AS CariKodu, C.DEFINITION_ AS Unvan,
       COUNT(*) AS FaturaSayisi, SUM(F.NETTOTAL) AS NetSatis
FROM LG_001_01_INVOICE F
JOIN LG_001_CLCARD C ON C.LOGICALREF = F.CLIENTREF
WHERE F.TRCODE IN (7, 8, 9) AND F.CANCELLED = 0
GROUP BY C.CODE, C.DEFINITION_
ORDER BY NetSatis DESC

4. Satış elemanı bazında satış

Satış elemanları firma numarası içermeyen LG_SLSMAN tablosunda tutulur.

SELECT S.CODE AS ElemanKodu, S.DEFINITION_ AS SatisElemani,
       COUNT(*) AS FaturaSayisi, SUM(F.NETTOTAL) AS NetSatis
FROM LG_001_01_INVOICE F
JOIN LG_SLSMAN S ON S.LOGICALREF = F.SALESMANREF
WHERE F.TRCODE IN (7, 8, 9) AND F.CANCELLED = 0
GROUP BY S.CODE, S.DEFINITION_
ORDER BY NetSatis DESC

5. Açık (sevk edilmemiş) satış siparişleri

Sipariş türü 1 satış, 2 satınalma siparişidir. SHIPPEDAMOUNT sevk edilen miktarı tutar.

SELECT O.FICHENO AS SiparisNo, O.DATE_ AS Tarih, C.DEFINITION_ AS Cari,
       I.CODE AS MalzemeKodu, L.AMOUNT AS SiparisMiktari,
       L.SHIPPEDAMOUNT AS Sevkedilen, L.AMOUNT - L.SHIPPEDAMOUNT AS Kalan
FROM LG_001_01_ORFLINE L
JOIN LG_001_01_ORFICHE O ON O.LOGICALREF = L.ORDFICHEREF
JOIN LG_001_CLCARD C ON C.LOGICALREF = O.CLIENTREF
JOIN LG_001_ITEMS I ON I.LOGICALREF = L.STOCKREF
WHERE O.TRCODE = 1 AND L.LINETYPE = 0 AND L.CLOSED = 0
  AND L.CANCELLED = 0 AND L.AMOUNT > L.SHIPPEDAMOUNT
ORDER BY O.DATE_

Stok Raporları

6. Ambar bazında eldeki stok

Güncel Tiger sürümlerinde stok toplamları LV_001_01_GNTOTST view'ından okunur. INVENNO ambar numarasıdır; -1 tüm ambarların toplamını verir, bu sorguda ambarları ayrı ayrı görmek için INVENNO >= 0 kullanılmıştır. W.FIRMNR = 1 koşulundaki sayıyı kendi firma numaranızla değiştirin.

SELECT I.CODE AS MalzemeKodu, I.NAME AS MalzemeAdi,
       W.NR AS AmbarNo, W.NAME AS Ambar, G.ONHAND AS EldekiMiktar
FROM LV_001_01_GNTOTST G
JOIN LG_001_ITEMS I ON I.LOGICALREF = G.STOCKREF
JOIN L_CAPIWHOUSE W ON W.NR = G.INVENNO AND W.FIRMNR = 1
WHERE G.INVENNO >= 0 AND G.ONHAND <> 0
ORDER BY I.CODE, W.NR
⚠️LV_ view'larını sorgularken "QUOTED_IDENTIFIER" hatası alırsanız sorgunun başına SET QUOTED_IDENTIFIER ON; ekleyin. SSMS'te bu ayar varsayılan olarak açıktır.

Finans Raporları

7. Vadesi geçmiş alacaklar

Ödeme / tahsilat vade hareketleri PAYTRANS tablosundadır. SIGN = 0 müşterinin borcunu (bizim alacağımızı), TOTAL - PAID ise kapanmamış tutarı gösterir.

SELECT C.CODE AS CariKodu, C.DEFINITION_ AS Unvan,
       SUM(P.TOTAL - P.PAID) AS VadesiGecenTutar,
       MIN(P.DATE_) AS EnEskiVade
FROM LG_001_01_PAYTRANS P
JOIN LG_001_CLCARD C ON C.LOGICALREF = P.CARDREF
WHERE P.SIGN = 0 AND P.CANCELLED = 0
  AND P.DATE_ < CAST(GETDATE() AS date)
  AND P.TOTAL - P.PAID > 0.01
GROUP BY C.CODE, C.DEFINITION_
ORDER BY VadesiGecenTutar DESC
⚠️Bu sorgu, Logo'da borç takibi / borç kapama yapılıyorsa doğru sonuç verir. Tahsilatlar faturalarla kapatılmıyorsa PAID alanı boş kalır ve tüm faturalar vadesi geçmiş görünür. Bu durumda cari bakiye sorgusunu kullanın.

8. Kasa bakiyeleri

Kasa hareketlerinde SIGN = 0 kasaya giriş, SIGN = 1 kasadan çıkıştır.

SELECT K.CODE AS KasaKodu, K.NAME AS KasaAdi,
       SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END) AS Bakiye
FROM LG_001_KSCARD K
JOIN LG_001_01_KSLINES L ON L.CARDREF = K.LOGICALREF
WHERE L.CANCELLED = 0
GROUP BY K.CODE, K.NAME
ORDER BY K.CODE

9. Banka hesap bakiyeleri

Banka hareketlerinde de SIGN = 0 hesaba giriş, SIGN = 1 çıkıştır.

SELECT B.CODE AS HesapKodu, B.DEFINITION_ AS HesapAdi,
       SUM(CASE WHEN L.SIGN = 0 THEN L.AMOUNT ELSE -L.AMOUNT END) AS Bakiye
FROM LG_001_BANKACC B
JOIN LG_001_01_BNFLINE L ON L.BNACCREF = B.LOGICALREF
WHERE L.CANCELLED = 0
GROUP BY B.CODE, B.DEFINITION_
ORDER BY B.CODE

10. Aylık KDV özeti

Satış faturalarındaki hesaplanan KDV ile alış faturalarındaki indirilecek KDV'yi ay bazında karşılaştırır (1 satınalma, 4 alınan hizmet faturası). Resmi beyanname için muhasebe kayıtlarını esas alın; bu sorgu hızlı kontrol amaçlıdır.

SELECT YEAR(F.DATE_) AS Yil, MONTH(F.DATE_) AS Ay,
       SUM(CASE WHEN F.TRCODE IN (7, 8, 9) THEN F.TOTALVAT ELSE 0 END) AS HesaplananKDV,
       SUM(CASE WHEN F.TRCODE IN (1, 4) THEN F.TOTALVAT ELSE 0 END) AS IndirilecekKDV
FROM LG_001_01_INVOICE F
WHERE F.CANCELLED = 0
GROUP BY YEAR(F.DATE_), MONTH(F.DATE_)
ORDER BY Yil, Ay

Sık Sorulan Sorular

Sorgu sonucu boş geliyor, neden?

En sık sebep yanlış firma veya dönem numarasıdır. Önce L_CAPIFIRM ve L_CAPIPERIOD tablolarından doğru numaraları kontrol edin. Stok sorgularında ise eski LG_001_01_GNTOTST tablosu yerine LV_001_01_GNTOTST view'ını kullandığınızdan emin olun.

Birden fazla dönemin raporunu nasıl alırım?

Her dönemin tabloları ayrıdır (LG_001_01_INVOICE, LG_001_02_INVOICE…). Dönemleri UNION ALL ile birleştirebilirsiniz:

SELECT FICHENO, DATE_, NETTOTAL FROM LG_001_01_INVOICE WHERE CANCELLED = 0
UNION ALL
SELECT FICHENO, DATE_, NETTOTAL FROM LG_001_02_INVOICE WHERE CANCELLED = 0

Bu sorguları Excel'e nasıl aktarırım?

SSMS'te sonuç tablosuna sağ tıklayıp "Copy with Headers" ile Excel'e yapıştırabilir ya da Excel'de Veri → Veri Al → SQL Server Veritabanından seçeneğiyle sorguyu doğrudan bağlayarak her açılışta güncel veriyi çekebilirsiniz.


Logo için özel rapor, yönetim paneli veya Excel entegrasyonu ihtiyacınız varsa Logo iş ortağı olarak ekibimiz yardımcı olabilir.

قاعدة المعرفة
/logo-sql-rapor-sorgulari