Erp Asistanı Erp Asistanı
Netsis SQL

Netsis KDV Dahil mi? KDV_DAHILMI ve Tutar Hesaplama SQL

Netsis faturalarında KDV_DAHILMI bayrağının BRUTTUTAR ve GENELTOPLAM üzerindeki etkisini öğrenin. Başlık ve kalem mutabakatı yapan SQL sorguları.

Erp Asistanı Erp Asistanı Editör ekibi 8 dk okuma
Netsis KDV Dahil mi? KDV_DAHILMI ve Tutar Hesaplama SQL

Netsis veritabanında satış ve alış faturalarını raporlarken en sık düşülen tuzaklardan biri KDV dahil ve hariç ayrımıdır. TBLFATUIRS tablosundaki KDV_DAHILMI kolonu, faturanın giriş biçimine göre tutarların nasıl saklandığını belirler. Bu bayrağı dikkate almadan doğrudan BRUTTUTAR, STHAR_NF veya GENELTOPLAM alanlarını toplarsanız, raporlarınızda çift KDV ekleme veya matrahı KDV dahil sanarak ciroyu şişirme gibi ciddi hatalar oluşur. Tablo yapısının genel mantığı için Netsis tablo yapısı rehberi yazımıza göz atabilirsiniz.

Bu rehberde KDV_DAHILMI bayrağının mantığını, başlık ile kalem tutarları arasındaki ilişkiyi ve başlık-kalem farklarını tespit eden mutabakat SQL sorgularını bulabilirsiniz.

KDV_DAHILMI Bayrağı ve Tutar Alanlarının Mantığı

Netsis fatura başlığı olan TBLFATUIRS üzerinde tutar üç temel kolonda izlenir: BRUTTUTAR, KDV ve GENELTOPLAM. Ancak faturayı kesen kullanıcı faturayı "KDV Dahil" (KDV_DAHILMI = 'E') veya "KDV Hariç" (KDV_DAHILMI = 'H') olarak kaydetmiş olabilir.

Bu seçim hem başlık hem de kalem tablosu olan TBLSTHAR üzerindeki net birim fiyat (STHAR_NF) değerini doğrudan etkiler:

Kolon / Durum KDV_DAHILMI = 'H' (KDV Hariç Fatura) KDV_DAHILMI = 'E' (KDV Dahil Fatura)
BRUTTUTAR İskonto ve KDV öncesi net matrah tabanlı tutardır. KDV dahil liste/brüt tutarı temsil eder.
KDV Faturada hesaplanan toplam KDV tutarıdır. Fatura içinden ayrıştırılan toplam KDV tutarıdır.
GENELTOPLAM Cari hesaba yansıyan net ödenecek tutardır (Matrah + KDV). Cari hesaba yansıyan net ödenecek tutardır (KDV Dahil Net).
STHAR_NF (Kalem) Satırın KDV hariç net birim fiyatıdır. Satırın KDV dahil net birim fiyatıdır.
STHAR_GCMIK * STHAR_NF Satırın KDV hariç net tutarını verir. Satırın KDV dahil nihai tutarını verir.

Eğer KDV dahil kesilmiş bir faturada STHAR_GCMIK * STHAR_NF sonucunu doğrudan ciro kabul ederseniz, devlete ödenecek KDV'yi de şirket cirosuna dahil etmiş olursunuz. Stok kalemlerinin detayları için Netsis stok hareketleri SQL içeriğimizden de yararlanabilirsiniz.

1. Fatura Başlık Düzeyinde KDV Dahil/Hariç Ayrımı

Aşağıdaki sorgu, belirli bir tarih aralığındaki satış faturalarını (FTIRSIP = '1') KDV dahil ve hariç kesilme durumlarına göre gruplayarak toplamları özetler.

SELECT
    f.KDV_DAHILMI,
    CASE WHEN f.KDV_DAHILMI = 'E' THEN 'KDV Dahil Fatura' ELSE 'KDV Hariç Fatura' END AS FaturaTipi,
    COUNT(f.FATIRS_NO) AS FaturaAdedi,
    SUM(f.BRUTTUTAR) AS ToplamBrutTutar,
    SUM(f.KDV) AS ToplamKDVTutari,
    SUM(f.GENELTOPLAM) AS ToplamGenelTutar
FROM TBLFATUIRS f
WHERE f.FTIRSIP = '1'
  AND f.TARIH >= '20260101' AND f.TARIH < '20260201'
  AND f.SUBE_KODU = 0
GROUP BY f.KDV_DAHILMI;

2. Kalem Bazında Gerçek Matrah ve Net Ciro Hesabı

