diff --git a/hrms/hr/doctype/leave_allocation/leave_allocation.js b/hrms/hr/doctype/leave_allocation/leave_allocation.js index 633a209389..a11b61f5d4 100755 --- a/hrms/hr/doctype/leave_allocation/leave_allocation.js +++ b/hrms/hr/doctype/leave_allocation/leave_allocation.js @@ -26,7 +26,7 @@ frappe.ui.form.on("Leave Allocation", { }, refresh: function (frm) { - if (frm.doc.docstatus === 1 && frm.doc.expired) { + if (frm.doc.docstatus === 1 && !frm.doc.expired) { var valid_expiry = moment(frappe.datetime.get_today()).isBetween( frm.doc.from_date, frm.doc.to_date, diff --git a/hrms/hr/doctype/leave_ledger_entry/leave_ledger_entry.py b/hrms/hr/doctype/leave_ledger_entry/leave_ledger_entry.py index 0f87255457..dd1718aef3 100644 --- a/hrms/hr/doctype/leave_ledger_entry/leave_ledger_entry.py +++ b/hrms/hr/doctype/leave_ledger_entry/leave_ledger_entry.py @@ -1,7 +1,6 @@ # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt - import frappe from frappe import _ from frappe.model.document import Document @@ -185,6 +184,12 @@ def get_remaining_leaves(allocation): @frappe.whitelist() def expire_allocation(allocation, expiry_date=None): """expires non-carry forwarded allocation""" + import json + + if isinstance(allocation, str): + allocation = json.loads(allocation) + allocation = frappe.get_doc("Leave Allocation", allocation["name"]) + leaves = get_remaining_leaves(allocation) expiry_date = expiry_date if expiry_date else allocation.to_date diff --git a/hrms/hr/doctype/leave_ledger_entry/test_leave_ledger_entry.py b/hrms/hr/doctype/leave_ledger_entry/test_leave_ledger_entry.py index c8084769b1..668b758665 100644 --- a/hrms/hr/doctype/leave_ledger_entry/test_leave_ledger_entry.py +++ b/hrms/hr/doctype/leave_ledger_entry/test_leave_ledger_entry.py @@ -1,9 +1,44 @@ # Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors # See license.txt -# import frappe +import frappe from frappe.tests.utils import FrappeTestCase +from frappe.utils.data import add_to_date, today + +from erpnext.setup.doctype.employee.test_employee import make_employee + +from hrms.hr.doctype.leave_ledger_entry.leave_ledger_entry import expire_allocation class TestLeaveLedgerEntry(FrappeTestCase): - pass + def setUp(self): + emp_id = make_employee("test_leave_allocation@salary.com", company="_Test Company") + self.employee = frappe.get_doc("Employee", emp_id) + + def test_expire_allocation(self): + import json + + allocation = { + "doctype": "Leave Allocation", + "__islocal": 1, + "employee": self.employee.name, + "employee_name": self.employee.employee_name, + "leave_type": "_Test Leave Type", + "from_date": today(), + "to_date": add_to_date(today(), days=30), + "new_leaves_allocated": 5, + "docstatus": 1, + } + + allocation = frappe.get_doc(allocation).save() + + expire_allocation(json.dumps(allocation.as_dict())) + allocation.reload() + + self.assertEqual(allocation.expired, 1) + + def tearDown(self): + frappe.db.rollback() + + +test_dependencies = ["Employee", "Leave Type"]