feat: delete cancelled allocation from ledger
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 60d3595..12be479 100644
--- a/erpnext/hr/doctype/leave_ledger_entry/leave_ledger_entry.py
+++ b/erpnext/hr/doctype/leave_ledger_entry/leave_ledger_entry.py
@@ -5,13 +5,14 @@
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
+from frappe import _
from frappe.utils import add_days
class LeaveLedgerEntry(Document):
pass
-def create_leave_ledger_entry(ref_doc, args):
- ledger = dict(
+def create_leave_ledger_entry(ref_doc, args, submit):
+ ledger = frappe._dict(
doctype='Leave Ledger Entry',
employee=ref_doc.employee,
employee_name=ref_doc.employee_name,
@@ -20,6 +21,27 @@
transaction_type=ref_doc.doctype,
transaction_name=ref_doc.name
)
-
ledger.update(args)
- frappe.get_doc(ledger).insert(ignore_permissions=True)
\ No newline at end of file
+
+ if submit:
+ frappe.get_doc(ledger).insert(ignore_permissions=True)
+ 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']
+ )
+ leave_application_records = frappe.get_all("Leave Ledger Entry",
+ filters={
+ 'transaction_type': 'Leave Application',
+ 'creation_date': (">", creation_date)
+ },
+ fields=['transaction_type'])
+ if not leave_application_records:
+ frappe.delete_doc("Leave Ledger Entry", ledger_entry)
+ else:
+ frappe.throw(_("Leave allocation %s is linked with leave application %s"
+ % (ledger_entry, ', '.join(leave_application_records))))
\ No newline at end of file