Spaces:
Runtime error
Runtime error
File size: 2,210 Bytes
b60b332 ba1a530 b60b332 7ac420f b60b332 7ac420f b60b332 7ac420f b60b332 7ac420f b60b332 7ac420f b60b332 7ac420f b82068f 7ac420f fd04087 7ac420f b82068f 6649697 fd04087 b82068f 6649697 ba1a530 b82068f c3edc91 b82068f ba1a530 b82068f ba1a530 b82068f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
import pandas as pd
import plotly.express as px
# Valores de Junio 2022
TRAMOS = {
777000: 0,
1727000: 0.04,
2878000: 0.08,
4029000: 0.135,
5180000: 0.23,
6906000: 0.304,
17842000: 0.35,
99999999: 0.4,
}
TRAMOS_REFORMA = {
777000: 0,
1727000: 0.04,
2878000: 0.08,
4030000: 0.135,
5242320: 0.26,
6331000: 0.35,
8057000: 0.40,
99999999: 0.43,
}
def descomponer_en_tramos(sueldo_bruto, tramos=TRAMOS):
"""
Descompone un sueldo bruto en tramos de impuesto
"""
descomp = []
impuestos = []
tramo_anterior = 0
for tramo, descuento in tramos.items():
delta = min(sueldo_bruto, tramo) - tramo_anterior
if delta > 0:
descomp.append(delta)
impuestos.append(int(delta * descuento))
tramo_anterior = tramo
return descomp, impuestos
def get_table(sueldo_bruto, tramos=TRAMOS):
"""
Tabla de Impuestos por tramo
"""
_tramos = [0] + list(tramos.keys())
tasas = tramos.values()
data = list(
zip(
_tramos[:-1],
_tramos[1:],
tasas,
*descomponer_en_tramos(sueldo_bruto, tramos),
)
)
df = pd.DataFrame(
data=data,
columns=["Desde", "Hasta", "Tasa", "Monto", "Impuesto"],
)
style = df.style.format(
{
"Desde": "{:,d}",
"Hasta": "{:,d}",
"Tasa": "{:.2f}",
"Monto": "{:,d}",
"Impuesto": "{:,d}",
},
decimal=",",
thousands=".",
)
return df, style
salarios = [
500_000,
750_000,
] + [1_000_000 * i for i in range(20)]
def get_curve(descuentos):
def beneficios(s):
return max(s - descuentos, 0)
DF_CURVA = pd.DataFrame(columns=["actual", "reforma"], index=salarios)
DF_CURVA["actual"] = [sum(descomponer_en_tramos(s, TRAMOS)[1]) for s in salarios]
DF_CURVA["reforma"] = [
sum(descomponer_en_tramos(beneficios(s), TRAMOS_REFORMA)[1]) for s in salarios
]
return px.line(
DF_CURVA,
title="Impuesto con respecto al salario",
labels={"value": "Impuesto a pagar", "index": "Renta mensual"},
)
|