Skip to content

Commit 1223e61

Browse files
iamkhanraheelmergify[bot]
authored andcommitted
fix: absent day & lwp caluclation based on half day, assert test cases based on updated conditions
(cherry picked from commit da6ee48)
1 parent 7f98318 commit 1223e61

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

hrms/payroll/doctype/salary_slip/salary_slip.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,8 @@ def get_working_days_details(self, lwp=None, for_preview=0):
507507
consider_marked_attendance_on_holidays,
508508
holidays,
509509
)
510-
self.payment_days -= (half_absent_days * daily_wages_fraction_for_half_day)
510+
self.absent_days += half_absent_days * daily_wages_fraction_for_half_day
511+
self.payment_days -= half_absent_days * daily_wages_fraction_for_half_day
511512
else:
512513
self.payment_days = 0
513514

@@ -542,11 +543,7 @@ def get_half_absent_days(
542543
& (Attendance.half_day_status == "Absent")
543544
)
544545
)
545-
if (
546-
(not include_holidays_in_total_working_days)
547-
and (not consider_marked_attendance_on_holidays)
548-
and holidays
549-
):
546+
if (not consider_marked_attendance_on_holidays) and holidays:
550547
query = query.where(Attendance.attendance_date.notin(holidays))
551548
return query.run()[0][0]
552549

@@ -746,7 +743,7 @@ def calculate_lwp_ppl_and_absent_days_based_on_attendance(
746743
]
747744

748745
if d.status == "Half Day" and d.leave_type and d.leave_type in leave_type_map.keys():
749-
equivalent_lwp = 1 - daily_wages_fraction_for_half_day
746+
equivalent_lwp = 1 - daily_wages_fraction_for_half_day if d.half_day_status == "Absent" else 1
750747

751748
if leave_type_map[d.leave_type]["is_ppl"]:
752749
equivalent_lwp *= (

hrms/payroll/doctype/salary_slip/test_salary_slip.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,9 +297,10 @@ def test_payment_days_considering_half_days_unmarked_as_present(self):
297297
# from half lwp
298298
self.assertEqual(ss.leave_without_pay, 0.5)
299299

300-
self.assertEqual(ss.absent_days, 1)
300+
self.assertEqual(ss.absent_days, 2.5)
301301

302-
self.assertEqual(ss.payment_days, days_in_month - no_of_holidays - 1.5)
302+
# total payment days = total working days - lwp - absent days
303+
self.assertEqual(ss.payment_days, days_in_month - no_of_holidays - 0.5 - 2.5)
303304

304305
# Gross pay calculation based on attendances
305306
gross_pay = 78000 - (
@@ -779,7 +780,6 @@ def test_consider_marked_attendance_on_holidays_with_half_day_on_holiday(self):
779780
emp_id,
780781
first_sunday,
781782
"Half Day",
782-
leave_type="Leave Without Pay",
783783
half_day_status="Absent",
784784
ignore_validate=True,
785785
)

0 commit comments

Comments
 (0)