GRUP_KODU ve KOD_1/KOD_2 ile Netsis Stok Kategorisi Raporlama
Netsis stok kartlarında GRUP_KODU, KOD_1 ve KOD_2 ile kategori bazlı satış ve stok raporu alın. Boş kodları temizleyin, örnek SQL ile çalışın.
Erp Asistanı
Editör ekibi
6 dk okuma
İçindekiler
Netsis'te stok kartlarındaki GRUP_KODU, KOD_1 ve KOD_2 alanları serbest sınıflama için kullanılır; ancak boş veya tutarsız kodlar raporlarınızı sessizce bozar. Bu yazıda hem kart listesini hem de satış toplamlarını kategori bazında çıkaran, kopyala-çalıştır SQL örnekleri veriyoruz. Tablo yapısına genel bakış için Netsis tablo yapısı rehberi yazısına göz atın.
Stok kartı sınıflama alanları
TBLSTSABIT tablosunda stok kartına ait sınıflama alanları şunlardır:
| Alan | Tip | Açıklama | Boş değer tuzağı |
|---|---|---|---|
| GRUP_KODU | varchar(8) | Stok grubu kodu (ör. HAM, MAMUL) | NULL veya boş string olabilir |
| KOD_1 | varchar(8) | Birinci sınıflama (ör. marka) | NULL veya boş string olabilir |
| KOD_2 | varchar(8) | İkinci sınıflama (ör. kategori) | NULL veya boş string olabilir |
| KOD_3..KOD_5 | varchar(8) | Ek sınıflama alanları | Aynı şekilde |
Bu alanlar varchar olduğu için hem NULL hem de '' (boş string) değer alabilir. Raporlarken ikisini birden ele almak gerekir; aksi hâlde bazı kartlar toplam dışı kalır.
1. Stok kartlarını kategori kodlarıyla listeleme
SELECT
STOK_KODU,
STOK_ADI,
CASE
WHEN GRUP_KODU IS NULL OR GRUP_KODU = '' THEN '(Tanimsiz)'
ELSE GRUP_KODU
END AS GRUP_KODU,
CASE
WHEN KOD_1 IS NULL OR KOD_1 = '' THEN '(Tanimsiz)'
ELSE KOD_1
END AS KOD_1,
CASE
WHEN KOD_2 IS NULL OR KOD_2 = '' THEN '(Tanimsiz)'
ELSE KOD_2
END AS KOD_2,
OLCU_BR1,
SATIS_FIAT1
FROM TBLSTSABIT
ORDER BY GRUP_KODU, KOD_1, KOD_2;
2. Grup kodu başına stok kartı sayısı (boşları dahil et)
SELECT
CASE
WHEN GRUP_KODU IS NULL OR GRUP_KODU = '' THEN '(Tanimsiz)'
ELSE GRUP_KODU
END AS GRUP_KODU,
COUNT(*) AS StokSayisi
FROM TBLSTSABIT
GROUP BY
CASE
WHEN GRUP_KODU IS NULL OR GRUP_KODU = '' THEN '(Tanimsiz)'
ELSE GRUP_KODU
END
ORDER BY StokSayisi DESC;
3. Son 12 ay satış cirosunu GRUP_KODU'na göre toplama
Aşağıdaki sorgu satış faturası ve satış irsaliyesi kalemlerini (STHAR_FTIRSIP IN ('1','3') ve STHAR_GCKOD='C') kullanır. Tarih aralığını ihtiyacınıza göre değiştirin.
-- SUBE_KODU: Çok şubeli kurulumda WHERE SUBE_KODU = <şube> ekleyin.
SELECT
s.GRUP_KODU,
SUM(h.STHAR_GCMIK) AS ToplamMiktar,
SUM(h.STHAR_GCMIK * h.STHAR_NF) AS NetCiro
FROM TBLSTHAR h
INNER JOIN TBLSTSABIT s ON s.STOK_KODU = h.STOK_KODU
WHERE h.STHAR_GCKOD = 'C'
AND h.STHAR_FTIRSIP IN ('1','3')
AND h.STHAR_TARIH >= '2026-01-01' AND h.STHAR_TARIH < '2027-01-01'
GROUP BY s.GRUP_KODU
ORDER BY NetCiro DESC;
4. KOD_1 (marka) bazında satış raporu
SELECT
s.KOD_1,
COUNT(DISTINCT s.STOK_KODU) AS UrunCesidi,
SUM(h.STHAR_GCMIK) AS ToplamMiktar,
SUM(h.STHAR_GCMIK * h.STHAR_NF) AS NetCiro
FROM TBLSTHAR h
INNER JOIN TBLSTSABIT s ON s.STOK_KODU = h.STOK_KODU
WHERE h.STHAR_GCKOD = 'C'
AND h.STHAR_FTIRSIP IN ('1','3')
AND h.STHAR_TARIH >= '2026-01-01' AND h.STHAR_TARIH < '2027-01-01'
AND s.KOD_1 IS NOT NULL AND s.KOD_1 <> ''
GROUP BY s.KOD_1
ORDER BY NetCiro DESC;
5. Boş grup kodu veya KOD_1 olan kartları tespit etme (temizlik listesi)
SELECT
STOK_KODU,
STOK_ADI,
GRUP_KODU,
KOD_1,
KOD_2
FROM TBLSTSABIT
WHERE (GRUP_KODU IS NULL OR GRUP_KODU = '')
OR (KOD_1 IS NULL OR KOD_1 = '')
OR (KOD_2 IS NULL OR KOD_2 = '')
ORDER BY STOK_KODU;
Sık yapılan hatalar
- NULL ve boş string ayrımını yapmamak:
ISNULL(GRUP_KODU, '(Boş)')yalnızca NULL değerleri yakalar;''değerleri hâlâ boş görünür. Her iki durumu CASE ile ele alın. - Satış raporunda belge tipi filtresini atlamak: TBLSTHAR tüm hareket türlerini içerir; yalnızca satış cirosu istiyorsanız
STHAR_FTIRSIP IN ('1','3')veSTHAR_GCKOD='C'şarttır. - KOD_1 ile KOD_2'yi karıştırmak: Her iki alan da bağımsız sınıflamadır; hiyerarşi garantisi yoktur. Rapor başlığında hangi alanı kullandığınızı netleştirin.
- Türkçe karakterli stok kodu eşleştirirken
=operatörü kullanmak: Büyük/küçük harf ve Türkçe karakter farklılıklarından dolayı kayıt kaçabilir.dbo.TRK()fonksiyonu ile normalize edin (bkz. Netsis ortak kolonlar kartı).
Sık sorulanlar
GRUP_KODU ile KOD_1 arasındaki fark nedir? GRUP_KODU genellikle stok grubunu (ör. mamul, hammadde) tutar; KOD_1 ise serbest sınıflama alanıdır ve kuruluma göre marka, sezon veya kategori olarak kullanılır. Netsis'te iki alan da birbirinin alternatifi değildir; birlikte kullanılabilir.
Boş grup kodlarını toplu güncelleyebilir miyim? Evet, UPDATE komutuyla mümkündür ancak önce yukarıdaki 5. sorgu ile tespit yapıp ilgili kartlara doğru kodu atamanız gerekir. Yedek almadan toplu güncelleme yapmayın.
Satış raporunda hem NULL hem boş string nasıl ele alınır? Yukarıdaki örneklerde olduğu gibi CASE WHEN GRUP_KODU IS NULL OR GRUP_KODU = '' kalıbını kullanın. Bu, tüm boş kayıtları tek bir 'Tanımsız' başlığı altında toplar.
KOD_2'yi KOD_1'in alt kategorisi gibi kullanabilir miyim? Veritabanı tarafında böyle bir hiyerarşi tanımlı değildir; ancak işletme kuralınız olarak KOD_1=marka, KOD_2=ürün grubu şeklinde sabit bir eşleşme uygulayabilirsiniz. Bunu raporlarınızda CASE ile birleştirip tek "Marka > Kategori" alanı yaratabilirsiniz.
Kategori kodlarıyla rapor almak doğru kurgulandığında çok güçlüdür; ancak boş kodlar ve belge tipi filtreleri işin can damarıdır. Erp Asistanı'na ücretsiz üye olun, "geçen ay KOD_1 bazında net ciro" gibi sorularınızı Türkçe yazın, Netsis şemanıza uygun 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.