---
title: "Mikro ERP Faturadan Siparişe İz Sürme: Sipariş-Fatura Eşleştirme SQL Sorgusu"
description: "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..."
date: 2026-04-14
category: mikro-erp
tags: ["mikro-erp", "sql-server", "siparis", "fatura", "irsaliye", "eslestirme"]
url: https://mikroerp.dev/blog/mikro-erp-fatura-siparis-eslestirme-sql/
---

## 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
```

| Tablo | Ne tutar? | Bağlantı alanı |
|-------|-----------|----------------|
| `SIPARISLER` | Sipariş başlık/kalem bilgisi | `sip_Guid` |
| `STOK_HAREKETLERI` | İrsaliye ve fatura kalemleri | `sth_sip_uid` → siparişe bağlar |
| `CARI_HESAP_HAREKETLERI` | Fatura cari hareketi | `cha_evrakno_seri/sira` → stok hareketiyle eşleşir |

> **Kaynak:** [SIPARISLER](https://apidocs.mikro.com.tr/tablo-alan-adlari/siparisler) · [STOK_HAREKETLERI](https://apidocs.mikro.com.tr/tablo-alan-adlari/stok_hareketleri) · [CARI_HESAP_HAREKETLERI](https://apidocs.mikro.com.tr/tablo-alan-adlari/cari_hesap_hareketleri)

## Faturadan Siparişe Gitmek

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

```sql
-- 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:

```sql
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:

```sql
-- 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_uid` → `sip_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

- [Açık Sipariş / Teslimat Raporu](/blog/mikro-erp-acik-siparis-teslimat-raporu-sql/) — Ne kadarı teslim edildi?
- [Belge No ile Hareket Bulma](/blog/mikro-erp-belge-no-cari-hareket-bulma-sql/)
- [Cari Ekstre Raporu](/blog/mikro-erp-cari-ekstre-raporu-sql/)

---

*Bu rehber [Mikro ERP API Docs](https://apidocs.mikro.com.tr/tablo-alan-adlari/siparisler) tablo yapısına dayanarak hazırlanmıştır.*