Erp Asistanı Erp Asistanı
Netsis SQL

Netsis KDV Raporu SQL: STHAR_KDV ile Oran Bazında Döküm

Netsis SQL veritabanından STHAR_KDV kolonu ile oran bazında satış ve alış KDV matrahı hesaplama yöntemleri ve hazır T-SQL sorguları.

Erp Asistanı Erp Asistanı Editör ekibi 7 dk okuma
Netsis KDV Raporu SQL: STHAR_KDV ile Oran Bazında Döküm

Netsis ERP kullanan işletmeler için KDV beyannamesi kontrolü, fatura kontrolleri ve oran bazında KDV dökümü almak finansal mutabakatların en kritik adımlarından biridir. Netsis veritabanında KDV oranları doğrudan fatura kalemlerinin tutulduğu TBLSTHAR tablosunda STHAR_KDV kolonunda saklanır. Bu yapıda, her bir stok satırının KDV oranı bağımsız olarak kaydedildiği için çok daha esnek ve doğru bir vergi dökümü almak mümkündür. Bu rehberde, Netsis SQL veritabanı üzerinden oran bazında matrah ve KDV tutarlarını getiren, satış ve alış faturalarını ayıran, ay bazlı kırılım sunan ve doğrudan çalıştırabileceğiniz T-SQL sorgularını paylaşıyoruz.

Netsis veritabanı mimarisini daha iyi anlamak ve diğer temel tablolarla ilişkileri kurmak için öncelikle Netsis tablo yapısı rehberi yazımıza göz atabilirsiniz. Ayrıca genel stok hareketleri mantığı için Netsis stok hareketleri (TBLSTHAR) rehberi de size yardımcı olacaktır.

Netsis KDV Raporlama Mantığı ve Hesaplama Kuralları

Netsis'te fatura satırlarının tutulduğu TBLSTHAR tablosunda net bir KDV Tutarı kolonu bulunmaz. Bu tutarın dinamik olarak hesaplanması gerekir. Hesaplamanın temel formülü şu şekildedir:

  • Matrah = STHAR_GCMIK * STHAR_NF (Miktar * Net Birim Fiyat)
  • KDV Tutarı = Matrah * (STHAR_KDV / 100.0)

Bu hesaplamayı yaparken yuvarlama hatalarının önüne geçmek için SQL Server'ın ROUND fonksiyonunu kullanmak kuruş farklarını engelleyecektir. Ayrıca rapor oluştururken satış faturaları için STHAR_FTIRSIP = '1' ve çıkış yönü olan STHAR_GCKOD = 'C' filtrelerini; alış faturaları için ise STHAR_FTIRSIP = '2' ve giriş yönü olan STHAR_GCKOD = 'G' filtrelerini uygulamak gerekir.

KDV Raporlamasında Kullanılan Temel Alanlar

Aşağıdaki tabloda, Netsis KDV raporu hazırlarken TBLSTHAR tablosundan çekeceğimiz ve filtreleyeceğimiz kritik kolonlar yer almaktadır:

Kolon Adı Veri Tipi Açıklama Filtre Değeri / Kullanım Amacı
STHAR_KDV decimal(5) KDV Oranı (%) Gruplama ve oran ayrımı için kullanılır.
STHAR_GCMIK decimal Hareket Miktarı Matrah hesaplamasında çarpan.
STHAR_NF decimal Net Birim Fiyat KDV hariç, iskontolar düşülmüş net birim fiyat.
STHAR_FTIRSIP char(1) Belge Tipi '1' = Satış Faturası, '2' = Alış Faturası.
STHAR_GCKOD char(1) Giriş/Çıkış Yönü 'C' = Çıkış (Satış), 'G' = Giriş (Alış).
SUBE_KODU smallint Şube Kodu Çok şubeli yapılarda doğru şube verisini filtrelemek için.
STHAR_TARIH datetime Belge Tarihi Ay ve yıl bazında kırılım yapmak için.

1. Satış Faturaları Oran Bazlı KDV Raporu

