From afb0c4aa431f55415397c6c8b6fe2c23eb0d5979 Mon Sep 17 00:00:00 2001 From: Mangesh-Khairnar Date: Wed, 15 May 2019 21:50:34 +0530 Subject: [PATCH] fix: delete entry on cancellation of transaction --- .../leave_ledger_entry/leave_ledger_entry.py | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) 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 526a91e976..1c8fed3d7e 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 @@ def create_leave_ledger_entry(ref_doc, args, submit=True): 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))))