Solución
solution.tsTypeScript
from typing import Union
BONUS_SENIOR: float = 0.20
BONUS_MID: float = 0.10
BONUS_JUNIOR: float = 0.00
TAX_HIGH_THRESHOLD: int = 5000
TAX_MID_THRESHOLD: int = 2000
TAX_RATE_HIGH: float = 0.25
TAX_RATE_MID: float = 0.15
TAX_RATE_LOW: float = 0.08
INVALID_INPUT_SIGNAL = -1
def calculate_gross_salary(hours_worked: float, hourly_rate: float) -> float:
gross_salary: float = hours_worked * hourly_rate
return gross_salary
def get_category_bonus(gross_salary: float, category: str) -> float:
category: str = category.lower()
if category == "senior":
return gross_salary * BONUS_SENIOR
if category == "mid":
return gross_salary * BONUS_MID
return gross_salary * BONUS_JUNIOR
def calculate_tax(total_income: float) -> float:
if total_income > TAX_HIGH_THRESHOLD:
return total_income * TAX_RATE_HIGH
if total_income > TAX_MID_THRESHOLD:
return total_income * TAX_RATE_MID
return total_income * TAX_RATE_LOW
def calculate_monthly_salary(hours_worked: float, hourly_rate: float, category: str) -> Union[float, int]:
if hours_worked <= 0 or hourly_rate <= 0:
return INVALID_INPUT_SIGNAL
gross_salary: float = calculate_gross_salary(hours_worked, hourly_rate)
bonus: float = get_category_bonus(gross_salary, category)
total_pre_tax: float = gross_salary + bonus
tax_deduction: float = calculate_tax(total_pre_tax)
net_salary: float = total_pre_tax - tax_deduction
return round(net_salary, 2)
__all__ = ["calculate_monthly_salary"]0respuestas