Merge pull request #4979 from vjFaLk/leave-improvements

Improved Leave Application / Approver feature
This commit is contained in:
Nabin Hait 2016-03-17 19:06:06 +05:30
commit 547d223b28
4 changed files with 29 additions and 5 deletions

7
erpnext/hr/doctype/employee/employee.js Normal file → Executable file
View File

@ -11,9 +11,12 @@ erpnext.hr.EmployeeController = frappe.ui.form.Controller.extend({
},
onload: function() {
this.frm.set_query("leave_approver", "leave_approvers", function() {
this.frm.set_query("leave_approver", "leave_approvers", function(doc) {
return {
filters: [["UserRole", "role", "=", "Leave Approver"]]
query:"erpnext.hr.doctype.employee_leave_approver.employee_leave_approver.get_approvers",
filters:{
user: doc.user_id
}
}
});
},

View File

@ -9,4 +9,16 @@ import frappe
from frappe.model.document import Document
class EmployeeLeaveApprover(Document):
pass
pass
def get_approvers(doctype, txt, searchfield, start, page_len, filters):
return get_approver_list(filters.get("user"))
def get_approver_list(name):
return frappe.db.sql("""select user.name, user.first_name, user.last_name from
tabUser user, tabUserRole user_role where
user_role.role = "Leave Approver"
and user_role.parent = user.name and
user.name != %s
""", name)

View File

@ -31,7 +31,9 @@ frappe.ui.form.on("Leave Application", {
},
leave_approver: function(frm) {
frm.set_value("leave_approver_name", frappe.user.full_name(frm.doc.leave_approver));
if(frm.doc.leave_approver){
frm.set_value("leave_approver_name", frappe.user.full_name(frm.doc.leave_approver));
}
},
employee: function(frm) {

View File

@ -9,6 +9,7 @@ from frappe.utils import cint, cstr, date_diff, flt, formatdate, getdate, get_li
from erpnext.hr.utils import set_employee_name
from erpnext.hr.doctype.leave_block_list.leave_block_list import get_applicable_block_dates
from erpnext.hr.doctype.employee.employee import get_holiday_list_for_employee
from erpnext.hr.doctype.employee_leave_approver.employee_leave_approver import get_approver_list
class LeaveDayBlockedError(frappe.ValidationError): pass
@ -247,12 +248,18 @@ def get_approvers(doctype, txt, searchfield, start, page_len, filters):
if not filters.get("employee"):
frappe.throw(_("Please select Employee Record first."))
return frappe.db.sql("""select user.name, user.first_name, user.last_name from
employee_user = frappe.get_value("Employee", filters.get("employee"), "user_id")
approvers_list = frappe.db.sql("""select user.name, user.first_name, user.last_name from
tabUser user, `tabEmployee Leave Approver` approver where
approver.parent = %s
and user.name like %s
and approver.leave_approver=user.name""", (filters.get("employee"), "%" + txt + "%"))
if not approvers_list:
approvers_list = get_approver_list(employee_user)
return approvers_list
@frappe.whitelist()
def get_number_of_leave_days(employee, leave_type, from_date, to_date, half_day=None):
if half_day: