Erp Asistanı Erp Asistanı
Mikro SQL

Mikro Plasiyer Bazlı Satış Raporu SQL: Aylık Performans

6 dk okuma Erp Asistanı
Mikro Plasiyer Bazlı Satış Raporu SQL: Aylık Performans

Mikro kullanıcıları için satış temsilcilerinin (plasiyer) performansını aylık olarak izlemek, prim hesaplamadan bölge analizine kadar birçok ihtiyacın temelidir. Bu yazıda, CARI_HESAP_HAREKETLERI tablosundan hareketle, cha_evrak_tip = 63 (Satış Faturası) filtresi ve cha_normal_Iade düşümü ile temsilci bazlı net ciroyu nasıl sorgulayacağınızı, en sık düşülen tuzakları ve örnek SQL’leri bulacaksınız. Tablo yapısıyla ilgili genel hatırlatmalar için Mikro tablo yapısı rehberi’ni inceleyebilirsiniz.

Plasiyer verisi hangi kolonda?

Mikro’da bir satış faturasının cari ayağı CARI_HESAP_HAREKETLERI tablosunda (cha_evrak_tip = 63) tutulur. Plasiyer / satış temsilcisi kodu doğrudan hareket satırında cha_satici_kodu sütunundadır. Müşteri kartındaki cari_temsilci_kodu ile karıştırmayın; o alan carinin genel temsilcisini belirtir ancak fatura anında farklı bir temsilci işlenmiş olabilir. Bu nedenle performans raporlarında hareket üzerindeki cha_satici_kodu esas alınmalıdır.

Alan Açıklama
cha_satici_kodu Fatura işlenirken seçilen plasiyer kodu
cha_tarihi Fatura tarihi (datetime)
cha_meblag Fatura meblağı (orijinal döviz cinsinden)
cha_normal_Iade 0: Normal, 1: İade
cha_iptal 0: Aktif, 1: İptal edilmiş
cha_evrak_tip 63: Satış Faturası

Aylık plasiyer cirosu (iade düşümlü)

Aşağıdaki sorgu, belirli bir yıl için her ay ve her plasiyerin net satış cirosunu hesaplar. İadeler (cha_normal_Iade = 1) negatif etki yapacak şekilde toplamdan düşülür.

SELECT 
    YEAR(cha_tarihi) AS Yil,
    MONTH(cha_tarihi) AS Ay,
    cha_satici_kodu AS Plasiyer,
    SUM(CASE WHEN cha_normal_Iade = 0 THEN cha_meblag ELSE -cha_meblag END) AS NetCiro
FROM CARI_HESAP_HAREKETLERI
WHERE 
    cha_iptal = 0 
    AND cha_evrak_tip = 63
    AND cha_tarihi >= '2026-01-01' AND cha_tarihi < '2027-01-01'
GROUP BY YEAR(cha_tarihi), MONTH(cha_tarihi), cha_satici_kodu
ORDER BY Yil, Ay, NetCiro DESC;

Uyarı: cha_meblag orijinal döviz cinsindendir. Eğer tüm faturalarınız TL ise sonuç doğrudur; farklı dövizler varsa TL karşılığı için fn_CariFoy benzeri bir fonksiyon kullanmanız ya da kura göre çevrim yapmanız gerekir.

Plasiyer bazında fatura adedi ve ortalama ciro

Performans değerlendirmede sadece toplam ciro değil, fatura sayısı ve ortalama fatura büyüklüğü de önemlidir. Aşağıdaki sorgu bu metrikleri aylık olarak döker.

SELECT 
    YEAR(cha_tarihi) AS Yil,
    MONTH(cha_tarihi) AS Ay,
    cha_satici_kodu AS Plasiyer,
    COUNT(DISTINCT cha_evrakno_seri + '-' + CAST(cha_evrakno_sira AS VARCHAR)) AS FaturaAdedi,
    SUM(CASE WHEN cha_normal_Iade = 0 THEN cha_meblag ELSE -cha_meblag END) AS NetCiro,
    SUM(CASE WHEN cha_normal_Iade = 0 THEN cha_meblag ELSE -cha_meblag END) / 
        NULLIF(COUNT(DISTINCT cha_evrakno_seri + '-' + CAST(cha_evrakno_sira AS VARCHAR)), 0) AS OrtalamaFatura
FROM CARI_HESAP_HAREKETLERI
WHERE 
    cha_iptal = 0 
    AND cha_evrak_tip = 63
    AND cha_tarihi >= '2026-01-01' AND cha_tarihi < '2027-01-01'
    AND cha_normal_Iade = 0  -- sadece normal faturaları saymak için iadeleri hariç tut
GROUP BY YEAR(cha_tarihi), MONTH(cha_tarihi), cha_satici_kodu
ORDER BY Yil, Ay, Plasiyer;

