File size: 2,465 Bytes
b60b332
7ac420f
b60b332
 
 
 
7ac420f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b60b332
 
 
 
 
aba1b0b
b60b332
9dde4e2
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=4500000, 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 - max(arriendo, TOPES.arriendo) - max(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=1800000, 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()