Spaces:
Runtime error
Runtime error
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 sujeto a impuesto", "Impuesto"], | |
) | |
return df | |
salarios = [450_000, 1000_000, 1_500_000, 2_000_000, 3_000_000, 5_000_000, 8_000_000, 10_000_000, 15_000_000] | |
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) |