Bu sorguda fatura sayarken iadeleri değil yalnız normal faturaları saydık (cha_normal_Iade = 0). Net ciroda ise iade düşümü yine uygulandı.

Plasiyerin müşteri kırılımı

Hangi temsilcinin hangi müşterilerle çalıştığını ve müşteri bazında ciroyu görmek için:

SELECT 
    cha_satici_kodu AS Plasiyer,
    cha_kod AS MusteriKodu,
    c.cari_unvan1 AS MusteriUnvani,
    SUM(CASE WHEN cha_normal_Iade = 0 THEN cha_meblag ELSE -cha_meblag END) AS NetCiro
FROM CARI_HESAP_HAREKETLERI cha
LEFT JOIN CARI_HESAPLAR c ON c.cari_kod = cha.cha_kod
WHERE 
    cha.cha_iptal = 0 
    AND cha.cha_evrak_tip = 63
    AND cha.cha_tarihi >= '2026-01-01' AND cha.cha_tarihi < '2027-01-01'
GROUP BY cha.cha_satici_kodu, cha.cha_kod, c.cari_unvan1
ORDER BY Plasiyer, NetCiro DESC;

Sık yapılan hatalar

  • İade filtresini unutmak: cha_normal_Iade = 1 olan satırları düşmezseniz iade faturaları ciroyu olduğundan düşük gösterir.
  • İadeyi yanlış düşmek: WHERE cha_normal_Iade = 0 yazıp iadeleri tümüyle yok sayarsanız, iade ile gelen negatif etkiyi kaçırırsınız. Doğrusu SUM(CASE… WHEN 0 THEN meblag ELSE -meblag END) ile netleştirmektir.
  • İptal satırlarını filtrelememek: cha_iptal = 0 koşulunu koymazsanız, silinmiş faturalar da rapora yansır ve mükerrer sayıma yol açar.
  • Evrak tipini daraltmamak: Sadece cha_evrak_tip = 63 yerine tüm hareketleri toplarsanız tahsilat, tediye gibi parasal hareketler de karışır.
  • Tarih filtresinde BETWEEN kullanımı: BETWEEN her iki ucu da dahil eder; >= '2026-01-01' AND < '2027-01-01' kalıbı daha güvenlidir.
  • Döviz dönüşümü yok saymak: cha_meblag TL değilse toplamı TL gibi okumak yanıltıcıdır. Dövizli kurulumlarda mutlaka kur çevrimi veya fn_CariFoy gibi fonksiyonları kullanın.

Sık sorulanlar

Plasiyer raporunda neden CARI_HESAP_HAREKETLERI’ni kullanıyoruz?
Çünkü plasiyer kodu fatura başlığına ait bir bilgidir ve doğrudan cha_satici_kodu kolonunda yer alır. Stok kalemlerinde (STOK_HAREKETLERI) bu bilgi bulunmaz. Ürün bazlı detay gerekiyorsa sth_fat_uid = cha_Guid join’i ile birleştirebilirsiniz.

Aylık raporu günlük veya haftalık yapmak mümkün mü?
Elbette. YEAR(), MONTH() fonksiyonları yerine DATEPART(DAY, cha_tarihi), DATEPART(WEEK, cha_tarihi) kullanarak kırılımı değiştirebilirsiniz.

Plasiyer isimlerini nasıl getiririm?
İdeal olarak cha_satici_kodu’nu PERSONELLER tablosuyla join ederek ad soyad getirebilirsiniz. Ancak bu tablo sistemden sisteme farklılık gösterebildiği için örnek sorguda sadece kod ile çalıştık.

Müşteri bazında prim hesaplamak için en uygun yöntem nedir?
Bu rehberdeki sorgulara ek olarak müşteri grubu, bölge gibi kriterleri CARI_HESAPLAR’dan joinleyerek filtreleyebilir, hatta fatura satırlarından ürün kategorisi ekleyebilirsiniz. Karmaşık prim senaryoları için sonucu bir geçici tabloya alıp ek işlemler yapmanız önerilir.


Bu SQL’ler plasiyer performans takibiniz için sağlam bir başlangıçtır. Ancak asıl güç, doğal dille istediğiniz raporu anında üretebilmektir: “son çeyrekte en çok ciro yapan ilk 5 temsilci”, “aylık ortalama fatura büyüklüğüne göre sıralı liste” gibi sorularınızı ücretsiz Erp Asistanı’na sorarak Mikro şemanıza özel SQL’leri saniyeler içinde alabilirsiniz.

Ücretsiz üye olun, istediğiniz sorguyu doğal dille alın →

Mikro'da SQL ve raporu konuşarak alın

Türkçe sorunuzu yazın, şemanıza uygun çalışan SQL'i ya da hazır uygulamanızı saniyeler içinde alın. Kredi kartı gerekmez.