Added ability to mark student batch in-active
diff --git a/erpnext/schools/doctype/assessment/assessment.js b/erpnext/schools/doctype/assessment/assessment.js
index efadbd6..828261a 100644
--- a/erpnext/schools/doctype/assessment/assessment.js
+++ b/erpnext/schools/doctype/assessment/assessment.js
@@ -7,6 +7,16 @@
 cur_frm.add_fetch("student", "title", "student_name");
 
 frappe.ui.form.on("Assessment" ,{
+	onload: function(frm){
+		cur_frm.set_query("student_batch", function(){
+			return{
+				"filters": {
+					"active": 1
+				}
+			};
+		});
+	},
+	
 	student_group : function(frm) {
 		frm.set_value("results" ,"");
 		if (frm.doc.student_group) {
diff --git a/erpnext/schools/doctype/assessment/assessment.py b/erpnext/schools/doctype/assessment/assessment.py
index cb307cb..95e224c 100644
--- a/erpnext/schools/doctype/assessment/assessment.py
+++ b/erpnext/schools/doctype/assessment/assessment.py
@@ -6,10 +6,14 @@
 from frappe.model.document import Document
 import frappe
 from frappe import _
+from erpnext.schools.doctype.student_batch.student_batch import validate_active_student_batch
 
 class Assessment(Document):
 	def validate(self):
 		self.validate_overlap()
+
+		if self.student_batch:
+			validate_active_student_batch(self.student_batch)
 	
 	def validate_overlap(self):
 		"""Validates overlap for Student Group/Student Batch, Instructor, Room"""
diff --git a/erpnext/schools/doctype/course_schedule/course_schedule.js b/erpnext/schools/doctype/course_schedule/course_schedule.js
index ab34ae9..18acdb3 100644
--- a/erpnext/schools/doctype/course_schedule/course_schedule.js
+++ b/erpnext/schools/doctype/course_schedule/course_schedule.js
@@ -9,6 +9,14 @@
 			frm.doc.from_time = from_datetime.format("HH:mm:ss");
 			frm.doc.to_time = to_datetime.format("HH:mm:ss");
 		}
+		
+		cur_frm.set_query("student_batch", function(){
+			return{
+				"filters": {
+					"active": 1
+				}
+			};
+		});
 	},
 	
 	refresh :function(frm) {
diff --git a/erpnext/schools/doctype/course_schedule/course_schedule.py b/erpnext/schools/doctype/course_schedule/course_schedule.py
index ec30c62..e312e9f 100644
--- a/erpnext/schools/doctype/course_schedule/course_schedule.py
+++ b/erpnext/schools/doctype/course_schedule/course_schedule.py
@@ -6,6 +6,7 @@
 import frappe
 from frappe import _
 from frappe.model.document import Document
+from erpnext.schools.doctype.student_batch.student_batch import validate_active_student_batch
 
 class CourseSchedule(Document):
 	def validate(self):
@@ -16,6 +17,9 @@
 		self.set_student_batch()
 		self.validate_date()
 		self.validate_overlap()
+		
+		if self.student_batch:
+			validate_active_student_batch(self.student_batch)
 	
 	def set_title(self):
 		"""Set document Title"""
diff --git a/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js b/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js
index b8d4562..5ee41d0 100644
--- a/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js
+++ b/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js
@@ -7,12 +7,25 @@
 cur_frm.add_fetch("student_group", "academic_year", "academic_year");
 cur_frm.add_fetch("student_group", "academic_term", "academic_term");
 
-frappe.ui.form.on("Course Scheduling Tool", "refresh", function(frm) {
-	frm.disable_save();
-	frm.page.set_primary_action(__("Schedule Course"), function() {
-		frappe.call({
-			method: "schedule_course",
-			doc:frm.doc
-		})
-	});
+frappe.ui.form.on("Course Scheduling Tool", {
+	
+	refresh: function(frm) {
+		frm.disable_save();
+		frm.page.set_primary_action(__("Schedule Course"), function() {
+			frappe.call({
+				method: "schedule_course",
+				doc:frm.doc
+			})
+		});
+	},
+	
+	onload: function(frm){
+		cur_frm.set_query("student_batch", function(){
+			return{
+				"filters": {
+					"active": 1
+				}
+			};
+		});
+	}
 });
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_attendance/student_attendance.js b/erpnext/schools/doctype/student_attendance/student_attendance.js
index 6e79d52..679e05a 100644
--- a/erpnext/schools/doctype/student_attendance/student_attendance.js
+++ b/erpnext/schools/doctype/student_attendance/student_attendance.js
@@ -5,7 +5,13 @@
 cur_frm.add_fetch("course_schedule", "student_batch", "student_batch");
 
 frappe.ui.form.on('Student Attendance', {
-	refresh: function(frm) {
-
+	onload: function(frm){
+		cur_frm.set_query("student_batch", function(){
+			return{
+				"filters": {
+					"active": 1
+				}
+			};
+		});
 	}
 });
diff --git a/erpnext/schools/doctype/student_attendance/student_attendance.py b/erpnext/schools/doctype/student_attendance/student_attendance.py
index 45b3014..bb7b74a 100644
--- a/erpnext/schools/doctype/student_attendance/student_attendance.py
+++ b/erpnext/schools/doctype/student_attendance/student_attendance.py
@@ -6,6 +6,7 @@
 import frappe
 from frappe.model.document import Document
 from frappe import _
+from erpnext.schools.doctype.student_batch.student_batch import validate_active_student_batch
 
 class StudentAttendance(Document):
 	def validate(self):
@@ -13,6 +14,9 @@
 		self.validate_mandatory()
 		self.validate_duplication()
 		
+		if self.student_batch:
+			validate_active_student_batch(self.student_batch)
+		
 	def validate_date(self):
 		if self.course_schedule:
 			self.date = frappe.db.get_value("Course Schedule", self.course_schedule, "schedule_date")
diff --git a/erpnext/schools/doctype/student_batch/student_batch.json b/erpnext/schools/doctype/student_batch/student_batch.json
index 51dc541..2e3363b 100644
--- a/erpnext/schools/doctype/student_batch/student_batch.json
+++ b/erpnext/schools/doctype/student_batch/student_batch.json
@@ -75,6 +75,35 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "default": "1", 
+   "fieldname": "active", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Active", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "column_break_2", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -280,7 +309,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-21 19:08:05.775954", 
+ "modified": "2016-11-28 16:59:31.270816", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Batch", 
diff --git a/erpnext/schools/doctype/student_batch/student_batch.py b/erpnext/schools/doctype/student_batch/student_batch.py
index ec2dc79..a1bc3c3 100644
--- a/erpnext/schools/doctype/student_batch/student_batch.py
+++ b/erpnext/schools/doctype/student_batch/student_batch.py
@@ -6,14 +6,18 @@
 from frappe.model.document import Document
 from erpnext.schools.utils import validate_duplicate_student
 import frappe
+from frappe import _
 
 class StudentBatch(Document):
-    def autoname(self):
-        prog_abb = frappe.db.get_value("Program", self.program, "program_abbreviation")
-        if not prog_abb:
-            prog_abb = self.program
-        self.name = prog_abb + "-"+ self.student_batch_name + "-" + self.academic_year
-        
-    def validate(self):
-        validate_duplicate_student(self.students)
-        
\ No newline at end of file
+	def autoname(self):
+		prog_abb = frappe.db.get_value("Program", self.program, "program_abbreviation")
+		if not prog_abb:
+			prog_abb = self.program
+		self.name = prog_abb + "-"+ self.student_batch_name + "-" + self.academic_year
+		
+	def validate(self):
+		validate_duplicate_student(self.students)
+		
+def validate_active_student_batch(student_batch):
+	if not frappe.db.get_value("Student Batch", student_batch, "active"):
+		frappe.throw(_("Student Batch is not Active."))
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js b/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js
index a6d035a..189361b 100644
--- a/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js
+++ b/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js
@@ -8,6 +8,16 @@
 		hide_field('attendance');
 	},
 	
+	onload: function(frm){
+		cur_frm.set_query("student_batch", function(){
+			return{
+				"filters": {
+					"active": 1
+				}
+			};
+		});
+	},
+	
 	student_batch :function(frm) {
 		if(frm.doc.student_batch && frm.doc.date) {
 			frappe.call({
diff --git a/erpnext/schools/doctype/student_group/student_group.js b/erpnext/schools/doctype/student_group/student_group.js
index 784f557..1a3c682 100644
--- a/erpnext/schools/doctype/student_group/student_group.js
+++ b/erpnext/schools/doctype/student_group/student_group.js
@@ -1,31 +1,41 @@
 cur_frm.add_fetch("student", "title", "student_name");
 
-frappe.ui.form.on("Student Group", "refresh", function(frm) {
-	if(!frm.doc.__islocal) {
-		frm.add_custom_button(__("Course Schedule"), function() {
-			frappe.route_options = {
-				student_group: frm.doc.name
-			}
-			frappe.set_route("List", "Course Schedule");
+frappe.ui.form.on("Student Group", {
+	refresh: function(frm) {
+		if(!frm.doc.__islocal) {
+			frm.add_custom_button(__("Course Schedule"), function() {
+				frappe.route_options = {
+					student_group: frm.doc.name
+				}
+				frappe.set_route("List", "Course Schedule");
+			});
+		
+			frm.add_custom_button(__("Assessment"), function() {
+				frappe.route_options = {
+					student_group: frm.doc.name
+				}
+				frappe.set_route("List", "Assessment");
+			});
+		}
+	},
+	
+	onload: function(frm){
+		cur_frm.set_query("academic_term",function(){
+			return{
+				"filters":{
+					"academic_year": (frm.doc.academic_year)
+				}
+			};
 		});
 		
-		frm.add_custom_button(__("Assessment"), function() {
-			frappe.route_options = {
-				student_group: frm.doc.name
-			}
-			frappe.set_route("List", "Assessment");
+		cur_frm.set_query("student_batch", function(){
+			return{
+				"filters": {
+					"active": 1
+				}
+			};
 		});
-	}
-});
-
-frappe.ui.form.on("Student Group", "onload", function(frm){
-	cur_frm.set_query("academic_term",function(){
-		return{
-			"filters":{
-				"academic_year": (frm.doc.academic_year)
-			}
-		};
-	});
+	}	
 });
 
 //If Student Batch is entered, deduce program, academic_year and academic term from it
diff --git a/erpnext/schools/doctype/student_group/student_group.py b/erpnext/schools/doctype/student_group/student_group.py
index f604773..bfb2da7 100644
--- a/erpnext/schools/doctype/student_group/student_group.py
+++ b/erpnext/schools/doctype/student_group/student_group.py
@@ -7,6 +7,7 @@
 from frappe.model.document import Document
 from frappe import _
 from erpnext.schools.utils import validate_duplicate_student
+from erpnext.schools.doctype.student_batch.student_batch import validate_active_student_batch
 
 class StudentGroup(Document):
 	def autoname(self):
@@ -30,6 +31,9 @@
 		self.validate_strength()
 		self.validate_student_name()
 		validate_duplicate_student(self.students)
+		
+		if self.student_batch:
+			validate_active_student_batch(self.student_batch)
 
 	def validate_strength(self):
 		if self.max_strength and len(self.students) > self.max_strength: