From 5448edff2c9ec4be725c96d0d9b82c19dd651261 Mon Sep 17 00:00:00 2001 From: Mangesh-Khairnar Date: Sun, 12 May 2019 21:02:05 +0530 Subject: [PATCH] feat: delete cancelled allocation from ledger --- .../leave_ledger_entry/leave_ledger_entry.py | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 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 60d35957b9..12be4794aa 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 @@ def create_leave_ledger_entry(ref_doc, args): 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