Erp Asistanı Erp Asistanı
Mikro SQL

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ı Erp Asistanı Editör ekibi 6 dk okuma
Mikro Açık Sipariş Raporları SQL: Bekleyen Miktar, Karşılama Oranı, Geciken Siparişler

"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_tip yö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çin COUNT(DISTINCT sip_evrakno_seri + '-' + CAST(sip_evrakno_sira AS varchar)) gerekir.
  • Bekleyen tutarı sip_tutar'dan almak. sip_tutar satırın tamamıdır; bekleyen tutar (sip_miktar − sip_teslim_miktar) × sip_b_fiyat ile hesaplanır.
  • İptalleri dışlamamak. sip_iptal = 0 her 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.

Ücretsiz üye olun, sorgunuzu doğal dille üretin →

Bu yazıyı paylaş
Konuşarak raporlayı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.