fix: boundary determination for separate ledger entries
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index d4062c7..144dcc6 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -502,10 +502,18 @@
 				get_link_to_form("Leave Allocation", alloc_on_from_date.name), get_link_to_form("Leave Allocation", alloc_on_to_date)))
 
 		raise_exception = False if frappe.flags.in_patch else True
+
+		if alloc_on_from_date:
+			first_alloc_end = alloc_on_from_date.to_date
+			second_alloc_start = add_days(alloc_on_from_date.to_date, 1)
+		else:
+			first_alloc_end = add_days(alloc_on_to_date.from_date, -1)
+			second_alloc_start = alloc_on_to_date.from_date
+
 		leaves_in_first_alloc = get_number_of_leave_days(self.employee, self.leave_type,
-			self.from_date, alloc_on_from_date.to_date, self.half_day, self.half_day_date)
+			self.from_date, first_alloc_end, self.half_day, self.half_day_date)
 		leaves_in_second_alloc = get_number_of_leave_days(self.employee, self.leave_type,
-			add_days(alloc_on_from_date.to_date, 1), self.to_date, self.half_day, self.half_day_date)
+			second_alloc_start, self.to_date, self.half_day, self.half_day_date)
 
 		args = dict(
 			is_lwp=lwp,
@@ -515,14 +523,14 @@
 		if leaves_in_first_alloc:
 			args.update(dict(
 				from_date=self.from_date,
-				to_date=alloc_on_from_date.to_date,
+				to_date=first_alloc_end,
 				leaves=leaves_in_first_alloc * -1
 			))
 			create_leave_ledger_entry(self, args, submit)
 
 		if leaves_in_second_alloc:
 			args.update(dict(
-				from_date=add_days(alloc_on_from_date.to_date, 1),
+				from_date=second_alloc_start,
 				to_date=self.to_date,
 				leaves=leaves_in_second_alloc * -1
 			))