diff --git a/erpnext/hr/doctype/employee_advance/employee_advance.js b/erpnext/hr/doctype/employee_advance/employee_advance.js index 7d1c7cbf4a8..37ae75aeb6c 100644 --- a/erpnext/hr/doctype/employee_advance/employee_advance.js +++ b/erpnext/hr/doctype/employee_advance/employee_advance.js @@ -65,9 +65,10 @@ frappe.ui.form.on('Employee Advance', { ); } - if (frm.doc.docstatus === 1 && - (flt(frm.doc.claimed_amount) < flt(frm.doc.paid_amount) && flt(frm.doc.paid_amount) != flt(frm.doc.return_amount))) { - + if ( + frm.doc.docstatus === 1 + && (flt(frm.doc.claimed_amount) < flt(frm.doc.paid_amount) - flt(frm.doc.return_amount)) + ) { if (frm.doc.repay_unclaimed_amount_from_salary == 0 && frappe.model.can_create("Journal Entry")) { frm.add_custom_button(__("Return"), function() { frm.trigger('make_return_entry'); diff --git a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js index 8bb3457190e..2339350d065 100644 --- a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js +++ b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js @@ -4,21 +4,21 @@ frappe.query_reports["Employee Leave Balance"] = { "filters": [ { - "fieldname":"from_date", + "fieldname": "from_date", "label": __("From Date"), "fieldtype": "Date", "reqd": 1, "default": frappe.defaults.get_default("year_start_date") }, { - "fieldname":"to_date", + "fieldname": "to_date", "label": __("To Date"), "fieldtype": "Date", "reqd": 1, "default": frappe.defaults.get_default("year_end_date") }, { - "fieldname":"company", + "fieldname": "company", "label": __("Company"), "fieldtype": "Link", "options": "Company", @@ -26,16 +26,29 @@ frappe.query_reports["Employee Leave Balance"] = { "default": frappe.defaults.get_user_default("Company") }, { - "fieldname":"department", + "fieldname": "department", "label": __("Department"), "fieldtype": "Link", "options": "Department", }, { - "fieldname":"employee", + "fieldname": "employee", "label": __("Employee"), "fieldtype": "Link", "options": "Employee", + }, + { + "fieldname": "employee_status", + "label": __("Employee Status"), + "fieldtype": "Select", + "options": [ + "", + { "value": "Active", "label": __("Active") }, + { "value": "Inactive", "label": __("Inactive") }, + { "value": "Suspended", "label": __("Suspended") }, + { "value": "Left", "label": __("Left") }, + ], + "default": "Active", } ], diff --git a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py index ca352f197dc..1f7ade23f4c 100644 --- a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py +++ b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py @@ -168,9 +168,8 @@ def get_opening_balance( def get_conditions(filters: Filters) -> Dict: - conditions = { - "status": "Active", - } + conditions = {} + if filters.get("employee"): conditions["name"] = filters.get("employee") @@ -180,6 +179,9 @@ def get_conditions(filters: Filters) -> Dict: if filters.get("department"): conditions["department"] = filters.get("department") + if filters.get("employee_status"): + conditions["status"] = filters.get("employee_status") + return conditions diff --git a/erpnext/hr/report/employee_leave_balance/test_employee_leave_balance.py b/erpnext/hr/report/employee_leave_balance/test_employee_leave_balance.py index dc0f4d2c944..5354abf4f6f 100644 --- a/erpnext/hr/report/employee_leave_balance/test_employee_leave_balance.py +++ b/erpnext/hr/report/employee_leave_balance/test_employee_leave_balance.py @@ -207,3 +207,40 @@ class TestEmployeeLeaveBalance(unittest.TestCase): allocation1.new_leaves_allocated - leave_application.total_leave_days ) self.assertEqual(report[1][0].opening_balance, opening_balance) + + @set_holiday_list("_Test Emp Balance Holiday List", "_Test Company") + def test_employee_status_filter(self): + frappe.get_doc(test_records[0]).insert() + inactive_emp = make_employee("test_emp_status@example.com", company="_Test Company") + + allocation = make_allocation_record( + employee=inactive_emp, + from_date=self.year_start, + to_date=self.year_end, + leaves=5, + ) + + # set employee as inactive + frappe.db.set_value("Employee", inactive_emp, "status", "Inactive") + + filters = frappe._dict( + { + "from_date": allocation.from_date, + "to_date": allocation.to_date, + "employee": inactive_emp, + "employee_status": "Active", + } + ) + report = execute(filters) + self.assertEqual(len(report[1]), 0) + + filters = frappe._dict( + { + "from_date": allocation.from_date, + "to_date": allocation.to_date, + "employee": inactive_emp, + "employee_status": "Inactive", + } + ) + report = execute(filters) + self.assertEqual(len(report[1]), 1) diff --git a/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.js b/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.js index cb05d1138f8..26dd7825331 100644 --- a/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.js +++ b/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.js @@ -30,6 +30,19 @@ frappe.query_reports['Employee Leave Balance Summary'] = { label: __('Department'), fieldtype: 'Link', options: 'Department', + }, + { + fieldname: "employee_status", + label: __("Employee Status"), + fieldtype: "Select", + options: [ + "", + { "value": "Active", "label": __("Active") }, + { "value": "Inactive", "label": __("Inactive") }, + { "value": "Suspended", "label": __("Suspended") }, + { "value": "Left", "label": __("Left") }, + ], + default: "Active", } ] }; diff --git a/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.py b/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.py index f0087eb1b9e..986c686e5b3 100644 --- a/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.py +++ b/erpnext/hr/report/employee_leave_balance_summary/employee_leave_balance_summary.py @@ -35,9 +35,10 @@ def get_columns(leave_types): def get_conditions(filters): conditions = { - "status": "Active", "company": filters.company, } + if filters.get("employee_status"): + conditions.update({"status": filters.get("employee_status")}) if filters.get("department"): conditions.update({"department": filters.get("department")}) if filters.get("employee"): diff --git a/erpnext/hr/report/employee_leave_balance_summary/test_employee_leave_balance_summary.py b/erpnext/hr/report/employee_leave_balance_summary/test_employee_leave_balance_summary.py index 34b665fa9f0..2fd74b7983b 100644 --- a/erpnext/hr/report/employee_leave_balance_summary/test_employee_leave_balance_summary.py +++ b/erpnext/hr/report/employee_leave_balance_summary/test_employee_leave_balance_summary.py @@ -36,7 +36,6 @@ class TestEmployeeLeaveBalance(unittest.TestCase): frappe.set_user("Administrator") - self.employee_id = make_employee("test_emp_leave_balance@example.com", company="_Test Company") self.employee_id = make_employee("test_emp_leave_balance@example.com", company="_Test Company") self.date = getdate() @@ -146,3 +145,37 @@ class TestEmployeeLeaveBalance(unittest.TestCase): ] self.assertEqual(report[1], expected_data) + + @set_holiday_list("_Test Emp Balance Holiday List", "_Test Company") + def test_employee_status_filter(self): + frappe.get_doc(test_records[0]).insert() + + inactive_emp = make_employee("test_emp_status@example.com", company="_Test Company") + allocation = make_allocation_record( + employee=inactive_emp, from_date=self.year_start, to_date=self.year_end + ) + + # set employee as inactive + frappe.db.set_value("Employee", inactive_emp, "status", "Inactive") + + filters = frappe._dict( + { + "date": allocation.from_date, + "company": "_Test Company", + "employee": inactive_emp, + "employee_status": "Active", + } + ) + report = execute(filters) + self.assertEqual(len(report[1]), 0) + + filters = frappe._dict( + { + "date": allocation.from_date, + "company": "_Test Company", + "employee": inactive_emp, + "employee_status": "Inactive", + } + ) + report = execute(filters) + self.assertEqual(len(report[1]), 1)