Mikro ERP Fiyat Listesi Neden Yanlış Geliyor? SQL ile Fiyat Kontrolü
Mikro ERP'de satış fiyatı neden yanlış? STOK_SATIS_FIYAT_LISTELERI tablosundan fiyat doğrulama, müşteriye özel fiyat kontrolü ve liste...
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 · CARI_HESAPLAR
Bir Ürünün Tüm Fiyat Listelerini Görmek
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:
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:
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:
;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
- 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.
- Tarih aralığı:
STOK_SATIS_FIYAT_LISTELERItablosunda tarih alanı bulunmamaktadır. Fiyat geçerliliğisfiyat_iptalvesfiyat_listesiranoile yönetilir. - Döviz cinsi: TL fiyat listesindeki fiyat ile USD fiyat listesindeki fiyat karıştırılmamalı.
- İskonto etkisi: Fiyat listesindeki fiyat brüt fiyattır. Cariye özel iskonto varsa net fiyat farklı olacaktır.
İlgili Yazılar
- Son Alış Fiyatı — En son kaça aldık?
- Depo Bazlı Stok Bakiye — Hangi depoda ne var?
- Cari Ekstre Raporu — Müşteri hesap özeti
Bu rehber Mikro ERP API Docs tablo yapısına dayanarak hazırlanmıştır.