JSFiddle - React, Tailwind, and code Playground
by Felipe Alfaro
HTML
<input type="number" oninput="calc(this)">
<h1 id="result"></h1>
JavaScript
const tiposEmpresa = {
pequena: {
grati: 1,
cts: 0
},
medianaGrande: {
grati: 2,
cts: 1
}
};
const tramosRentasImponibles = [
{uitLimit: 7, cost: 0},
{uitLimit: 5, cost: 0.08},
{uitLimit: 15, cost: 0.14},
{uitLimit: 15, cost: 0.17},
{uitLimit: 10, cost: 0.2},
{uitLimit: 9999, cost: 0.3}
];
// entrada
var empresa = tiposEmpresa.medianaGrande,
uit = 4150,
SM = 3500;
// calculo
var sueldos = 12 + empresa.cts + empresa.grati,
SA = SM * sueldos,
tramosUIT = [],
tramosUITDesc = [],
SAFinal = SA;
for (var i = 0; i < tramosRentasImponibles.length; i++) {
let montoTramo = uit * tramosRentasImponibles[i].uitLimit;
if (SAFinal > montoTramo) {
tramosUIT.push(montoTramo);
SAFinal = SAFinal - montoTramo;
}
else if (SAFinal > 0) {
tramosUIT.push(SAFinal);
break;
}
}
SAFinal = 0;
for (i in tramosUIT) {
tramosUITDesc.push(tramosUIT[i] - (tramosUIT[i] * tramosRentasImponibles[i].cost));
SAFinal += tramosUITDesc[i];
}
//console.log(SA, tramosUIT);
console.clear();
console.log(SA, tramosUIT, (SA / sueldos));
console.log(SAFinal, tramosUITDesc, (SAFinal / sueldos));