Logo ERP SQL Sorgu Örnekleri
Fatura detayı, cari bakiye, stok durumu, maliyet analizi, çek/senet takibi ve muhasebe raporları için hazır SQL sorguları.
İçindekiler
1. Giriş ve Temel Bilgiler
Logo ERP (Tiger 3, Go 3, Start 3) veritabanı Microsoft SQL Server üzerinde çalışır. Aşağıdaki sorgularda kullanılan yer tutucular:
| Yer Tutucu | Açıklama | Örnek |
|---|---|---|
| FFF | Firma numarası (3 hane) | 001, 002, 520 |
| DD | Dönem numarası (2 hane) | 01, 02, 03 |
| {0} | Bazı sorgularda firma numarası | 001 |
| {1} | Bazı sorgularda dönem numarası | 01 |
Önemli: Tüm sorgularda FFF ve DD değerlerini kendi firma ve dönem numaranızla değiştirin. Örneğin firma 001, dönem 01 için: LG_001_01_INVOICE
2. TRCODE Değerleri Referans Tablosu
Logo ERP'de fatura ve stok hareketlerinin türü TRCODE alanıyla belirlenir. Sorgularda doğru filtreleme için bu değerleri bilmek kritiktir.
Fatura TRCODE Değerleri (LG_FFF_DD_INVOICE)
| TRCODE | Fatura Türü | Yön |
|---|---|---|
| 1 | Satınalma Faturası | Alış |
| 2 | Perakende Satış İade Faturası | İade |
| 3 | Toptan Satış İade Faturası | İade |
| 4 | Alınan Hizmet Faturası | Alış |
| 5 | Alınan Proforma Faturası | Alış |
| 6 | Satınalma İade Faturası | İade |
| 7 | Perakende Satış Faturası | Satış |
| 8 | Toptan Satış Faturası | Satış |
| 9 | Verilen Hizmet Faturası | Satış |
| 10 | Verilen Proforma Faturası | Satış |
| 12 | Alınan Vade Farkı Faturası | Alış |
| 13 | Satınalma Fiyat Farkı Faturası | Alış |
| 14 | Satış Fiyat Farkı Faturası | Satış |
| 26 | Müstahsil Makbuzu | Alış |
Stok Hareketi TRCODE Değerleri (LG_FFF_DD_STLINE)
| TRCODE | Hareket Türü | IOCODE |
|---|---|---|
| 1,6 | Satınalma / Satınalma İade Faturası | 0,1,2 = Giriş / 3,4 = Çıkış |
| 7,8 | Perakende / Toptan Satış Faturası | 3,4 = Çıkış |
| 11 | Fire Fişi | Çıkış |
| 12 | Sarf Fişi | Çıkış |
| 13 | Üretimden Giriş Fişi | Giriş |
| 14 | Devir Fişi | Giriş |
| 25 | Ambar Fişi (Transfer) | Giriş/Çıkış |
| 50 | Sayım Fazlası | Giriş |
| 51 | Sayım Eksiği | Çıkış |
3. Detaylı Fatura Raporu
Tüm fatura türleri için satır bazında detaylı rapor. TRCODE IN (7, 8) filtresi satış faturalarını getirir; alış için IN (1, 6) kullanın.
-- Tüm fatura türleri için detaylı rapor SELECT INVOICE.FICHENO AS FaturaNo, INVOICE.DATE_ AS Tarih, CASE INVOICE.TRCODE WHEN 1 THEN 'Satınalma Faturası' WHEN 6 THEN 'Satınalma İade' WHEN 7 THEN 'Perakende Satış' WHEN 8 THEN 'Toptan Satış' WHEN 2 THEN 'Perakende İade' WHEN 3 THEN 'Toptan İade' WHEN 9 THEN 'Verilen Hizmet' WHEN 4 THEN 'Alınan Hizmet' ELSE CAST(INVOICE.TRCODE AS VARCHAR) END AS FaturaTuru, INVOICE.DOCODE AS BelgeNo, CLCARD.CODE AS CariKod, CLCARD.DEFINITION_ AS CariAd, CLCARD.TAXNR AS VergiNo, ITEMS.CODE AS StokKod, ITEMS.NAME AS StokAd, STLINE.AMOUNT AS Miktar, STLINE.PRICE AS BirimFiyat, STLINE.DISCPER AS IskontoOrani, STLINE.TOTAL AS SatirToplam, STLINE.VAT AS KDVOrani, STLINE.VATAMNT AS KDVTutari, STLINE.VATMATRAH AS NetTutar, INVOICE.GROSSTOTAL AS FaturaBrut, INVOICE.TOTALDISCOUNTS AS ToplamIskonto, INVOICE.TOTALVAT AS ToplamKDV, INVOICE.NETTOTAL AS FaturaNet, INVOICE.SPECODE AS OzelKod, INVOICE.GENEXP1 AS Aciklama FROM LG_FFF_DD_INVOICE INVOICE WITH (NOLOCK) LEFT JOIN LG_FFF_DD_STLINE STLINE ON STLINE.INVOICEREF = INVOICE.LOGICALREF LEFT JOIN LG_FFF_CLCARD CLCARD ON CLCARD.LOGICALREF = INVOICE.CLIENTREF LEFT JOIN LG_FFF_ITEMS ITEMS ON ITEMS.LOGICALREF = STLINE.STOCKREF WHERE INVOICE.CANCELLED = 0 AND INVOICE.TRCODE IN (7, 8) -- Satış faturaları AND INVOICE.DATE_ BETWEEN '2026-01-01' AND '2026-12-31' ORDER BY INVOICE.DATE_ DESC, INVOICE.FICHENO;
4. Cari Hesap Bakiyeleri
Tüm aktif cari hesapların borç-alacak bakiyelerini getirir. Sıfır bakiyeli hesaplar HAVING ile filtrelenir.
-- Cari hesap bakiyeleri (borç-alacak farkı) SELECT CLCARD.CODE AS CariKod, CLCARD.DEFINITION_ AS CariAd, CLCARD.TAXNR AS VergiNo, CLCARD.CITY AS Sehir, CASE CLCARD.CARDTYPE WHEN 1 THEN 'Alıcı' WHEN 2 THEN 'Satıcı' WHEN 3 THEN 'Alıcı+Satıcı' END AS KartTipi, ROUND(SUM(CASE WHEN CLFLINE.SIGN = 0 THEN CLFLINE.AMOUNT ELSE 0 END), 2) AS ToplamBorc, ROUND(SUM(CASE WHEN CLFLINE.SIGN = 1 THEN CLFLINE.AMOUNT ELSE 0 END), 2) AS ToplamAlacak, ROUND(SUM(CASE WHEN CLFLINE.SIGN = 0 THEN CLFLINE.AMOUNT WHEN CLFLINE.SIGN = 1 THEN -CLFLINE.AMOUNT ELSE 0 END), 2) AS Bakiye, CASE WHEN SUM(CASE WHEN CLFLINE.SIGN=0 THEN CLFLINE.AMOUNT ELSE -CLFLINE.AMOUNT END) > 0 THEN 'Borçlu' WHEN SUM(CASE WHEN CLFLINE.SIGN=0 THEN CLFLINE.AMOUNT ELSE -CLFLINE.AMOUNT END) < 0 THEN 'Alacaklı' ELSE 'Sıfır' END AS BakiyeDurumu FROM LG_FFF_CLCARD CLCARD JOIN LG_FFF_DD_CLFLINE CLFLINE ON CLFLINE.CLIENTREF = CLCARD.LOGICALREF WHERE CLFLINE.CANCELLED = 0 AND CLCARD.ACTIVE = 0 GROUP BY CLCARD.CODE, CLCARD.DEFINITION_, CLCARD.TAXNR, CLCARD.CITY, CLCARD.CARDTYPE HAVING ROUND(SUM(CASE WHEN CLFLINE.SIGN=0 THEN CLFLINE.AMOUNT ELSE -CLFLINE.AMOUNT END), 2) <> 0 ORDER BY ABS(SUM(CASE WHEN CLFLINE.SIGN=0 THEN CLFLINE.AMOUNT ELSE -CLFLINE.AMOUNT END)) DESC;
5. Cari Hesap Ekstresi
Belirli bir carinin tarih sıralı hareketleri ve kümülatif (yürüyen) bakiyesi. CARİ_KOD_BURAYA yerine gerçek cari kodunu yazın.
-- Belirli bir cari hesabın ekstresi (tarih sıralı, kümülatif bakiye) SELECT ROW_NUMBER() OVER (ORDER BY CLFLINE.DATE_, CLFLINE.LOGICALREF) AS SiraNo, CLFLINE.DATE_ AS Tarih, CLFLINE.FICHENO AS FisNo, CASE CLFLINE.TRCODE WHEN 1 THEN 'Nakit Tahsilat' WHEN 2 THEN 'Kredi Kartı Tahsilat' WHEN 3 THEN 'Çek Tahsilat' WHEN 4 THEN 'Senet Tahsilat' WHEN 5 THEN 'Virman' WHEN 6 THEN 'Nakit Ödeme' WHEN 7 THEN 'Kredi Kartı Ödeme' WHEN 8 THEN 'Çek Ödeme' WHEN 9 THEN 'Senet Ödeme' WHEN 14 THEN 'Fatura' WHEN 15 THEN 'İrsaliye' ELSE CAST(CLFLINE.TRCODE AS VARCHAR) END AS HareketTuru, CLFLINE.DOCODE AS BelgeNo, CLFLINE.LINEEXP AS Aciklama, CASE WHEN CLFLINE.SIGN = 0 THEN CLFLINE.AMOUNT ELSE 0 END AS Borc, CASE WHEN CLFLINE.SIGN = 1 THEN CLFLINE.AMOUNT ELSE 0 END AS Alacak, SUM(CASE WHEN CLFLINE.SIGN=0 THEN CLFLINE.AMOUNT ELSE -CLFLINE.AMOUNT END) OVER (ORDER BY CLFLINE.DATE_, CLFLINE.LOGICALREF ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS YuruyanBakiye FROM LG_FFF_DD_CLFLINE CLFLINE JOIN LG_FFF_CLCARD CLCARD ON CLCARD.LOGICALREF = CLFLINE.CLIENTREF WHERE CLFLINE.CANCELLED = 0 AND CLCARD.CODE = 'CARİ_KOD_BURAYA' -- Cari kodu değiştirin AND CLFLINE.DATE_ BETWEEN '2026-01-01' AND '2026-12-31' ORDER BY CLFLINE.DATE_, CLFLINE.LOGICALREF;
6. Anlık Stok Durumu
Tüm stok kartlarının anlık miktar toplamı. IOCODE 0-2 giriş, 3-4 çıkış yönünü belirtir.
-- Anlık stok miktarı ve değeri SELECT ITEMS.CODE AS StokKod, ITEMS.NAME AS StokAd, ITEMS.STGRPCODE AS GrupKod, CASE ITEMS.CARDTYPE WHEN 1 THEN 'Ticari Mal' WHEN 10 THEN 'Hammadde' WHEN 11 THEN 'Yarı Mamul' WHEN 12 THEN 'Mamul' WHEN 4 THEN 'Hizmet' END AS MalzemeTuru, ROUND(SUM(CASE WHEN STLINE.IOCODE IN (0,1,2) THEN STLINE.AMOUNT WHEN STLINE.IOCODE IN (3,4) THEN -STLINE.AMOUNT ELSE 0 END), 4) AS AnlikStok, ITEMS.SPECODE AS OzelKod, ITEMS.SPECODE2 AS OzelKod2 FROM LG_FFF_ITEMS ITEMS LEFT JOIN LG_FFF_DD_STLINE STLINE ON STLINE.STOCKREF = ITEMS.LOGICALREF AND STLINE.CANCELLED = 0 AND STLINE.LINETYPE = 0 WHERE ITEMS.ACTIVE = 0 GROUP BY ITEMS.CODE, ITEMS.NAME, ITEMS.STGRPCODE, ITEMS.CARDTYPE, ITEMS.SPECODE, ITEMS.SPECODE2 HAVING ROUND(SUM(CASE WHEN STLINE.IOCODE IN (0,1,2) THEN STLINE.AMOUNT WHEN STLINE.IOCODE IN (3,4) THEN -STLINE.AMOUNT ELSE 0 END), 4) <> 0 ORDER BY ITEMS.CODE;
7. Ayrıntılı Maliyet Analizi
Malzeme giriş/çıkış hareketlerinin birim fiyat ve maliyet karşılaştırması. Cari yıl verileri için YEAR(GETDATE()) kullanılır.
-- Malzeme giriş/çıkış maliyet analizi SELECT ITEMS.CODE AS MalzemeKodu, ITEMS.NAME AS MalzemeAdi, STLINE.DATE_ AS Tarih, YEAR(STLINE.DATE_) AS Yil, MONTH(STLINE.DATE_) AS Ay, CASE STLINE.TRCODE WHEN 1 THEN 'Satınalma Faturası' WHEN 6 THEN 'Satınalma İade' WHEN 7 THEN 'Perakende Satış' WHEN 8 THEN 'Toptan Satış' WHEN 11 THEN 'Fire Fişi' WHEN 12 THEN 'Sarf Fişi' WHEN 13 THEN 'Üretimden Giriş' WHEN 14 THEN 'Devir Fişi' WHEN 25 THEN 'Ambar Fişi' WHEN 50 THEN 'Sayım Fazlası' WHEN 51 THEN 'Sayım Eksiği' END AS HareketTuru, CASE WHEN STLINE.IOCODE IN (0,1,2) THEN 'Giriş' ELSE 'Çıkış' END AS Yon, CASE WHEN STLINE.IOCODE IN (0,1,2) THEN STLINE.AMOUNT ELSE 0 END AS GirenMiktar, CASE WHEN STLINE.IOCODE IN (3,4) THEN STLINE.AMOUNT ELSE 0 END AS CikanMiktar, ROUND(STLINE.VATMATRAH / NULLIF(STLINE.AMOUNT, 0), 4) AS BirimFiyat, ROUND(STLINE.VATMATRAH, 2) AS Tutar, ROUND(STLINE.OUTCOST, 4) AS BirimMaliyet, ROUND(STLINE.AMOUNT * STLINE.OUTCOST, 2) AS MaliyetTutari FROM LG_FFF_DD_STLINE STLINE WITH (NOLOCK) JOIN LG_FFF_ITEMS ITEMS WITH (NOLOCK) ON ITEMS.LOGICALREF = STLINE.STOCKREF WHERE STLINE.CANCELLED = 0 AND STLINE.LINETYPE = 0 AND STLINE.TRCODE IN (1,2,3,6,7,8,11,12,13,14,25,50,51) AND YEAR(STLINE.DATE_) = YEAR(GETDATE()) ORDER BY STLINE.DATE_, ITEMS.CODE;
8. Çek/Senet Takibi
Vadesi gelecek ve vadesi geçmiş çek/senetlerin listesi. PAID = 0 ödenmemiş olanları filtreler.
-- Vadesi gelecek çek ve senetler SELECT CSCARD.NEWSERINO AS CekNo, CSCARD.DUEDATE AS VadeTarihi, DATEDIFF(DAY, GETDATE(), CSCARD.DUEDATE) AS KalanGun, CASE WHEN DATEDIFF(DAY, GETDATE(), CSCARD.DUEDATE) < 0 THEN 'VADESİ GEÇMİŞ' WHEN DATEDIFF(DAY, GETDATE(), CSCARD.DUEDATE) <= 7 THEN 'BU HAFTA' WHEN DATEDIFF(DAY, GETDATE(), CSCARD.DUEDATE) <= 30 THEN 'BU AY' ELSE 'İLERİ TARİH' END AS VadeDurumu, CLCARD.CODE AS CariKod, CLCARD.DEFINITION_ AS CariAd, CSCARD.AMOUNT AS Tutar, CASE CSCARD.CSTYPE WHEN 1 THEN 'Müşteri Çeki' WHEN 2 THEN 'Müşteri Senedi' WHEN 3 THEN 'Firma Çeki' WHEN 4 THEN 'Firma Senedi' END AS CekTuru, CSCARD.PORTFOYNO AS PortfoyNo, CSCARD.BANKNAME AS BankaAdi FROM LG_FFF_DD_CSCARD CSCARD LEFT JOIN LG_FFF_CLCARD CLCARD ON CLCARD.LOGICALREF = CSCARD.CLIENTREF WHERE CSCARD.CANCELLED = 0 AND CSCARD.PAID = 0 AND CSCARD.DUEDATE >= DATEADD(DAY, -30, GETDATE()) ORDER BY CSCARD.DUEDATE ASC;
9. Muhasebe Fişleri Raporu
Muhasebe fişleri ve satır detayları. EMFICHE fiş başlığı, EMFLINE satırları, EMUHACC hesap kartlarını içerir.
-- Muhasebe fişleri ve satırları SELECT EMFICHE.FICHENO AS FisNo, EMFICHE.DATE_ AS Tarih, CASE EMFICHE.TRCODE WHEN 1 THEN 'Mahsup Fişi' WHEN 2 THEN 'Açılış Fişi' WHEN 3 THEN 'Kapanış Fişi' WHEN 4 THEN 'Tahsil Fişi' WHEN 5 THEN 'Tediye Fişi' WHEN 6 THEN 'Virman Fişi' END AS FisTuru, EMFICHE.DESCRIPTION AS FisAciklamasi, EMUHACC.CODE AS HesapKodu, EMUHACC.DEFINITION_ AS HesapAdi, CASE WHEN EMFLINE.SIGN = 0 THEN EMFLINE.AMOUNT ELSE 0 END AS Borc, CASE WHEN EMFLINE.SIGN = 1 THEN EMFLINE.AMOUNT ELSE 0 END AS Alacak, EMFLINE.DESCRIPTION AS SatirAciklamasi, EMFICHE.TOTALDEBIT AS ToplamBorc, EMFICHE.TOTALCREDIT AS ToplamAlacak FROM LG_FFF_DD_EMFICHE EMFICHE JOIN LG_FFF_DD_EMFLINE EMFLINE ON EMFLINE.FICHEREF = EMFICHE.LOGICALREF JOIN LG_FFF_EMUHACC EMUHACC ON EMUHACC.LOGICALREF = EMFLINE.ACCOUNTREF WHERE EMFICHE.CANCELLED = 0 AND EMFICHE.DATE_ BETWEEN '2026-01-01' AND '2026-12-31' ORDER BY EMFICHE.DATE_, EMFICHE.FICHENO, EMFLINE.LINEORDER;
10. Satış Analizi ve Ciro Raporu
Aylık satış analizi; müşteri, ürün ve ürün grubu bazında ciro ve fatura adedi. Cari yıl için YEAR(GETDATE()) filtresi kullanılır.
-- Aylık satış analizi - müşteri ve ürün bazında SELECT YEAR(INVOICE.DATE_) AS Yil, MONTH(INVOICE.DATE_) AS Ay, DATENAME(MONTH, INVOICE.DATE_) AS AyAdi, CLCARD.CODE AS MusteriKod, CLCARD.DEFINITION_ AS MusteriAd, ITEMS.CODE AS UrunKod, ITEMS.NAME AS UrunAd, ITEMS.STGRPCODE AS UrunGrubu, SUM(STLINE.AMOUNT) AS ToplamMiktar, ROUND(SUM(STLINE.TOTAL), 2) AS BrutTutar, ROUND(SUM(STLINE.VATAMNT), 2) AS KDVTutari, ROUND(SUM(STLINE.VATMATRAH), 2) AS NetTutar, COUNT(DISTINCT INVOICE.LOGICALREF) AS FaturaAdedi FROM LG_FFF_DD_INVOICE INVOICE JOIN LG_FFF_DD_STLINE STLINE ON STLINE.INVOICEREF = INVOICE.LOGICALREF JOIN LG_FFF_CLCARD CLCARD ON CLCARD.LOGICALREF = INVOICE.CLIENTREF JOIN LG_FFF_ITEMS ITEMS ON ITEMS.LOGICALREF = STLINE.STOCKREF WHERE INVOICE.CANCELLED = 0 AND STLINE.CANCELLED = 0 AND STLINE.LINETYPE = 0 AND INVOICE.TRCODE IN (7, 8) AND YEAR(INVOICE.DATE_) = YEAR(GETDATE()) GROUP BY YEAR(INVOICE.DATE_), MONTH(INVOICE.DATE_), DATENAME(MONTH, INVOICE.DATE_), CLCARD.CODE, CLCARD.DEFINITION_, ITEMS.CODE, ITEMS.NAME, ITEMS.STGRPCODE ORDER BY Yil, Ay, NetTutar DESC;
11. Ürün Barkod ve Fiyat Listesi
Ürün barkodları ve güncel satış fiyatları. PRCLIST.PTYPE = 2 satış fiyatını, PTYPE = 1 alış fiyatını getirir.
-- Ürün barkod ve güncel satış fiyatları SELECT ITEMS.CODE AS StokKod, ITEMS.NAME AS StokAd, ITEMS.STGRPCODE AS GrupKod, BARCODE.BARCODE AS Barkod, UNITSETL.CODE AS Birim, PRCLIST.PRICE AS SatisFiyati, PRCLIST.CURRENCY AS DovizTuru, PRCLIST.BEGDATE AS FiyatBaslangic, PRCLIST.ENDDATE AS FiyatBitis, ITEMS.VAT AS KDVOrani FROM LG_FFF_ITEMS ITEMS LEFT JOIN LG_FFF_ITMUNITA BARCODE ON BARCODE.ITEMREF = ITEMS.LOGICALREF AND BARCODE.LINENR = 1 LEFT JOIN LG_FFF_UNITSETL UNITSETL ON UNITSETL.UNITSETREF = ITEMS.UNITSETREF AND UNITSETL.LINENR = 1 LEFT JOIN LG_FFF_PRCLIST PRCLIST ON PRCLIST.CARDREF = ITEMS.LOGICALREF AND PRCLIST.PTYPE = 2 -- Satış fiyatı AND PRCLIST.ACTIVE = 0 AND GETDATE() BETWEEN PRCLIST.BEGDATE AND PRCLIST.ENDDATE WHERE ITEMS.ACTIVE = 0 AND ITEMS.CODE <> 'ÿ' ORDER BY ITEMS.CODE;
12. SQL Performans İpuçları
Logo ERP veritabanında sorgu yazarken dikkat edilmesi gereken önemli noktalar:
| İpucu | Açıklama |
|---|---|
| WITH (NOLOCK) | Okuma kilitlerini önler, canlı sistemde performansı artırır. Kritik raporlarda kullanın. |
| CANCELLED = 0 | İptal kayıtları hariç tutmak için her zaman ekleyin. Aksi halde yanlış sonuç alırsınız. |
| Tarih filtresi | DATE_ alanına tarih filtresi ekleyin. Büyük tablolarda (STLINE, CLFLINE) kritiktir. |
| LINETYPE = 0 | STLINE sorgularında sadece malzeme satırlarını getirmek için ekleyin. |
| TOP N | Test sorgularında SELECT TOP 100 kullanarak satır sayısını sınırlayın. |
| Firma/Dönem | FFF ve DD değerlerini doğru girin. Yanlış tablo adı "Invalid object name" hatası verir. |
| NULLIF | Sıfıra bölme hatasını önlemek için NULLIF(alan, 0) kullanın. |
| ROUND | Para tutarlarını ROUND(tutar, 2) ile 2 ondalığa yuvarlayın. |
Dikkat: Logo ERP veritabanına doğrudan yazma (INSERT/UPDATE/DELETE) işlemi yapmayın. Sadece SELECT sorguları kullanın. Veri bütünlüğünü korumak için tüm yazma işlemleri Logo ERP arayüzü üzerinden yapılmalıdır.
İpucu: Sorgularınızı SQL Server Management Studio (SSMS) ile test edin. Sonuçları Excel'e aktarmak için SSMS'de sağ tık → "Save Results As" → CSV seçeneğini kullanın.
Özel SQL Rapor ve Entegrasyon İhtiyaçlarınız İçin
Logo ERP veritabanından özel raporlar, Power BI entegrasyonu veya yazılım geliştirme için uzman ekibimizle çalışın.
Danışmanlık Alın