File size: 2,569 Bytes
b60b332
7ac420f
b60b332
 
 
 
355dbd3
7ac420f
 
 
 
 
 
 
 
7ad934a
7ac420f
 
 
7ad934a
7ac420f
 
 
 
 
047f76c
7ac420f
b60b332
 
99f3690
b60b332
 
aba1b0b
b60b332
7ac420f
047f76c
7ac420f
9dde4e2
7ac420f
613165e
9dde4e2
99f3690
b60b332
7ac420f
 
b60b332
7ac420f
b60b332
f521194
b60b332
7ac420f
613165e
7ac420f
7ad934a
f521194
7ac420f
b60b332
f521194
 
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
from pathlib import Path
from types import SimpleNamespace
import streamlit as st

from impuestos import TRAMOS, TRAMOS_REFORMA, get_table

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 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
    )

    # calcular nueva base imponible
    sueldo_bruto_reforma = aplicar_beneficios(sueldo_bruto)

    st.text(f"Tu sueldo imponible antes de impuestos con la reforma es: {sueldo_bruto_reforma} (incluye los descuentos asociados a los beneficios)")

    col1, col2 = st.columns((0.5, 0.5))
    col1.subheader("Tabla de Impuestos Actual")
    table = get_table(sueldo_bruto, TRAMOS)
    col1.dataframe(table)
    total = table["Impuesto"].sum()
    col1.subheader(f"Total Impuesto: ${total} ({100*(total/sueldo_bruto):.2f}\%)")

    col2.subheader("Tabla de Impuestos Reforma")
    table = get_table(sueldo_bruto_reforma, TRAMOS_REFORMA)
    col2.dataframe(table)
    total_reforma = table["Impuesto"].sum()
    col2.subheader(f"Total Impuesto con Reforma: ${total_reforma} ({(total_reforma/sueldo_bruto):.2f}\%)")


    # st.plotly_chart()

if __name__ == "__main__":
    st.set_page_config(
        "Calculador de impuestos",
        "📊",
        initial_sidebar_state="expanded",
        layout="wide",
    )
    main()