DOĞRU SONUÇ

YANLIŞ SONUÇ

<form class="form-inline" action="javascript:void(0);" onSubmit="hesapla()">
<div style="text-align: center!important;margin-top:15px!important;">
<div class="alert alert-danger" id="uyarimsg" style="display:none"></div>
<div class="tutar_div">
<div>
<label for="IsBaslangicTarihi"><em>*</em> İşe Başlangıç Tarihi:</label>
<input style="width:50%; margin: 5px 5px 5px 0;" type="Date" id="IsBaslangicTarihi"
name="IsBaslangicTarihi" class="iw10" placeholder="Giriniz!" />
</div>
<div>
<label for="zamlifiyat"><em>*</em> İşten Ayrılma Tarihi:</label>
<input style="width:50%; margin: 5px 0px 5px 0;" type="Date" id="IsBitisTarihi"
name="IsBitisTarihi" class="iw10" placeholder="Giriniz!" />
</div>
<div>
<label for="AylikBrutMaas"><em>*</em> Brüt Ücret:</label>
<input style="width:50%; margin: 5px -60px 5px 0;" type="number" step="0.01"
id="AylikBrutMaas" name="AylikBrutMaas" placeholder="Giriniz!" />
</div>
<div>
<label for="EkOdemeler"> Aylık Yardımlar:</label>
<input style="width:50%;margin: 5px -40px 5px 0;" type="number" step="0.01"
id="EkOdemeler" name="EkOdemeler"
placeholder="Yol, yemek vb. aylık yardımların toplamını giriniz." />
</div>
</div>
</div>
<button style="margin-top:15px!important;" type="button"
onclick="return hesapla();">HESAPLA</button>
</form>
<div id="sonuc" style="display: none;">
</div>
<script language="javascript">
function formatTL(num) {
let p = num.toFixed(2).split(".");
num = num.toLocaleString('tr-TR', { style: 'currency', currency: 'TRY' });
num = num.replace("₺", "") + " TL"
return num;
}
function calculateIncomeTaxForSalary(salary, donem) {
let salaryTaxBands = [];
if (donem === 2022) {
salaryTaxBands = [
{ min: 0, max: 32000, rate: 0.15 },
{ min: 32000, max: 70000, rate: 0.2 },
{ min: 70000, max: 250000, rate: 0.27 },
{ min: 250000, max: 880000, rate: 0.35 },
{ min: 880000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2021) {
salaryTaxBands = [
{ min: 0, max: 24000, rate: 0.15 },
{ min: 24000, max: 53000, rate: 0.2 },
{ min: 53000, max: 130000, rate: 0.27 },
{ min: 130000, max: 650000, rate: 0.35 },
{ min: 650000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2020) {
salaryTaxBands = [
{ min: 0, max: 22000, rate: 0.15 },
{ min: 22000, max: 49000, rate: 0.2 },
{ min: 49000, max: 180000, rate: 0.27 },
{ min: 180000, max: 600000, rate: 0.35 },
{ min: 600000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2019) {
salaryTaxBands = [
{ min: 0, max: 18000, rate: 0.15 },
{ min: 18000, max: 40000, rate: 0.2 },
{ min: 40000, max: 98000, rate: 0.27 },
{ min: 98000, max: 500000, rate: 0.35 },
{ min: 500000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2018) {
salaryTaxBands = [
{ min: 0, max: 16000, rate: 0.15 },
{ min: 16000, max: 40000, rate: 0.2 },
{ min: 40000, max: 110000, rate: 0.27 },
{ min: 110000, max: 600000, rate: 0.35 },
{ min: 600000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2017) {
salaryTaxBands = [
{ min: 0, max: 13000, rate: 0.15 },
{ min: 13000, max: 30000, rate: 0.2 },
{ min: 30000, max: 110000, rate: 0.27 },
{ min: 110000, max: 600000, rate: 0.35 },
{ min: 600000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2016) {
salaryTaxBands = [
{ min: 0, max: 12600, rate: 0.15 },
{ min: 12600, max: 30000, rate: 0.2 },
{ min: 30000, max: 110000, rate: 0.27 },
{ min: 110000, max: 600000, rate: 0.35 },
{ min: 600000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2015) {
salaryTaxBands = [
{ min: 0, max: 12000, rate: 0.15 },
{ min: 12000, max: 30000, rate: 0.2 },
{ min: 30000, max: 110000, rate: 0.27 },
{ min: 110000, max: 600000, rate: 0.35 },
{ min: 600000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2014) {
salaryTaxBands = [
{ min: 0, max: 11000, rate: 0.15 },
{ min: 11000, max: 26000, rate: 0.2 },
{ min: 26000, max: 98000, rate: 0.27 },
{ min: 98000, max: 500000, rate: 0.35 },
{ min: 500000, max: Infinity, rate: 0.40 }
];
}
else if (donem === 2013) {
salaryTaxBands = [
{ min: 0, max: 10000, rate: 0.15 },
{ min: 10000, max: 24000, rate: 0.2 },
{ min: 24000, max: 89000, rate: 0.27 },
{ min: 89000, max: Infinity, rate: 0.35 }
];
}
else if (donem === 2012) {
salaryTaxBands = [
{ min: 0, max: 9000, rate: 0.15 },
{ min: 9000, max: 21000, rate: 0.2 },
{ min: 21000, max: 78000, rate: 0.27 },
{ min: 78000, max: Infinity, rate: 0.35 }
];
}
else if (donem === 2011) {
salaryTaxBands = [
{ min: 0, max: 8000, rate: 0.15 },
{ min: 8000, max: 19000, rate: 0.2 },
{ min: 19000, max: 70000, rate: 0.27 },
{ min: 70000, max: Infinity, rate: 0.35 }
];
}
else if (donem === 2010) {
salaryTaxBands = [
{ min: 0, max: 7000, rate: 0.15 },
{ min: 8000, max: 16000, rate: 0.2 },
{ min: 16000, max: 58000, rate: 0.27 },
{ min: 58000, max: Infinity, rate: 0.35 }
];
}
else if (donem === 2009) {
salaryTaxBands = [
{ min: 0, max: 6000, rate: 0.15 },
{ min: 6000, max: 13000, rate: 0.2 },
{ min: 13000, max: 46000, rate: 0.27 },
{ min: 46000, max: Infinity, rate: 0.35 }
];
}
else if (donem === 2008) {
salaryTaxBands = [
{ min: 0, max: 4600, rate: 0.15 },
{ min: 4600, max: 10200, rate: 0.2 },
{ min: 10200, max: 34000, rate: 0.27 },
{ min: 34000, max: Infinity, rate: 0.35 }
];
}
else if (donem === 2007) {
salaryTaxBands = [
{ min: 0, max: 4200, rate: 0.15 },
{ min: 4200, max: 9300, rate: 0.2 },
{ min: 9300, max: 31100, rate: 0.27 },
{ min: 31100, max: Infinity, rate: 0.35 }
];
}
else {
salaryTaxBands = [
{ min: 0, max: 70000, rate: 0.15 },
{ min: 70000, max: 150000, rate: 0.2 },
{ min: 150000, max: 550000, rate: 0.27 },
{ min: 550000, max: 1900000, rate: 0.35 },
{ min: 1900000, max: Infinity, rate: 0.4 }
];
}
let taxableIncome = salary;
let taxAmount = 0;
let taxRate = 0;
let yuzde = 0;
let yuzdekac = 0;
for (const band of salaryTaxBands) {
if (taxableIncome <= 0) {
break;
}
const incomeInBand = Math.min(taxableIncome, band.max - band.min);
const taxInBand = incomeInBand * band.rate;
yuzdekac = band.rate;
taxAmount += taxInBand;
taxRate = taxAmount / salary;
yuzde = (taxRate * 100).toLocaleString('tr-TR', { style: 'decimal', minimumFractionDigits: 2 });
taxableIncome -= incomeInBand;
}
const netIncome = salary - taxAmount;
return {
taxableIncome: salary,
incomeTax: taxAmount,
netIncome: netIncome,
incomeTaxRate: yuzde,
kac: yuzdekac
};
}
const data = {
"1/2023": 19982.83,
"7/2022": 15371.40,
"1/2022": 10848.59,
"7/2021": 8284.51,
"1/2021": 7638.96,
"7/2020": 7117.17,
"1/2020": 6730.15,
"7/2019": 6379.86,
"1/2019": 6017.60,
"7/2018": 5434.42,
"1/2018": 5001.76,
"7/2017": 4732.48,
"1/2017": 4426.16,
"7/2016": 4297.21,
"1/2016": 4092.53,
"7/2015": 3709.98,
"1/2015": 3541.37,
"1/2014": 3438.22,
"7/2013": 3254.44,
"1/2013": 3129.25,
"7/2012": 3033.98,
"1/2012": 2917.27,
"1/2011": 2623.23,
"7/2010": 2517.01,
"1/2010": 2427.04,
"7/2009": 2365.16,
"1/2009": 2260.05,
"7/2008": 2173.18,
"1/2008": 2087.92,
"7/2007": 2030.19,
"1/2007": 1960.69,
"7/2006": 1857.44,
"1/2006": 1770.63,
"7/2005": 1727.15,
"1/2005": 1648.90
};
function tabanfiyat(ay, yil) {
ay = ay + 1;
for (let tarih in data) {
console.log(tarih);
const [veriAy, veriYil] = tarih.split('/');
if (veriYil == yil) {
if (veriAy >= 1 && veriAy < 7 && ay >= 1 && ay <= 12) {
console.log(veriAy);
return data[tarih];
} else if (veriAy >= 7 && veriAy <= 12 && ay >= 7 && ay <= 12) {
console.log(veriAy);
return data[tarih];
}
}
}
}
function hesapla() {
var IsBaslangicTarihi = new Date(document.getElementById("IsBaslangicTarihi").value);
var IsBitisTarihi = new Date(document.getElementById("IsBitisTarihi").value);
let AylikBrutMaas = document.getElementById("AylikBrutMaas").value;
let EkOdemeler = 0;
if (document.getElementById("EkOdemeler").value > 0) {
EkOdemeler = document.getElementById("EkOdemeler").value;
}
if (AylikBrutMaas > 0) {
if (IsBaslangicTarihi && IsBitisTarihi && AylikBrutMaas) {
AylikBrutMaas = parseFloat(AylikBrutMaas) + parseFloat(EkOdemeler);
let AylikBrutMaasx = AylikBrutMaas;
var fark = IsBitisTarihi.getTime() - IsBaslangicTarihi.getTime();
var ToplamGun = fark / (1000 * 60 * 60 * 24) + 1;
if (parseInt(ToplamGun) >= 365) {
let KıdemTazminati = 0;
if (ToplamGun < 365) {
KıdemTazminati = 0;
}
let yiltabanfiyat = tabanfiyat(IsBitisTarihi.getMonth(), IsBitisTarihi.getFullYear());
if (AylikBrutMaas > yiltabanfiyat) {
AylikBrutMaas = yiltabanfiyat;
}
let KidemTazminatiTutariBrut = 0;
if (ToplamGun < 365) {
KidemTazminatiTutariBrut = 0;
}
else if (ToplamGun >= 365) {
let yil = ToplamGun / 365;
KidemTazminatiTutariBrut = (AylikBrutMaas / 30) * 30 * yil;
}
let DamgaVergisi = 0;
if (ToplamGun < 365) {
DamgaVergisi = 0;
}
if (ToplamGun >= 365) {
DamgaVergisi = (((ToplamGun / 365) * AylikBrutMaas) * 0.00759);
}
let TazminatIhbarGunu = 0;
if (ToplamGun < 180) {
TazminatIhbarGunu = 14;
}
else if (ToplamGun >= 180 && ToplamGun < 545) {
TazminatIhbarGunu = 28;
}
else if (ToplamGun >= 545 && ToplamGun < 1095) {
TazminatIhbarGunu = 42;
}
else if (ToplamGun >= 1095) {
TazminatIhbarGunu = 56;
}
let NetOdenecekKidemTazminatiTutari = KidemTazminatiTutariBrut - DamgaVergisi;
let NetOdenecekIhbarTazminati = (AylikBrutMaasx / 30) * TazminatIhbarGunu;
const salaryTax = calculateIncomeTaxForSalary(NetOdenecekIhbarTazminati, IsBitisTarihi.getFullYear());
let IhbarTazminatiGelirVergisiKesintisi = salaryTax.netIncome * salaryTax.kac;
let IhbarTazminatiDamgaVergisiKesintisi = salaryTax.netIncome * 0.00759;
let NetIhbarTazminati = salaryTax.netIncome - (IhbarTazminatiGelirVergisiKesintisi + IhbarTazminatiDamgaVergisiKesintisi);
let ToplamOdenecek = NetIhbarTazminati + NetOdenecekKidemTazminatiTutari;
if (IsBaslangicTarihi >= IsBitisTarihi) {
document.getElementById("uyarimsg").style.display = "block";
document.getElementById("uyarimsg").innerText = "Başlangıç Tarihi Bitiş Tarihine Eşit veya Bitiş Tarihinden Büyük Olamaz";
} else {
document.getElementById("sonuc").style.display = "block";
document.getElementById("uyarimsg").style.display = "none";
document.getElementById("sonuc").innerHTML = `
<legend>Tazminat Hesaplama Sonuçları</legend>
<b style="font-weight: normal;">Hesaplamaya Esas Gün: </b> ${ToplamGun} Gün (İşten ayrılma tarihi dahil edilmiştir)<br>
<b style="font-weight: normal;">Kıdem Tazminatına Esas Ücret: </b> ${formatTL(AylikBrutMaas)}<br>
<b style="font-weight: normal;">Kıdem Tazminatı Tutarı (Brüt): </b> ${formatTL(KidemTazminatiTutariBrut)}<br>
<b style="font-weight: normal;">Damga Vergisi(0.00759): </b> ${formatTL(DamgaVergisi)}<br>
<b style="font-weight: normal;">Ödenecek Kıdem Tazminatı (Net): </b> ${formatTL(NetOdenecekKidemTazminatiTutari)}<br>
<b style="font-weight: normal;">İhbar Günü: </b> ${TazminatIhbarGunu} Gün<br>
<b style="font-weight: normal;">İhbar Tazminatına Esas Ücret: </b> ${formatTL(AylikBrutMaasx)}<br>
<b style="font-weight: normal;">İhbar Tazminatı (Brüt): </b> ${formatTL(NetOdenecekIhbarTazminati)}<br>
<b style="font-weight: normal;">Gelir Vergisi Kesintisi: </b> ${formatTL(IhbarTazminatiGelirVergisiKesintisi)}<br>
<b style="font-weight: normal;">Damga Vergisi Kesintisi (%0,759): </b> ${formatTL(IhbarTazminatiDamgaVergisiKesintisi)}<br>
<b style="font-weight: normal;">Ödenecek İhbar Tazminatı (Net): </b> ${formatTL(NetIhbarTazminati)}<br>
<b style="font-weight: normal;">Toplam Tazminat (Brüt): </b> ${formatTL(KidemTazminatiTutariBrut + NetOdenecekIhbarTazminati)}<br>
<b style="font-weight: normal;">Ödenecek Toplam Tazminat (Net): </b> ${formatTL(ToplamOdenecek)}<br>`;
}
}
else {
document.getElementById("uyarimsg").style.display = "block";
document.getElementById("uyarimsg").innerText = "Tarih aralığı 1 yıl veya bir yıldan büyük olmalı. Sizin seçtiğiniz gün sayısı " + ToplamGun + " gün";
}
}
else {
document.getElementById("uyarimsg").style.display = "block";
document.getElementById("uyarimsg").innerText = "Lütfen tüm alanları doldurun";
}
} else {
document.getElementById("uyarimsg").style.display = "block";
document.getElementById("uyarimsg").innerText = "Aylık Brüt Maaş 0 dan büyük olmalıdır";
}
}
</script> şimdiden uğraşıp yapmaya çalışan herkese teşekkür ederim