Fatura satırlarını (TBLSTHAR) listelerken KDV_DAHILMI bayrağına göre KDV'yi satırdan ayıklamak gerekir. KDV_DAHILMI = 'E' ise satır tutarı (1 + KDV Oranı / 100) değerine bölünerek gerçek matrah bulunur.

SELECT
    f.FATIRS_NO,
    f.TARIH,
    f.CARI_KODU,
    f.KDV_DAHILMI,
    h.STOK_KODU,
    h.STHAR_GCMIK AS Miktar,
    h.STHAR_NF AS NetBirimFiyat,
    h.STHAR_KDV AS KDV_Orani,
    -- Net Matrah (KDV Hariç Tutar)
    CASE
        WHEN f.KDV_DAHILMI = 'E'
        THEN ROUND((h.STHAR_GCMIK * h.STHAR_NF) / (1.0 + (h.STHAR_KDV / 100.0)), 2)
        ELSE ROUND(h.STHAR_GCMIK * h.STHAR_NF, 2)
    END AS NetMatrah,
    -- Satır KDV Tutarı
    CASE
        WHEN f.KDV_DAHILMI = 'E'
        THEN ROUND((h.STHAR_GCMIK * h.STHAR_NF) - ((h.STHAR_GCMIK * h.STHAR_NF) / (1.0 + (h.STHAR_KDV / 100.0))), 2)
        ELSE ROUND((h.STHAR_GCMIK * h.STHAR_NF) * (h.STHAR_KDV / 100.0), 2)
    END AS KDVTutari,
    -- Satır Nihai Toplamı (KDV Dahil)
    CASE
        WHEN f.KDV_DAHILMI = 'E'
        THEN ROUND(h.STHAR_GCMIK * h.STHAR_NF, 2)
        ELSE ROUND((h.STHAR_GCMIK * h.STHAR_NF) * (1.0 + (h.STHAR_KDV / 100.0)), 2)
    END AS SatirGenelToplam
FROM TBLFATUIRS f
JOIN TBLSTHAR h ON h.FISNO = f.FATIRS_NO
               AND h.SUBE_KODU = f.SUBE_KODU
               AND h.STHAR_FTIRSIP = f.FTIRSIP
WHERE f.FTIRSIP = '1'
  AND f.TARIH >= '20260101' AND f.TARIH < '20260201'
  AND f.SUBE_KODU = 0;

3. Başlık ile Kalem Toplamlarını Mutabakat Eden Fark Bulucu SQL

Veritabanında bazen manuel müdahaleler, yuvarlama hataları veya entegrasyon kopuklukları nedeniyle TBLFATUIRS başlığındaki GENELTOPLAM ile TBLSTHAR kalemlerinin toplamı birbirini tutmaz. Aşağıdaki sorgu iki tablo arasındaki kuruş veya tutar farklarını anında listeler.

WITH KalemOzet AS (
    SELECT
        h.FISNO,
        h.SUBE_KODU,
        h.STHAR_FTIRSIP,
        SUM(h.STHAR_GCMIK * h.STHAR_NF) AS KalemNetToplam
    FROM TBLSTHAR h
    WHERE h.STHAR_FTIRSIP = '1'
      AND h.STHAR_TARIH >= '20260101' AND h.STHAR_TARIH < '20260201'
    GROUP BY h.FISNO, h.SUBE_KODU, h.STHAR_FTIRSIP
)
SELECT
    f.FATIRS_NO,
    f.TARIH,
    f.CARI_KODU,
    f.KDV_DAHILMI,
    f.BRUTTUTAR AS BaslikBrut,
    f.KDV AS BaslikKDV,
    f.GENELTOPLAM AS BaslikGenelToplam,
    ISNULL(k.KalemNetToplam, 0) AS KalemToplamTutar,
    -- KDV durumuna göre beklenen genel toplam ile başlık farkı
    CASE
        WHEN f.KDV_DAHILMI = 'E' 
        THEN ROUND(f.GENELTOPLAM - ISNULL(k.KalemNetToplam, 0), 2)
        ELSE ROUND((f.GENELTOPLAM - f.KDV) - ISNULL(k.KalemNetToplam, 0), 2)
    END AS FarkTutari
FROM TBLFATUIRS f
LEFT JOIN KalemOzet k ON k.FISNO = f.FATIRS_NO
                     AND k.SUBE_KODU = f.SUBE_KODU
                     AND k.STHAR_FTIRSIP = f.FTIRSIP
