tcapelle commited on
Commit
6649697
1 Parent(s): f8b04c1

add comma sep for thousands

Browse files
Files changed (2) hide show
  1. app.py +23 -16
  2. impuestos.py +9 -3
app.py CHANGED
@@ -26,6 +26,12 @@ def aplicar_beneficios(sueldo_bruto):
26
  )
27
  return sueldo_bruto - min(arriendo, TOPES.arriendo) - min(cuidado, TOPES.cuidado)
28
 
 
 
 
 
 
 
29
 
30
  def main() -> None:
31
  st.header("Calcula tu impuesto a la renta :moneybag: :dollar: :bar_chart: con la Reforma Tributaria")
@@ -34,39 +40,40 @@ def main() -> None:
34
  st.write(Path("info.md").read_text())
35
 
36
  sueldo_bruto = st.number_input(
37
- "Sueldo Bruto Mensual", value=1500000, min_value=300000
38
  )
39
 
40
  # calcular nueva base imponible
41
  sueldo_bruto_reforma = aplicar_beneficios(sueldo_bruto)
42
 
43
- st.text(f"Tu sueldo imponible antes de impuestos con la reforma es: {sueldo_bruto_reforma} (incluye los descuentos asociados a los beneficios)")
44
 
45
 
 
 
 
46
 
47
-
48
- col1, col2 = st.columns((0.5, 0.5))
49
  col1.subheader("Tabla de Impuestos Actual")
50
- table = get_table(sueldo_bruto, TRAMOS)
51
- col1.dataframe(table)
52
  total = table["Impuesto"].sum()
53
- col1.markdown(f"### Total Impuesto: \nActualmente pagas **${total}** que representa **({100*(total/sueldo_bruto):.2f}\%)** de tasa efectiva")
54
 
55
  col2.subheader("Tabla de Impuestos Reforma")
56
- table = get_table(sueldo_bruto_reforma, TRAMOS_REFORMA)
57
- col2.dataframe(table)
58
  total_reforma = table["Impuesto"].sum()
59
- explanation = f"### Total Impuesto con Reforma: \nPagarás **${total_reforma}** que representa **({100*(total_reforma/sueldo_bruto):.2f}\%)** de tasa efectiva"
 
 
 
 
 
60
  if total_reforma < total:
61
  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)"
62
  col2.markdown(explanation)
63
 
64
- # results_df = pd.DataFrame(columns=["actual", "reforma"], index=["total impuestos", "tasa efectiva"])
65
- # results_df["actual"] = [total, 100*(total/sueldo_bruto)]
66
- # results_df["reforma"] = [total_reforma, 100*(total_reforma/sueldo_bruto)]
67
- # st.dataframe(results_df.style.highlight_max(axis=1))
68
-
69
- 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 200000 mensual.")
70
  st.plotly_chart(get_curve(0), use_container_width=True)
71
 
72
  if __name__ == "__main__":
 
26
  )
27
  return sueldo_bruto - min(arriendo, TOPES.arriendo) - min(cuidado, TOPES.cuidado)
28
 
29
+ def itanum(x):
30
+ "Format number on roman style"
31
+ return format(x,',d').replace(",",".")
32
+
33
+ def decimal(x):
34
+ return format(x, '.2f').replace(".",",")
35
 
36
  def main() -> None:
37
  st.header("Calcula tu impuesto a la renta :moneybag: :dollar: :bar_chart: con la Reforma Tributaria")
 
40
  st.write(Path("info.md").read_text())
41
 
42
  sueldo_bruto = st.number_input(
43
+ "Sueldo Bruto Mensual", value=1500000, min_value=300000, format="%d",
44
  )
45
 
46
  # calcular nueva base imponible
47
  sueldo_bruto_reforma = aplicar_beneficios(sueldo_bruto)
48
 
49
+ st.markdown(f"Tu sueldo imponible antes de impuestos con la reforma es: {sueldo_bruto_reforma} (incluye los descuentos asociados a los beneficios)")
50
 
51
 
52
+ # tabla de impuestos
53
+ table_section = st.container()
54
+ col1, col2 = table_section.columns((0.5, 0.5))
55
 
 
 
56
  col1.subheader("Tabla de Impuestos Actual")
57
+ table, style = get_table(sueldo_bruto, TRAMOS)
58
+ col1.dataframe(style)
59
  total = table["Impuesto"].sum()
 
60
 
61
  col2.subheader("Tabla de Impuestos Reforma")
62
+ table, style = get_table(sueldo_bruto_reforma, TRAMOS_REFORMA)
63
+ col2.dataframe(style)
64
  total_reforma = table["Impuesto"].sum()
65
+
66
+ # Resultados
67
+ results_section = st.container()
68
+ col1, col2 = results_section.columns((0.5, 0.5))
69
+ col1.markdown(f"### Total Impuesto: \nActualmente pagas **${itanum(total)}** que representa **({decimal(100*(total/sueldo_bruto))}\%)** de tasa efectiva")
70
+ explanation = f"### Total Impuesto con Reforma: \nPagarás **${itanum(total_reforma)}** que representa **({decimal(100*(total_reforma/sueldo_bruto))}\%)** de tasa efectiva"
71
  if total_reforma < total:
72
  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)"
73
  col2.markdown(explanation)
74
 
75
+
76
+ 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.")
 
 
 
 
77
  st.plotly_chart(get_curve(0), use_container_width=True)
78
 
79
  if __name__ == "__main__":
impuestos.py CHANGED
@@ -57,9 +57,15 @@ def get_table(sueldo_bruto, tramos=TRAMOS):
57
  )
58
  df = pd.DataFrame(
59
  data=data,
60
- columns=["Desde", "Hasta", "Tasa", "Monto sujeto a impuesto", "Impuesto"],
61
  )
62
- return df
 
 
 
 
 
 
63
 
64
 
65
  salarios = [450_000, 1000_000, 1_500_000, 2_000_000, 3_000_000, 5_000_000, 8_000_000, 10_000_000, 15_000_000]
@@ -70,4 +76,4 @@ def get_curve(descuentos):
70
  DF_CURVA = pd.DataFrame(columns=["actual", "reforma"], index=salarios)
71
  DF_CURVA["actual"] = [sum(descomponer_en_tramos(s, TRAMOS)[1]) for s in salarios]
72
  DF_CURVA["reforma"] = [sum(descomponer_en_tramos(beneficios(s) , TRAMOS_REFORMA)[1]) for s in salarios]
73
- return px.line(DF_CURVA)
 
57
  )
58
  df = pd.DataFrame(
59
  data=data,
60
+ columns=["Desde", "Hasta", "Tasa", "Monto imponible", "Impuesto"],
61
  )
62
+ style = df.style.format({
63
+ "Desde": "{:,d}",
64
+ "Hasta": "{:,d}",
65
+ "Tasa": "{:.2f}",
66
+ "Monto imponible": "{:,d}",
67
+ "Impuesto": "{:,d}"}, decimal=',', thousands='.')
68
+ return df, style
69
 
70
 
71
  salarios = [450_000, 1000_000, 1_500_000, 2_000_000, 3_000_000, 5_000_000, 8_000_000, 10_000_000, 15_000_000]
 
76
  DF_CURVA = pd.DataFrame(columns=["actual", "reforma"], index=salarios)
77
  DF_CURVA["actual"] = [sum(descomponer_en_tramos(s, TRAMOS)[1]) for s in salarios]
78
  DF_CURVA["reforma"] = [sum(descomponer_en_tramos(beneficios(s) , TRAMOS_REFORMA)[1]) for s in salarios]
79
+ return px.line(DF_CURVA, title="Impuesto con respecto al salario")