payroll-rules-india 2.10.1 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -0
- package/dist/index.js +6 -0
- package/dist/rules/fy2024_2025/acChargesRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/acChargesRules.js +10 -0
- package/dist/rules/fy2024_2025/additionalAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/additionalAllowanceRules.js +12 -0
- package/dist/rules/fy2024_2025/basicRules.d.ts +5 -0
- package/dist/rules/fy2024_2025/basicRules.js +65 -0
- package/dist/rules/fy2024_2025/bonusRules.d.ts +3 -0
- package/dist/rules/fy2024_2025/bonusRules.js +23 -0
- package/dist/rules/fy2024_2025/conveyanceAllowanceRules.d.ts +6 -0
- package/dist/rules/fy2024_2025/conveyanceAllowanceRules.js +59 -0
- package/dist/rules/fy2024_2025/dearnessAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/dearnessAllowanceRules.js +11 -0
- package/dist/rules/fy2024_2025/earnedleaveRules.d.ts +3 -0
- package/dist/rules/fy2024_2025/earnedleaveRules.js +23 -0
- package/dist/rules/fy2024_2025/emergencyAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/emergencyAllowanceRules.js +12 -0
- package/dist/rules/fy2024_2025/employerEsiRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/employerEsiRules.js +11 -0
- package/dist/rules/fy2024_2025/employerPfRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/employerPfRules.js +11 -0
- package/dist/rules/fy2024_2025/esiRules.d.ts +6 -0
- package/dist/rules/fy2024_2025/esiRules.js +54 -0
- package/dist/rules/fy2024_2025/extraBasicRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/extraBasicRules.js +11 -0
- package/dist/rules/fy2024_2025/fuelAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/fuelAllowanceRules.js +12 -0
- package/dist/rules/fy2024_2025/generalAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/generalAllowanceRules.js +12 -0
- package/dist/rules/fy2024_2025/geyserAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/geyserAllowanceRules.js +11 -0
- package/dist/rules/fy2024_2025/hraRules.d.ts +8 -0
- package/dist/rules/fy2024_2025/hraRules.js +82 -0
- package/dist/rules/fy2024_2025/incomeTaxRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/incomeTaxRules.js +15 -0
- package/dist/rules/fy2024_2025/index.d.ts +38 -0
- package/dist/rules/fy2024_2025/index.js +38 -0
- package/dist/rules/fy2024_2025/jaggeryAllowanceRule.d.ts +2 -0
- package/dist/rules/fy2024_2025/jaggeryAllowanceRule.js +10 -0
- package/dist/rules/fy2024_2025/leaveAllowanceRules.d.ts +3 -0
- package/dist/rules/fy2024_2025/leaveAllowanceRules.js +24 -0
- package/dist/rules/fy2024_2025/localAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/localAllowanceRules.js +11 -0
- package/dist/rules/fy2024_2025/medicalAllowanceRules.d.ts +3 -0
- package/dist/rules/fy2024_2025/medicalAllowanceRules.js +24 -0
- package/dist/rules/fy2024_2025/mobileAllowanceRules.d.ts +7 -0
- package/dist/rules/fy2024_2025/mobileAllowanceRules.js +68 -0
- package/dist/rules/fy2024_2025/nationalHolidayRules.d.ts +6 -0
- package/dist/rules/fy2024_2025/nationalHolidayRules.js +60 -0
- package/dist/rules/fy2024_2025/optionalHolidayRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/optionalHolidayRules.js +12 -0
- package/dist/rules/fy2024_2025/otherAllowanceRules.d.ts +4 -0
- package/dist/rules/fy2024_2025/otherAllowanceRules.js +35 -0
- package/dist/rules/fy2024_2025/otherDeductionsRule.d.ts +2 -0
- package/dist/rules/fy2024_2025/otherDeductionsRule.js +11 -0
- package/dist/rules/fy2024_2025/otherPaidHolidayRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/otherPaidHolidayRules.js +12 -0
- package/dist/rules/fy2024_2025/overTimesRules.d.ts +3 -0
- package/dist/rules/fy2024_2025/overTimesRules.js +20 -0
- package/dist/rules/fy2024_2025/pfRules.d.ts +4 -0
- package/dist/rules/fy2024_2025/pfRules.js +34 -0
- package/dist/rules/fy2024_2025/profTaxRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/profTaxRules.js +11 -0
- package/dist/rules/fy2024_2025/professionTaxrules.d.ts +2 -0
- package/dist/rules/fy2024_2025/professionTaxrules.js +10 -0
- package/dist/rules/fy2024_2025/quarterRentRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/quarterRentRules.js +10 -0
- package/dist/rules/fy2024_2025/retentionBonusRules.d.ts +7 -0
- package/dist/rules/fy2024_2025/retentionBonusRules.js +69 -0
- package/dist/rules/fy2024_2025/retrenchmentRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/retrenchmentRules.js +12 -0
- package/dist/rules/fy2024_2025/rfbRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/rfbRules.js +11 -0
- package/dist/rules/fy2024_2025/safetyAllowanceRules.d.ts +4 -0
- package/dist/rules/fy2024_2025/safetyAllowanceRules.js +32 -0
- package/dist/rules/fy2024_2025/shiftAllowanceRules.d.ts +5 -0
- package/dist/rules/fy2024_2025/shiftAllowanceRules.js +44 -0
- package/dist/rules/fy2024_2025/specialAllowanceRules.d.ts +3 -0
- package/dist/rules/fy2024_2025/specialAllowanceRules.js +22 -0
- package/dist/rules/fy2024_2025/teaAllowanceRules.d.ts +2 -0
- package/dist/rules/fy2024_2025/teaAllowanceRules.js +12 -0
- package/dist/rules/fy2024_2025/uniformAllowanceRules.d.ts +6 -0
- package/dist/rules/fy2024_2025/uniformAllowanceRules.js +58 -0
- package/dist/rules/fy2024_2025/washingAllowanceRules.d.ts +11 -0
- package/dist/rules/fy2024_2025/washingAllowanceRules.js +105 -0
- package/dist/rules/index.d.ts +5 -0
- package/dist/rules/index.js +4 -0
- package/dist/utils/ruleEvaluator.d.ts +2 -0
- package/dist/utils/ruleEvaluator.js +32 -0
- package/dist/utils/types.d.ts +44 -0
- package/dist/utils/types.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const jaggeryAllowanceRule = {
|
|
2
|
+
ruleCode: "JAGGERY_ALLOWANCE",
|
|
3
|
+
name: "Jaggery Allowance",
|
|
4
|
+
category: "Earning",
|
|
5
|
+
type: "Custom",
|
|
6
|
+
version: "FY2024-2025",
|
|
7
|
+
description: "Jaggery allowance calculated at Rs.5 per payable day.",
|
|
8
|
+
condition: "payableDays > 0",
|
|
9
|
+
monthlyFormula: "round(payableDays * 5, 0)",
|
|
10
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// LEAVE: Basic * 5%
|
|
2
|
+
export const leaveBasic5Rule = {
|
|
3
|
+
ruleCode: "LEAVE_BASIC_5",
|
|
4
|
+
name: "Leave Allowance - 5% of Basic",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Leave Allowance = Basic * 5%",
|
|
9
|
+
condition: "basic > 0",
|
|
10
|
+
monthlyFormula: "round(basic * 0.05, 2)",
|
|
11
|
+
annualFormula: "round(basic * 0.05 * 12, 2)",
|
|
12
|
+
};
|
|
13
|
+
// LEAVE: Basic * 4.8%
|
|
14
|
+
export const leaveBasic4_8Rule = {
|
|
15
|
+
ruleCode: "LEAVE_BASIC_4_8",
|
|
16
|
+
name: "Leave Allowance - 4.8% of Basic",
|
|
17
|
+
category: "Earning",
|
|
18
|
+
type: "Custom",
|
|
19
|
+
version: "FY2024-2025",
|
|
20
|
+
description: "Leave Allowance = Basic * 4.8%",
|
|
21
|
+
condition: "basic > 0",
|
|
22
|
+
monthlyFormula: "round(basic * 0.048, 2)",
|
|
23
|
+
annualFormula: "round(basic * 0.048 * 12, 2)",
|
|
24
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const localAllowanceRule = {
|
|
2
|
+
ruleCode: "LOCAL_ALLOWANCE",
|
|
3
|
+
name: "Local Allowance",
|
|
4
|
+
category: "Earning",
|
|
5
|
+
type: "Custom",
|
|
6
|
+
version: "FY2024-2025",
|
|
7
|
+
description: "Local allowance calculated on a pro-rata basis at Rs.1800 per month divided by 26 working days.",
|
|
8
|
+
condition: "payableDays > 0",
|
|
9
|
+
monthlyFormula: "round((1800 / 26) * payableDays, 0)",
|
|
10
|
+
annualFormula: "round(((1800 / 26) * payableDays) * 12, 0)",
|
|
11
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Medical Allowance: (1250 / no of working days in month) * payable days
|
|
2
|
+
export const medicalFixed1250Rule = {
|
|
3
|
+
ruleCode: "MEDICAL_FIXED_1250",
|
|
4
|
+
name: "Medical Allowance - Fixed ₹1250",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Medical Allowance = (1250 / no of working days in month) * payable days",
|
|
9
|
+
condition: "workingDaysInMonth > 0 && payableDays > 0",
|
|
10
|
+
monthlyFormula: "round((1250 / workingDaysInMonth) * payableDays, 2)",
|
|
11
|
+
annualFormula: "round(((1250 / workingDaysInMonth) * payableDays) * 12, 2)",
|
|
12
|
+
};
|
|
13
|
+
// Medical Allowance: grossEarnings * 6.67%
|
|
14
|
+
export const medicalGrossEarningsRule = {
|
|
15
|
+
ruleCode: "MEDICAL_GROSS_6_67",
|
|
16
|
+
name: "Medical Allowance - 6.67% of Gross Earnings",
|
|
17
|
+
category: "Earning",
|
|
18
|
+
type: "Custom",
|
|
19
|
+
version: "FY2024-2025",
|
|
20
|
+
description: "Medical Allowance = grossEarnings * 6.67%",
|
|
21
|
+
condition: "grossEarnings > 0",
|
|
22
|
+
monthlyFormula: "round(grossEarnings * 0.0667, 2)",
|
|
23
|
+
annualFormula: "round(grossEarnings * 0.0667 * 12, 2)",
|
|
24
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Rule } from "../../utils/types";
|
|
2
|
+
export declare const mobileAllowanceRule: Rule;
|
|
3
|
+
export declare const mobileAllowance500Rule: Rule;
|
|
4
|
+
export declare const mobileAllowanceRuleTierB: Rule;
|
|
5
|
+
export declare const mobileAllowanceMonthlyProratedRule: Rule;
|
|
6
|
+
export declare const mobileAllowaceTierC: Rule;
|
|
7
|
+
export declare const mobileAllowaceTierD: Rule;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Mobile Allowance: 10 rupee per day * worked days
|
|
2
|
+
export const mobileAllowanceRule = {
|
|
3
|
+
ruleCode: "MOBILE_ALLOWANCE",
|
|
4
|
+
name: "Mobile Allowance",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Mobile Allowance = 10 rupee per day * worked days",
|
|
9
|
+
condition: "payableDays > 0",
|
|
10
|
+
monthlyFormula: "round(10 * payableDays, 2)",
|
|
11
|
+
annualFormula: "round(10 * payableDays * 12, 2)",
|
|
12
|
+
};
|
|
13
|
+
// Mobile Allowance: 500 / no. of working days * worked days
|
|
14
|
+
export const mobileAllowance500Rule = {
|
|
15
|
+
ruleCode: "MOBILE_ALLOWANCE_500",
|
|
16
|
+
name: "Mobile Allowance - ₹500 P.M",
|
|
17
|
+
category: "Earning",
|
|
18
|
+
type: "Custom",
|
|
19
|
+
version: "FY2024-2025",
|
|
20
|
+
description: "Mobile Allowance @ 500/- P.M = 500 / no. of working days * worked days",
|
|
21
|
+
condition: "workingDaysInMonth > 0 && payableDays > 0",
|
|
22
|
+
monthlyFormula: "round((500 / workingDaysInMonth) * payableDays, 2)",
|
|
23
|
+
annualFormula: "round(((500 / workingDaysInMonth) * payableDays) * 12, 2)",
|
|
24
|
+
};
|
|
25
|
+
export const mobileAllowanceRuleTierB = {
|
|
26
|
+
ruleCode: "MOBILE_ALLOWANCE_TIER_B",
|
|
27
|
+
name: "Mobile Allowance - ₹19.23 per day",
|
|
28
|
+
category: "Earning",
|
|
29
|
+
type: "Custom",
|
|
30
|
+
version: "FY2024-2025",
|
|
31
|
+
description: "Mobile Allowance = 19.23 * payable days",
|
|
32
|
+
condition: "payableDays > 0",
|
|
33
|
+
monthlyFormula: "round(19.23 * payableDays, 2)",
|
|
34
|
+
annualFormula: "round(19.23 * payableDays, 2)",
|
|
35
|
+
};
|
|
36
|
+
export const mobileAllowanceMonthlyProratedRule = {
|
|
37
|
+
ruleCode: "MOBILE_ALLOWANCE_MONTHLY_PRORATED",
|
|
38
|
+
name: "Mobile Allowance – Monthly Prorated (₹1250)",
|
|
39
|
+
category: "Earning",
|
|
40
|
+
type: "Custom",
|
|
41
|
+
version: "FY2024-2025",
|
|
42
|
+
description: "Mobile allowance prorated based on payable days: (₹1250 / workingDaysInMonth) × payableDays",
|
|
43
|
+
condition: "payableDays > 0 && workingDaysInMonth > 0",
|
|
44
|
+
monthlyFormula: "round((1250 / workingDaysInMonth) * payableDays, 0)",
|
|
45
|
+
annualFormula: "round((1250 / workingDaysInMonth) * payableDays, 0)",
|
|
46
|
+
};
|
|
47
|
+
export const mobileAllowaceTierC = {
|
|
48
|
+
ruleCode: "MOBILE_Allowance_TIER_C",
|
|
49
|
+
name: "Mobile Allowance (MB) - ₹8.93 per day",
|
|
50
|
+
category: "Earning",
|
|
51
|
+
type: "Custom",
|
|
52
|
+
version: "FY2024-2025",
|
|
53
|
+
description: "Mobile Allowance = 8.93 * payable days",
|
|
54
|
+
condition: "payableDays > 0",
|
|
55
|
+
monthlyFormula: "round(8.93 * payableDays, 2)",
|
|
56
|
+
annualFormula: "round(8.93 * payableDays, 2)",
|
|
57
|
+
};
|
|
58
|
+
export const mobileAllowaceTierD = {
|
|
59
|
+
ruleCode: "MOBILE_Allowance_TIER_D",
|
|
60
|
+
name: "Mobile Allowance (MB) - ₹56.94 per day",
|
|
61
|
+
category: "Earning",
|
|
62
|
+
type: "Custom",
|
|
63
|
+
version: "FY2024-2025",
|
|
64
|
+
description: "Mobile Allowance = 56.94 * payable days",
|
|
65
|
+
condition: "payableDays > 0",
|
|
66
|
+
monthlyFormula: "round(56.94 * payableDays, 2)",
|
|
67
|
+
annualFormula: "round(56.94 * payableDays, 2)",
|
|
68
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Rule } from "../../utils/types";
|
|
2
|
+
export declare const nhBasic2_62Rule: Rule;
|
|
3
|
+
export declare const nhBasic0_961Rule: Rule;
|
|
4
|
+
export declare const nhBasic2_2Rule: Rule;
|
|
5
|
+
export declare const nhBasic0_0262Rule: Rule;
|
|
6
|
+
export declare const nhHolidaysDailyWagesRule: Rule;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// NH: 2.62% * Basic
|
|
2
|
+
export const nhBasic2_62Rule = {
|
|
3
|
+
ruleCode: "NH_BASIC_2_62",
|
|
4
|
+
name: "National Holiday Allowance - 2.62% of Basic",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "National Holiday Allowance = 2.62% * Basic",
|
|
9
|
+
condition: "basic > 0",
|
|
10
|
+
monthlyFormula: "round(basic * 0.0262, 2)",
|
|
11
|
+
annualFormula: "round(basic * 0.0262 * 12, 2)",
|
|
12
|
+
};
|
|
13
|
+
// NH: Basic * 0.961%
|
|
14
|
+
export const nhBasic0_961Rule = {
|
|
15
|
+
ruleCode: "NH_BASIC_0_961",
|
|
16
|
+
name: "National Holiday Allowance - 0.961% of Basic",
|
|
17
|
+
category: "Earning",
|
|
18
|
+
type: "Custom",
|
|
19
|
+
version: "FY2024-2025",
|
|
20
|
+
description: "National Holiday Allowance = Basic * 0.961%",
|
|
21
|
+
condition: "basic > 0",
|
|
22
|
+
monthlyFormula: "round(basic * 0.00961, 2)",
|
|
23
|
+
annualFormula: "round(basic * 0.00961 * 12, 2)",
|
|
24
|
+
};
|
|
25
|
+
// NH: Basic * 2.2%
|
|
26
|
+
export const nhBasic2_2Rule = {
|
|
27
|
+
ruleCode: "NH_BASIC_2_2",
|
|
28
|
+
name: "National Holiday Allowance - 2.2% of Basic",
|
|
29
|
+
category: "Earning",
|
|
30
|
+
type: "Custom",
|
|
31
|
+
version: "FY2024-2025",
|
|
32
|
+
description: "National Holiday Allowance = Basic * 2.2%",
|
|
33
|
+
condition: "basic > 0",
|
|
34
|
+
monthlyFormula: "round(basic * 0.022, 2)",
|
|
35
|
+
annualFormula: "round(basic * 0.022 * 12, 2)",
|
|
36
|
+
};
|
|
37
|
+
// NH: Basic * 0.0262
|
|
38
|
+
export const nhBasic0_0262Rule = {
|
|
39
|
+
ruleCode: "NH_BASIC_0_0262",
|
|
40
|
+
name: "National Holiday Allowance - 0.0262 of Basic",
|
|
41
|
+
category: "Earning",
|
|
42
|
+
type: "Custom",
|
|
43
|
+
version: "FY2024-2025",
|
|
44
|
+
description: "National Holiday Allowance = Basic * 0.0262",
|
|
45
|
+
condition: "basic > 0",
|
|
46
|
+
monthlyFormula: "round(basic * 0.0262, 2)",
|
|
47
|
+
annualFormula: "round(basic * 0.0262 * 12, 2)",
|
|
48
|
+
};
|
|
49
|
+
// NH: no of holidays * Daily wages
|
|
50
|
+
export const nhHolidaysDailyWagesRule = {
|
|
51
|
+
ruleCode: "NH_HOLIDAYS_DAILY",
|
|
52
|
+
name: "National Holiday Allowance - Holidays * Daily Wages",
|
|
53
|
+
category: "Earning",
|
|
54
|
+
type: "Custom",
|
|
55
|
+
version: "FY2024-2025",
|
|
56
|
+
description: "National Holiday Allowance = no of holidays * Daily wages",
|
|
57
|
+
condition: "noOfHolidays > 0 && dailyWages > 0",
|
|
58
|
+
monthlyFormula: "round(noOfHolidays * dailyWages, 2)",
|
|
59
|
+
annualFormula: "round(noOfHolidays * dailyWages * 12, 2)",
|
|
60
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// HO: Basic * 0.96%
|
|
2
|
+
export const optionalHolidayRule = {
|
|
3
|
+
ruleCode: "OPTIONAL_HOLIDAY",
|
|
4
|
+
name: "Optional Holiday Allowance",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Optional Holiday Allowance = Basic * 0.96%",
|
|
9
|
+
condition: "basic > 0",
|
|
10
|
+
monthlyFormula: "round(basic * 0.0096, 2)",
|
|
11
|
+
annualFormula: "round(basic * 0.0096 * 12, 2)",
|
|
12
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Other Allowances: IF((Basic Wage+Daily wage)>20,2000,ROUND((2000/26)*(Basic Wage+Daily wage),0))
|
|
2
|
+
export const otherAllowanceRule = {
|
|
3
|
+
ruleCode: "OTHER_ALLOWANCE",
|
|
4
|
+
name: "Other Allowances",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Other Allowances = IF((Basic Wage+Daily wage)>20,2000,ROUND((2000/26)*(Basic Wage+Daily wage),0))",
|
|
9
|
+
condition: "basic > 0 || dailyWages > 0",
|
|
10
|
+
monthlyFormula: "round((basic + dailyWages) > 20 ? 2000 : ((2000 / 26) * (basic + dailyWages)), 0)",
|
|
11
|
+
annualFormula: "round(((basic + dailyWages) > 20 ? 2000 : ((2000 / 26) * (basic + dailyWages))) * 12, 0)",
|
|
12
|
+
};
|
|
13
|
+
export const otherDailyAllowanceRule = {
|
|
14
|
+
ruleCode: "OTHER_DAILY_ALLOWANCE",
|
|
15
|
+
name: "Other Allowance – Daily Rate (₹300)",
|
|
16
|
+
category: "Earning",
|
|
17
|
+
type: "Custom",
|
|
18
|
+
version: "FY2024-2025",
|
|
19
|
+
description: "Other allowance calculated at ₹300 per payable day",
|
|
20
|
+
condition: "payableDays > 0",
|
|
21
|
+
monthlyFormula: "round(payableDays * 300, 2)",
|
|
22
|
+
// Annual value should be derived by aggregating monthly payroll
|
|
23
|
+
annualFormula: "round(payableDays * 300, 2)",
|
|
24
|
+
};
|
|
25
|
+
export const otherEarningsRule = {
|
|
26
|
+
ruleCode: "OTHER_EARNINGS",
|
|
27
|
+
name: "Other Earnings",
|
|
28
|
+
category: "Earning",
|
|
29
|
+
type: "Custom",
|
|
30
|
+
version: "FY2024-2025",
|
|
31
|
+
description: "Other Earnings (manual or fixed amount)",
|
|
32
|
+
condition: "true",
|
|
33
|
+
monthlyFormula: "0",
|
|
34
|
+
annualFormula: "0",
|
|
35
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const otherDeductionsRule = {
|
|
2
|
+
ruleCode: "OTHER_DEDUCTIONS",
|
|
3
|
+
name: "Other Deductions",
|
|
4
|
+
category: "Deduction",
|
|
5
|
+
type: "Custom",
|
|
6
|
+
version: "FY2024-2025",
|
|
7
|
+
description: "Other Deductions (manual or fixed amount)",
|
|
8
|
+
condition: "true",
|
|
9
|
+
monthlyFormula: "0",
|
|
10
|
+
annualFormula: "0",
|
|
11
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Other PH: Basic * 0.96%
|
|
2
|
+
export const otherPaidHolidayRule = {
|
|
3
|
+
ruleCode: "OTHER_PAID_HOLIDAY",
|
|
4
|
+
name: "Other Paid Holidays",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Other Paid Holidays = Basic * 0.96%",
|
|
9
|
+
condition: "basic > 0",
|
|
10
|
+
monthlyFormula: "round(basic * 0.0096, 2)",
|
|
11
|
+
annualFormula: "round(basic * 0.0096 * 12, 2)",
|
|
12
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const overtimeHoursFixedRateRule = {
|
|
2
|
+
ruleCode: "OT_HOURS_FIXED",
|
|
3
|
+
name: "Overtime Hours Allowance",
|
|
4
|
+
category: "Earning",
|
|
5
|
+
type: "Custom",
|
|
6
|
+
version: "FY2024-2025",
|
|
7
|
+
description: "Overtime allowance calculated at Rs.223.25 per overtime hour.",
|
|
8
|
+
condition: "overtimeHours > 0",
|
|
9
|
+
monthlyFormula: "round(overtimeHours * 223.25, 2)",
|
|
10
|
+
};
|
|
11
|
+
export const overtimeHoursDailyWageRule = {
|
|
12
|
+
ruleCode: "OT_HOURS_DAILY_WAGE",
|
|
13
|
+
name: "Overtime Hours Allowance",
|
|
14
|
+
category: "Earning",
|
|
15
|
+
type: "Custom",
|
|
16
|
+
version: "FY2024-2025",
|
|
17
|
+
description: "Overtime allowance calculated as (overtimeHours / 4) multiplied by daily wages.",
|
|
18
|
+
condition: "overtimeHours > 0 && dailyWages > 0",
|
|
19
|
+
monthlyFormula: "round((overtimeHours / 4) * dailyWages, 0)",
|
|
20
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// PF: min(Basic, 15000) * 0.12
|
|
2
|
+
export const pfBasicRule = {
|
|
3
|
+
ruleCode: "PF_BASIC",
|
|
4
|
+
name: "Provident Fund (Employee) - Basic Only",
|
|
5
|
+
category: "Deduction",
|
|
6
|
+
type: "Statutory",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Employee contribution to Provident Fund — 12% of Basic (capped at ₹15,000).",
|
|
9
|
+
condition: "isPfApplicable == true && basic > 0",
|
|
10
|
+
monthlyFormula: "round(min(basic, 15000) * 0.12, 2)",
|
|
11
|
+
annualFormula: "round(min(basic, 15000) * 0.12 * 12, 2)",
|
|
12
|
+
};
|
|
13
|
+
export const employeePfRule = {
|
|
14
|
+
ruleCode: "PF_EMPLOYEE",
|
|
15
|
+
name: "Provident Fund (Employee)",
|
|
16
|
+
category: "Deduction",
|
|
17
|
+
type: "Statutory",
|
|
18
|
+
version: "FY2024-2025",
|
|
19
|
+
description: "PF = 12% of (Basic + DA), capped at ₹1,800 (₹15,000 wage ceiling)",
|
|
20
|
+
condition: "isPfApplicable && basicPlusDA > 0",
|
|
21
|
+
monthlyFormula: "round(min(basicPlusDA, 15000) * 0.12, 0)",
|
|
22
|
+
annualFormula: "round(min(basicPlusDA, 15000) * 0.12, 0) * 12",
|
|
23
|
+
};
|
|
24
|
+
export const employeePfBasicRule = {
|
|
25
|
+
ruleCode: "EMPLOYEE_PF_BASIC",
|
|
26
|
+
name: "Employee Provident Fund",
|
|
27
|
+
category: "Deduction",
|
|
28
|
+
type: "Statutory",
|
|
29
|
+
version: "FY2024-2025",
|
|
30
|
+
description: "PF = 12% of Basic",
|
|
31
|
+
condition: "basic > 0",
|
|
32
|
+
monthlyFormula: "round(basic * 0.12, 0)",
|
|
33
|
+
annualFormula: "round(basic * 0.12, 0) * 12",
|
|
34
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const profTaxRule = {
|
|
2
|
+
ruleCode: "PT",
|
|
3
|
+
name: "Professional Tax",
|
|
4
|
+
category: "Deduction",
|
|
5
|
+
version: "FY2024-2025",
|
|
6
|
+
type: "Statutory",
|
|
7
|
+
description: "₹200 per month if gross > ₹15,000",
|
|
8
|
+
condition: "gross > 15000",
|
|
9
|
+
monthlyFormula: "200",
|
|
10
|
+
annualFormula: "2400",
|
|
11
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const quarterRentRule = {
|
|
2
|
+
ruleCode: "QUARTER_RENT",
|
|
3
|
+
name: "Quarter Rent",
|
|
4
|
+
category: "Deduction",
|
|
5
|
+
type: "Fixed",
|
|
6
|
+
version: "FY2024-2025",
|
|
7
|
+
description: "Flat quarter rent deduction applicable to all employee categories.",
|
|
8
|
+
condition: "true",
|
|
9
|
+
monthlyFormula: "498",
|
|
10
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Rule } from "../../utils/types";
|
|
2
|
+
export declare const rbBasic4_81Rule: Rule;
|
|
3
|
+
export declare const rbEarningRule492: Rule;
|
|
4
|
+
export declare const rbBasic5Rule: Rule;
|
|
5
|
+
export declare const rbBasic10Rule: Rule;
|
|
6
|
+
export declare const rbBasic4_11Rule: Rule;
|
|
7
|
+
export declare const rbBasicPlusDA4_11Rule: Rule;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// RB: Basic * 4.81%
|
|
2
|
+
export const rbBasic4_81Rule = {
|
|
3
|
+
ruleCode: "RB_BASIC_4_81",
|
|
4
|
+
name: "Retention Bonus - 4.81% of Basic",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Retention Bonus = Basic * 4.81%",
|
|
9
|
+
condition: "basic > 0",
|
|
10
|
+
monthlyFormula: "round(basic * 0.0481, 2)",
|
|
11
|
+
annualFormula: "round(basic * 0.0481 * 12, 2)",
|
|
12
|
+
};
|
|
13
|
+
export const rbEarningRule492 = {
|
|
14
|
+
ruleCode: "RB_4_92_PERCENT",
|
|
15
|
+
name: "RB Allowance",
|
|
16
|
+
category: "Earning",
|
|
17
|
+
type: "Custom",
|
|
18
|
+
version: "FY2024-2025",
|
|
19
|
+
description: "Retention Bonus = Basic * 4.92%",
|
|
20
|
+
condition: "basic > 0",
|
|
21
|
+
monthlyFormula: "round(basic * 0.0492, 2)",
|
|
22
|
+
annualFormula: "round(basic * 0.0492 * 12, 2)",
|
|
23
|
+
};
|
|
24
|
+
// RB: Basic * 5%
|
|
25
|
+
export const rbBasic5Rule = {
|
|
26
|
+
ruleCode: "RB_BASIC_5",
|
|
27
|
+
name: "Retention Bonus - 5% of Basic",
|
|
28
|
+
category: "Earning",
|
|
29
|
+
type: "Custom",
|
|
30
|
+
version: "FY2024-2025",
|
|
31
|
+
description: "Retention Bonus = Basic * 5%",
|
|
32
|
+
condition: "basic > 0",
|
|
33
|
+
monthlyFormula: "round(basic * 0.05, 2)",
|
|
34
|
+
annualFormula: "round(basic * 0.05 * 12, 2)",
|
|
35
|
+
};
|
|
36
|
+
// RB: Basic * 10%
|
|
37
|
+
export const rbBasic10Rule = {
|
|
38
|
+
ruleCode: "RB_BASIC_10",
|
|
39
|
+
name: "Retention Bonus - 10% of Basic",
|
|
40
|
+
category: "Earning",
|
|
41
|
+
type: "Custom",
|
|
42
|
+
version: "FY2024-2025",
|
|
43
|
+
description: "Retention Bonus = Basic * 10%",
|
|
44
|
+
condition: "basic > 0",
|
|
45
|
+
monthlyFormula: "round(basic * 0.1, 2)",
|
|
46
|
+
annualFormula: "round(basic * 0.1 * 12, 2)",
|
|
47
|
+
};
|
|
48
|
+
export const rbBasic4_11Rule = {
|
|
49
|
+
ruleCode: "RB_BASIC_4_11",
|
|
50
|
+
name: "Retention Bonus - 4.11% of Basic",
|
|
51
|
+
category: "Earning",
|
|
52
|
+
type: "Custom",
|
|
53
|
+
version: "FY2024-2025",
|
|
54
|
+
description: "Retention Bonus = Basic * 4.11%",
|
|
55
|
+
condition: "basic > 0",
|
|
56
|
+
monthlyFormula: "round(basic * 0.0411, 2)",
|
|
57
|
+
annualFormula: "round(basic * 0.0411 * 12, 2)",
|
|
58
|
+
};
|
|
59
|
+
export const rbBasicPlusDA4_11Rule = {
|
|
60
|
+
ruleCode: "RB_BASIC_DA_4_11",
|
|
61
|
+
name: "Retention Bonus - 4.11% of Basic + DA",
|
|
62
|
+
category: "Earning",
|
|
63
|
+
type: "Custom",
|
|
64
|
+
version: "FY2024-2025",
|
|
65
|
+
description: "Retention Bonus = (Basic + DA) × 4.11%",
|
|
66
|
+
condition: "basicPlusDA > 0",
|
|
67
|
+
monthlyFormula: "round(basicPlusDA * 0.0411, 2)",
|
|
68
|
+
annualFormula: "round(basicPlusDA * 0.0411 * 12, 2)",
|
|
69
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// RETURCH: basic * 4.11%
|
|
2
|
+
export const retrenchmentRule = {
|
|
3
|
+
ruleCode: "RETRENCHMENT",
|
|
4
|
+
name: "Retrenchment Charges",
|
|
5
|
+
category: "Earning",
|
|
6
|
+
type: "Custom",
|
|
7
|
+
version: "FY2024-2025",
|
|
8
|
+
description: "Retrenchment Charges = basic * 4.11%",
|
|
9
|
+
condition: "basic > 0",
|
|
10
|
+
monthlyFormula: "round(basic * 0.0411, 2)",
|
|
11
|
+
annualFormula: "round(basic * 0.0411 * 12, 2)",
|
|
12
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const rfbRule = {
|
|
2
|
+
ruleCode: "RFB_COMPONENT",
|
|
3
|
+
name: "Remaining Flexible Benefit (RFB)",
|
|
4
|
+
category: "Earning",
|
|
5
|
+
type: "Statutory",
|
|
6
|
+
version: "FY2024-2025",
|
|
7
|
+
description: "RFB = CTC − (Basic + HRA + PF + ESI + PT + Other Deductions). Used to balance total CTC.",
|
|
8
|
+
condition: "ctc > 0 && basic >= 0 && hra >= 0",
|
|
9
|
+
monthlyFormula: "round(ctc - (basic + hra + pf + esi + pt + otherDeductions || 0), 2)",
|
|
10
|
+
annualFormula: "round((ctc * 12) - ((basic + hra + pf + esi + pt + otherDeductions || 0) * 12), 2)",
|
|
11
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const safetyEarningsRule = {
|
|
2
|
+
ruleCode: "SAFETY_EARNINGS_TIER_ONE",
|
|
3
|
+
name: "Safety Earnings-Tier-One",
|
|
4
|
+
category: "Earning",
|
|
5
|
+
type: "Custom",
|
|
6
|
+
version: "FY2024-2025",
|
|
7
|
+
description: "Safety Earnings = (674 * 1%) * payableDays. Calculated based on payable days.",
|
|
8
|
+
condition: "payableDays > 0",
|
|
9
|
+
monthlyFormula: "round((674 * 0.01) * payableDays, 2)",
|
|
10
|
+
annualFormula: "round((674 * 0.01) * payableDays * 12, 2)",
|
|
11
|
+
};
|
|
12
|
+
export const safetyEarningsRuleTwoPercent = {
|
|
13
|
+
ruleCode: "SAFETY_EARNINGS_TIER_TWO",
|
|
14
|
+
name: "Safety Earnings – Tier Two",
|
|
15
|
+
category: "Earning",
|
|
16
|
+
type: "Custom",
|
|
17
|
+
version: "FY2024-2025",
|
|
18
|
+
description: "Safety Earnings calculated at 2% of Basic pay per payable day. Formula: (Basic × 2%) × Payable Days.",
|
|
19
|
+
condition: "payableDays > 0",
|
|
20
|
+
monthlyFormula: "round((basic * 0.02) * payableDays, 2)",
|
|
21
|
+
annualFormula: "round((basic * 0.02) * payableDays * 12, 2)",
|
|
22
|
+
};
|
|
23
|
+
export const safetyOfficerSpecialAllowanceRule = {
|
|
24
|
+
ruleCode: "SAFETY_OFFICER_SPECIAL_ALLOWANCE",
|
|
25
|
+
name: "Safety Officer Special Allowance",
|
|
26
|
+
category: "Earning",
|
|
27
|
+
type: "Custom",
|
|
28
|
+
version: "FY2024-2025",
|
|
29
|
+
description: "Safety Officer special allowance calculated on a pro-rata basis at Rs.4000 per month divided by 26 working days.",
|
|
30
|
+
condition: "payableDays > 0",
|
|
31
|
+
monthlyFormula: "round((4000 / workingDaysInMonth) * payableDays, 0)",
|
|
32
|
+
};
|