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"] = {
|
frappe.query_reports["Employee Leave Balance"] = {
|
||||||
"filters": [
|
"filters": [
|
||||||
{
|
{
|
||||||
"fieldname":"from_date",
|
"fieldname": "from_date",
|
||||||
"label": __("From Date"),
|
"label": __("From Date"),
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"reqd": 1,
|
"reqd": 1,
|
||||||
"default": frappe.defaults.get_default("year_start_date")
|
"default": frappe.defaults.get_default("year_start_date")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"to_date",
|
"fieldname": "to_date",
|
||||||
"label": __("To Date"),
|
"label": __("To Date"),
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"reqd": 1,
|
"reqd": 1,
|
||||||
"default": frappe.defaults.get_default("year_end_date")
|
"default": frappe.defaults.get_default("year_end_date")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"company",
|
"fieldname": "company",
|
||||||
"label": __("Company"),
|
"label": __("Company"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"options": "Company",
|
"options": "Company",
|
||||||
@ -26,16 +26,29 @@ frappe.query_reports["Employee Leave Balance"] = {
|
|||||||
"default": frappe.defaults.get_user_default("Company")
|
"default": frappe.defaults.get_user_default("Company")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"department",
|
"fieldname": "department",
|
||||||
"label": __("Department"),
|
"label": __("Department"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"options": "Department",
|
"options": "Department",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"employee",
|
"fieldname": "employee",
|
||||||
"label": __("Employee"),
|
"label": __("Employee"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"options": "Employee",
|
"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:
|
def get_conditions(filters: Filters) -> Dict:
|
||||||
conditions = {
|
conditions = {}
|
||||||
"status": "Active",
|
|
||||||
}
|
|
||||||
if filters.get("employee"):
|
if filters.get("employee"):
|
||||||
conditions["name"] = filters.get("employee")
|
conditions["name"] = filters.get("employee")
|
||||||
|
|
||||||
@ -180,6 +179,9 @@ def get_conditions(filters: Filters) -> Dict:
|
|||||||
if filters.get("department"):
|
if filters.get("department"):
|
||||||
conditions["department"] = filters.get("department")
|
conditions["department"] = filters.get("department")
|
||||||
|
|
||||||
|
if filters.get("employee_status"):
|
||||||
|
conditions["status"] = filters.get("employee_status")
|
||||||
|
|
||||||
return conditions
|
return conditions
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,3 +207,40 @@ class TestEmployeeLeaveBalance(unittest.TestCase):
|
|||||||
allocation1.new_leaves_allocated - leave_application.total_leave_days
|
allocation1.new_leaves_allocated - leave_application.total_leave_days
|
||||||
)
|
)
|
||||||
self.assertEqual(report[1][0].opening_balance, opening_balance)
|
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'),
|
label: __('Department'),
|
||||||
fieldtype: 'Link',
|
fieldtype: 'Link',
|
||||||
options: 'Department',
|
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):
|
def get_conditions(filters):
|
||||||
conditions = {
|
conditions = {
|
||||||
"status": "Active",
|
|
||||||
"company": filters.company,
|
"company": filters.company,
|
||||||
}
|
}
|
||||||
|
if filters.get("employee_status"):
|
||||||
|
conditions.update({"status": filters.get("employee_status")})
|
||||||
if filters.get("department"):
|
if filters.get("department"):
|
||||||
conditions.update({"department": filters.get("department")})
|
conditions.update({"department": filters.get("department")})
|
||||||
if filters.get("employee"):
|
if filters.get("employee"):
|
||||||
|
@ -36,7 +36,6 @@ class TestEmployeeLeaveBalance(unittest.TestCase):
|
|||||||
|
|
||||||
frappe.set_user("Administrator")
|
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.employee_id = make_employee("test_emp_leave_balance@example.com", company="_Test Company")
|
||||||
|
|
||||||
self.date = getdate()
|
self.date = getdate()
|
||||||
@ -146,3 +145,37 @@ class TestEmployeeLeaveBalance(unittest.TestCase):
|
|||||||
]
|
]
|
||||||
|
|
||||||
self.assertEqual(report[1], expected_data)
|
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