---
title: "Mikro ERP Fiyat Listesi Neden Yanlış Geliyor? SQL ile Fiyat Kontrolü"
description: "Mikro ERP'de satış fiyatı neden yanlış? STOK_SATIS_FIYAT_LISTELERI tablosundan fiyat doğrulama, müşteriye özel fiyat kontrolü ve liste..."
date: 2026-04-14
category: mikro-erp
tags: ["mikro-erp", "sql-server", "stok", "fiyat-listesi", "satis-fiyati", "kontrol"]
url: https://mikroerp.dev/blog/mikro-erp-fiyat-listesi-kontrol-sql/
---

## Sorun: "Fiyat Neden Yanlış Geldi?"

Sipariş kesildi, fatura çıktı — ama müşteri "fiyat yanlış" diyor. Bu ERP kullanan firmaların en sinir bozucu sorunlarından biridir. Genellikle şu sebeplerden kaynaklanır:

- Stok kartında birden fazla fiyat listesi tanımlı ve yanlışı aktif
- Müşterinin cari kartındaki ödeme planı farklı bir fiyat listesine bağlı
- Fiyat listesi güncellenmiş ama eski tarihli sipariş eski fiyattan gitmiş
- Döviz cinsi veya kur farkı

## Hangi Tablolar Kullanılmalı?

| Tablo | Ne Tutar? | Neden Önemli? |
|-------|-----------|---------------|
| `STOK_SATIS_FIYAT_LISTELERI` | Ürün bazlı fiyat tanımları | Güncel fiyatı kontrol etmek |
| `CARI_HESAPLAR` | Müşteri bilgileri | Hangi fiyat listesine bağlı? |
| `STOKLAR` | Ürün kartı | Stok kodu ve isim |

