Mikro Erp Sipariş ve Teslim Durum Raporu

Mikro Erp Sipariş ve Teslim Durum Raporu

Mikro Erp Sipariş ve Teslim Durum Raporu

Posted on Aralık 15, 2025 by Şaban ÇİÇEK
Mikro Erp Sipariş ve Teslim Durum Raporu

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
Yorumlar 0
Yorum Yap

Henüz yorum yok. İlk yorumu siz yapın!