Erp Asistanı Erp Asistanı
Netsis SQL

Netsis İade Raporu SQL: STHAR_GCKOD ile İade Analizi ve Oranı

Netsis SQL veritabanında STHAR_GCKOD ters yön mantığıyla satış iadelerini raporlayın. Ürün bazlı iade miktarı, cirosu ve iade oranı hesaplama sorguları.

Erp Asistanı Erp Asistanı Editör ekibi 7 dk okuma
Netsis İade Raporu SQL: STHAR_GCKOD ile İade Analizi ve Oranı

Netsis ERP veritabanında satış ve ciroyu raporlarken en sık karşılaşılan hatalardan biri, satış iadelerinin gözden kaçırılması veya yanlış yön filtresi nedeniyle çift sayılmasıdır. Netsis'te tek bir fatura kalem tablosu (TBLSTHAR) bulunur ve satış faturaları STHAR_FTIRSIP = '1' koduyla tutulur. Satış faturasında normal ürün çıkışı STHAR_GCKOD = 'C' (Çıkış) iken, müşteriden dönen iade satırları depoya tekrar girdiği için STHAR_GCKOD = 'G' (Giriş) olarak işlenir. Bu mantığı anlamak, doğru bir Netsis stok hareketleri SQL raporu kurmanın ilk şartıdır. Temel tablo bağları için Netsis tablo yapısı rehberi içeriğimizden de yararlanabilirsiniz.

Bu rehberde, STHAR_GCKOD alanındaki ters yön mantığını kullanarak ürün ve cari bazında net satış, iade toplamı ve iade oranını hesaplayan T-SQL sorgularını adım adım inceleyeceğiz.

Netsis'te İade Mantığı: GCKOD ve TBLFATUIRS TIPI

Netsis veritabanında satış faturası kalemleri TBLSTHAR tablosunda saklanır. Satış evraklarının genel belge tipi STHAR_FTIRSIP = '1' değerini alır. Ancak hareketin stok yönü STHAR_GCKOD alanına bakar:

  • STHAR_GCKOD = 'C' (Çıkış): Müşteriye yapılan normal mal/ürün satışı.
  • STHAR_GCKOD = 'G' (Giriş): Satış faturası veya satış iade faturası içerisindeki iade satırı. Ürün firmaya geri döndüğü için depoya giriş olarak işlenir.

Fatura başlık seviyesinde doğrulamak isterseniz TBLFATUIRS tablosundaki TIPI alanını kontrol edebilirsiniz. FTIRSIP = '1' iken TIPI = 4 olan kayıtlar doğrudan İade Faturası olarak kaydedilmiş evraklardır.

1. Satış İade Kalemleri Dökümü

Doğrudan satış faturaları (STHAR_FTIRSIP = '1') içerisinde yer alan ve depoya giriş (STHAR_GCKOD = 'G') olarak kaydedilmiş iade satırlarını listelemek için aşağıdaki sorguyu kullanabilirsiniz.

SELECT 
    s.STHAR_TARIH AS [Tarih],
    s.FISNO AS [Fatura No],
    s.STOK_KODU AS [Stok Kodu],
    st.STOK_ADI AS [Stok Adı],
    s.STHAR_CARIKOD AS [Cari Kodu],
    s.STHAR_GCMIK AS [İade Miktarı],
    (s.STHAR_GCMIK * s.STHAR_NF) AS [İade Tutar]
FROM TBLSTHAR s
LEFT JOIN TBLSTSABIT st ON st.STOK_KODU = s.STOK_KODU
WHERE s.STHAR_FTIRSIP = '1'
  AND s.STHAR_GCKOD = 'G'
  AND s.SUBE_KODU = 0
  AND s.STHAR_TARIH >= '20260101' AND s.STHAR_TARIH < '20260701'
ORDER BY s.STHAR_TARIH DESC, s.INCKEYNO DESC;

2. Ürün Bazında Satış, İade ve İade Oranı

