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ı
Editör ekibi
7 dk okuma
İçindekiler
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_KODUfiltresi 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
ROUNDfonksiyonunu doğru basamakta kullanmalısınız. - İrsaliyelerin Karışması:
STHAR_FTIRSIPfiltresinde3(Satış İrsaliyesi) veya4(Alış İrsaliyesi) değerlerini hariç tuttuğunuzdan emin olun. Sadece faturalanmış hareketleri (1ve2) 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.
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.