Mikro Erp Sipariş ve Teslim Durum Raporu
Posted on Aralık 15, 2025 by
Şaban ÇİÇEK
Sipariş Gecikme / Teslim Durumu Sorgusu
Kısa özet: Bu sorgu, Mikro ERP’deki SIPARISLER kayıtlarını; stok bilgisi, müşteri/temsilci adı ve
ilgili siparişin en son irsaliye tarihi ile birleştirir. Böylece teslim tarihi geçmiş siparişlerde
kaç gün geciktiğini ve kalan / vazgeçilen miktarları tek satırda raporlar.
Neyi çözüyor?
- Okunabilirlik: Kolonlar sadeleştirildi, isimlendirme netleştirildi.
- Performans: Siparişe bağlı STOK_HAREKETLERI satırları siparişi çoğaltmasın diye tek tarihe (MAX) indirildi.
- Doğruluk: Bir siparişe birden fazla irsaliye/hareket varsa, raporda en güncel irsaliye tarihi kullanılır.
Çıktıda hangi alanlar var?
| Alan | Açıklama |
|---|---|
| Sipariş Tarihi | Siparişin oluşturulduğu tarih. |
| Sipariş Evrak No | Seri + sıra birleşimi (örn: A-12345). |
| Teslim Tarihi | Siparişin hedef teslim tarihi. |
| İrsaliye Tarihi | Siparişe bağlı hareketlerden en son irsaliye tarihi (MAX). |
| Gün Fark | Teslim tarihi ile irsaliye tarihi arası gün farkı. İrsaliye yoksa bugünün tarihi baz alınır. |
| Müşteri Unvanı | Müşteri kodundan müşteri adı (dbo.fn_CarininIsminiBul). |
| Stok Adı | Stok kodundan stok adı (dbo.fn_StokIsmi). |
| Sipariş / Teslim / Kalan | Sipariş miktarı, teslim edilen miktar, kalan miktar ve vazgeçilen miktar (sip_kapat_fl alanına göre). |
| Marka Kodu & Temsilci | Stok marka kodu ve satıcı/temsilci adı. |
Optimize edilmiş SQL
SELECT
s.sip_tarih AS [Sipariş Tarihi],
CONCAT(s.sip_evrakno_seri, '-', s.sip_evrakno_sira) AS [Sipariş Evrak No],
s.sip_teslim_tarih AS [Teslim Tarihi],
stx.sth_tarih AS [İrsaliye Tarihi],
DATEDIFF(DAY, s.sip_teslim_tarih, COALESCE(stx.sth_tarih, GETDATE())) AS [Gün Fark],
car_musteri.Unvan AS [Müşteri Unvanı],
stok.StokAdi AS [Stok Adı],
s.sip_miktar AS [Sipariş Miktar],
s.sip_teslim_miktar AS [Teslim Edilen],
s.sip_b_fiyat AS [Birim Fiyat],
CASE WHEN s.sip_kapat_fl = 1
THEN (s.sip_miktar - s.sip_teslim_miktar) ELSE 0.0 END AS [VAZGEÇİLEN MİKTAR],
CASE WHEN s.sip_kapat_fl = 0
THEN (s.sip_miktar - s.sip_teslim_miktar) ELSE 0.0 END AS [KALAN MİKTAR],
sk.sto_marka_kodu,
car_satici.Temsilci AS [Temsilci]
FROM SIPARISLER s
JOIN STOKLAR sk
ON sk.sto_kod = s.sip_stok_kod
OUTER APPLY (
SELECT MAX(st.sth_tarih) AS sth_tarih
FROM STOK_HAREKETLERI st
WHERE st.sth_sip_uid = s.sip_Guid
) stx
OUTER APPLY (
SELECT dbo.fn_CarininIsminiBul(0, s.sip_musteri_kod) AS Unvan
) car_musteri
OUTER APPLY (
SELECT dbo.fn_StokIsmi(s.sip_stok_kod) AS StokAdi
) stok
OUTER APPLY (
SELECT dbo.fn_CarininIsminiBul(1, s.sip_satici_kod) AS Temsilci
) car_satici
WHERE s.sip_tip = 0;
Performans notu (önerilen indeksler)
Büyük tablolar üzerinde en büyük hız artışı genelde doğru indeksle gelir. Bu sorguda kritik olan:
STOK_HAREKETLERI(sth_sip_uid, sth_tarih) indeksidir.
CREATE INDEX IX_STOK_HAREKETLERI_sth_sip_uid_tarih
ON STOK_HAREKETLERI (sth_sip_uid, sth_tarih);
CREATE INDEX IX_SIPARISLER_sip_tip_guid
ON SIPARISLER (sip_tip, sip_Guid)
INCLUDE (sip_tarih, sip_evrakno_seri, sip_evrakno_sira, sip_teslim_tarih,
sip_musteri_kod, sip_stok_kod, sip_miktar, sip_teslim_miktar,
sip_b_fiyat, sip_kapat_fl, sip_satici_kod);
Not: STOKLAR.sto_kod genelde zaten PK/Index’tir; yoksa ayrıca indekslenmelidir.
78 görüntülenme •
0 Yorum •
Son Güncelleme: Aralık 15, 2025