Sadece iadeleri listelemek ürün performansını değerlendirmek için yeterli değildir. Gerçek analitik güç, bir stok kartının toplam satış miktarı ile iade miktarını kıyaslamaktan geçer. Bu sorgu ürün bazında brüt satış, iade miktar/tutarı ve iade yüzdesini hesaplar.

SELECT 
    s.STOK_KODU AS [Stok Kodu],
    st.STOK_ADI AS [Stok Adı],
    SUM(CASE WHEN s.STHAR_GCKOD = 'C' THEN s.STHAR_GCMIK ELSE 0 END) AS [Satış Miktarı],
    SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN s.STHAR_GCMIK ELSE 0 END) AS [İade Miktarı],
    SUM(CASE WHEN s.STHAR_GCKOD = 'C' THEN (s.STHAR_GCMIK * s.STHAR_NF) ELSE 0 END) AS [Satış Tutarı],
    SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN (s.STHAR_GCMIK * s.STHAR_NF) ELSE 0 END) AS [İade Tutarı],
    CAST(
        CASE WHEN SUM(CASE WHEN s.STHAR_GCKOD = 'C' THEN s.STHAR_GCMIK ELSE 0 END) = 0 THEN 0
             ELSE (SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN s.STHAR_GCMIK ELSE 0 END) * 100.0) /
                  SUM(CASE WHEN s.STHAR_GCKOD = 'C' THEN s.STHAR_GCMIK ELSE 0 END)
        END AS DECIMAL(5,2)
    ) AS [İade Oranı (%)]
FROM TBLSTHAR s
LEFT JOIN TBLSTSABIT st ON st.STOK_KODU = s.STOK_KODU
WHERE s.STHAR_FTIRSIP = '1'
  AND s.SUBE_KODU = 0
  AND s.STHAR_TARIH >= '20260101' AND s.STHAR_TARIH < '20260701'
GROUP BY s.STOK_KODU, st.STOK_ADI
HAVING SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN s.STHAR_GCMIK ELSE 0 END) > 0
ORDER BY [İade Tutarı] DESC, s.STOK_KODU;

3. Başlık Kontrollü İade Faturası Detayı (TBLFATUIRS JOIN)

Eğer raporunuzu sadece başlık seviyesinde İade Faturası (TIPI = 4) olarak kesilmiş resmi evraklarla sınırlamak isterseniz, TBLFATUIRS tablosu ile JOIN yapmanız gerekir.

SELECT 
    f.FATIRS_NO AS [Fatura No],
    f.TARIH AS [Tarih],
    f.CARI_KODU AS [Cari Kodu],
    s.STOK_KODU AS [Stok Kodu],
    st.STOK_ADI AS [Stok Adı],
    s.STHAR_GCMIK AS [Miktar],
    (s.STHAR_GCMIK * s.STHAR_NF) AS [Net Tutar]
FROM TBLFATUIRS f
INNER JOIN TBLSTHAR s ON s.FISNO = f.FATIRS_NO 
                     AND s.STHAR_FTIRSIP = f.FTIRSIP 
                     AND s.SUBE_KODU = f.SUBE_KODU
LEFT JOIN TBLSTSABIT st ON st.STOK_KODU = s.STOK_KODU
WHERE f.FTIRSIP = '1'
  AND f.TIPI = 4
  AND f.SUBE_KODU = 0
  AND f.TARIH >= '20260101' AND f.TARIH < '20260701'
ORDER BY f.TARIH DESC, s.INCKEYNO DESC;

4. Müşteri (Cari) Bazında İade ve Net Ciro Analizi

Hangi müşterinin ne kadarlık iade yaptığını ve toplam satış içindeki iade yükünü görmek için STHAR_CARIKOD bazında gruplama yapabilirsiniz.

