def get_events(start, end, filters=None): events = [] employee = frappe.db.get_value("Employee", {"user_id": frappe.session.user}, ["name", "company"], as_dict=True) if employee: employee, company = employee.name, employee.company else: employee = '' company = frappe.db.get_value("Global Defaults", None, "default_company") from frappe.desk.reportview import get_filters_cond conditions = get_filters_cond("Leave Application", filters, []) user_role = get_user_role() subordinates = get_auth_team_ids() if (conditions): conditions += " and `tabLeave Application`.employee IN (%(subordinates)s)" % {"subordinates": subordinates} else: conditions = " and `tabLeave Application`.employee IN (%(subordinates)s)" % {"subordinates": subordinates} add_leaves(events, start, end, conditions) add_block_dates(events, start, end, employee, company) add_holidays(events, start, end, employee, company) return events
def get_events(start, end, filters=None): events = [] employee = frappe.db.get_value("Employee", {"user_id": frappe.session.user}) if not employee: return events from frappe.desk.reportview import get_filters_cond conditions = get_filters_cond("Attendance", filters, []) user_role = get_user_role() if (user_role == LINE_MANAGER or user_role == EMPLOYEE): subordinates = get_auth_team_ids() if (conditions): conditions += " and `tabAttendance`.employee IN (%(subordinates)s)" % { "subordinates": subordinates } else: conditions = " and `tabAttendance`.employee IN (%(subordinates)s)" % { "subordinates": subordinates } add_attendance(events, start, end, conditions=conditions) return events
def get_conditions(filters): conditions = "" # if user filter has not assigned on page load and its not 'Administrator' then assign 'Me' by default if filters.get("user") is None and ADMINISTRATOR not in frappe.get_roles( frappe.session.user): user, default_user_filter = get_user_filters_by_role() filters["user"] = default_user_filter if filters.get("employee"): conditions += " and empatt.employee = " + '\'' + filters.get( "employee") + '\'' if filters.get("department"): conditions += " and tabEmp.department = " + '\'' + filters.get( "department") + '\'' if filters.get("from_date"): conditions += " and empatt.attendance_date >= " + '\'' + filters.get( "from_date") + '\'' if filters.get("to_date"): conditions += " and empatt.attendance_date<= " + '\'' + filters.get( "to_date") + '\'' if filters.get("user"): if filters.get("user") == ("Me"): userId = frappe.db.get_value("Employee", {"user_id": frappe.session.user}, "employee") if userId is not None: conditions += " and empatt.employee = " + '\'' + userId + '\'' if filters.get("user") == ("Employee Reporting To Me"): userId = frappe.db.get_value("Employee", {"user_id": frappe.session.user}, "employee") if userId is not None: conditions += " and tabEmp.reports_to = " + '\'' + userId + '\'' if filters.get("user") == "All Team": employee_list = get_auth_team_ids() if employee_list != "": conditions += " and empatt.employee in (" + employee_list + ")" else: userId = frappe.db.get_value("Employee", {"user_id": frappe.session.user}, "employee") if userId is not None: conditions += " and empatt.employee = " + '\'' + userId + '\'' return conditions
def check_is_edit(employee=""): login_empcode = get_employee_code() if not (any(x in frappe.get_roles() for x in [HR_MANAGER, HR_USER, ADMINISTRATOR])): team_ids = get_auth_team_ids(True) try: team_ids.remove(login_empcode) except ValueError: pass if employee in team_ids: response = {"disabled": True} else: response = {"disabled": False} else: response = {"disabled": False} if employee == login_empcode: response = {"disabled": True, "shift_type": True} return response
def validate_leave_approver(doctype): reports_to = None if(check_advance_privilege_by_name(get_config_by_name('ADVANCE_PRIV_AUTO_APPROVE_LEAVE')) == False): # reports_to = '' reports_to_code = frappe.get_value("Employee", doctype.employee, "reports_to") if(reports_to_code): reports_to = frappe.get_value("Employee", reports_to_code, "user_id") dept_leave_approver = frappe.db.get_value('Department Approver', {'parent': doctype.department,'parentfield': 'leave_approvers','approver':doctype.leave_approver}, 'approver') hr_role = None if HR_MANAGER in frappe.get_roles(frappe.session.user) or HR_USER in frappe.get_roles(frappe.session.user): hr_role = True ''' Also validating HR User and HR Manager can approve leaves''' if(doctype.status in [LEAVE_STATUS_APPROVED, LEAVE_STATUS_REJECTED] and doctype.employee == get_employee_code()): frappe.throw(_("You cannot approve/reject your own leaves")) elif (doctype.status in [LEAVE_STATUS_APPROVED, LEAVE_STATUS_REJECTED] and doctype.employee not in get_auth_team_ids(True) and hr_role is None): frappe.throw(_("You cannot approve/reject this leaves"))
def get_condition(filters, query_obj): AuthRole = frappe.get_roles(frappe.session.user) # if user filter has not assigned on page load and its not 'Administrator' then assign 'Me' by default if filters.get("user") is None and ADMINISTRATOR not in AuthRole: user, default_user_filter = get_user_filters_by_role() filters["user"] = default_user_filter if filters.get("employee"): query_obj = query_obj.where(empatt.employee == filters.get("employee")) if filters.get("department"): query_obj = query_obj.where( tabEmp.department == filters.get("department")) if filters.get("sub_department"): query_obj = query_obj.where( tabEmp.sub_department == filters.get("sub_department")) if filters.get("from_date"): query_obj = query_obj.where(empatt.attendance_date >= str( datetime.strptime( (filters.get("from_date")), '%Y-%m-%d %H:%M:%S').date())) check_in_time = datetime.strptime((filters.get("from_date")), '%Y-%m-%d %H:%M:%S').time() if check_in_time != time(0, 0): query_obj = query_obj.where( fn.Cast(empatt.check_in, "time") >= str(check_in_time)) if filters.get("to_date"): query_obj = query_obj.where(empatt.attendance_date <= str( datetime.strptime( (filters.get("to_date")), '%Y-%m-%d %H:%M:%S').date())) check_out_time = datetime.strptime((filters.get("to_date")), '%Y-%m-%d %H:%M:%S').time() if check_out_time != time(0, 0): query_obj = query_obj.where( fn.Cast(empatt.check_out, "time") <= str(check_out_time)) if filters.get("company"): query_obj = query_obj.where(empatt.company == filters.get("company")) if filters.get("late_arrival"): query_obj = query_obj.where( empatt.late_arrival == filters.get("late_arrival")) if filters.get("left_early"): query_obj = query_obj.where( empatt.left_early == filters.get("left_early")) if filters.get("user"): if filters.get("user") == "Me": userId = frappe.db.get_value("Employee", {"user_id": frappe.session.user}, "employee") if userId is not None: query_obj = query_obj.where(empatt.employee == userId) if filters.get("user") == "Employee Reporting To Me": userId = frappe.db.get_value("Employee", {"user_id": frappe.session.user}, "employee") if userId is not None: query_obj = query_obj.where(tabEmp.reports_to == userId) if filters.get("user") == "All Team": AuthRole = frappe.get_roles(frappe.session.user) # if it is HR manager,All tabEmp attendance shown to him as per old hrms if HR_MANAGER not in AuthRole: employee_list = get_auth_team_ids(returnList=True) if employee_list != "": query_obj = query_obj.where( empatt.employee.isin(employee_list)) return query_obj