Mikro Açık Sipariş Raporları SQL: Bekleyen Miktar, Karşılama Oranı, Geciken Siparişler
Mikro'da bekleyen siparişler nasıl listelenir? sip_tip yönü, sip_teslim_miktar mantığı, müşteri bazında sevkiyat yükü, ürün karşılama oranı ve söz verilen tarihi geçen siparişler. Gerçek v16 verisinde test edilmiş hazır sorgular.
Erp Asistanı
Editör ekibi
6 dk okuma
İçindekiler
"Hangi siparişler bekliyor, hangi müşteriye ne kadar sevkiyat borcumuz var, söz verdiğimiz tarihi kaç gün geçtik?" Satış ve planlama ekiplerinin her sabah baktığı bu üç rapor, Mikro'da tek tablodan çıkar: SIPARISLER. Bu yazıdaki tüm sorgular gerçek bir Mikro v16 veritabanında (4.600+ sipariş satırı) çalıştırıldı, v17'de de doğrulandı.
SIPARISLER tablosunu tanıyın
Sipariş satır bazında tutulur: bir sipariş fişinin her kalemi ayrı kayıttır. Kritik kolonlar:
| Kolon | Anlamı |
|---|---|
sip_tip |
0 = Alınan (müşteri) sipariş, 1 = Verilen (satınalma) sipariş |
sip_musteri_kod |
Cari kodu (CARI_HESAPLAR.cari_kod) |
sip_stok_kod |
Stok kodu (STOKLAR.sto_kod) |
sip_miktar |
Sipariş edilen miktar |
sip_teslim_miktar |
Bugüne kadar teslim edilen (irsaliyeye/faturaya dönüşen) miktar |
sip_b_fiyat |
Birim fiyat |
sip_teslim_tarih |
Söz verilen teslim tarihi |
sip_kapat_fl |
1 = kalan miktar beklenmeden kapatılmış satır |
sip_iptal |
1 = iptal edilmiş satır |
Altın formül: bekleyen miktar = sip_miktar − sip_teslim_miktar. Mikro teslimatı satır üzerinde biriktirir; ayrı bir "kapanan siparişler" tablosu aramayın.
Açık sipariş listesi (satır detayı)
SELECT s.sip_tarih AS [Tarih], s.sip_musteri_kod AS [Cari], c.cari_unvan1 AS [Ünvan],
s.sip_stok_kod AS [Stok], st.sto_isim AS [Ürün],
s.sip_miktar AS [Sipariş], s.sip_teslim_miktar AS [Teslim],
s.sip_miktar - s.sip_teslim_miktar AS [Bekleyen],
(s.sip_miktar - s.sip_teslim_miktar) * s.sip_b_fiyat AS [Bekleyen Tutar]
FROM SIPARISLER s
JOIN CARI_HESAPLAR c ON c.cari_kod = s.sip_musteri_kod
JOIN STOKLAR st ON st.sto_kod = s.sip_stok_kod
WHERE s.sip_tip = 0 AND s.sip_iptal = 0 AND s.sip_kapat_fl = 0
AND s.sip_miktar > s.sip_teslim_miktar
ORDER BY s.sip_tarih;
Üç filtrenin üçü de zorunludur: sip_tip = 0 (müşteri siparişi), sip_iptal = 0 (iptaller dışarı) ve sip_kapat_fl = 0 (elle kapatılan satır artık beklemiyor).
Müşteri bazında sevkiyat yükü
Kime ne kadar mal borcunuz var — üretim ve sevkiyat planının özeti:
SELECT s.sip_musteri_kod AS [Cari], c.cari_unvan1 AS [Ünvan],
COUNT(*) AS [Açık Kalem],
SUM(s.sip_miktar - s.sip_teslim_miktar) AS [Bekleyen Miktar],
SUM((s.sip_miktar - s.sip_teslim_miktar) * s.sip_b_fiyat) AS [Bekleyen Tutar]
FROM SIPARISLER s
JOIN CARI_HESAPLAR c ON c.cari_kod = s.sip_musteri_kod
WHERE s.sip_tip = 0 AND s.sip_iptal = 0 AND s.sip_kapat_fl = 0
AND s.sip_miktar > s.sip_teslim_miktar
GROUP BY s.sip_musteri_kod, c.cari_unvan1
ORDER BY [Bekleyen Tutar] DESC;
Ürün bazında karşılama oranı
Hangi ürünlerde siparişin ne kadarını teslim edebiliyorsunuz? Karşılama (fill rate) düşük ürünler, stok planınızın zayıf noktasıdır:
SELECT s.sip_stok_kod AS [Stok], st.sto_isim AS [Ürün],
SUM(s.sip_miktar) AS [Sipariş], SUM(s.sip_teslim_miktar) AS [Teslim],
CAST(100.0 * SUM(s.sip_teslim_miktar)
/ NULLIF(SUM(s.sip_miktar), 0) AS decimal(5,1)) AS [Karşılama %]
FROM SIPARISLER s
JOIN STOKLAR st ON st.sto_kod = s.sip_stok_kod
WHERE s.sip_tip = 0 AND s.sip_iptal = 0
GROUP BY s.sip_stok_kod, st.sto_isim
ORDER BY [Sipariş] DESC;
NULLIF sıfıra bölme hatasını engeller. Burada sip_kapat_fl filtresi bilinçli olarak yok: kapatılan satırın teslim edilen kısmı da karşılama oranına dahildir.
Geciken siparişler (söz verilen tarih geçti)
SELECT s.sip_teslim_tarih AS [Söz Verilen],
DATEDIFF(day, s.sip_teslim_tarih, CAST(GETDATE() AS date)) AS [Gecikme (gün)],
s.sip_musteri_kod AS [Cari], c.cari_unvan1 AS [Ünvan],
s.sip_stok_kod AS [Stok],
s.sip_miktar - s.sip_teslim_miktar AS [Bekleyen]
FROM SIPARISLER s
JOIN CARI_HESAPLAR c ON c.cari_kod = s.sip_musteri_kod
WHERE s.sip_tip = 0 AND s.sip_iptal = 0 AND s.sip_kapat_fl = 0
AND s.sip_miktar > s.sip_teslim_miktar
AND s.sip_teslim_tarih < CAST(GETDATE() AS date)
ORDER BY [Gecikme (gün)] DESC;
Müşteri aramadan önce bu listeye bakan satış ekibi, "sipariş nerede?" telefonuna hazırlıksız yakalanmaz.
Sık yapılan hatalar
sip_tipyönünü karıştırmak. 0 = alınan (müşteri/satış), 1 = verilen (tedarikçi/satınalma). Ters filtre, müşteri raporuna satınalma siparişlerini doldurur.sip_kapat_fl'yi unutmak. Elle kapatılan sipariş satırının kalanı hiç gelmeyecektir; filtresiz raporda sonsuza dek "bekleyen" görünür.- Fiş değil satır saydığını unutmak.
COUNT(*)kalem sayısıdır; fiş sayısı içinCOUNT(DISTINCT sip_evrakno_seri + '-' + CAST(sip_evrakno_sira AS varchar))gerekir. - Bekleyen tutarı
sip_tutar'dan almak.sip_tutarsatırın tamamıdır; bekleyen tutar(sip_miktar − sip_teslim_miktar) × sip_b_fiyatile hesaplanır. - İptalleri dışlamamak.
sip_iptal = 0her sipariş sorgusunun değişmezidir.
Sık sorulanlar
Mikro'da açık siparişler hangi tabloda? Ayrı tablo yoktur; SIPARISLER satırında sip_miktar > sip_teslim_miktar (ve sip_kapat_fl = 0, sip_iptal = 0) koşulunu sağlayan kayıtlar açık sipariştir.
Sipariş faturaya dönüşünce ne olur? Sevkiyat/fatura kesildikçe Mikro satırın sip_teslim_miktar değerini artırır; miktar sip_miktar'a ulaşınca satır kendiliğinden "kapanmış" olur. Fatura tarafının yapısı için: Mikro'da fatura hangi tabloda?
Siparişteki ürünün stokta olup olmadığını da görebilir miyim? Evet; açık sipariş sorgusuna dbo.fn_EldekiMiktar(sip_stok_kod) kolonunu ekleyerek bekleyen miktar ile eldeki stoğu yan yana okursunuz. Stok tarafının ayrıntısı: Mikro stok ve depo raporları.
Bu sorgular v16 ve v17'de aynı mı? Evet; kullanılan kolonlar iki sürümde de aynıdır. Sorgular v16'da gerçek veriyle çalıştırıldı, v17'de derleme doğrulamasından geçti.
Açık sipariş raporunun bir sonraki adımı hep özeldir: "sadece bu ayın siparişleri", "depo bazında", "ürün grubuna göre"... Erp Asistanı'na ücretsiz üye olun; sorunuzu Türkçe yazın, Mikro şemanıza uygun çalışan SQL'i saniyeler içinde alın.
Mikro'da 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.