SELECT 
    s.STHAR_CARIKOD AS [Cari Kodu],
    SUM(CASE WHEN s.STHAR_GCKOD = 'C' THEN (s.STHAR_GCMIK * s.STHAR_NF) ELSE 0 END) AS [Brüt Satış Tutarı],
    SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN (s.STHAR_GCMIK * s.STHAR_NF) ELSE 0 END) AS [İade Tutarı],
    SUM(CASE WHEN s.STHAR_GCKOD = 'C' THEN (s.STHAR_GCMIK * s.STHAR_NF) ELSE -(s.STHAR_GCMIK * s.STHAR_NF) END) AS [Net Ciro]
FROM TBLSTHAR s
WHERE s.STHAR_FTIRSIP = '1'
  AND s.SUBE_KODU = 0
  AND s.STHAR_TARIH >= '20260101' AND s.STHAR_TARIH < '20260701'
GROUP BY s.STHAR_CARIKOD
HAVING SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN (s.STHAR_GCMIK * s.STHAR_NF) ELSE 0 END) > 0
ORDER BY [İade Tutarı] DESC, s.STHAR_CARIKOD;

Farklı sorgu örnekleri için Netsis hazır SQL sorguları rehberimizi inceleyebilirsiniz.

Netsis İade Raporu Mantık Özeti

Parametre / Kolon Satış Hareketi Satış İade Hareketi Açıklama
STHAR_FTIRSIP '1' '1' Her iki işlem de Satış Faturası modülündedir.
STHAR_GCKOD 'C' (Çıkış) 'G' (Giriş) İade satırı depoya stok girişi sağlar.
TBLFATUIRS.TIPI 1 veya 2 4 Başlık tablosunda 4 = İade faturası anlamına gelir.
Hesaplanan Tutar STHAR_GCMIK * STHAR_NF STHAR_GCMIK * STHAR_NF Net fiyat KDV hariç satır değerini verir.

Sık yapılan hatalar

  • STHAR_GCKOD süzgecini unutmak: Satış cirosunu hesaplarken sadece STHAR_FTIRSIP = '1' filtresi koyup STHAR_GCKOD ayrımı yapmamak, iadelerin satış gibi toplanmasına ve cironun hatalı yüksek çıkmasına neden olur.
  • İade Faturasını Alış Faturası (FTIRSIP='2') ile karıştırmak: Satıştan iade faturaları alış faturası değildir. Belge tipi yine 1 (Satış), stok yönü G (Giriş) olarak tutulur.
  • Süreçte SUBE_KODU filtresini atlamak: Çok şubeli veritabanlarında SUBE_KODU kısıtı verilmezse farklı şubelerin belge numaraları çakışabilir ve toplamlar yanlış gelir.
  • Tutar hesabı için saklanan hazır kolon aramak: Netsis TBLSTHAR tablosunda hazır net tutar kolonu bulunmaz. Tutar daima STHAR_GCMIK * STHAR_NF çarpımıyla hesaplanmalıdır.

Sık sorulanlar

Satış iadesi ile alış faturası arasındaki SQL farkı nedir? Satış iadesinde STHAR_FTIRSIP = '1' ve STHAR_GCKOD = 'G' olur. Alış faturasında ise STHAR_FTIRSIP = '2' ve STHAR_GCKOD = 'G' tutulur. Yani iade işlemi orijinal modülün altında ters stok yönüyle işlenir.

İade oranını hesaplarken sıfıra bölünme (Divide by zero) hatası nasıl önlenir? Hiç satışı olmayıp sadece iadesi girilmiş ürünlerde CASE WHEN SUM(Satış) = 0 THEN 0 kontrolü eklenerek matematiksel sıfıra bölünme hatası engellenir.

İade raporlarında KDV dahil tutarları nasıl bulabilirim? STHAR_NF net birim fiyattır. KDV dahil satır tutarı için (STHAR_GCMIK * STHAR_NF) * (1 + (STHAR_KDV / 100.0)) formülünü kullanabilirsiniz.


Netsis veritabanınızdan SQL kodlarıyla uğraşmadan anlık iade analizi, cari durum ve stok raporları almak isterseniz Erp Asistanı'nı deneyebilirsiniz. Doğal dilde soru sorarak raporlarınızı saniyeler içinde oluşturun.

Ü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.