1. Bordro burada yeniden yazılmadı
Bu araç tek bir bordro formülü içermiyor. Ücret matematiğinin tamamı sitenin Bordro Motoru'ndan geliyor; buradaki iş senaryo kurmak ve iki senaryoyu karşılaştırmak. İki yerde iki bordro hesabı olsaydı zamanla sessizce ayrışırlardı — bir test bunu doğrudan koruyor: aracın ürettiği yıllık net, motorun aynı brüt için ürettiğiyle kuruşu kuruşuna eşit olmalı.
Senaryoları kurmayı mümkün kılan şey motorun bir yeteneği:
hesaplaYil() aylık brüt olarak 12 elemanlı bir dizi
kabul ediyor. "Temmuzda zam aldım" ya da "martta prim aldım" senaryoları bu
sayede motorun kendisine kuruluyor — kümülatif matrah, dilim geçişi ve asgari
ücret istisnası dahil.
2. Brüt zam oranı neden nete aynen yansımaz?
Türkiye'de gelir vergisi kümülatif matrah üzerinden işler: her ay ödenen vergi, o aya kadar biriken toplam matraha bakılarak belirlenir. Brüt yükseldiğinde matrah daha hızlı birikir ve üst dilimlere daha erken geçilir. Buna asgari ücret istisnasının sabit tutar olması eklenir; brüt büyüdükçe o sabit indirimin oransal değeri küçülür.
2026 tarifesiyle ölçülen değer: 100.000 TL brütte %50 zam, yıllık nete %43,8 olarak yansıyor. Fark 6,2 puan.
3. Tek kural yoktu — üç bölge var
Bu aracı yazarken ilk varsayımım "net oran her zaman brüt orandan küçüktür" idi. Testi öyle yazdım ve düştü: 30.000 TL brütte %10 zam nete %11,98 yansıyordu. Rastgele senaryo testi 150 denemenin 52'sinde aynı şeyi söyledi.
Model doğruydu, varsayım yanlıştı. Ölçüm üç ayrı bölge olduğunu gösterdi:
| Bölge | %50 zamda net | Sebep |
|---|---|---|
| Asgari ücret altı | %55,1 | net asgari ücret tabanı (ilave AGİ) devrede |
| Normal bölge | %37–44 | artan oranlı tarife + kümülatif matrah |
| Tavanı aşan zam | %52,5 | artışın bir kısmına SGK primi işlemiyor |
| Tavan üstü | %48–53 | zamdan hiç SGK primi kesilmiyor |
Araç artık kullanıcıya hangi bölgede olduğunu söylüyor ve testler kuralı yalnızca normal bölgede arıyor. Tavan üstündeki tersine dönüş ayrıca korunuyor — bilinen ve doğru bir davranış olduğu için ileride "hata" sanılıp düzeltilmeye çalışılmasın diye.
4. Pazarlık: hedeften geriye çözüm
"Net şu kadar artsın" dendiğinde gereken brüt oranın kapalı formülü yok; kümülatif matrah, dilim geçişleri ve istisna araya giriyor. İkiye bölerek çözülüyor ve çözüm tanımıyla sınanıyor: bulunan brüt geri beslendiğinde hedef net çıkmalı, %1 azı çıkmamalı.
Bir ayrıntı ilk sürümde hataya yol açtı: ikiye bölmede hedefi sağlayan uç
ust, ama sonucu kuruşa aşağı yuvarlayınca hedefin 3
kuruş altına düşüyordu. Yukarı yuvarlamaya çevrildi; artık bulunan brüt
hedefi her zaman sağlıyor.
Ölçülen örnek: 100.000 TL brütte net gelirin %30 artması için gereken brüt zam %34,0.
5. "Primi aralıkta alma" — mitin sınavı
Yaygın inanış primin aralıkta alınmasının vergisini artırdığı yönünde. Doğru değil. Gelir vergisi kümülatif matrah üzerinden yıllık işlediği için aynı brüt prim hangi ayda ödenirse ödensin yıllık net katkısı aynı çıkıyor.
Araç bunu iddia etmiyor: on iki ayın hepsini ayrı ayrı hesaplayıp tabloda gösteriyor ve satırların hepsi aynı sayıyı veriyor. Bir eşik de var — fark bir kuruşu geçerse arayüz bunu bildiriyor, çünkü SGK tavanının devreye girdiği senaryolarda küçük ama gerçek farklar oluşabiliyor.
Zammın ayı ise yıllık toplamı gerçekten değiştirir; ama bu bir vergi etkisi değil, kaç ay boyunca yüksek maaş alındığıyla ilgilidir. Zammın net karşılık oranı zam ayından bağımsızdır ve bir test bunu doğruluyor.
6. Testler
Çekirdek DOM bilmez; node zam-hesaplama/test.js ile doğrudan
çalıştırılır ve 40 test her yayından önce CI'da koşar.
Testlerin işi bu sayfadaki iddiaları korumak: bordronun motordan geldiği,
normal bölgede net oranın brüt orandan küçük olduğu, prim ayının etkisiz
olduğu ve pazarlık çözümünün tanımı sağladığı.
7. Neyi hesaplamıyor?
- Yalnızca ücret geliri. Kira, serbest meslek, ticari kazanç ve kâr payı kapsam dışı.
- Yan haklar yok. Yemek ve yol yardımının vergi istisnaları, özel sağlık sigortası indirimi, engellilik indirimi modellenmiyor.
- Prim devri yok. SGK'nın, prime esas kazanç tavanını aşan ücret dışı ödemeler için öngördüğü takip eden aylara devir kuralı uygulanmıyor; araç primi tek ayda ödenmiş kabul ediyor.
- Teşvikler varsayılan olarak kapalı. İşveren maliyeti teşviksiz gösteriliyor.
- Yıl içinde işe giriş/çıkış yok. Hesap on iki tam ay varsayar.