diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.json b/erpnext/hr/doctype/leave_allocation/leave_allocation.json
index 7108fc0..070e518 100644
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.json
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.json
@@ -160,7 +160,7 @@
    "print_hide": 0, 
    "read_only": 0, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -182,7 +182,7 @@
    "print_hide": 0, 
    "read_only": 0, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -306,7 +306,7 @@
  "is_submittable": 1, 
  "issingle": 0, 
  "istable": 0, 
- "modified": "2015-10-28 14:52:26.724671", 
+ "modified": "2015-10-28 18:18:29.137427", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Leave Allocation", 
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index 1b6c899..146c3fa 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -22,7 +22,6 @@
 		self.validate_new_leaves_allocated_value()
 
 	def on_update(self):
-		pass
 		self.get_total_allocated_leaves()
 	
 	def validate_period(self):
@@ -87,6 +86,11 @@
 
 	def get_total_allocated_leaves(self):
 		leave_det = self.get_carry_forwarded_leaves()
+		self.validate_total_leaves_allocated(leave_det)
 		frappe.db.set(self,'carry_forwarded_leaves',flt(leave_det['carry_forwarded_leaves']))
 		frappe.db.set(self,'total_leaves_allocated',flt(leave_det['total_leaves_allocated']))
 
+	def validate_total_leaves_allocated(self, leave_det):
+		if date_diff(self.to_date, self.from_date) <= leave_det['total_leaves_allocated']:
+			frappe.throw(_("Total allocated leaves are more than period"))
+		
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
index fe4f01b..d36fb2c 100644
--- a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
@@ -1,4 +1,69 @@
 from __future__ import unicode_literals
 import frappe
+import unittest
+from frappe.utils import getdate
 
