diff --git a/erpnext/patches/v12_0/generate_leave_ledger_entries.py b/erpnext/patches/v12_0/generate_leave_ledger_entries.py
index 9223bb2..9c638ab 100644
--- a/erpnext/patches/v12_0/generate_leave_ledger_entries.py
+++ b/erpnext/patches/v12_0/generate_leave_ledger_entries.py
@@ -7,7 +7,7 @@
 def execute():
     """ Generates leave ledger entries for leave allocation/application/encashment
         for last allocation """
-    if frappe.db.exists("DocType","Leave Ledger Entry"):
+    if frappe.db.a_row_exists("Leave Ledger Entry"):
         return
 
     allocation_list = get_allocation_records()
@@ -20,7 +20,9 @@
     from erpnext.hr.doctype.leave_allocation.leave_allocation import LeaveAllocation
 
     for allocation in allocation_list:
-        LeaveAllocation.create_leave_ledger_entry(allocation)
+        if not frappe.db.exists("Leave Ledger Entry", {'transaction_type': 'Leave Allocation',
+            'transaction_name': allocation.name}):
+            LeaveAllocation.create_leave_ledger_entry(allocation)
 
 def generate_application_leave_ledger_entries(allocation_list):
     ''' fix ledger entries for missing leave application transaction '''
@@ -29,7 +31,9 @@
     leave_applications = get_leaves_application_records(allocation_list)
 
     for record in leave_applications:
-        LeaveApplication.create_leave_ledger_entry(record)
+        if not frappe.db.exists("Leave Ledger Entry", {'transaction_type': 'Leave Application',
+            'transaction_name': record.name}):
+            LeaveApplication.create_leave_ledger_entry(record)
 
 def generate_encashment_leave_ledger_entries(allocation_list):
     ''' fix ledger entries for missing leave encashment transaction '''
@@ -38,7 +42,9 @@
     leave_encashments = get_leave_encashment_records(allocation_list)
 
     for record in leave_encashments:
-        LeaveEncashment.create_leave_ledger_entry(record)
+        if not frappe.db.exists("Leave Ledger Entry", {'transaction_type': 'Leave Encashment',
+            'transaction_name': record.name}):
+            LeaveEncashment.create_leave_ledger_entry(record)
 
 def get_allocation_records():
     return frappe.db.sql("""
@@ -62,7 +68,7 @@
     for allocation in allocation_list:
         leave_applications.append(frappe.db.sql("""
             SELECT
-                name,
+                DISTINCT name,
                 employee,
                 leave_type,
                 total_leave_days,
