Mikro ERP Faturadan Siparişe İz Sürme: Sipariş-Fatura Eşleştirme SQL Sorgusu

Mikro ERP'de bir faturanın hangi siparişe ait olduğunu nasıl bulursunuz? Sipariş → İrsaliye → Fatura zincirini SQL ile izleme rehberi. Evrak seri-sıra...

Sorun: “Bu Fatura Hangi Siparişe Ait?”

Satış müdürü soruyor: “B-4521 faturasının sipariş açıklaması neydi?” Mikro’da faturayı buldunuz ama siparişe geri dönmek sanıldığı kadar kolay değil. Çünkü sipariş → irsaliye → fatura zincirinde 3 farklı tablo ve birden fazla bağlantı noktası var.

Zincir Nasıl Çalışır?

SIPARISLER → STOK_HAREKETLERI (İrsaliye) → STOK_HAREKETLERI (Fatura) → CARI_HESAP_HAREKETLERI
     ↓              ↓                              ↓
  sip_Guid → sth_sip_uid bağlantısı     evrak seri-sıra eşleşmesi
TabloNe tutar?Bağlantı alanı
SIPARISLERSipariş başlık/kalem bilgisisip_Guid
STOK_HAREKETLERIİrsaliye ve fatura kalemleristh_sip_uid → siparişe bağlar
CARI_HESAP_HAREKETLERIFatura cari hareketicha_evrakno_seri/sira → stok hareketiyle eşleşir

Kaynak: SIPARISLER · STOK_HAREKETLERI · CARI_HESAP_HAREKETLERI

Faturadan Siparişe Gitmek

Bir fatura numarasından geriye doğru sipariş bilgisine ulaşma:

-- Fatura evrak no: B-4521
SELECT DISTINCT
    'Fatura → Sipariş' AS [İzleme],
    -- Fatura bilgileri
    STH.sth_evrakno_seri + '-' + 
        CAST(STH.sth_evrakno_sira AS VARCHAR)     AS [Fatura No],
    CONVERT(VARCHAR(10), STH.sth_tarih, 104)      AS [Fatura Tarihi],
    -- Sipariş bilgileri
    SIP.sip_evrakno_seri + '-' + 
        CAST(SIP.sip_evrakno_sira AS VARCHAR)     AS [Sipariş No],
    CONVERT(VARCHAR(10), SIP.sip_tarih, 104)      AS [Sipariş Tarihi],
    SIP.sip_aciklama                              AS [Sipariş Açıklama],
    -- Ürün bilgileri
    STH.sth_stok_kod                              AS [Stok Kodu],
    S.sto_isim                                    AS [Ürün Adı],
    STH.sth_miktar                                AS [Fatura Miktar],
    SIP.sip_miktar                                AS [Sipariş Miktar]
FROM STOK_HAREKETLERI STH WITH (NOLOCK)
LEFT JOIN SIPARISLER SIP WITH (NOLOCK) 
    ON STH.sth_sip_uid = SIP.sip_Guid
LEFT JOIN STOKLAR S WITH (NOLOCK) 
    ON STH.sth_stok_kod = S.sto_kod
WHERE STH.sth_evrakno_seri = 'B'
  AND STH.sth_evrakno_sira = 4521
  AND STH.sth_iptal = 0
ORDER BY STH.sth_stok_kod;

Siparişten Faturaya Gitmek

Bir siparişin hangi faturalarla kapatıldığını görmek:

SELECT 
    SIP.sip_evrakno_seri + '-' + 
        CAST(SIP.sip_evrakno_sira AS VARCHAR)     AS [Sipariş No],
    SIP.sip_stok_kod                              AS [Stok Kodu],
    SIP.sip_miktar                                AS [Sipariş Miktar],
    SIP.sip_teslim_miktar                         AS [Teslim Edilen],
    SIP.sip_miktar - SIP.sip_teslim_miktar        AS [Kalan],
    -- Fatura bilgisi
    STH.sth_evrakno_seri + '-' + 
        CAST(STH.sth_evrakno_sira AS VARCHAR)     AS [Fatura/İrsaliye No],
    CONVERT(VARCHAR(10), STH.sth_tarih, 104)      AS [Fatura Tarihi],
    STH.sth_miktar                                AS [Faturalanan Miktar]
FROM SIPARISLER SIP WITH (NOLOCK)
LEFT JOIN STOK_HAREKETLERI STH WITH (NOLOCK) 
    ON STH.sth_sip_uid = SIP.sip_Guid
    AND STH.sth_iptal = 0
WHERE SIP.sip_evrakno_seri = 'A'
  AND SIP.sip_evrakno_sira = 1200
  AND SIP.sip_iptal = 0
ORDER BY STH.sth_tarih;

sth_sip_uid Boşsa Ne Yapılır?

Bazen sth_sip_uid alanı boş olabilir — özellikle doğrudan irsaliyeden fatura kesildiğinde. Bu durumda evrak seri-sıra + stok kodu eşleşmesi deneyin:

-- Alternatif: Evrak bazlı eşleştirme
SELECT 
    SIP.sip_evrakno_seri + '-' + CAST(SIP.sip_evrakno_sira AS VARCHAR) AS [Sipariş],
    STH.sth_evrakno_seri + '-' + CAST(STH.sth_evrakno_sira AS VARCHAR) AS [Fatura],
    SIP.sip_stok_kod AS [Stok],
    SIP.sip_miktar AS [Sip. Miktar],
    STH.sth_miktar AS [Fat. Miktar]
FROM SIPARISLER SIP WITH (NOLOCK)
INNER JOIN STOK_HAREKETLERI STH WITH (NOLOCK)
    ON SIP.sip_stok_kod = STH.sth_stok_kod
    AND SIP.sip_musteri_kod = STH.sth_cari_kodu
    AND STH.sth_tarih BETWEEN SIP.sip_tarih AND DATEADD(MONTH, 3, SIP.sip_tarih)
WHERE SIP.sip_musteri_kod = '120.001'
  AND STH.sth_evraktip = 6  -- Fatura
  AND STH.sth_iptal = 0
  AND SIP.sip_iptal = 0;

Dikkat Edilecekler

  1. Guid bağlantısı en güvenilir: sth_sip_uidsip_Guid eşleşmesi birebir ilişkidir.
  2. Bir sipariş birden fazla faturaya bölünebilir: Kısmi sevkiyatlarda aynı sipariş satırı birden fazla faturada görünür.
  3. İade faturaları: sth_normal_iade alanı 1 ise iade faturasıdır; siparişle eşleşmeyebilir.

İlgili Yazılar


Bu rehber Mikro ERP API Docs tablo yapısına dayanarak hazırlanmıştır.

📚 İlgili Yazılar