Netsis Açık Siparişler SQL: TBLSIPAMAS ve TBLSIPATRA Rehberi
Netsis açık sipariş raporu için TBLSIPAMAS ve TBLSIPATRA tablolarını kullanarak bekleyen işleri, sipariş yaşını ve müşteri dağılımını SQL ile sorgulayın.
Erp Asistanı
Editör ekibi
8 dk okuma
İçindekiler
Netsis ERP'de bekleyen müşteri ve tedarikçi siparişlerini izlemek, sevkiyat planlaması ve nakit akışı yönetimi için kritik bir gereksinimdir. Faturalanmış veya irsaliyeleşmiş standart stok hareketleri TBLSTHAR tablosunda izlenirken, sipariş evrakları başlıkta TBLSIPAMAS, kalem satırlarında ise TBLSIPATRA tablosunda saklanır. Bu rehberde; bekleyen sipariş listesini, sipariş yaşlandırma analizini ve müşteri kırılımlarını T-SQL ile nasıl raporlayacağınızı inceliyoruz. Netsis veritabanı genel yapısı hakkında temel bilgiler için Netsis tablo yapısı rehberi içeriğimize göz atabilirsiniz.
Netsis Sipariş Mimarisi: Başlık ve Kalem Mantığı
Netsis üzerinde sipariş modülü, fatura mimarisine benzer bir başlık-kalem ilişkisiyle çalışır. Başlık tablosu olan TBLSIPAMAS evrak başına tek satır içerirken, TBLSIPATRA sipariş edilen her bir stok kalemini satır satır barındırır. İki tablo arasındaki bağlantı TBLSIPATRA.FISNO = TBLSIPAMAS.FATIRS_NO üzerinden kurulur.
| Tablo | Görevi | Temel Kolonlar | Birincil Anahtar (PK) |
|---|---|---|---|
| TBLSIPAMAS | Sipariş Başlığı | FTIRSIP, FATIRS_NO, CARI_KODU, TARIH, KAPATILMIS, GENELTOPLAM | SUBE_KODU, FTIRSIP, FATIRS_NO, CARI_KODU |
| TBLSIPATRA | Sipariş Kalemleri | FISNO, STOK_KODU, STHAR_GCMIK, STHAR_NF, STHAR_FTIRSIP | INCKEYNO |
Siparişlerin kapanma mekanizması standart Netsis kurulumunda başlık düzeyindeki KAPATILMIS alanı üzerinden takip edilir. Bu alan açık siparişler için 'S', tamamlanmış veya kapatılmış siparişler için 'K' değerini alır. Ancak kapanma takibi ve parametrik işleyiş işletmenin Netsis modül ayarlarına göre değişiklik gösterebilir; bazı işletmeler irsaliyeleştirmede otomatik kapatma yaparken bazıları manuel kapatma sürecini tercih eder. Bu sorgularda standart açık sipariş bayrağı olan KAPATILMIS = 'S' filtrelemesi temel alınmıştır.
1. Açık Müşteri Siparişleri Başlık Listesi
Müşteri siparişlerini filtrelemek için başlık tablosunda FTIRSIP = '6' ve KAPATILMIS = 'S' koşulları kullanılır. Çok şubeli veritabanlarında şube kodunu belirtmek doğru sonuç almak için şarttır.
SELECT
SUBE_KODU,
FATIRS_NO AS [SiparisNo],
CARI_KODU AS [CariKodu],
TARIH AS [SiparisTarihi],
SIPARIS_TEST AS [TeslimTarihi],
BRUTTUTAR AS [BrutTutar],
KDV AS [KDVTutari],
GENELTOPLAM AS [GenelToplam]
FROM TBLSIPAMAS
WHERE FTIRSIP = '6'
AND KAPATILMIS = 'S'
AND SUBE_KODU = 0
ORDER BY TARIH DESC;
2. Açık Siparişlerin Kalem ve Cari Detayları
Sipariş başlığı ile sipariş satırlarını birleştirmek için FATIRS_NO = FISNO ve SUBE_KODU eşleştirmesi yapılır. Kalem tablosunda (TBLSIPATRA) satır net tutarı saklanmaz; miktar (STHAR_GCMIK) ve net birim fiyat (STHAR_NF) çarpılarak hesaplanır. Cari unvanını getirmek için TBLCASABIT tablosuna bağlanırız.
SELECT
s.FATIRS_NO AS [SiparisNo],
s.TARIH AS [SiparisTarihi],
s.SIPARIS_TEST AS [TeslimTarihi],
s.CARI_KODU AS [CariKodu],
c.CARI_ISIM AS [CariUnvani],
k.STOK_KODU AS [StokKodu],
k.STHAR_GCMIK AS [SiparisMiktari],
k.STHAR_NF AS [NetBirimFiyat],
(k.STHAR_GCMIK * k.STHAR_NF) AS [SatirNetTutar],
k.DEPO_KODU AS [DepoKodu]
FROM TBLSIPAMAS s
INNER JOIN TBLSIPATRA k
ON k.FISNO = s.FATIRS_NO
AND k.SUBE_KODU = s.SUBE_KODU
LEFT JOIN TBLCASABIT c
ON c.CARI_KOD = s.CARI_KODU
WHERE s.FTIRSIP = '6'
AND k.STHAR_FTIRSIP = '6'
AND s.KAPATILMIS = 'S'
AND s.SUBE_KODU = 0
ORDER BY s.TARIH DESC, k.INCKEYNO ASC;
3. Sipariş Yaşı ve Termin Gecikme Analizi
Bekleyen siparişlerin ne kadar süredir açık olduğunu ölçmek için DATEDIFF fonksiyonu kullanılır. Sipariş tarihi ile bugünün tarihi arasındaki gün farkı hesaplanarak sipariş yaşı belirlenir. Benzer tarih fonksiyonu pratikleri için Netsis tarih filtreleri SQL rehberi yazımıza bakabilirsiniz.
SELECT
s.FATIRS_NO AS [SiparisNo],
s.CARI_KODU AS [CariKodu],
c.CARI_ISIM AS [CariUnvani],
s.TARIH AS [SiparisTarihi],
s.SIPARIS_TEST AS [TeslimTarihi],
DATEDIFF(day, s.TARIH, GETDATE()) AS [SiparisYasiGun],
CASE
WHEN s.SIPARIS_TEST IS NOT NULL AND s.SIPARIS_TEST < GETDATE()
THEN DATEDIFF(day, s.SIPARIS_TEST, GETDATE())
ELSE 0
END AS [GecikmeGunu],
CASE
WHEN s.SIPARIS_TEST IS NOT NULL AND s.SIPARIS_TEST < GETDATE()
THEN 'Gecikmede'
ELSE 'Zamaninda'
END AS [TerminDurumu],
s.GENELTOPLAM AS [Tutar]
FROM TBLSIPAMAS s
LEFT JOIN TBLCASABIT c
ON c.CARI_KOD = s.CARI_KODU
WHERE s.FTIRSIP = '6'
AND s.KAPATILMIS = 'S'
AND s.SUBE_KODU = 0
ORDER BY [SiparisYasiGun] DESC;
4. Müşteri Bazında Açık Sipariş Dağılımı
Finans ve operasyon ekipleri için müşteri bazında ne kadarlık açık sipariş yükü olduğunu görmek önem taşır. Bu sorgu, her cari için açık sipariş evrak sayısını ve toplam bekleyen sipariş tutarını gruplar.
SELECT
s.CARI_KODU AS [CariKodu],
c.CARI_ISIM AS [CariUnvani],
COUNT(s.FATIRS_NO) AS [AcikSiparisAdedi],
SUM(s.GENELTOPLAM) AS [ToplamAcikTutar]
FROM TBLSIPAMAS s
LEFT JOIN TBLCASABIT c
ON c.CARI_KOD = s.CARI_KODU
WHERE s.FTIRSIP = '6'
AND s.KAPATILMIS = 'S'
AND s.SUBE_KODU = 0
GROUP BY s.CARI_KODU, c.CARI_ISIM
ORDER BY [ToplamAcikTutar] DESC;
5. Satıcı (Tedarikçi) Açık Siparişleri
Netsis'te verilen tedarikçi siparişleri de aynı tablolarda tutulur; tek fark belge tipinin '7' olmasıdır. Satın alma departmanının bekleyen mal kabullerini izlemesi için aşağıdaki filtreleme kullanılır. Diğer genel hazır sorgu kalıpları için Netsis hazır SQL sorguları dokümanına başvurabilirsiniz.
SELECT
s.FATIRS_NO AS [SiparisNo],
s.TARIH AS [SiparisTarihi],
s.SIPARIS_TEST AS [TerminTarihi],
s.CARI_KODU AS [TedarikciKodu],
c.CARI_ISIM AS [TedarikciUnvani],
k.STOK_KODU AS [StokKodu],
k.STHAR_GCMIK AS [BeklenenMiktar],
k.STHAR_NF AS [BirimFiyat],
(k.STHAR_GCMIK * k.STHAR_NF) AS [NetTutar]
FROM TBLSIPAMAS s
INNER JOIN TBLSIPATRA k
ON k.FISNO = s.FATIRS_NO
AND k.SUBE_KODU = s.SUBE_KODU
LEFT JOIN TBLCASABIT c
ON c.CARI_KOD = s.CARI_KODU
WHERE s.FTIRSIP = '7'
AND k.STHAR_FTIRSIP = '7'
AND s.KAPATILMIS = 'S'
AND s.SUBE_KODU = 0
ORDER BY s.TARIH ASC;
Sık yapılan hatalar
- FTIRSIP kodunu filtrelememek: Sipariş başlık tablosunda
FTIRSIP = '6'(müşteri) veya'7'(satıcı) filtresi koyulmadığında iki yönlü siparişler birbirine karışır. - SUBE_KODU eşleşmesini atlamak: Başlık ve kalem tablolarını bağlarken sadece evrak numarasını kullanmak, çok şubeli sistemlerde farklı şubelerin aynı numaralı siparişlerinin hatalı eşleşmesine yol açar.
- Kalem tablosunda hazır tutar aramak: TBLSIPATRA tablosunda satır toplam tutarı ayrı bir sütunda saklanmaz;
STHAR_GCMIK * STHAR_NFformülü ile hesaplanmalıdır. - KAPATILMIS filtresini unutmak: Bu filtre verilmediğinde yıllar öncesine ait tamamlanmış siparişler de listeye dahil olur ve rapor şişer.
- Tarih alanlarını yanlış veri tipleriyle karşılaştırmak:
TARIHveSIPARIS_TESTdatetime kolonlarıdır; sayısal veya hatalı metin formatlarıyla karşılaştırma yapıldığında SQL Server sorguyu durdurabilir.
Sık sorulanlar
Müşteri siparişi ile satıcı siparişi nasıl ayrılır?
TBLSIPAMAS başlık tablosundaki FTIRSIP ve TBLSIPATRA kalem tablosundaki STHAR_FTIRSIP alanları müşteri siparişleri için '6', satıcı (tedarikçi) siparişleri için '7' değerini alır.
Siparişin açık olduğunu kesinleştiren alan hangisidir?
Standart Netsis şemasında TBLSIPAMAS tablosundaki KAPATILMIS alanı açık siparişlerde 'S', kapatılmış siparişlerde 'K' değerini alır. Kurulumunuza özel farklı bir kapatma kurgusu varsa işletme parametrelerinizi kontrol etmeniz gerekir.
Kalem bazında sevk edilen ve kalan miktar bu tablolarda var mı?
TBLSIPATRA tablosu sipariş anındaki orijinal satır miktarını (STHAR_GCMIK) saklar. Kısmi sevk ve irsaliye eşleşmeleri işletmenin modül ayarlarına göre farklı bağlantı tabloları üzerinden yürütüldüğünden, doğrudan TBLSIPATRA üzerinden parça teslimat takibi yapmadan önce sisteminizin sevk parametreleri teyit edilmelidir.
Sipariş yaşını hesaplarken hangi tarih baz alınmalıdır?
Siparişin sisteme girildiği tarih için TARIH, müşteriye taahhüt edilen teslim tarihi için SIPARIS_TEST kolonu kullanılır. Yaşlandırma sorgularında DATEDIFF fonksiyonu her iki alana da uygulanabilir.
Netsis veritabanındaki açık siparişleri, gecikmeleri ve cari yüklerini SQL ile anlık olarak takip etmek operasyonel verimliliği artırır. Erp Asistanı'na ücretsiz kaydolarak şirketinizin veritabanına özel analizleri doğal dille oluşturabilir, bekleme listelerinizi tek tıkla canlı raporlara dönüştürebilirsiniz.
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.