Spaces:
Runtime error
Runtime error
File size: 3,806 Bytes
b60b332 7ac420f b60b332 c7d2e82 b60b332 ba1a530 b60b332 355dbd3 7ac420f 7ad934a 7ac420f 7ad934a 7ac420f 047f76c 7ac420f b82068f 6649697 b82068f 6649697 b82068f b60b332 b82068f b60b332 aba1b0b b60b332 7ac420f b82068f 7ac420f 9dde4e2 7ac420f 613165e 9dde4e2 b82068f c7d2e82 6649697 b82068f 7ac420f 6649697 b60b332 7ac420f 6649697 7ad934a b82068f 6649697 c3edc91 6649697 b82068f 6649697 c7d2e82 c3edc91 7ac420f b82068f ba1a530 f521194 b82068f b60b332 7ac420f |
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 97 98 99 100 101 102 |
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()
|