diff --git a/erpnext/schools/doctype/fee_schedule/fee_schedule.js b/erpnext/schools/doctype/fee_schedule/fee_schedule.js
index 5eba62d..952a4f6 100644
--- a/erpnext/schools/doctype/fee_schedule/fee_schedule.js
+++ b/erpnext/schools/doctype/fee_schedule/fee_schedule.js
@@ -6,15 +6,6 @@
 		frm.add_fetch("fee_structure", "receivable_account", "receivable_account");
 		frm.add_fetch("fee_structure", "income_account", "income_account");
 		frm.add_fetch("fee_structure", "cost_center", "cost_center");
-		frappe.realtime.on("fee_schedule_progress", function(data) {
-			if (data.progress && data.progress === 0) {
-				frappe.msgprint(__("Fee records will be created in the background. In case of any error the error message will be updated in the Schedule."));
-			}
-			if (data.progress) {
-				frm.reload_doc();
-				frm.dashboard.add_progress("Fee Creation Status", data.progress);
-			}
-		});
 	},
 
 	onload: function(frm) {
@@ -42,6 +33,21 @@
 				"academic_year": frm.doc.academic_year
 			};
 		});
+		frappe.realtime.on("fee_schedule_progress", function(data) {
+			if (data.reload && data.reload === 1) {
+				frm.reload_doc();
+			}
+			if (data.progress && data.progress === "0") {
+				frappe.msgprint(__("Fee records will be created in the background. In case of any error the error message will be updated in the Schedule."));
+			}
+			if (data.progress) {
+				let progress_bar = $(cur_frm.dashboard.progress_area).find(".progress-bar");
+				if (progress_bar) {
+					$(progress_bar).removeClass("progress-bar-danger").addClass("progress-bar-success progress-bar-striped");
+					$(progress_bar).css("width", data.progress+"%");
+				}
+			}
+		});
 	},
 
 	refresh: function(frm) {
@@ -53,9 +59,13 @@
 			frm.dashboard.add_indicator(__('Total Outstanding: {0}', [format_currency(info.total_unpaid,
 				info.currency)]), info.total_unpaid ? 'orange' : 'green');
 		}
-		
+		if (frm.doc.fee_creation_status=="In Process") {
+			frm.dashboard.add_progress("Fee Creation Status", "0");
+		}
 		if (!frm.doc.__islocal && !frm.doc.fee_creation_status || frm.doc.fee_creation_status == "Failed") {
 			frm.add_custom_button(__('Create Fees'), function() {
+				frm.doc.fee_creation_status = "In Process";
+				frm.save();
 				frappe.call({
 					method: "create_fees",
 					doc: frm.doc,
@@ -65,6 +75,9 @@
 				});
 			}, "fa fa-play", "btn-success");
 		}
+		if (frm.doc.fee_creation_status==="Successful") {
+			frm.set_read_only();
+		}
 	},
 
 	fee_structure: function(frm) {
@@ -98,6 +111,6 @@
 					frappe.model.set_value(cdt, cdn, "total_students", r.message);
 				}
 			}
-		})
+		});
 	}
 })
\ No newline at end of file
diff --git a/erpnext/schools/doctype/fee_schedule/fee_schedule.json b/erpnext/schools/doctype/fee_schedule/fee_schedule.json
index 8dd51f7..2b496af 100644
--- a/erpnext/schools/doctype/fee_schedule/fee_schedule.json
+++ b/erpnext/schools/doctype/fee_schedule/fee_schedule.json
@@ -39,7 +39,7 @@
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -1029,7 +1029,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-09-11 16:57:27.427777", 
+ "modified": "2017-09-12 02:03:37.062064", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Fee Schedule", 
diff --git a/erpnext/schools/doctype/fee_schedule/fee_schedule.py b/erpnext/schools/doctype/fee_schedule/fee_schedule.py
index 1b2299c..b2ee260 100644
--- a/erpnext/schools/doctype/fee_schedule/fee_schedule.py
+++ b/erpnext/schools/doctype/fee_schedule/fee_schedule.py
@@ -4,7 +4,6 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe import _
 from frappe.model.document import Document
 from frappe.model.mapper import get_mapped_doc
 from frappe.utils import money_in_words
