fix: ledger entries creation
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index 6fe8fdf..2a1301d 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -136,8 +136,8 @@
 		if flt(leaves) > 0:
 			args = dict(
 				leaves=leaves * -1,
-				from_date=self.to_date,
-				to_date=self.to_date,
+				from_date=self.from_date,
+				to_date=self.from_date,
 				is_carry_forward=0,
 				is_expired=1
 			)
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 9eb0b91..b1c666c 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -431,22 +431,24 @@
 	return ret
 
 @frappe.whitelist()
-def get_leave_balance_on(employee, leave_type, from_date, to_date=nowdate(), allocation_records=None, docname=None,
+def get_leave_balance_on(employee, leave_type, date, to_date=nowdate(), allocation_records=None, docname=None,
 		consider_all_leaves_in_the_allocation_period=False):
+	''' Returns leave balance till date and fetches expiry date based on to_date
+		to calculate minimum remaining leave balance '''
 
 	if allocation_records == None:
-		allocation_records = get_leave_allocation_records(from_date, employee).get(employee, frappe._dict())
+		allocation_records = get_leave_allocation_records(date, employee).get(employee, frappe._dict())
 	allocation = allocation_records.get(leave_type, frappe._dict())
 
-	end_date = allocation.to_date if consider_all_leaves_in_the_allocation_period else from_date
-	expiry = get_allocation_expiry(employee, leave_type, to_date, from_date)
+	end_date = allocation.to_date if consider_all_leaves_in_the_allocation_period else date
+	expiry = get_allocation_expiry(employee, leave_type, to_date, date)
 
 	leaves_taken = get_leaves_taken(employee, leave_type, allocation.from_date, end_date)
 
-	return get_remaining_leaves(allocation, leaves_taken, from_date, expiry)
+	return get_remaining_leaves(allocation, leaves_taken, date, expiry)
 
 def get_remaining_leaves(allocation, leaves_taken, date, expiry):
-	''' Returns leaves remaining after comparing with remaining days for allocation expiry '''
+	''' Returns minimum leaves remaining after comparing with remaining days for allocation expiry '''
 	def _get_remaining_leaves(allocated_leaves, end_date):
 		remaining_leaves = flt(allocated_leaves) + flt(leaves_taken)
 
diff --git a/erpnext/patches/v12_0/generate_leave_ledger_entries.py b/erpnext/patches/v12_0/generate_leave_ledger_entries.py
index 3cdfa53..31cbcc6 100644
--- a/erpnext/patches/v12_0/generate_leave_ledger_entries.py
+++ b/erpnext/patches/v12_0/generate_leave_ledger_entries.py
@@ -22,6 +22,7 @@
 
     for allocation in allocation_list:
         if not frappe.db.exists("Leave Ledger Entry", {'transaction_type': 'Leave Allocation', 'transaction_name': allocation.name}):
+            allocation.update(dict(doctype="Leave Allocation"))
             leave_allocation = LeaveAllocation(allocation)
             leave_allocation.create_leave_ledger_entry()
 
@@ -33,6 +34,7 @@
 
     for record in leave_applications:
         if not frappe.db.exists("Leave Ledger Entry", {'transaction_type': 'Leave Application', 'transaction_name': record.name}):
+            record.update(dict(doctype="Leave Application"))
             leave_application = LeaveApplication(record)
             leave_application.create_leave_ledger_entry()
 
@@ -44,6 +46,7 @@
 
     for record in leave_encashments:
         if not frappe.db.exists("Leave Ledger Entry", {'transaction_type': 'Leave Encashment', 'transaction_name': record.name}):
+            record.update(dict(doctype="Leave Encashment"))
             leave_encashment = LeaveEncashment(record)
             leave_encashment.create_leave_ledger_entry()
 
@@ -89,7 +92,7 @@
                 from_date >= %s
                 AND leave_type = %s
                 AND employee = %s
-        """, (allocation.from_date, allocation.leave_type, allocation.employee))
+        """, (allocation.from_date, allocation.leave_type, allocation.employee), as_dict=1)
     return leave_applications
 
 def get_leave_encashment_records(allocation_list):
@@ -108,5 +111,5 @@
                 leave_type = %s
                 AND employee = %s
                 AND encashment_date >= %s
-        """, (allocation.leave_type, allocation.employee, allocation.from_date))
+        """, (allocation.leave_type, allocation.employee, allocation.from_date), as_dict=1)
     return leave_encashments
\ No newline at end of file