File size: 2,464 Bytes
b60b332
7ac420f
b60b332
 
 
 
355dbd3
7ac420f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
047f76c
7ac420f
b60b332
 
 
 
 
aba1b0b
b60b332
9dde4e2
7ac420f
047f76c
7ac420f
9dde4e2
7ac420f
 
9dde4e2
7ac420f
b60b332
7ac420f
 
b60b332
7ac420f
b60b332
7ac420f
b60b332
7ac420f
b60b332
7ac420f
b60b332
7ac420f
 
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
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=0,
        min_value=0,
        max_value=TOPES.arriendo,
        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,
        max_value=TOPES.cuidado,
        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:")

    with st.expander("Como se usa esta cosa?"):
        st.write(Path("info.md").read_text())

    st.subheader("Ingresa tus datos (click para expandir)")
    sueldo_bruto = st.number_input(
        "Sueldo Bruto Mensual", value=1500000, min_value=300000
    )

    # calcular nueva base imponible
    sueldo_bruto = aplicar_beneficios(sueldo_bruto)

    st.text(f"Tu sueldo imponible antes de impuestos es: {sueldo_bruto}")

    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"Pagaras en Total: ${total}")

    col2.subheader("Tabla de Impuestos Reforma")
    table = get_table(sueldo_bruto, TRAMOS_REFORMA)
    col2.dataframe(table)
    total = table["Impuesto"].sum()
    col2.subheader(f"Con la reforma pagaras en Total: ${total}")


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