Skip to content

Instantly share code, notes, and snippets.

@alfonsodev
Created January 22, 2023 21:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alfonsodev/42d90c75ba337b3a9f8fb4951dc09c5f to your computer and use it in GitHub Desktop.
Save alfonsodev/42d90c75ba337b3a9f8fb4951dc09c5f to your computer and use it in GitHub Desktop.
calculo IRPF comunidad valenciana pasar la base imponible como argumento en la linea de comandos
const baseImponible = process.argv[2];
const tramosBaseEstado = [
{ hasta: 0, porcentaje: 0 },
{ hasta: 12450, porcentaje: 9.5 },
{ hasta: 20200, porcentaje: 12 },
{ hasta: 35200, porcentaje: 15 },
{ hasta: 60000, porcentaje: 18.5 },
{ hasta: 300000, porcentaje: 18.5 },
{ hasta: 0000000000, porcentaje: 22.5 },
];
const tramosBaseValencia = [
{ base: 0, cuota: 0, resto: 12000, tipo: 9.0 },
{ base: 12000, cuota: 1080, resto: 10000, tipo: 12.0 },
{ base: 22000, cuota: 2280, resto: 10000, tipo: 15.0 },
{ base: 32000, cuota: 3780, resto: 10000, tipo: 17.5 },
{ base: 42000, cuota: 5530, resto: 10000, tipo: 20.0 },
{ base: 52000, cuota: 7530, resto: 10000, tipo: 22.5 },
{ base: 62000, cuota: 9780, resto: 10000, tipo: 25.0 },
{ base: 72000, cuota: 12280, resto: 28000, tipo: 26.5 },
{ base: 100000, cuota: 19700, resto: 50000, tipo: 27.5 },
{ base: 150000, cuota: 33450, resto: 50000, tipo: 28.5 },
{ base: 200000, cuota: 47700, resto: 47700, tipo: 29.5 },
];
function calcularImpuestosEstado(baseImponible) {
let impuesto = 0;
for (let i = 0; i < tramosBaseEstado.length; i++) {
let tramo = tramosBaseEstado[i];
let baseTramo = Math.min(baseImponible, tramo.hasta);
impuesto += (baseTramo * tramo.porcentaje) / 100;
baseImponible -= tramo.hasta;
if (baseImponible <= 0) {
break;
}
}
return impuesto;
}
function calcularImpuestosValencia(baseImponible) {
let impuesto = 0;
for (let i = 0; i < tramosBaseValencia.length; i++) {
let tramo = tramosBaseValencia[i];
let baseTramo = Math.min(baseImponible, tramo.resto);
impuesto += (baseTramo * tramo.tipo) / 100;
baseImponible -= tramo.resto;
if (baseImponible <= 0) {
break;
}
}
return impuesto;
}
const total =
calcularImpuestosValencia(baseImponible) +
calcularImpuestosEstado(baseImponible);
console.log(`Impuestos a pagar ${total}`);
console.log(`Cada trimestre ${total / 4}`);
console.log(`Ingresos netos ${baseImponible - total}`);
console.log(`Pagas un porcentaje total de ${total / (baseImponible / 100)} %`);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment