The half day leave which has been taken by employee is taken as full day leave by the report.
I looked at the code in leave_application.py, the function get_leaves_for_period doesn’t seem to be considering half day leave at all. It simply:
leave_days += get_number_of_leave_days(employee, leave_type, leave_entry.from_date, leave_entry.to_date) * -1
And those employees who have taken half day leaves are having wrong leave balance.