Spaces:
Sleeping
Sleeping
def calculate_monthly_tax(monthly_income): | |
annual_income = monthly_income * 12 | |
tax_brackets = [ | |
(0, 600000, 0), | |
(600000, 1200000, 0.05), | |
(1200000, 2200000, 0.15), | |
(2200000, 3200000, 0.25), | |
(3200000, 4100000, 0.30), | |
(4100000, float("inf"), 0.35), | |
] | |
total_tax = 0 | |
remaining_income = annual_income | |
for lower, upper, rate in tax_brackets: | |
if remaining_income <= 0: | |
break | |
taxable_amount = min(remaining_income, upper - lower) | |
tax = taxable_amount * rate | |
total_tax += tax | |
remaining_income -= taxable_amount | |
monthly_tax = total_tax / 12 | |
return round(monthly_tax, 2) | |
def calculate_net_salary(gross_salary): | |
return gross_salary - calculate_monthly_tax(gross_salary) | |
def calculated_initial_desired_net( | |
current_salary, desired_increment, daily_cost_of_travel, physical_days_per_week | |
): | |
return (current_salary + current_salary * desired_increment) + ( | |
daily_cost_of_travel * physical_days_per_week * 4.5 | |
) | |
def calculate_additional_amount(initial_desired_net): | |
gross_salary = initial_desired_net | |
max_iterations = 100 | |
for _ in range(max_iterations): | |
net_salary = calculate_net_salary(gross_salary) | |
if abs(net_salary - initial_desired_net) < 0.01: | |
break | |
gross_salary += initial_desired_net - net_salary | |
additional_amount = gross_salary - initial_desired_net | |
return { | |
"initial_desired_net": round(initial_desired_net, 2), | |
"gross_salary_needed": round(gross_salary, 2), | |
"additional_amount": round(additional_amount, 2), | |
"tax": round(calculate_monthly_tax(gross_salary), 2), | |
"final_net_salary": round(calculate_net_salary(gross_salary), 2), | |
} | |