Merge pull request #31013 from ruchamahabal/hr-reports-emp-status
feat: add Employee Status filter in leave balance reports
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 8bb3457..2339350 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 @@
"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 ca352f1..1f7ade2 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_conditions(filters: Filters) -> Dict:
- conditions = {
- "status": "Active",
- }
+ conditions = {}
+
if filters.get("employee"):
conditions["name"] = filters.get("employee")
@@ -180,6 +179,9 @@
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 dc0f4d2..5354abf 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 @@
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 cb05d11..26dd782 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 @@
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 2a16dc4..82878db 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_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 34b665f..2fd74b7 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
@@ -37,7 +37,6 @@
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()
self.year_start = getdate(get_year_start(self.date))
@@ -146,3 +145,37 @@
]
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)