fix: delete entry on cancellation of transaction
diff --git a/erpnext/hr/doctype/leave_ledger_entry/leave_ledger_entry.py b/erpnext/hr/doctype/leave_ledger_entry/leave_ledger_entry.py
index 526a91e..1c8fed3 100644
--- a/erpnext/hr/doctype/leave_ledger_entry/leave_ledger_entry.py
+++ b/erpnext/hr/doctype/leave_ledger_entry/leave_ledger_entry.py
@@ -20,34 +20,36 @@
 		employee=ref_doc.employee,
 		employee_name=ref_doc.employee_name,
 		leave_type=ref_doc.leave_type,
-		from_date=ref_doc.from_date,
 		transaction_type=ref_doc.doctype,
 		transaction_name=ref_doc.name,
 	)
 	ledger.update(args)
-
 	if submit:
-		frappe.get_doc(ledger).insert(ignore_permissions=True)
+		frappe.get_doc(ledger).submit()
 	else:
 		delete_ledger_entry(ledger)
 
 def delete_ledger_entry(ledger):
-	''' Delete ledger entry on cancel of leave application/allocation '''
-	ledger_entry, creation_date = frappe.db.get_value("Leave Ledger Entry",
-		{'transaction_name': ledger.transaction_name},
-		['name', 'creation']
-		)
+	''' Delete ledger entry on cancel of leave application/allocation/encashment '''
 
 	leave_application_records = []
+	# prevent deletion when leave application has been created after allocation
 	if ledger.transaction_type == "Leave Allocation":
 		leave_application_records = frappe.get_all("Leave Ledger Entry",
 			filters={
+				'employee': ledger.employee,
+				'leave_type': ledger.leave_type,
 				'transaction_type': 'Leave Application',
-				'creation_date': (">", creation_date)
+				'from_date': (">=", ledger.from_date),
+				'to_date': ('<=', ledger.to_date)
 			},
-			fields=['transaction_type'])
+			fields=['transaction_name'])
+
 	if not leave_application_records:
-		frappe.delete_doc("Leave Ledger Entry", ledger_entry)
+		frappe.db.sql("""DELETE
+			FROM `tabLeave Ledger Entry`
+			WHERE
+				`transaction_name`=%s""", (ledger.transaction_name))
 	else:
 		frappe.throw(_("Leave allocation %s is linked with leave application %s"
 			% (ledger_entry, ', '.join(leave_application_records))))