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
Beispiel #4
0
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"))
Beispiel #6
0
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