Merge pull request #31013 from ruchamahabal/hr-reports-emp-status
feat: add Employee Status filter in leave balance reports
This commit is contained in:
commit
ead08aa192
@ -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",
|
||||
}
|
||||
],
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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",
|
||||
}
|
||||
]
|
||||
};
|
||||
|
@ -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"):
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user