Solución

@alexiis-dev·30/5/2026TypeScript
solution.tsTypeScript
const DEFAULT = -1

const LEVEL_MID = 'mid'
const LEVEL_SENIOR = 'senior'

const MID_PORC = 0.10
const SENIOR_PROC = 0.20

const HIGHT_SALARY = 5000
const LOW_SALARY = 2000
const HIGHT_SALARY_PORC = 0.25
const MID_SALARY_PORC = 0.15
const LOW_SALARY_PORC = 0.08

function getBonus(category: string, salary: number) {
  if(category === LEVEL_SENIOR) return salary * SENIOR_PROC
  if(category === LEVEL_MID) return salary * MID_PORC
  return 0
}

function getTaxes(salary: number){
  if(salary > HIGHT_SALARY) return salary * HIGHT_SALARY_PORC
  if(salary > LOW_SALARY) return salary * MID_SALARY_PORC
  return salary * LOW_SALARY_PORC
}

export function calculateMonthlySalary(hours: number, rate: number, category: string): number {
  // Verificar si las horas trabajadas y tarifas son válidas
  if (hours <= 0) return DEFAULT;
  if (rate <= 0) return DEFAULT;

  // Calcular salario bruto multiplicando horas por tarifa
  let grossSalary = hours * rate;

  // Calcular bonificacion
  let bonus = getBonus(category, grossSalary)

  // Sumar salario bruto más bonificación
  let netSalary = grossSalary + bonus;
  let tax = getTaxes(netSalary)

  // Restar impuestos y redondear a dos decimales
  return +(netSalary - tax).toFixed(2);
}
0respuestas
Respuestas

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.