tcapelle's picture
styling
c3edc91
raw
history blame contribute delete
No virus
3.81 kB
from pathlib import Path
from types import SimpleNamespace
import streamlit as st
import pandas as pd
from impuestos import TRAMOS, TRAMOS_REFORMA, get_table, get_curve
TOPES = SimpleNamespace(arriendo=450000, cuidado=550000)
def aplicar_beneficios(sueldo_bruto):
"Referencias de: https://chocale.cl/2022/07/reforma-tributaria-gobierno-claves-proyecto-impuestos/"
sb = st.sidebar
sb.header("Beneficios tributarios")
arriendo = sb.number_input(
"Gastos de arriendo",
value=450000,
min_value=0,
help="Se creará una exención que permitirá deducir de la base imponible del Impuesto Global Complementario los gastos de arriendo, con un tope de $450.000 mensuales",
)
# creditos = sb.checkbox("Tienes créditos?", value=False)
cuidado = sb.number_input(
"Tienes gastos asociados al cuidado de un familiar?",
min_value=0,
help="Se podrá deducir de la base imponible del Impuesto Global Complementario aquellos gastos que estén relacionados al cuidado de personas menores de dos años, o de personas con grados de dependencia severa. El tope será de $550.000 al mes.",
)
return sueldo_bruto - min(arriendo, TOPES.arriendo) - min(cuidado, TOPES.cuidado)
def itanum(x):
"Format number on roman style"
return format(x, ",d").replace(",", ".")
def decimal(x):
return format(x, ".2f").replace(".", ",")
def main() -> None:
st.header(
"Calcula tu impuesto a la renta :moneybag: :dollar: :bar_chart: con la Reforma Tributaria"
)
with st.expander("Como se usa esta cosa?"):
st.write(Path("info.md").read_text())
sueldo_bruto = st.number_input(
"Sueldo Bruto Mensual",
value=1500000,
min_value=300000,
format="%d",
)
# calcular nueva base imponible
sueldo_bruto_reforma = aplicar_beneficios(sueldo_bruto)
st.markdown(
f"Tu sueldo imponible antes de impuestos con la reforma es: {sueldo_bruto_reforma} (incluye los descuentos asociados a los beneficios)"
)
# tabla de impuestos
table_section = st.container()
col1, col2 = table_section.columns((0.5, 0.5))
col1.subheader("Tabla de Impuestos Actual")
table, style = get_table(sueldo_bruto, TRAMOS)
col1.dataframe(style)
total = table["Impuesto"].sum()
col2.subheader("Tabla de Impuestos Reforma")
table, style = get_table(sueldo_bruto_reforma, TRAMOS_REFORMA)
col2.dataframe(style)
total_reforma = table["Impuesto"].sum()
# Resultados
st.markdown("---")
results_section = st.container()
col1, col2 = results_section.columns((0.5, 0.5))
col1.markdown(
f"### Total Impuesto: \nActualmente pagas **${itanum(total)}** que representa **({decimal(100*(total/sueldo_bruto))}\%)** de tasa efectiva"
)
explanation = f"### Total Impuesto con Reforma: \nPagarás **${itanum(total_reforma)}** que representa **({decimal(100*(total_reforma/sueldo_bruto))}\%)** de tasa efectiva"
if total_reforma < total:
explanation += " (Pagas menos que antes dado que estas beneficiando del descuento propocinado por los beneficios tributarios de arriendo y/o cuidado. Tu monto imponible es mas bajo que antes)"
col2.markdown(explanation)
st.markdown("---")
st.markdown(
"### Objectivo de la reforma \nEn el siguiente grafico se ve claramente que la reforma empieza a tener efecto a partir de los 4 millones (pero muy lentamente 😱). Por ejemplo con 8 millones mensuales la diferencia es solo de $200.000 mensual."
)
st.plotly_chart(get_curve(0), use_container_width=True)
if __name__ == "__main__":
st.set_page_config(
"Calculador de impuestos",
"📊",
initial_sidebar_state="expanded",
layout="wide",
)
main()