Netsis Stok Hareketleri (TBLSTHAR): Stok Bakiyesi ve Satış Raporu SQL'leri
Netsis'te stokla ilgili her rapor tek bir tablodan geçer: TBLSTHAR (stok hareketleri). Alış, satış, irsaliye, sipariş kalemi, sayım... hepsi burada satır satır birikir. Bu tabloyu doğru okumayı öğrenmek, Netsis raporculuğunun yarısıdır. Bu yazıda TBLSTHAR'ın kritik kolonlarını, eldeki stok ve satış raporu sorgularını ve en sık düşülen tuzakları anlatıyoruz. Tüm sorgular gerçek bir Netsis veritabanında test edildi.
TBLSTHAR'ın kritik kolonları
| Kolon | Anlamı | Not |
|---|---|---|
STOK_KODU |
Hareketin stok kodu | TBLSTSABIT.STOK_KODU ile bağlanır |
FISNO |
Bağlı belge numarası | başlık tablosundaki FATIRS_NO |
STHAR_GCKOD |
Yön: G giriş, C çıkış |
stok bakiyesinin temeli |
STHAR_GCMIK |
Miktar | birim TBLSTSABIT.OLCU_BR1 |
STHAR_NF / STHAR_BF |
Net / brüt birim fiyat | ciroda hangisi gerektiğine karar verin |
STHAR_KDV |
KDV oranı | tutarlar KDV hariçtir |
STHAR_FTIRSIP |
Belge tipi | 1: Satış Fat., 2: Alış Fat., 3: Satış İrs., 4: Alış İrs., 6: Müşteri Sip., 7: Satıcı Sip. |
STHAR_HTUR |
Hareket türü | açılış, transfer, üretim gibi özel türleri ayırır |
STHAR_CARIKOD |
Hareketin carisi | müşteri bazlı satış raporunun anahtarı |
DEPO_KODU |
Depo | depo bazlı rapor için |
SUBE_KODU |
Şube | çok şubede filtre zorunlu |
STHAR_TARIH |
Hareket tarihi | dönemsel raporların filtresi |
INCKEYNO |
Artan kayıt anahtarı | cari tarafta adı INC_KEY_NUMBER'dır, karıştırmayın |
Eldeki stok miktarı
Giriş eksi çıkış; yönü STHAR_GCKOD verir:
SELECT s.STOK_KODU, st.STOK_ADI,
SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN s.STHAR_GCMIK ELSE -s.STHAR_GCMIK END) AS [Eldeki Miktar]
FROM TBLSTHAR s
JOIN TBLSTSABIT st ON st.STOK_KODU = s.STOK_KODU
GROUP BY s.STOK_KODU, st.STOK_ADI
HAVING SUM(CASE WHEN s.STHAR_GCKOD = 'G' THEN s.STHAR_GCMIK ELSE -s.STHAR_GCMIK END) <> 0
ORDER BY st.STOK_ADI;
Depo kırılımı isterseniz hareketi taramak yerine hazır özet tablosunu kullanın; TBLSTOKPH şube + depo bazında giriş/çıkış toplamlarını zaten tutar:
SELECT ph.DEPO_KODU, ph.STOK_KODU, st.STOK_ADI,
ph.TOP_GIRIS_MIK - ph.TOP_CIKIS_MIK AS [Depo Bakiyesi]
FROM TBLSTOKPH ph
JOIN TBLSTSABIT st ON st.STOK_KODU = ph.STOK_KODU
WHERE ph.TOP_GIRIS_MIK - ph.TOP_CIKIS_MIK <> 0
ORDER BY ph.DEPO_KODU, st.STOK_ADI;
İki yöntemin aynı sonucu vermesi verinizin tutarlı olduğunun da iyi bir kontrolüdür.
Dönemsel satış raporu
Satış faturası kalemleri STHAR_FTIRSIP = '1' ile seçilir. İade, aynı belge tipinde ters yönlü (G) satır olarak durur; CASE ile otomatik düşer:
SELECT s.STOK_KODU, st.STOK_ADI,
SUM(CASE WHEN s.STHAR_GCKOD = 'C' THEN s.STHAR_GCMIK ELSE -s.STHAR_GCMIK END) AS [Net Miktar],
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
JOIN TBLSTSABIT st ON st.STOK_KODU = s.STOK_KODU
WHERE s.STHAR_FTIRSIP = '1'
AND s.STHAR_TARIH >= '20260101' AND s.STHAR_TARIH < '20270101'
GROUP BY s.STOK_KODU, st.STOK_ADI
ORDER BY [Net Ciro] DESC;
Müşteri kırılımı için gruplamaya STHAR_CARIKOD ekleyip TBLCASABIT ile join yapmanız yeterli.
Belgeye inmek: FISNO bağlantısı
Bir hareketin hangi faturaya ait olduğunu görmek isterseniz başlık tablosuna bağlanın:
SELECT f.FATIRS_NO, f.TARIH, f.CARI_KODU,
s.STOK_KODU, s.STHAR_GCMIK, s.STHAR_NF,
s.STHAR_GCMIK * s.STHAR_NF AS [Satır Tutarı]
FROM TBLFATUIRS f
JOIN TBLSTHAR s ON s.FISNO = f.FATIRS_NO AND s.STHAR_FTIRSIP = f.FTIRSIP
WHERE f.FTIRSIP = '1'
ORDER BY f.FATIRS_NO, s.SIRA;
Tip eşleşmesi (STHAR_FTIRSIP = FTIRSIP) önemlidir: aynı numara farklı belge tiplerinde tekrar edebilir.
Sık yapılan hatalar
STHAR_FTIRSIPfiltrelememek. En yaygın hata. Sipariş ve irsaliye kalemleri satış cirosuna karışır; rapor "doğru görünür" ama şişkindir.- İadeyi unutmak. Yalnız
STHAR_GCKOD = 'C'toplarsanız iadeler düşülmez; net için CASE'li toplamı kullanın. STHAR_NF/STHAR_BFkarışıklığı. İskontolu net tutar ile brüt tutar farklı sonuç verir.- KDV varsayımı. Tutarlar KDV hariçtir; KDV'li ciro için
STHAR_KDVoranını ekleyin. - Şube filtresi yok. Çok şubeli kurulumda tüm şubeler tek toplamda birleşir.
Sık sorulanlar
Fatura kalemi ile irsaliye kalemi aynı tabloda mı? Evet, ikisi de TBLSTHAR'dadır; STHAR_FTIRSIP ayırır. Başlıklar da tek tabloda (TBLFATUIRS) durur.
Sipariş kalemleri de TBLSTHAR'da mı? Sipariş kalemleri TBLSIPATRA'dadır; kolon yapısı TBLSTHAR'a çok benzer ve FISNO ile TBLSIPAMAS'a bağlanır.
Stok kartındaki fiyat ile hareket fiyatı neden farklı? TBLSTSABIT.SATIS_FIAT1 liste fiyatıdır; gerçekleşen satış fiyatı harekette (STHAR_NF) durur.
Netsis tablolarının genel haritası için: Netsis tablo yapısı rehberi.
TBLSTHAR'ı doğru okumak öğrenilebilir; ama her yeni rapor için kolon ve kod ezberlemek zorunda değilsiniz. Erp Asistanı'na ücretsiz üye olun, "bu yıl depo bazında en çok satan 20 ürün" gibi sorunuzu Türkçe yazın; Netsis'e uygun, yön ve belge tipi doğru kurulmuş SQL'i saniyeler içinde alı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.