From de2582eb9ed8cd846a760e35f7501e4c68fbbd34 Mon Sep 17 00:00:00 2001 From: zeel prajapati Date: Mon, 16 Sep 2024 12:39:42 +0530 Subject: [PATCH 1/2] fix: expire_allocation api endpoint by fetching allocation object (#1576) * fix: expire_allocation api endpoint by fetching allocation object * fix: add a check to fetch allocation only if the allocation type is str in the expire_allocation endpoint * feat: add a test case test_expire_allocation for leave ledger entry doctype (cherry picked from commit 6ddfdac368efa816d6c851e7b4abb3767a49b8bf) # Conflicts: # hrms/hr/doctype/leave_allocation/leave_allocation.js --- .../leave_allocation/leave_allocation.js | 6 +++ .../leave_ledger_entry/leave_ledger_entry.py | 7 +++- .../test_leave_ledger_entry.py | 39 ++++++++++++++++++- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/hrms/hr/doctype/leave_allocation/leave_allocation.js b/hrms/hr/doctype/leave_allocation/leave_allocation.js index 633a209389..dc7602048a 100755 --- a/hrms/hr/doctype/leave_allocation/leave_allocation.js +++ b/hrms/hr/doctype/leave_allocation/leave_allocation.js @@ -26,7 +26,13 @@ frappe.ui.form.on("Leave Allocation", { }, refresh: function (frm) { +<<<<<<< HEAD if (frm.doc.docstatus === 1 && frm.doc.expired) { +======= + hrms.leave_utils.add_view_ledger_button(frm); + + if (frm.doc.docstatus === 1 && !frm.doc.expired) { +>>>>>>> 6ddfdac36 (fix: expire_allocation api endpoint by fetching allocation object (#1576)) 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"] From 6de0864df5f88848071d69f1ad7afc2da11984a6 Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Mon, 16 Sep 2024 12:44:43 +0530 Subject: [PATCH 2/2] chore: fix conflicts --- hrms/hr/doctype/leave_allocation/leave_allocation.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hrms/hr/doctype/leave_allocation/leave_allocation.js b/hrms/hr/doctype/leave_allocation/leave_allocation.js index dc7602048a..a11b61f5d4 100755 --- a/hrms/hr/doctype/leave_allocation/leave_allocation.js +++ b/hrms/hr/doctype/leave_allocation/leave_allocation.js @@ -26,13 +26,7 @@ frappe.ui.form.on("Leave Allocation", { }, refresh: function (frm) { -<<<<<<< HEAD - if (frm.doc.docstatus === 1 && frm.doc.expired) { -======= - hrms.leave_utils.add_view_ledger_button(frm); - if (frm.doc.docstatus === 1 && !frm.doc.expired) { ->>>>>>> 6ddfdac36 (fix: expire_allocation api endpoint by fetching allocation object (#1576)) var valid_expiry = moment(frappe.datetime.get_today()).isBetween( frm.doc.from_date, frm.doc.to_date,