@dlivr.io/salary-calculator-egypt
Version:
Javascript SDK for calculating Net/Gross salary in Egypt.
37 lines (27 loc) • 1.18 kB
text/typescript
import { calculateSalaryTaxParams } from "./types";
import { laws } from "@/data-source";
import { Bracket } from "@/data-source/types";
import { calculateTax, isSupported } from "@/helpers/utils";
import { LawYear } from "@/types/salary";
const calculateYearlySalaryTax = (lawYear: LawYear, yearlySalary: number) => {
const taxBracket = laws[lawYear].brackets.find(
(item: Bracket): Bracket | boolean => {
return isSupported(item, yearlySalary) ? item : false;
}
) as Bracket;
return calculateTax(taxBracket, yearlySalary);
};
const calculateSalaryTax = ({
grossSalary,
socialInsuranceWorkerShare,
lawYear,
}: calculateSalaryTaxParams) => {
const monthlyTaxExemption = laws[lawYear].exemptionThreshold / 12;
const salaryAfterSocialInsurance = grossSalary - socialInsuranceWorkerShare;
const salaryAfterSocialInsuranceAndExemption =
salaryAfterSocialInsurance - monthlyTaxExemption;
const yearlySalary = salaryAfterSocialInsuranceAndExemption * 12;
const yearlySalaryTax = calculateYearlySalaryTax(lawYear, yearlySalary);
return yearlySalaryTax / 12;
};
export { calculateSalaryTax };