diff --git a/erpnext/hr/doctype/leave_policy/leave_policy.js b/erpnext/hr/doctype/leave_policy/leave_policy.js index 309215e7786..fdf8e0cdbb1 100644 --- a/erpnext/hr/doctype/leave_policy/leave_policy.js +++ b/erpnext/hr/doctype/leave_policy/leave_policy.js @@ -2,7 +2,30 @@ // For license information, please see license.txt frappe.ui.form.on('Leave Policy', { - refresh: function(frm) { +}); +frappe.ui.form.on('Leave Policy Detail',{ + leave_type: function(frm, cdt, cdn) { + var child = locals[cdt][cdn]; + if(child.leave_type){ + frappe.call({ + method: "frappe.client.get_value", + args: { + doctype: "Leave Type", + fieldname: "max_leaves_allowed", + filters: { name: child.leave_type } + }, + callback: function(r) { + if (r.message) { + child.annual_allocation = r.message.max_leaves_allowed; + refresh_field("leave_policy_details"); + } + } + }); + } + else{ + child.annual_allocation = ""; + refresh_field("leave_policy_details"); + } } }); diff --git a/erpnext/hr/doctype/leave_policy/leave_policy.py b/erpnext/hr/doctype/leave_policy/leave_policy.py index 1da84c2e43d..964a5de83ec 100644 --- a/erpnext/hr/doctype/leave_policy/leave_policy.py +++ b/erpnext/hr/doctype/leave_policy/leave_policy.py @@ -4,7 +4,13 @@ from __future__ import unicode_literals import frappe +from frappe import _ from frappe.model.document import Document class LeavePolicy(Document): - pass + def validate(self): + if self.leave_policy_details: + for lp_detail in self.leave_policy_details: + max_leaves_allowed = frappe.db.get_value("Leave Type", lp_detail.leave_type, "max_leaves_allowed") + if max_leaves_allowed > 0 and lp_detail.annual_allocation > max_leaves_allowed: + frappe.throw(_("Maximum leave allowed in the leave type {0} is {1}").format(lp_detail.leave_type, max_leaves_allowed))