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_meblagorijinal döviz cinsindendir. Eğer tüm faturalarınız TL ise sonuç doğrudur; farklı dövizler varsa TL karşılığı içinfn_CariFoybenzeri 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 = 1olan satırları düşmezseniz iade faturaları ciroyu olduğundan düşük gösterir. - İadeyi yanlış düşmek:
WHERE cha_normal_Iade = 0yazıp iadeleri tümüyle yok sayarsanız, iade ile gelen negatif etkiyi kaçırırsınız. DoğrusuSUM(CASE… WHEN 0 THEN meblag ELSE -meblag END)ile netleştirmektir. - İptal satırlarını filtrelememek:
cha_iptal = 0koşulunu koymazsanız, silinmiş faturalar da rapora yansır ve mükerrer sayıma yol açar. - Evrak tipini daraltmamak: Sadece
cha_evrak_tip = 63yerine tüm hareketleri toplarsanız tahsilat, tediye gibi parasal hareketler de karışır. - Tarih filtresinde
BETWEENkullanımı:BETWEENher 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_meblagTL değilse toplamı TL gibi okumak yanıltıcıdır. Dövizli kurulumlarda mutlaka kur çevrimi veyafn_CariFoygibi 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.
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.