Compensatory Leave Request - Validate and Create leave allocation for compnsatory leave type
This commit is contained in:
parent
b408b158dd
commit
b42f3d41ab
@ -3,6 +3,12 @@
|
|||||||
|
|
||||||
frappe.ui.form.on('Compensatory Leave Request', {
|
frappe.ui.form.on('Compensatory Leave Request', {
|
||||||
refresh: function(frm) {
|
refresh: function(frm) {
|
||||||
|
frm.set_query("leave_type", function() {
|
||||||
|
return {
|
||||||
|
filters: {
|
||||||
|
"is_compensatory": true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -4,9 +4,42 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe import _
|
||||||
|
from frappe.utils import date_diff
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
from erpnext.hr.utils import validate_dates, validate_overlap, get_leave_period
|
||||||
|
|
||||||
class CompensatoryLeaveRequest(Document):
|
class CompensatoryLeaveRequest(Document):
|
||||||
|
|
||||||
def validate_present(self):
|
def validate(self):
|
||||||
pass
|
validate_dates(self, self.work_from_date, self.work_end_date)
|
||||||
|
validate_overlap(self, self.work_from_date, self.work_end_date)
|
||||||
|
|
||||||
|
def on_submit(self):
|
||||||
|
if not self.leave_type:
|
||||||
|
frappe.throw(_("Please select a leave type to submit the request"))
|
||||||
|
else:
|
||||||
|
company = frappe.db.get_value("Employee", self.employee, "company")
|
||||||
|
leave_period = get_leave_period(self.work_from_date, self.work_end_date, company)
|
||||||
|
if leave_period:
|
||||||
|
self.create_leave_allocation(leave_period)
|
||||||
|
else:
|
||||||
|
frappe.throw(_("There is no leave period in between {0} and {1}").format(self.work_from_date, self.work_end_date))
|
||||||
|
|
||||||
|
def create_leave_allocation(self, leave_period):
|
||||||
|
date_difference = date_diff(self.work_end_date, self.work_from_date) + 1
|
||||||
|
is_carry_forward = frappe.db.get_value("Leave Type", self.leave_type, "is_carry_forward")
|
||||||
|
allocation = frappe.new_doc("Leave Allocation")
|
||||||
|
allocation.employee = self.employee
|
||||||
|
allocation.employee_name = self.employee_name
|
||||||
|
allocation.leave_type = self.leave_type
|
||||||
|
allocation.from_date = self.work_from_date
|
||||||
|
allocation.to_date = self.work_end_date
|
||||||
|
allocation.new_leaves_allocated = date_difference
|
||||||
|
allocation.total_leaves_allocated = date_difference
|
||||||
|
allocation.compensatory_request = self.name
|
||||||
|
allocation.description = self.reason
|
||||||
|
if is_carry_forward == 1:
|
||||||
|
allocation.carry_forward = True
|
||||||
|
allocation.save(ignore_permissions = True)
|
||||||
|
allocation.submit()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user