From 5e50ffa308fe4790f48f15d8cbd23af4d028718a Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 21 May 2013 15:31:32 +0530 Subject: [PATCH] [fixes] employee query in leave application --- .../leave_application/leave_application.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/hr/doctype/leave_application/leave_application.py b/hr/doctype/leave_application/leave_application.py index 6e39751b71..7c47d6a09e 100755 --- a/hr/doctype/leave_application/leave_application.py +++ b/hr/doctype/leave_application/leave_application.py @@ -335,15 +335,22 @@ def add_holidays(events, start, end, employee, company): def query_for_permitted_employees(doctype, txt, searchfield, start, page_len, filters): txt = "%" + cstr(txt) + "%" - return webnotes.conn.sql("""select name, employee_name from `tabEmployee` emp + if "Leave Approver" in webnotes.user.get_roles(): + condition = """and (exists(select ela.name from `tabEmployee Leave Approver` ela + where ela.parent=`tabEmployee`.name and ela.leave_approver= "%s") or + not exists(select ela.name from `tabEmployee Leave Approver` ela + where ela.parent=`tabEmployee`.name) + or user_id = "%s")""" % (webnotes.session.user, webnotes.session.user) + else: + from webnotes.widgets.reportview import build_match_conditions + condition = build_match_conditions("Employee") + condition = ("and " + condition) if condition else "" + + return webnotes.conn.sql("""select name, employee_name from `tabEmployee` where status = 'Active' and docstatus < 2 and - (`%s` like %s or employee_name like %s) and - (exists(select ela.name from `tabEmployee Leave Approver` ela - where ela.parent=emp.name and ela.leave_approver=%s) or - not exists(select ela.name from `tabEmployee Leave Approver` ela where ela.parent=emp.name) - or user_id = %s) + (`%s` like %s or employee_name like %s) %s order by case when name like %s then 0 else 1 end, case when employee_name like %s then 0 else 1 end, - name limit %s, %s""" % tuple([searchfield] + ["%s"]*8), - (txt, txt, webnotes.session.user, webnotes.session.user, txt, txt, start, page_len)) + name limit %s, %s""" % tuple([searchfield] + ["%s"]*2 + [condition] + ["%s"]*4), + (txt, txt, txt, txt, start, page_len))