@@ -40,9 +39,8 @@
 		self.grand_total_in_words = money_in_words(self.grand_total)
 
 	def create_fees(self):
-		if not self.fee_creation_status or self.fee_creation_status == "Failed":
-			self.fee_creation_status = "In Process"
-			frappe.publish_realtime("fee_schedule_progress", {"progress": 0, "reload": True}, user=frappe.session.user)
+		if self.fee_creation_status == "In Process":
+			frappe.publish_realtime("fee_schedule_progress", {"progress": "0", "reload": 1}, user=frappe.session.user)
 			enqueue(generate_fee, queue='default', timeout=6000, event='generate_fee',
 				fee_schedule=self.name)
 
@@ -52,15 +50,13 @@
 	total_records = sum([int(d.total_students) for d in doc.student_groups])
 	created_records = 0
 	for d in doc.student_groups:
-		try:
-			students = frappe.db.sql(""" select sg.program, sg.batch, sgs.student, sgs.student_name
-				from `tabStudent Group` sg, `tabStudent Group Student` sgs
-				where sg.name=%s and sg.name=sgs.parent and sgs.active=1""", d.student_group, as_dict=1)
+		students = frappe.db.sql(""" select sg.program, sg.batch, sgs.student, sgs.student_name
+			from `tabStudent Group` sg, `tabStudent Group Student` sgs
+			where sg.name=%s and sg.name=sgs.parent and sgs.active=1""", d.student_group, as_dict=1)
 
-			# students = frappe.get_all("Student Group Student", fields=["student", "student_name"],
-			# 	filters={"parent": d.student_group, "parenttype": "Student Group", "active": 1})
-			for student in students:
-				doc = get_mapped_doc("Fee Schedule", fee_schedule,	{
+		for student in students:
+			try:
+				fees_doc = get_mapped_doc("Fee Schedule", fee_schedule,	{
 					"Fee Schedule": {
 						"doctype": "Fees",
 						"field_map": {
@@ -68,19 +64,19 @@
 						}
 					}
 				})
-				doc.student = student.student
-				doc.student_name = student.student_name
-				doc.program = student.program
-				doc.student_batch = student.batch
-				doc.send_payment_request = 1
-				doc.save()
-				doc.submit()
+				fees_doc.student = student.student
+				fees_doc.student_name = student.student_name
+				fees_doc.program = student.program
+				fees_doc.student_batch = student.batch
+				fees_doc.send_payment_request = doc.send_email
+				fees_doc.save()
+				fees_doc.submit()
 				created_records += 1
-				frappe.publish_realtime("fee_schedule_progress", {"progress": created_records}, user=frappe.session.user)
+				frappe.publish_realtime("fee_schedule_progress", {"progress": str(int(created_records * 100/total_records))}, user=frappe.session.user)
 
-		except Exception as e:
-			error = True
-			err_msg = frappe.local.message_log and "\n\n".join(frappe.local.message_log) or cstr(e)
+			except Exception as e:
+				error = True
+				err_msg = frappe.local.message_log and "\n\n".join(frappe.local.message_log) or cstr(e)
 
 	if error:
 		frappe.db.rollback()
@@ -91,6 +87,8 @@
 		frappe.db.set_value("Fee Schedule", fee_schedule, "fee_creation_status", "Successful")
 		frappe.db.set_value("Fee Schedule", fee_schedule, "error_log", None)
 
+	frappe.publish_realtime("fee_schedule_progress", {"progress": "100", "reload": 1}, user=frappe.session.user)
+
 
 @frappe.whitelist()
 def get_fee_structure(source_name,target_doc=None):
