Salario
El salario imponible de una persona se determina a partir del monto que percibe por las horas trabajadas, descontando el aporte previsional para su pensión y la cotización de salud. Al monto resultante se le aplica la siguiente tabla para calcular el Impuesto Único de Segunda Categoría que debe pagar:
Hasta | Tasa | Descontar |
---|---|---|
\(\$680.022\) | Exento | |
\(\$1.511.160\) | \(4\%\) | \(\$27.200,88\) |
\(\$2.518.600\) | \(8\%\) | \(\$87.647,28\) |
\(\$3.526.040\) | \(13.5\%\) | \(\$226.170,28\) |
\(\$4.533.480\) | \(23\%\) | \(\$561.144,08\) |
\(\$6.044.640\) | \(30.4\%\) | \(\$896.621,60\) |
\(\$15.615.320\) | \(35\%\) | \(\$1.174.675,04\) |
y más | \(40\%\) | \(\$1.955.441,04\) |
El descuento de la Isapre corresponde a un \(7\%\) del salario base, mientras que el descuento que hace la AFP corresponde a un \(10\%\) para el ahorro y un \(1,27\%\) para comisión.
El salario base se calcula a partir de las horas trabajadas en el mes. Cada empleado tiene un monto por hora que recibe. Las horas extra (por sobre \(44\)) se le pagan a \(1,5\) veces el monto por hora regular. No se pagan más de \(40\) horas extra mensuales.
Aplique descomposición de problemas para implementar un programa que calcule el salario que recibirá un empleado al término de un mes, indicando el detalle de lo ganado y lo descontado.
Solución
# Calcular base considerando horas extra
def calcular_base(hrs, monto):
if hrs > 44:
normales = 44
extra = hrs - 44
if extra > 40:
extra = 40
else:
normales = hrs
extra = 0
return monto * (normales + extra * 1.5)
# Tabla de impuestos
def calcular_monto_impuestos(imponible):
if imponible < 680022:
return 0
elif imponible < 1511160:
return imponible * 4 / 100 - 27200.88
elif imponible < 2518600:
return imponible * 8 / 100 - 87647.28
elif imponible < 3526040:
return imponible * 13.5 / 100 - 226170.28
elif imponible < 4533480:
return imponible * 23/100 - 561144.08
elif imponible < 6044640:
return imponible * 30.4 / 100 - 896621.60
elif imponible < 15615320:
return imponible * 35 / 100 - 1174675.04
return imponible * 40 / 100 - 1955441.04
# Salud y AFP
def salud(monto):
return monto * 0.07
def afp(monto):
return monto * (0.1 + 0.0127)
# Entrada
monto_por_hora = int(input('Monto por hora: $'))
hrs_trabajadas = int(input('Horas trabajadas: '))
# Calculos
base = int(round(calcular_base(hrs_trabajadas, monto_por_hora)))
impuestos = int(round(calcular_monto_impuestos(base)))
sueldo = int(round(base - impuestos))
# Salida
print("Base: $", base)
print("Impuestos: $", impuestos)
print("Sueldo: $", sueldo)