1. Şirketin sorusu ve brif
Kim soruyor? Satın alma müdürü ve finans ekibi. Kozmetik kategorisindeki dört bakım ürünü (Nemlendirici Krem, Güneş Kremi SPF50, Şampuan, Dudak Balmı) son iki yılda hızla büyüdü. Bu “bakım hattı” için iki yeni seçenek masada.
Hangi karar? 2025’te bu hattı kimden ve nasıl tedarik edeceğiz? Brifin soruları:
- Bugünkü adetle her seçeneğin yıllık toplam maliyeti ne?
- Hangi maliyetler karara girmeli, hangileri girmemeli?
- Kendi üretim hangi adetten sonra kâra geçer (başabaş)?
- Satış büyürse ya da durursa karar değişir mi?
Ne olur parametresinin temeli Finansal raporlama dersinin “Ne olur parametresiyle duyarlılık” bölümünde ve Segmentasyon dersinde var; burada onu bir yatırım kararına bağlıyoruz.
2. Veri ve model
| Kaynak | Kullanım |
|---|---|
Urunler[BirimMaliyet] | Bugünkü tedarikçiden alış fiyatı. Satislar[Maliyet] = adet × birim maliyet. |
Satislar | Satılan adet ([Satılan Adet]) ve satılan malın maliyeti ([Net Maliyet]); iptaller hariç. |
| Teklif tablosu (örnek) | Seçeneklerin yıllık sabit maliyeti, birim maliyet oranı ve en az sipariş adedi. Ders için uydurulmuştur. |
Teklifler =
DATATABLE(
"Secenek", STRING, "YillikSabit", CURRENCY, "BirimOran", DOUBLE, "MinAdet", INTEGER,
{
{"Mevcut tedarikçi", 0, 1.00, 0},
{"Yeni tedarikçi", 3000, 0.88, 250},
{"Kendi üretim", 18000, 0.55, 0}
}
)
BirimOran, bugünkü birim maliyete göre çarpandır: yeni tedarikçi her ürünü %12 ucuza veriyor (0,88) ama yıllık 3.000 ₺ sözleşme bedeli istiyor ve yılda en az 250 adet şartı koyuyor. Kendi üretimde birim maliyet (hammadde, ambalaj, enerji) bugünkünün %55’i, ama yıllık 18.000 ₺ sabit gider var. Oran kullanmak, dört ürünün farklı maliyetlerini tek bir kuralla taşımamızı sağlar.
Hat bugün: 2024’te 299 adet satıldı, satılan malın maliyeti 39.072 ₺, satış 62.219 ₺. Ortalama birim maliyet 130,68 ₺. 2023’te 143 adet satılmıştı.
Hat Satın Alma Maliyeti =
CALCULATE([Net Maliyet], Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"})
Hat Adedi =
CALCULATE([Satılan Adet], Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"})
Hat Birim Maliyeti =
DIVIDE([Hat Satın Alma Maliyeti], [Hat Adedi])
Veri sınırları: Model geçmiş alış fiyatlarını tutmuyor; BirimMaliyet bugünkü fiyattır ve geçmiş yıllara da uygulanır. Ürün karmasının 2025’te 2024’teki gibi kalacağını varsayıyoruz. Teklif rakamları örnektir.
3. Analiz adımları
Adım 1: Hangi maliyet karara girer? Kendi üretim için ekip şu kalemleri listeledi:
| Kalem (yıllık) | Tutar | Tür | Karara girer mi? |
|---|---|---|---|
| Küçük üretim alanı kirası | 9.600 ₺ | Artımlı | Evet |
| Yarı zamanlı teknisyen | 7.200 ₺ | Artımlı | Evet |
| Ruhsat ve kalite testleri | 1.200 ₺ | Artımlı | Evet |
| Geçen yıl ödenen formül geliştirme | 12.000 ₺ | Batık | Hayır |
| Merkez depo kirasından dağıtılan pay | 6.000 ₺ | Dağıtılmış | Hayır |
- Artımlı (incremental) maliyet: yalnızca bu seçeneği seçersek ortaya çıkar. Toplam 18.000 ₺.
- Batık (sunk) maliyet: çoktan harcandı; hangi seçeneği seçersek seçelim geri gelmez. Karara katılmaz.
- Dağıtılmış maliyet: depo kirası zaten ödeniyor ve seçenekle değişmez. Muhasebe bunu hatta dağıtabilir ama karar için farksızdır.
Bulgu: Bütün kalemler karara katılsaydı sabit gider 36.000 ₺ olur ve başabaş adedi 612’ye çıkardı: kendi üretim hiç cazip görünmezdi. Doğru sabit gider 18.000 ₺; başabaş 306 adet. Yanlış sınıflama kararı tek başına değiştirebilir.
Adım 2: Bugünkü adetle toplam maliyet. Satış fiyatı üç seçenekte de aynı olduğu için gelir karara girmez; yalnızca maliyeti kıyaslarız. Sabit gider yıllıktır; ölçü aya ya da çeyreğe bakılırken de doğru çalışsın diye sabit gideri aylara yayarız (aylık 1.500 ₺):
Kendi Üretim Maliyeti =
VAR Alim = CALCULATE([Net Maliyet], Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"})
VAR Ay = DISTINCTCOUNT(Tarih[YilAy])
RETURN IF(NOT ISBLANK(Alim), 1500 * Ay + 0.55 * Alim)
Üretim Tasarrufu =
CALCULATE([Net Maliyet], Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"}) - [Kendi Üretim Maliyeti]
| Seçenek (2024, 299 adet) | Sabit | Değişken | Toplam | Bugüne göre |
|---|---|---|---|---|
| Mevcut tedarikçi | 0 ₺ | 39.072 ₺ | 39.072 ₺ | — |
| Yeni tedarikçi | 3.000 ₺ | 34.383 ₺ | 37.383 ₺ | −1.689 ₺ |
| Kendi üretim | 18.000 ₺ | 21.490 ₺ | 39.490 ₺ | +418 ₺ |
Bulgu: Bugünkü adetle en ucuz seçenek yeni tedarikçi (yılda 1.689 ₺ tasarruf, %4,3). Kendi üretim 2024’te 418 ₺ pahalıya gelirdi; 2023’ün 143 adedinde ise 9.494 ₺ pahalıya. Üretimin avantajı adet arttıkça büyür.
Adım 3: Adet parametresi. Kararın adete ne kadar duyarlı olduğunu görmek için Power BI’da Modelleme → Yeni parametre → Sayısal aralık (Numeric range) ile bir parametre kurulur. Arka planda bu bir GENERATESERIES tablosu ve bir SELECTEDVALUE ölçüsüdür:
Yıllık Adet = GENERATESERIES(0, 800, 25)
Seçili Adet = SELECTEDVALUE('Yıllık Adet'[Value], 299)
Senaryo Kendi Üretim =
18000 + 0.55 * [Seçili Adet] * [Hat Birim Maliyeti]
Senaryo Yeni Tedarikçi =
IF([Seçili Adet] >= 250, 3000 + 0.88 * [Seçili Adet] * [Hat Birim Maliyeti])
Kullanıcı kaydırıcıyla adedi değiştirdikçe kartlar ve çizgi grafiği güncellenir. Parametre tablosu modelde hiçbir tabloyla ilişkili değildir (bağlantısız tablo). Aynı eğriyi sorguyla da üretebiliriz:
EVALUATE
VAR Birim = CALCULATE(DIVIDE([Net Maliyet], [Satılan Adet]), Tarih[Yil] = 2024, Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"})
RETURN
ADDCOLUMNS(
GENERATESERIES(150, 450, 50),
"Mevcut", [Value] * Birim,
"Yeni", IF([Value] >= 250, 3000 + 0.88 * [Value] * Birim),
"Kendi", 18000 + 0.55 * [Value] * Birim,
"En ucuz",
VAR M = [Value] * Birim
VAR Y = IF([Value] >= 250, 3000 + 0.88 * [Value] * Birim, M)
VAR K = 18000 + 0.55 * [Value] * Birim
RETURN SWITCH(TRUE(), K <= MIN(M, Y), "Kendi üretim", Y < M, "Yeni tedarikçi", "Mevcut tedarikçi")
)
Bulgu: 150 ve 200 adette mevcut tedarikçi en ucuz (yeni tedarikçi 250 adet şartı yüzünden seçilemez). 250 ve 300 adette yeni tedarikçi, 350 adetten itibaren kendi üretim önde. 450 adette kendi üretim mevcut tedarikçiye göre 8.462 ₺ daha ucuz.
Adım 4: Başabaş adedi. İki seçeneğin maliyeti eşit olduğunda: sabit gider farkı = adet × birim maliyet farkı. Buradan adet = sabit gider farkı ÷ (birim oran farkı × birim maliyet).
Başabaş Adedi (Üret / Mevcut) =
VAR Birim =
DIVIDE(
CALCULATE([Net Maliyet], Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"}),
CALCULATE([Satılan Adet], Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"})
)
RETURN DIVIDE(18000, (1 - 0.55) * Birim)
| Karşılaştırma | Sabit fark | Birim fark | Başabaş |
|---|---|---|---|
| Yeni tedarikçi ↔ Mevcut | 3.000 ₺ | 0,12 × 130,68 ₺ | 192 adet (ama en az 250 şartı var) |
| Kendi üretim ↔ Mevcut | 18.000 ₺ | 0,45 × 130,68 ₺ | 307 adet |
| Kendi üretim ↔ Yeni tedarikçi | 15.000 ₺ | 0,33 × 130,68 ₺ | 348 adet |
Bulgu: Asıl rakip yeni tedarikçi olduğu için kendi üretimin geçmesi gereken eşik 348 adet. 2024’ün 299 adedi bunun %14 altında. Başabaş adedi ürün karmasına da bağlı: ortalama birim maliyet 2023’te 132,19 ₺ olduğu için o yılın karmasıyla eşik 303 adet olurdu. Ucuz ürünlerin (Dudak Balmı, Şampuan) payı arttıkça birim maliyet düşer ve eşik yükselir.
Adım 5: Senaryolar. Üç 2025 senaryosunu teklif tablosuyla çaprazlarız. GENERATE, her senaryo satırını her seçenekle eşleştirir:
EVALUATE
VAR Teklifler = DATATABLE(
"Secenek", STRING, "YillikSabit", CURRENCY, "BirimOran", DOUBLE, "MinAdet", INTEGER,
{
{"Mevcut tedarikçi", 0, 1.00, 0},
{"Yeni tedarikçi", 3000, 0.88, 250},
{"Kendi üretim", 18000, 0.55, 0}
}
)
VAR Birim = CALCULATE(DIVIDE([Net Maliyet], [Satılan Adet]), Tarih[Yil] = 2024, Urunler[Urun] IN {"Nemlendirici Krem", "Güneş Kremi SPF50", "Şampuan", "Dudak Balmı"})
VAR Senaryolar =
DATATABLE("Senaryo", STRING, "Adet", INTEGER,
{{"Durgun", 299}, {"Temel (+%25)", 374}, {"İyimser (+%50)", 449}})
RETURN
ADDCOLUMNS(
GENERATE(Senaryolar, Teklifler),
"Uygun", IF([Adet] >= [MinAdet], "Evet", "Hayır"),
"Toplam Maliyet", [YillikSabit] + [BirimOran] * [Adet] * Birim
)
| Senaryo (adet) | Mevcut | Yeni tedarikçi | Kendi üretim | En ucuz |
|---|---|---|---|---|
| Durgun (299) | 39.072 ₺ | 37.383 ₺ | 39.490 ₺ | Yeni tedarikçi |
| Temel, +%25 (374) | 48.873 ₺ | 46.008 ₺ | 44.880 ₺ | Kendi üretim (1.128 ₺ farkla) |
| İyimser, +%50 (449) | 58.673 ₺ | 54.633 ₺ | 50.270 ₺ | Kendi üretim (4.362 ₺ farkla) |
Bulgu: Karar büyümeye bağlı. Satış yerinde sayarsa yeni tedarikçi, %25 ya da daha fazla büyürse kendi üretim kazanıyor. Hat 2024’te iki katından fazla büyüdü (143’ten 299’a); ama bu hızın sürmesi garanti değil.
4. Rapor sayfası taslağı
| Konum | Görsel | Alanlar |
|---|---|---|
| Sol üst | Dilimleyici (parametre) | Yıllık Adet kaydırıcısı (varsayılan 299) |
| Üst şerit | 3 kart | Senaryo maliyeti: Mevcut, Yeni tedarikçi, Kendi üretim; en ucuz seçenek koşullu renkte |
| Orta | Çizgi grafik | X: Yıllık Adet; üç maliyet çizgisi; 307 ve 348’de sabit çizgiler; bugünkü adet (299) işaretli |
| Sağ | Tablo | Senaryo × seçenek toplam maliyeti, Uygun sütunu |
| Alt | Metin kutusu | Varsayımlar listesi (aşağıda) ve kaynakları |
5. Bulgu özeti ve öneri
- 2025 için öneri: yeni tedarikçiyle bir yıllık sözleşme. Bugünkü adetle yılda 1.689 ₺ tasarruf; 250 adet şartı 2024 adediyle (299) karşılanıyor.
- Kendi üretimi tetikleyiciye bağla: son 12 ayın adedi 348’i geçerse (temel senaryo 374) kendi üretim yeni tedarikçiden ucuza gelir. Raporda bu eşiği izleyen bir kart olsun.
- Batık ve dağıtılmış maliyeti karara katma: katılsaydı başabaş 612 adet görünür ve doğru seçenek haksız yere elenirdi.
- Varsayımları kararın yanına yaz: (a) ürün karması 2024 gibi kalır; (b) satış fiyatı seçenekten bağımsız; (c) teklif rakamları örnektir ve bir yıl sabit; (d) kalite, kapasite ve teslim riski bu hesapta yok. Bu dört varsayımdan biri değişirse hesabı parametreyle yeniden yap.
- Sayısal olmayan riskler: kendi üretimde ruhsat süresi ve kalite sorumluluğu şirkete geçer; yeni tedarikçide tek kaynağa bağımlılık artar. Karar sunumunda bunları ayrı bir satırda göster.