diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py index 6d25c06393..27a51c30e7 100644 --- a/erpnext/hr/doctype/salary_slip/salary_slip.py +++ b/erpnext/hr/doctype/salary_slip/salary_slip.py @@ -255,16 +255,19 @@ class SalarySlip(TransactionBase): for d in range(working_days): dt = add_days(cstr(getdate(self.start_date)), d) leave = frappe.db.sql(""" - select t1.name, t1.half_day - from `tabLeave Application` t1, `tabLeave Type` t2 - where t2.name = t1.leave_type - and t2.is_lwp = 1 - and t1.docstatus = 1 - and t1.employee = %(employee)s - and CASE WHEN t2.include_holiday != 1 THEN %(dt)s not in ('{0}') and %(dt)s between from_date and to_date and ifnull(t1.salary_slip, '') = '' + SELECT t1.name, + CASE WHEN t1.half_day_date = %(dt)s or t1.to_date = t1.from_date + THEN t1.half_day else 0 END + FROM `tabLeave Application` t1, `tabLeave Type` t2 + WHERE t2.name = t1.leave_type + AND t2.is_lwp = 1 + AND t1.docstatus = 1 + AND t1.employee = %(employee)s + AND CASE WHEN t2.include_holiday != 1 THEN %(dt)s not in ('{0}') and %(dt)s between from_date and to_date and ifnull(t1.salary_slip, '') = '' WHEN t2.include_holiday THEN %(dt)s between from_date and to_date and ifnull(t1.salary_slip, '') = '' END """.format(holidays), {"employee": self.employee, "dt": dt}) + if leave: lwp = cint(leave[0][1]) and (lwp + 0.5) or (lwp + 1) return lwp