WHERE f.FTIRSIP = '1'
  AND f.TARIH >= '20260101' AND f.TARIH < '20260201'
  AND f.SUBE_KODU = 0
  AND ABS(
        CASE
            WHEN f.KDV_DAHILMI = 'E' 
            THEN f.GENELTOPLAM - ISNULL(k.KalemNetToplam, 0)
            ELSE (f.GENELTOPLAM - f.KDV) - ISNULL(k.KalemNetToplam, 0)
        END
      ) > 0.05
ORDER BY f.TARIH, f.FATIRS_NO;

4. KDV Oranlarına Göre Matrah ve Vergi Dağılımı

Muhasebe ve beyanname kontrollerinde faturadaki KDV oranlarına (%1, %10, %20) göre toplam matrah ve KDV dağılımı istenir. Aşağıdaki sorgu hem E hem H faturaları doğru matematiksel formülle konsolide eder. Benzer hazır analizler için Netsis hazır SQL sorguları rehberimizi inceleyebilirsiniz.

SELECT
    h.STHAR_KDV AS KDV_Orani,
    SUM(
        CASE
            WHEN f.KDV_DAHILMI = 'E'
            THEN (h.STHAR_GCMIK * h.STHAR_NF) / (1.0 + (h.STHAR_KDV / 100.0))
            ELSE (h.STHAR_GCMIK * h.STHAR_NF)
        END
    ) AS ToplamMatrah,
    SUM(
        CASE
            WHEN f.KDV_DAHILMI = 'E'
            THEN (h.STHAR_GCMIK * h.STHAR_NF) - ((h.STHAR_GCMIK * h.STHAR_NF) / (1.0 + (h.STHAR_KDV / 100.0)))
            ELSE (h.STHAR_GCMIK * h.STHAR_NF) * (h.STHAR_KDV / 100.0)
        END
    ) AS ToplamKDV,
    SUM(
        CASE
            WHEN f.KDV_DAHILMI = 'E'
            THEN (h.STHAR_GCMIK * h.STHAR_NF)
            ELSE (h.STHAR_GCMIK * h.STHAR_NF) * (1.0 + (h.STHAR_KDV / 100.0))
        END
    ) AS ToplamTutar
FROM TBLFATUIRS f
JOIN TBLSTHAR h ON h.FISNO = f.FATIRS_NO
               AND h.SUBE_KODU = f.SUBE_KODU
               AND h.STHAR_FTIRSIP = f.FTIRSIP
WHERE f.FTIRSIP = '1'
  AND f.TARIH >= '20260101' AND f.TARIH < '20260201'
  AND f.SUBE_KODU = 0
GROUP BY h.STHAR_KDV
ORDER BY h.STHAR_KDV;

Sık yapılan hatalar

  • KDV_DAHILMI bayrağını yok saymak: Satış cirosunu doğrudan SUM(STHAR_GCMIK * STHAR_NF) ile hesaplamak, KDV dahil kesilmiş faturalardaki vergi tutarını ciroya katarak mali tabloları yanıltır.
  • SUBE_KODU filtresini atlamak: Çok şubeli Netsis yapılarında şube filtresi verilmezse aynı fatura numarasına sahip farklı şube hareketleri birbirine karışır.
  • FTIRSIP kısıtı koymamak: TBLFATUIRS ve TBLSTHAR sadece faturaları değil irsaliye (3,4) ve transferleri (8) de barındırır. Satış faturası için FTIRSIP = '1' filtresi şarttır.
  • Tamsayı bölme hatası: SQL Server'da STHAR_KDV / 100 yazıldığında tamsayı bölmesi yapılarak 0 sonucu dönebilir; formüllerde mutlaka 100.0 veya 1.0 gibi ondalıklı format kullanılmalıdır.

Sık sorulanlar

STHAR_NF kolonu iskonto düşülmüş fiyat mıdır? Evet. STHAR_BF brüt birim fiyatı, STHAR_NF ise satır iskontoları düşüldükten sonraki net birim fiyatı ifade eder.

İade faturaları bu sorgularda nasıl ayrılır? Fatura tipini gösteren TIPI kolonu 4 olduğunda iade faturasını temsil eder. Net ciro raporlarında TIPI = 4 olan kayıtların düşülmesi gerekir.

Hizmet faturaları TBLSTHAR tablosunda yer alır mı? TBLFATUIRS tablosunda HIZMET_FAT = 'E' olan stoksuz hizmet faturalarının kalemleri TBLSTHAR üzerinde bulunmaz; bu faturalar başlık tablosundan veya muhasebe modülünden izlenir.


Netsis veritabanında KDV dahil/hariç hesaplamaları ve mutabakat sorgularını manuel yazmak yerine Erp Asistanı'nı kullanarak saniyeler içinde hatasız SQL'ler ü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.