Aşağıdaki sorgu, belirteceğiniz tarih aralığındaki satış faturalarını KDV oranlarına göre gruplar, toplam matrahı ve hesaplanan KDV tutarlarını getirir. Şube kodu filtresine dikkat edilmiştir.

SELECT
    STHAR_KDV AS [KDV Orani],
    ROUND(SUM(STHAR_GCMIK * STHAR_NF), 2) AS [Toplam Matrah],
    ROUND(SUM(STHAR_GCMIK * STHAR_NF * (STHAR_KDV / 100.0)), 2) AS [Hesaplanan KDV]
FROM TBLSTHAR
WHERE STHAR_FTIRSIP = '1'
  AND STHAR_GCKOD = 'C'
  AND SUBE_KODU = 0
  AND STHAR_TARIH >= '2026-01-01' AND STHAR_TARIH < '2027-01-01'
GROUP BY STHAR_KDV
ORDER BY STHAR_KDV;

2. Alış Faturaları Oran Bazlı KDV Raporu

Alış faturalarından kaynaklanan indirilecek KDV tutarlarını kontrol etmek için bu sorguyu kullanabilirsiniz. Burada belge tipi 2 (Alış Faturası) ve yön G (Giriş) olarak filtrelenmiştir.

SELECT
    STHAR_KDV AS [KDV Orani],
    ROUND(SUM(STHAR_GCMIK * STHAR_NF), 2) AS [Toplam Matrah],
    ROUND(SUM(STHAR_GCMIK * STHAR_NF * (STHAR_KDV / 100.0)), 2) AS [Indirilecek KDV]
FROM TBLSTHAR
WHERE STHAR_FTIRSIP = '2'
  AND STHAR_GCKOD = 'G'
  AND SUBE_KODU = 0
  AND STHAR_TARIH >= '2026-01-01' AND STHAR_TARIH < '2027-01-01'
GROUP BY STHAR_KDV
ORDER BY STHAR_KDV;

3. Ay ve Oran Bazında Satış KDV Dağılımı

Beyanname dönemlerinde aylık kontrolleri kolaylaştırmak amacıyla, satış faturalarını hem yıl-ay bazında hem de KDV oranlarına göre kıran gelişmiş sorgu aşağıdadır:

SELECT
    YEAR(STHAR_TARIH) AS [Yil],
    MONTH(STHAR_TARIH) AS [Ay],
    STHAR_KDV AS [KDV Orani],
    ROUND(SUM(STHAR_GCMIK * STHAR_NF), 2) AS [Matrah],
    ROUND(SUM(STHAR_GCMIK * STHAR_NF * (STHAR_KDV / 100.0)), 2) AS [KDV Tutari]
FROM TBLSTHAR
WHERE STHAR_FTIRSIP = '1'
  AND STHAR_GCKOD = 'C'
  AND SUBE_KODU = 0
GROUP BY YEAR(STHAR_TARIH), MONTH(STHAR_TARIH), STHAR_KDV
ORDER BY [Yil] DESC, [Ay] DESC, STHAR_KDV;

4. Fatura ve Cari Bazında KDV Detay Listesi

Hangi faturada ne kadar KDV hesaplandığını ve bu faturanın hangi cariye ait olduğunu görmek istiyorsanız, TBLSTHAR tablosunu fatura başlık tablosu olan TBLFATUIRS ile bağlamamız gerekir. Bu birleşimde şube kodu ve belge tipi eşleşmelerine dikkat edilmelidir. Daha fazla örnek için Netsis hazır SQL sorguları makalemizi inceleyebilirsiniz.

SELECT
    h.FISNO AS [Fatura No],
    h.STHAR_TARIH AS [Fatura Tarihi],
    h.STHAR_CARIKOD AS [Cari Kod],
    h.STHAR_KDV AS [KDV Orani],
    ROUND(SUM(h.STHAR_GCMIK * h.STHAR_NF), 2) AS [Matrah],
    ROUND(SUM(h.STHAR_GCMIK * h.STHAR_NF * (h.STHAR_KDV / 100.0)), 2) AS [KDV Tutari]
