fix: filters not working in Shift Assignment Calendar view (#30752)
This commit is contained in:
parent
143786aaa0
commit
5411e69553
@ -121,7 +121,7 @@ def has_overlapping_timings(shift_1: str, shift_2: str) -> bool:
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_events(start, end, filters=None):
|
||||
events = []
|
||||
from frappe.desk.calendar import get_event_conditions
|
||||
|
||||
employee = frappe.db.get_value(
|
||||
"Employee", {"user_id": frappe.session.user}, ["name", "company"], as_dict=True
|
||||
@ -132,20 +132,22 @@ def get_events(start, end, filters=None):
|
||||
employee = ""
|
||||
company = frappe.db.get_value("Global Defaults", None, "default_company")
|
||||
|
||||
from frappe.desk.reportview import get_filters_cond
|
||||
|
||||
conditions = get_filters_cond("Shift Assignment", filters, [])
|
||||
add_assignments(events, start, end, conditions=conditions)
|
||||
conditions = get_event_conditions("Shift Assignment", filters)
|
||||
events = add_assignments(start, end, conditions=conditions)
|
||||
return events
|
||||
|
||||
|
||||
def add_assignments(events, start, end, conditions=None):
|
||||
def add_assignments(start, end, conditions=None):
|
||||
events = []
|
||||
|
||||
query = """select name, start_date, end_date, employee_name,
|
||||
employee, docstatus, shift_type
|
||||
from `tabShift Assignment` where
|
||||
start_date >= %(start_date)s
|
||||
or end_date <= %(end_date)s
|
||||
or (%(start_date)s between start_date and end_date and %(end_date)s between start_date and end_date)
|
||||
(
|
||||
start_date >= %(start_date)s
|
||||
or end_date <= %(end_date)s
|
||||
or (%(start_date)s between start_date and end_date and %(end_date)s between start_date and end_date)
|
||||
)
|
||||
and docstatus = 1"""
|
||||
if conditions:
|
||||
query += conditions
|
||||
|
@ -8,7 +8,7 @@ from frappe.tests.utils import FrappeTestCase
|
||||
from frappe.utils import add_days, getdate, nowdate
|
||||
|
||||
from erpnext.hr.doctype.employee.test_employee import make_employee
|
||||
from erpnext.hr.doctype.shift_assignment.shift_assignment import OverlappingShiftError
|
||||
from erpnext.hr.doctype.shift_assignment.shift_assignment import OverlappingShiftError, get_events
|
||||
from erpnext.hr.doctype.shift_type.test_shift_type import make_shift_assignment, setup_shift_type
|
||||
|
||||
test_dependencies = ["Shift Type"]
|
||||
@ -154,3 +154,18 @@ class TestShiftAssignment(FrappeTestCase):
|
||||
shift_type = setup_shift_type(shift_type="Shift 2", start_time="13:00:00", end_time="15:00:00")
|
||||
date = getdate()
|
||||
make_shift_assignment(shift_type.name, employee, date)
|
||||
|
||||
def test_shift_assignment_calendar(self):
|
||||
employee1 = make_employee("test_shift_assignment1@example.com", company="_Test Company")
|
||||
employee2 = make_employee("test_shift_assignment2@example.com", company="_Test Company")
|
||||
|
||||
shift_type = setup_shift_type(shift_type="Shift 1", start_time="08:00:00", end_time="12:00:00")
|
||||
date = getdate()
|
||||
shift1 = make_shift_assignment(shift_type.name, employee1, date)
|
||||
make_shift_assignment(shift_type.name, employee2, date)
|
||||
|
||||
events = get_events(
|
||||
start=date, end=date, filters=[["Shift Assignment", "employee", "=", employee1, False]]
|
||||
)
|
||||
self.assertEqual(len(events), 1)
|
||||
self.assertEqual(events[0]["name"], shift1.name)
|
||||
|
Loading…
x
Reference in New Issue
Block a user