Solución

@abrahamjlr
·hace 5hTypeScript
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
Respuestas
0

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.
Markdown