FROM TBLSTHAR h
INNER JOIN TBLFATUIRS f ON h.FISNO = f.FATIRS_NO
                       AND h.SUBE_KODU = f.SUBE_KODU
                       AND h.STHAR_FTIRSIP = f.FTIRSIP
WHERE h.STHAR_FTIRSIP = '1'
  AND h.STHAR_GCKOD = 'C'
  AND h.SUBE_KODU = 0
  AND h.STHAR_TARIH >= '2026-01-01' AND h.STHAR_TARIH < '2027-01-01'
GROUP BY h.FISNO, h.STHAR_TARIH, h.STHAR_CARIKOD, h.STHAR_KDV
ORDER BY h.STHAR_TARIH DESC, h.FISNO;

Sık yapılan hatalar

  • İade Faturalarının Atlanması: Satıştan iade faturaları da STHAR_FTIRSIP = '2' (Alış) veya özel fatura tipiyle kaydedilebilir. İade süreçlerinizi kontrol ederek yön filtrelerini (STHAR_GCKOD) doğru kurguladığınızdan emin olun.
  • Şube Kodu Filtresinin Unutulması: Netsis çok şubeli bir mimariye sahiptir. SUBE_KODU filtresi verilmediğinde tüm şubelerin verileri üst üste biner ve beyanname rakamlarınızla uyuşmaz.
  • Yuvarlama Farkları: SQL sorgusunda her satır için ayrı ayrı KDV hesaplayıp toplamak ile fatura altındaki toplam KDV arasında kuruş farkları oluşabilir. Bu farkları en aza indirmek için ROUND fonksiyonunu doğru basamakta kullanmalısınız.
  • İrsaliyelerin Karışması: STHAR_FTIRSIP filtresinde 3 (Satış İrsaliyesi) veya 4 (Alış İrsaliyesi) değerlerini hariç tuttuğunuzdan emin olun. Sadece faturalanmış hareketleri (1 ve 2) rapora dahil etmelisiniz.

Sık sorulanlar

Soru? Matrah hesaplarken neden STHAR_BF (Brüt Fiyat) yerine STHAR_NF (Net Fiyat) kullanıyoruz? Cevap: STHAR_BF iskonto uygulanmamış liste fiyatıdır. KDV, iskontolar düşüldükten sonra kalan net tutar üzerinden hesaplandığı için matrah hesabında mutlaka STHAR_NF kullanılmalıdır.

Soru? SQL sorgusundaki KDV toplamı ile beyannamedeki KDV neden uyuşmuyor? Cevap: Bu durum genellikle muhasebeleşmemiş faturalardan, iade faturalarının ters yönlü kaydedilmesinden veya şube kodu filtresinin eksik yazılmasından kaynaklanır. Ayrıca hizmet faturaları stok hareketi oluşturmuyorsa TBLSTHAR tablosunda yer almaz; bu durumda doğrudan muhasebe fişleri kontrol edilmelidir.

Soru? Hizmet faturalarındaki KDV oranlarını bu sorguyla alabilir miyim? Cevap: Eğer hizmet faturalarını Netsis'te stok modülü üzerinden Hizmet tipinde stok kartları açarak kesiyorsanız bu sorgularda listelenir. Ancak doğrudan muhasebe fişi veya dekont kaydıyla işlenen KDV'ler stok hareketlerinde (TBLSTHAR) yer almayacağı için bu rapora dahil olmaz.


Netsis üzerinde oran bazlı KDV raporu almak, vergi dönemlerinde hata yapma riskinizi sıfıra indirir. Ancak her işletmenin Netsis kurulumu, şube yapısı ve iade süreçleri farklılık gösterebilir. Erp Asistanı'na ücretsiz üye olarak veritabanı yapınıza en uygun KDV ve vergi dökümü sorgularını saniyeler içinde doğal dille üretebilirsiniz.

Ücretsiz üye olun, istediğiniz sorguyu doğal dille alın →

Bu yazıyı paylaş
Konuşarak raporlayın

Netsis'te SQL ve raporu konuşarak 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. Kredi kartı gerekmez.