Created
January 22, 2023 21:19
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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