diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py index c75c2bd2f28..5704775c231 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.py +++ b/erpnext/hr/doctype/leave_application/leave_application.py @@ -238,10 +238,15 @@ def get_total_leave_days(leave_app): ret = {'total_leave_days' : 0.5} if not leave_app.half_day: tot_days = date_diff(leave_app.to_date, leave_app.from_date) + 1 + if frappe.db.get_value("Leave Type", self.leave_type, "include_holiday"): holidays = leave_app.get_holidays() ret = { 'total_leave_days' : flt(tot_days)-flt(holidays) - } + } + else: + ret = { + 'total_leave_days' : flt(tot_days) + } return ret @frappe.whitelist() diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py index 8cf0c806614..d9c08469080 100644 --- a/erpnext/hr/doctype/leave_application/test_leave_application.py +++ b/erpnext/hr/doctype/leave_application/test_leave_application.py @@ -247,3 +247,30 @@ class TestLeaveApplication(unittest.TestCase): "_T-Employee-0001") frappe.db.set_value("Employee", "_T-Employee-0001", "department", original_department) + + def test_exclude_holiday_in_leave(self): + frappe.db.set_value("Leave Type", self.leave_type, "include_holiday", 0) + application = frappe.copy_doc(_test_records[2]) + application.from_date = "2015-07-01" + application.to_date = "2015-07-05" + application.get_holidays = "2015-07-03" + application.insert() + + self.assertEquals(application.tot_days, 5) + self.assertEquals(application.holidays, 1) + self.assertEquals(application.ret, 4) + + def test_include_holiday_in_leave(self): + frappe.db.set_value("Leave Type", self.leave_type, "include_holiday", 1) + application = frappe.copy_doc(_test_records[2]) + application.from_date = "2015-07-01" + application.to_date = "2015-07-05" + application.get_holidays = "2015-07-03" + application.insert() + + self.assertEquals(application.tot_days, 5) + self.assertEquals(application.holidays, 1) + self.assertEquals(application.ret, 5) + + def tearDown(self): + frappe.db.set_value("Leave Type", self.leave_type, "include_holiday", 0) \ No newline at end of file diff --git a/erpnext/hr/doctype/leave_type/leave_type.json b/erpnext/hr/doctype/leave_type/leave_type.json index f644c696d18..4493af504cf 100644 --- a/erpnext/hr/doctype/leave_type/leave_type.json +++ b/erpnext/hr/doctype/leave_type/leave_type.json @@ -59,6 +59,12 @@ "fieldtype": "Check", "label": "Allow Negative Balance", "permlevel": 0 + }, + { + "fieldname": "include_holiday", + "fieldtype": "Check", + "label": "Include holidays within leaves as leaves", + "permlevel": 0 } ], "icon": "icon-flag",