
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.
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 = 0koşulu bulunur. - Firma ve dönem numaranızı
SELECT NR, NAME FROM L_CAPIFIRMveSELECT FIRMNR, NR, BEGDATE, ENDDATE FROM L_CAPIPERIODile öğrenebilirsiniz.
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, Ay2. 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 DESC3. 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 DESC4. 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 DESC5. 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.NRFinans 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 DESC8. 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.CODE9. 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.CODE10. 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, AySı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 = 0Bu 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.