> **Kaynak:** [STOK_SATIS_FIYAT_LISTELERI](https://apidocs.mikro.com.tr/tablo-alan-adlari/stok_satis_fiyat_listeleri) · [CARI_HESAPLAR](https://apidocs.mikro.com.tr/tablo-alan-adlari/cari_hesaplar)

## Bir Ürünün Tüm Fiyat Listelerini Görmek

```sql
SELECT 
    FL.sfiyat_stokkod                              AS [Stok Kodu],
    S.sto_isim                                     AS [Urun Adi],
    FL.sfiyat_listesirano                           AS [Liste No],
    FL.sfiyat_fiyati                                AS [Fiyat],
    CASE FL.sfiyat_doviz
        WHEN 0 THEN 'TL'
        WHEN 1 THEN 'USD'
        WHEN 2 THEN 'EUR'
        ELSE 'Doviz: ' + CAST(FL.sfiyat_doviz AS VARCHAR)
    END                                             AS [Doviz],
    FL.sfiyat_odemeplan                              AS [Odeme Plani]
FROM STOK_SATIS_FIYAT_LISTELERI FL WITH (NOLOCK)
INNER JOIN STOKLAR S WITH (NOLOCK) ON FL.sfiyat_stokkod = S.sto_kod
WHERE FL.sfiyat_stokkod = 'STK.001'                 -- Stok kodu (isletmenize gore degistirin)
  AND FL.sfiyat_iptal = 0
ORDER BY FL.sfiyat_listesirano;
```

## Müşterinin Görmesi Gereken Fiyat

Bir müşterinin cari kartındaki fiyat kodu ile stok fiyat listesini eşleştirme:

```sql
SELECT 
    C.cari_kod                                     AS [Cari Kodu],
    C.cari_unvan1                                  AS [Musteri],
    C.cari_odemeplan_no                             AS [Odeme Plani No],
    FL.sfiyat_stokkod                               AS [Stok Kodu],
    S.sto_isim                                     AS [Urun],
    FL.sfiyat_fiyati                                AS [Uygulanmasi Gereken Fiyat],
    FL.sfiyat_listesirano                           AS [Liste No]
FROM CARI_HESAPLAR C WITH (NOLOCK)
INNER JOIN STOK_SATIS_FIYAT_LISTELERI FL WITH (NOLOCK)
    ON FL.sfiyat_odemeplan = C.cari_odemeplan_no
INNER JOIN STOKLAR S WITH (NOLOCK) 
    ON FL.sfiyat_stokkod = S.sto_kod
WHERE C.cari_kod = '120.001'                       -- Cari kodu (isletmenize gore degistirin)
  AND FL.sfiyat_stokkod = 'STK.001'                 -- Stok kodu (isletmenize gore degistirin)
  AND FL.sfiyat_iptal = 0;
```

## Fiyatsız Ürünleri Bulma

Fiyat listesinde tanımı olmayan ürünler:

```sql
SELECT TOP 50
    S.sto_kod                                      AS [Stok Kodu],
    S.sto_isim                                     AS [Urun Adi]
FROM STOKLAR S WITH (NOLOCK)
LEFT JOIN STOK_SATIS_FIYAT_LISTELERI FL WITH (NOLOCK) 
    ON FL.sfiyat_stokkod = S.sto_kod
    AND FL.sfiyat_iptal = 0
WHERE FL.sfiyat_stokkod IS NULL
  AND S.sto_iptal = 0
ORDER BY S.sto_isim;
```

## Son Satış Fiyatı vs Liste Fiyatı Karşılaştırması

Gerçekte uygulanan fiyat ile listede tanımlı fiyat arasındaki farkı yakalamak:

```sql
;WITH SonSatis AS (
    SELECT 
        sth_stok_kod,
        sth_cari_kodu,
        sth_tutar,
        sth_miktar,
        CASE WHEN sth_miktar > 0 
             THEN ROUND(sth_tutar / sth_miktar, 2) 
             ELSE 0 END AS BirimFiyat,
        ROW_NUMBER() OVER (PARTITION BY sth_stok_kod ORDER BY sth_tarih DESC) AS RN
    FROM STOK_HAREKETLERI WITH (NOLOCK)
    WHERE sth_tip = 1 AND sth_cins = 0
      AND sth_iptal = 0 AND sth_miktar > 0
)
SELECT TOP 50
    SS.sth_stok_kod                                AS [Stok Kodu],
    S.sto_isim                                     AS [Urun],
    SS.BirimFiyat                                  AS [Son Satis Fiyati],
    FL.sfiyat_fiyati                                AS [Liste Fiyati],
    ROUND(SS.BirimFiyat - ISNULL(FL.sfiyat_fiyati, 0), 2) AS [Fark],
    CASE 
        WHEN FL.sfiyat_fiyati IS NULL THEN 'Liste tanimi yok'
        WHEN SS.BirimFiyat < FL.sfiyat_fiyati THEN 'Liste altinda satis!'
        WHEN SS.BirimFiyat > FL.sfiyat_fiyati THEN 'Liste ustunde'
        ELSE 'Esit'
    END                                             AS [Durum]
FROM SonSatis SS
INNER JOIN STOKLAR S WITH (NOLOCK) ON SS.sth_stok_kod = S.sto_kod
LEFT JOIN STOK_SATIS_FIYAT_LISTELERI FL WITH (NOLOCK)
    ON FL.sfiyat_stokkod = SS.sth_stok_kod
    AND FL.sfiyat_listesirano = 1                   -- Liste 1 (varsayilan)
    AND FL.sfiyat_iptal = 0
WHERE SS.RN = 1
ORDER BY [Fark];
```

## Dikkat Edilecekler

1. **Birden fazla fiyat listesi**: Mikro'da bir ürünün 10+ fiyat listesi olabilir. Müşterinin ödeme planına göre doğru liste seçilir.
2. **Tarih aralığı**: `STOK_SATIS_FIYAT_LISTELERI` tablosunda tarih alanı bulunmamaktadır. Fiyat geçerliliği `sfiyat_iptal` ve `sfiyat_listesirano` ile yönetilir.
3. **Döviz cinsi**: TL fiyat listesindeki fiyat ile USD fiyat listesindeki fiyat karıştırılmamalı.
4. **İskonto etkisi**: Fiyat listesindeki fiyat brüt fiyattır. Cariye özel iskonto varsa net fiyat farklı olacaktır.

## İlgili Yazılar

- [Son Alış Fiyatı](/blog/mikro-erp-son-alis-fiyati-sql/) — En son kaça aldık?
- [Depo Bazlı Stok Bakiye](/blog/mikro-erp-depo-bazli-stok-bakiye-sql/) — Hangi depoda ne var?
- [Cari Ekstre Raporu](/blog/mikro-erp-cari-ekstre-raporu-sql/) — Müşteri hesap özeti

---

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