diff --git a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
index 8884845..5f8edff 100644
--- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
+++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
@@ -165,20 +165,23 @@
 	return lwp
 
 def get_benefit_component_amount(employee, start_date, end_date, struct_row, sal_struct, period_length, frequency):
-	# Considering there is only one application for an year
+	payroll_period, period_factor, actual_payroll_days = get_payroll_period_days(start_date, end_date, employee)
+
+	if not payroll_period:
+		frappe.msgprint(_("Start and end dates not in a valid Payroll Period, cannot calculate {0}.")
+			.format(struct_row.salary_component))
+		return False
+
+	# Considering there is only one application for a year
 	benefit_application_name = frappe.db.sql("""
 	select name from `tabEmployee Benefit Application`
-	where employee=%(employee)s
+	where payroll_period=%(payroll_period)s and employee=%(employee)s
 	and docstatus = 1
-	and (date between %(start_date)s and %(end_date)s)
 	""", {
 		'employee': employee,
-		'start_date': start_date,
-		'end_date': end_date
+		'payroll_period': payroll_period
 	})
 
-	period_factor, actual_payroll_days = get_payroll_period_days(start_date, end_date, employee)
-
 	if frappe.db.get_value("Salary Component", struct_row.salary_component, "depends_on_lwp") != 1:
 		if frequency == "Monthly" and actual_payroll_days in range(360, 370):
 			period_length = 1
@@ -186,12 +189,12 @@
 
 	if period_factor:
 		# If there is application for benefit then fetch the amount from the application.
-		# else Split the max benefits to the pro-rata components with the ratio of thier max_benefit_amount
+		# else Split the max benefits to the pro-rata components with the ratio of their max_benefit_amount
 		if benefit_application_name:
 			benefit_application = frappe.get_doc("Employee Benefit Application", benefit_application_name[0][0])
 			return get_benefit_amount(benefit_application, struct_row, period_factor, period_length)
 
-		# TODO: Check if there is benefit claim for employee then pro-rata devid the rest of amount (Late Benefit Application)
+		# TODO: Check if there is benefit claim for employee then pro-rata divide the rest of amount (Late Benefit Application)
 		else:
 			component_max = frappe.db.get_value("Salary Component", struct_row.salary_component, "max_benefit_amount")
 			if component_max > 0:
diff --git a/erpnext/hr/doctype/payroll_period/payroll_period.py b/erpnext/hr/doctype/payroll_period/payroll_period.py
index 8990d75..506af99 100644
--- a/erpnext/hr/doctype/payroll_period/payroll_period.py
+++ b/erpnext/hr/doctype/payroll_period/payroll_period.py
@@ -47,24 +47,23 @@
 
 def get_payroll_period_days(start_date, end_date, employee):
 	company = frappe.db.get_value("Employee", employee, "company")
-	payroll_period_dates = frappe.db.sql("""
-	select start_date, end_date from `tabPayroll Period`
+	payroll_period = frappe.db.sql("""
+	select name, start_date, end_date from `tabPayroll Period`
 	where company=%(company)s
 	and (
 		(%(start_date)s between start_date and end_date)
-		or (%(end_date)s between start_date and end_date)
-		or (start_date between %(start_date)s and %(end_date)s)
+		and (%(end_date)s between start_date and end_date)
 	)""", {
 		'company': company,
 		'start_date': start_date,
 		'end_date': end_date
 	})
 
-	if len(payroll_period_dates) > 0:
-		actual_no_of_days = date_diff(getdate(payroll_period_dates[0][1]), getdate(payroll_period_dates[0][0])) + 1
+	if len(payroll_period) > 0:
+		actual_no_of_days = date_diff(getdate(payroll_period[0][2]), getdate(payroll_period[0][1])) + 1
 		working_days = actual_no_of_days
 		if not cint(frappe.db.get_value("HR Settings", None, "include_holidays_in_total_working_days")):
-			holidays = get_holidays_for_employee(employee, getdate(payroll_period_dates[0][0]), getdate(payroll_period_dates[0][1]))
+			holidays = get_holidays_for_employee(employee, getdate(payroll_period[0][1]), getdate(payroll_period[0][2]))
 			working_days -= len(holidays)
-		return working_days, actual_no_of_days
-	return False, False
+		return payroll_period[0][0], working_days, actual_no_of_days
+	return False, False, False