-test_records = frappe.get_test_records('Leave Allocation')
+class TestLeaveAllocation(unittest.TestCase):
+	def test_overlapping_allocation(self):		
+		employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
+		leaves = [
+			{
+				"doctype": "Leave Allocation",
+				"__islocal": 1,
+				"employee": employee.name,
+				"employee_name": employee.employee_name,
+				"leave_type": "_Test Leave Type",
+				"from_date": getdate("2015-10-1"),
+				"to_date": getdate("2015-10-31"),
+				"new_leaves_allocated": 5,
+				"docstatus": 1			
+			},
+			{
+				"doctype": "Leave Allocation",
+				"__islocal": 1,
+				"employee": employee.name,
+				"employee_name": employee.employee_name,
+				"leave_type": "_Test Leave Type",
+				"from_date": getdate("2015-09-1"),
+				"to_date": getdate("2015-11-30"),
+				"new_leaves_allocated": 5			
+			}
+		]
+
+		frappe.get_doc(leaves[0]).save()
+		self.assertRaises(frappe.ValidationError, frappe.get_doc(leaves[1]).save)
+		
+	def test_invalid_period(self):		
+		employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
+		
+		d = frappe.get_doc({
+			"doctype": "Leave Allocation",
+			"__islocal": 1,
+			"employee": employee.name,
+			"employee_name": employee.employee_name,
+			"leave_type": "_Test Leave Type",
+			"from_date": getdate("2015-09-30"),
+			"to_date": getdate("2015-09-1"),
+			"new_leaves_allocated": 5			
+		})
+		
+		#invalid period
+		self.assertRaises(frappe.ValidationError, d.save)
+	
+	def test_allocated_leave_days_over_period(self):
+		employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
+		d = frappe.get_doc({
+			"doctype": "Leave Allocation",
+			"__islocal": 1,
+			"employee": employee.name,
+			"employee_name": employee.employee_name,
+			"leave_type": "_Test Leave Type",
+			"from_date": getdate("2015-09-1"),
+			"to_date": getdate("2015-09-30"),
+			"new_leaves_allocated": 35			
+		})
+		
+		#allocated leave more than period 
+		self.assertRaises(frappe.ValidationError, d.save)
+		
+test_dependencies = ["Employee", "Leave Type"]
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_allocation/test_records.json b/erpnext/hr/doctype/leave_allocation/test_records.json
index 036dc49..0637a08 100644
--- a/erpnext/hr/doctype/leave_allocation/test_records.json
+++ b/erpnext/hr/doctype/leave_allocation/test_records.json
@@ -1,18 +1 @@
-[
- {
-  "docstatus": 1,
-  "doctype": "Leave Allocation",
-  "employee": "_T-Employee-0001",
-  "fiscal_year": "_Test Fiscal Year 2013",
-  "leave_type": "_Test Leave Type",
-  "new_leaves_allocated": 15
- },
- {
-  "docstatus": 1,
-  "doctype": "Leave Allocation",
-  "employee": "_T-Employee-0002",
-  "fiscal_year": "_Test Fiscal Year 2013",
-  "leave_type": "_Test Leave Type",
-  "new_leaves_allocated": 15
- }
-]
+[]
\ No newline at end of file
diff --git a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js
index 4f97c43..41b1421 100644
--- a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js
+++ b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.js
@@ -4,11 +4,16 @@
 frappe.query_reports["Employee Leave Balance"] = {
 	"filters": [
 		{
-			"fieldname":"fiscal_year",
-			"label": __("Fiscal Year"),
-			"fieldtype": "Link",
-			"options": "Fiscal Year",
-			"default": frappe.defaults.get_user_default("fiscal_year")
+			"fieldname":"from_date",
+			"label": __("From Date"),
+			"fieldtype": "Date",
+			"default": frappe.datetime.year_start()
+		},
+		{
+			"fieldname":"to_date",
+			"label": __("To Date"),
+			"fieldtype": "Date",
+			"default": frappe.datetime.year_end()
 		},
 		{
 			"fieldname":"company",
diff --git a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
index d6f865b..0aa88a8 100644
--- a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
+++ b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
@@ -24,52 +24,47 @@
 
 	leave_types = frappe.db.sql_list("select name from `tabLeave Type`")
 
-	if filters.get("fiscal_year"):
-		fiscal_years = [filters["fiscal_year"]]
-	else:
-		fiscal_years = frappe.db.sql_list("select name from `tabFiscal Year` order by name desc")
-
 	employee_names = [d.name for d in employees]
 
-	allocations = frappe.db.sql("""select employee, fiscal_year, leave_type, total_leaves_allocated
+	allocations = frappe.db.sql("""select employee, leave_type, sum(new_leaves_allocated) as leaves_allocated
 	 	from `tabLeave Allocation`
-		where docstatus=1 and employee in (%s)""" %
-		','.join(['%s']*len(employee_names)), employee_names, as_dict=True)
-
-	applications = frappe.db.sql("""select employee, fiscal_year, leave_type,
+		where docstatus=1 and employee in (%s) and from_date >= '%s' and to_date <= '%s'""" %
+		(','.join(['%s']*len(employee_names)), filters.get("from_date"),
+		 filters.get("to_date")), employee_names, as_dict=True)
+		
+	applications = frappe.db.sql("""select employee, leave_type,
 			SUM(total_leave_days) as leaves
 		from `tabLeave Application`
 		where status="Approved" and docstatus = 1 and employee in (%s)
-		group by employee, fiscal_year, leave_type""" %
-			','.join(['%s']*len(employee_names)), employee_names, as_dict=True)
+		and from_date >= '%s' and to_date <= '%s'
+		group by employee, leave_type""" %
+		(','.join(['%s']*len(employee_names)), filters.get("from_date"),
+		 filters.get("to_date")), employee_names, as_dict=True)
 
 	columns = [
-		_("Fiscal Year"), _("Employee") + ":Link/Employee:150", _("Employee Name") + "::200", _("Department") +"::150"
+		_("Employee") + ":Link/Employee:150", _("Employee Name") + "::200", _("Department") +"::150"
 	]
 
 	for leave_type in leave_types:
-		columns.append(_(leave_type) + " " + _("Allocated") + ":Float")
+		columns.append(_(leave_type) + " " + _("Opening") + ":Float")
 		columns.append(_(leave_type) + " " + _("Taken") + ":Float")
 		columns.append(_(leave_type) + " " + _("Balance") + ":Float")
 
 	data = {}
 	for d in allocations:
-		data.setdefault((d.fiscal_year, d.employee,
-			d.leave_type), frappe._dict()).allocation = d.total_leaves_allocated
+		data.setdefault((d.employee,d.leave_type), frappe._dict()).allocation = d.leaves_allocated
 
 	for d in applications:
-		data.setdefault((d.fiscal_year, d.employee,
-			d.leave_type), frappe._dict()).leaves = d.leaves
+		data.setdefault((d.employee, d.leave_type), frappe._dict()).leaves = d.leaves
 
 	result = []
-	for fiscal_year in fiscal_years:
-		for employee in employees:
-			row = [fiscal_year, employee.name, employee.employee_name, employee.department]
-			result.append(row)
-			for leave_type in leave_types:
-				tmp = data.get((fiscal_year, employee.name, leave_type), frappe._dict())
-				row.append(tmp.allocation or 0)
-				row.append(tmp.leaves or 0)
-				row.append((tmp.allocation or 0) - (tmp.leaves or 0))
+	for employee in employees:
+		row = [employee.name, employee.employee_name, employee.department]
+		result.append(row)
+		for leave_type in leave_types:
+			tmp = data.get((employee.name, leave_type), frappe._dict())
+			row.append(tmp.allocation or 0)
+			row.append(tmp.leaves or 0)
+			row.append((tmp.allocation or 0) - (tmp.leaves or 0))
 
 	return columns, result
diff --git a/erpnext/patches/v6_6/remove_fiscal_year_from_leave_allocation.py b/erpnext/patches/v6_6/remove_fiscal_year_from_leave_allocation.py
new file mode 100644
index 0000000..1b24841
--- /dev/null
+++ b/erpnext/patches/v6_6/remove_fiscal_year_from_leave_allocation.py
@@ -0,0 +1,15 @@
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+	for leave_allocation in frappe.db.sql("select name, fiscal_year from `tabLeave Allocation`", as_dict=True):
+		year_start_date, year_end_date = frappe.db.get_value("Fiscal Year", leave_allocation["fiscal_year"],
+			["year_start_date", "year_end_date"])
+		
+		frappe.db.sql("""update `tabLeave Allocation` 
+			set from_date=%s, to_date=%s where name=%s""", 
+			(year_start_date, year_end_date, leave_allocation["name"]))
+			
+		frappe.db.commit()
+			
+		
\ No newline at end of file
