Merge pull request #6050 from rohitwaghchaure/pos_serial_no_search_issue

[Fix] Serial no search issue, if serial no is similar with item code.
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 6bb9a1f..c6fd27d 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
 from __future__ import unicode_literals
 import frappe
 
-__version__ = '7.0.20'
+__version__ = '7.0.25'
 
 def get_default_company(user=None):
 	'''Get default company for user'''
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index c3a01b9..2450a8a 100644
--- a/erpnext/accounts/doctype/account/account.js
+++ b/erpnext/accounts/doctype/account/account.js
@@ -47,7 +47,7 @@
 
 cur_frm.cscript.add_toolbar_buttons = function(doc) {
 	cur_frm.add_custom_button(__('Chart of Accounts'),
-		function() { frappe.set_route("Tree", "Account"); }, __("View"))
+		function() { frappe.set_route("Tree", "Account"); });
 
 	if (doc.is_group == 1) {
 		cur_frm.add_custom_button(__('Group to Non-Group'),
@@ -61,7 +61,7 @@
 				"company": doc.company
 			};
 			frappe.set_route("query-report", "General Ledger");
-		}, __("View"));
+		});
 
 		cur_frm.add_custom_button(__('Non-Group to Group'),
 			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet', 'btn-default')
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index e2e8340..4578f30 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -1,5 +1,6 @@
 // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
+{% include "erpnext/public/js/controllers/accounts.js" %}
 
 frappe.ui.form.on('Payment Entry', {
 	onload: function(frm) {
@@ -257,22 +258,6 @@
 		}
 	},
 
-	mode_of_payment: function(frm) {
-		return  frappe.call({
-			method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
-			args: {
-				"mode_of_payment": frm.doc.mode_of_payment,
-				"company": frm.doc.company
-			},
-			callback: function(r, rt) {
-				if(r.message) {
-					var payment_account_field = frm.doc.payment_type == "Receive" ? "paid_to" : "paid_from";
-					frm.set_value(payment_account_field, r.message['account']);
-				}
-			}
-		});
-	},
-
 	paid_from: function(frm) {
 		if(frm.set_party_account_based_on_party) return;
 
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js
index 364b78c..a092e56 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js
@@ -1,21 +1,37 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-
-//========================== On Load =================================================
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	if (!doc.transaction_date) doc.transaction_date = dateutil.obj_to_str(new Date());
-}
-
-
-// ***************** Get Account Head *****************
-cur_frm.fields_dict['closing_account_head'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters: [
-			['Account', 'company', '=', doc.company],
-			['Account', 'is_group', '=', '0'],
-			['Account', 'freeze_account', '=', 'No'],
-			['Account', 'root_type', 'in', 'Liability, Equity']
-		]
+frappe.ui.form.on('Period Closing Voucher', {
+	onload: function(frm) {
+		if (!frm.doc.transaction_date) frm.doc.transaction_date = dateutil.obj_to_str(new Date());
+	},
+	
+	setup: function(frm) {
+		frm.set_query("closing_account_head", function() {
+			return {
+				filters: [
+					['Account', 'company', '=', frm.doc.company],
+					['Account', 'is_group', '=', '0'],
+					['Account', 'freeze_account', '=', 'No'],
+					['Account', 'root_type', 'in', 'Liability, Equity']
+				]
+			}
+		});
+	},
+	
+	refresh: function(frm) {
+		if(frm.doc.docstatus==1) {
+			frm.add_custom_button(__('Ledger'), function() {
+				frappe.route_options = {
+					"voucher_no": frm.doc.name,
+					"from_date": frm.doc.posting_date,
+					"to_date": frm.doc.posting_date,
+					"company": frm.doc.company,
+					group_by_voucher: 0
+				};
+				frappe.set_route("query-report", "General Ledger");
+			}, "icon-table");
+		}
 	}
-}
+	
+})
diff --git a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
index 6f5a663..d68e291 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
@@ -55,9 +55,8 @@
 		if random_expense_account:
 			# Check posted value for teh above random_expense_account
 			gle_for_random_expense_account = frappe.db.sql("""
-				select debit - credit as amount,
-					debit_in_account_currency - credit_in_account_currency
-						as amount_in_account_currency
+				select sum(debit - credit) as amount,
+					sum(debit_in_account_currency - credit_in_account_currency) as amount_in_account_currency
 				from `tabGL Entry`
 				where voucher_type='Period Closing Voucher' and voucher_no=%s and account =%s""",
 				(pcv.name, random_expense_account[0].account), as_dict=True)
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js
index 99438a6..c1aa0c3 100755
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.js
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+{% include "erpnext/public/js/controllers/accounts.js" %}
+
 frappe.ui.form.on("POS Profile", "onload", function(frm) {
 	frm.set_query("selling_price_list", function() {
 		return { filters: { selling: 1 } };
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index b247e3e..930f25f 100755
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -9,6 +9,7 @@
  "docstatus": 0, 
  "doctype": "DocType", 
  "document_type": "Document", 
+ "editable_grid": 0, 
  "fields": [
   {
    "allow_on_submit": 1, 
@@ -121,6 +122,33 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "description": "", 
+   "fieldname": "bill_no", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 1, 
+   "in_list_view": 0, 
+   "label": "Supplier Invoice No", 
+   "length": 0, 
+   "no_copy": 0, 
+   "oldfieldname": "bill_no", 
+   "oldfieldtype": "Data", 
+   "permlevel": 0, 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "is_paid", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -146,6 +174,32 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "default": "0", 
+   "fieldname": "is_return", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Is Return", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "column_break1", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -198,19 +252,18 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "description": "", 
-   "fieldname": "bill_no", 
-   "fieldtype": "Data", 
+   "fieldname": "bill_date", 
+   "fieldtype": "Date", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
-   "label": "Supplier Invoice No", 
+   "label": "Supplier Invoice Date", 
    "length": 0, 
    "no_copy": 0, 
-   "oldfieldname": "bill_no", 
-   "oldfieldtype": "Data", 
+   "oldfieldname": "bill_date", 
+   "oldfieldtype": "Date", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
@@ -225,17 +278,17 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "bill_date", 
+   "fieldname": "due_date", 
    "fieldtype": "Date", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
-   "label": "Supplier Invoice Date", 
+   "label": "Due Date", 
    "length": 0, 
    "no_copy": 0, 
-   "oldfieldname": "bill_date", 
+   "oldfieldname": "due_date", 
    "oldfieldtype": "Date", 
    "permlevel": 0, 
    "print_hide": 1, 
@@ -303,32 +356,6 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "default": "0", 
-   "fieldname": "is_return", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Is Return", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
    "depends_on": "is_return", 
    "fieldname": "return_against", 
    "fieldtype": "Link", 
@@ -2501,32 +2528,6 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "due_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Due Date", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "due_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
    "fieldname": "against_expense_account", 
    "fieldtype": "Small Text", 
    "hidden": 1, 
@@ -3031,7 +3032,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-06-30 13:40:39.440648", 
+ "modified": "2016-08-10 02:45:28.746569", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Purchase Invoice", 
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index d10b3d9..15fd299 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -25,6 +25,9 @@
 	return columns, res
 
 def validate_filters(filters, account_details):
+	if not filters.get('company'):
+		frappe.throw(_('{0} is mandatory').format(_('Company')))
+
 	if filters.get("account") and not account_details.get(filters.account):
 		frappe.throw(_("Account {0} does not exists").format(filters.account))
 
@@ -87,7 +90,7 @@
 	columns += [
 		_("Voucher Type") + "::120", _("Voucher No") + ":Dynamic Link/"+_("Voucher Type")+":160",
 		_("Against Account") + "::120", _("Party Type") + "::80", _("Party") + "::150",
-		_("Project") + ":Link/Project:100", _("Cost Center") + ":Link/Cost Center:100", 
+		_("Project") + ":Link/Project:100", _("Cost Center") + ":Link/Cost Center:100",
 		_("Remarks") + "::400"
 	]
 
@@ -111,7 +114,7 @@
 		if filters.get("group_by_voucher") else "group by name"
 
 	gl_entries = frappe.db.sql("""
-		select 
+		select
 			posting_date, account, party_type, party,
 			sum(debit) as debit, sum(credit) as credit,
 			voucher_type, voucher_no, cost_center, project,
diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.html b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.html
new file mode 100644
index 0000000..e26636e
--- /dev/null
+++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.html
@@ -0,0 +1,132 @@
+
+<head>
+	
+	
+	<link href="/assets/frappe/css/c3.min.css" rel="stylesheet" type="text/css">
+	
+	
+	<script type="text/javascript" src="/assets/frappe/js/lib/d3.min.js"></script>
+	<script type="text/javascript" src="/assets/frappe/js/lib/c3.min.js"></script>
+    <script type="text/javascript">
+
+		onReady("#chart_div", function() {
+			var chartData = [];
+			{% var q = 0; %}
+			{% for(var j=0, m=data.length+1; j<m; j++) { %}
+			
+				var tempData{%=j%} = [];
+				
+				{% for(var i=1, l=report.columns.length; i<l; i++) { %}
+					{% if(__(report.columns[i].label) != __("Quotation")) { %}
+					
+						{% if(j == 0) { %}
+							{% if(i == 1) { %}
+								tempData{%=j%}[{%=i%}-1] = \"x\";
+							{% } else { %}
+
+								tempData{%=j%}[{%=i%}-1] = Math.log(parseInt(\"{%= report.columns[i].label %}\".replace(\"Qty: \",\"\"))) / Math.LN10;
+							{% } %}
+						{% } else { %}
+							{% if(i == 1) { %}
+								tempData{%=j%}[{%=i%}-1] = \"{%= data[j-1][report.columns[i].field] %} \";
+							{% } else { %}
+							tempData{%=j%}[{%=i%}-1] = {% if(data[j-1][report.columns[i].field] == "") { if (i > 2) { %} 
+										tempData{%=j%}[{%=i%}-2] 
+									{% } else { %} 
+										0 
+								{% } } else { %} 
+									{%= data[j-1][report.columns[i].field] %} 
+							{% } %};
+							{% } %};
+						{% } %}
+					{% } else { %}
+						{% if(j == 0) { %}
+							{% if(i < l-1) { %}
+								tempData{%=j%}[{%=i%}-1] = Math.log(parseInt(\"{%= report.columns[i+1].label %}\".replace(\"Qty: \",\"\"))-1) / Math.LN10;
+							{% } else { %}
+								tempData{%=j%}[{%=i%}-1] = Math.log(2*parseInt(\"{%= report.columns[i-1].label %}\".replace(\"Qty: \",\"\"))) / Math.LN10;
+							{% } %}
+						{% } else { %}
+
+							tempData{%=j%}[{%=i%}-1] = tempData{%=j%}[{%=i%}-2];
+						{% } %}
+
+					{% } %}
+					
+				{% } %}
+				chartData[{%=j%}] = tempData{%=j%};
+			{% } %}
+			console.log(chartData);
+			
+			hold = {
+			bindto: "#chart_div" ,data: {
+				x: "x",
+				columns: chartData
+			},
+			axis: {
+				x: {
+					tick: {
+					   format: function (x22) { return Math.pow(10,x22).toFixed(0); },
+						culling: {
+							max: {%=report.columns.length%} / 2
+						}
+
+					}
+				}
+			},
+			point: {
+			  show: false
+			}
+			};
+			console.log(hold);
+			var chart = c3.generate(hold);
+		});
+		
+		function onReady(selector, callback) {
+        var intervalID = window.setInterval(function() {
+          if (document.querySelector(selector) !== undefined) {
+            window.clearInterval(intervalID);
+            callback.call(this);
+          }
+        }, 500);}
+				
+		
+    </script>
+
+ </head>
+<div style="margin-bottom: 7px;" class="text-center">
+	{%= frappe.boot.letter_heads[frappe.defaults.get_default("letter_head")] %}
+</div>
+<h2 class="text-center">{%= __(report.report_name) %}</h2>
+<h4 class="text-center">{%= filters.item %} </h4>
+
+<hr>
+<table class="table table-bordered">
+	<thead>
+		<tr>
+			{% for(var i=0, l=report.columns.length; i<l; i++) { %}
+				<th style="width: 15%">{%= report.columns[i].label %}</th>
+			{% } %}
+
+		</tr>
+	</thead>
+	<tbody>
+
+		{% for(var i=0, l=data.length; i<l; i++) { %}
+			<tr>
+			
+				{% for(var j=0,m=report.columns.length; j<m; j++) { %}
+					<td style="width: 15%">{%= data[i][report.columns[j].field] %}</td>
+				{% } %}
+
+		</tr>
+		{% } %}
+	</tbody>
+</table>
+
+<h4 class="text-center"> Analysis Chart </h4>
+<div id="chart_div"></div>
+
+
+		
+<p class="text-right text-muted">Printed On {%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
\ No newline at end of file
diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
index 5bf9c7b..1793fc3 100644
--- a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
+++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
@@ -2,6 +2,8 @@
 # For license information, please see license.txt
 
 from __future__ import unicode_literals
+from erpnext.setup.utils import get_exchange_rate
+
 import frappe
 
 def execute(filters=None):
@@ -22,6 +24,7 @@
 	if item:
 		price_data = []
 		suppliers = []
+		company_currency = frappe.db.get_default("currency")
 		# Get the list of suppliers
 		for root in frappe.db.sql("""select parent, qty, rate from `tabSupplier Quotation Item` where item_code=%s and docstatus < 2""", item, as_dict=1):
 			for splr in frappe.db.sql("""SELECT supplier from `tabSupplier Quotation` where name =%s and docstatus < 2""", root.parent, as_dict=1):
@@ -35,6 +38,9 @@
 			
 		#Add a row for each supplier
 		for root in set(suppliers):
+			supplier_currency = frappe.db.get_value("Supplier",root,"default_currency")
+			exg = get_exchange_rate(supplier_currency,company_currency)
+
 			row = frappe._dict({
 				"supplier_name": root
 			})
@@ -42,7 +48,7 @@
 				# Get the quantity for this row
 				for item_price in price_data:
 					if str(item_price.qty) == col.key and item_price.supplier == root:
-						row[col.key] = item_price.rate
+						row[col.key] = item_price.rate * exg
 						row[col.key + "QUOTE"] = item_price.parent
 						break
 					else:
diff --git a/erpnext/docs/assets/img/schools/__init__.py b/erpnext/docs/assets/img/schools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/__init__.py
diff --git a/erpnext/docs/assets/img/schools/fees/__init__.py b/erpnext/docs/assets/img/schools/fees/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/fees/__init__.py
diff --git a/erpnext/docs/assets/img/schools/fees/fee-category.png b/erpnext/docs/assets/img/schools/fees/fee-category.png
new file mode 100644
index 0000000..6c8d2e9
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/fees/fee-category.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/fees/fee-structure.png b/erpnext/docs/assets/img/schools/fees/fee-structure.png
new file mode 100644
index 0000000..81f3e20
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/fees/fee-structure.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/fees/fees-section.png b/erpnext/docs/assets/img/schools/fees/fees-section.png
new file mode 100644
index 0000000..119877a
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/fees/fees-section.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/fees/fees.png b/erpnext/docs/assets/img/schools/fees/fees.png
new file mode 100644
index 0000000..e2a2fd7
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/fees/fees.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/home.png b/erpnext/docs/assets/img/schools/home.png
new file mode 100644
index 0000000..4c27d5b
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/home.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/schedule/__init__.py b/erpnext/docs/assets/img/schools/schedule/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/__init__.py
diff --git a/erpnext/docs/assets/img/schools/schedule/course-schedule-att-1.png b/erpnext/docs/assets/img/schools/schedule/course-schedule-att-1.png
new file mode 100644
index 0000000..07130ca
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/course-schedule-att-1.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/schedule/course-schedule-att.png b/erpnext/docs/assets/img/schools/schedule/course-schedule-att.png
new file mode 100644
index 0000000..df1b3af
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/course-schedule-att.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/schedule/course-schedule.png b/erpnext/docs/assets/img/schools/schedule/course-schedule.png
new file mode 100644
index 0000000..c58cabf
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/course-schedule.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/schedule/examination.png b/erpnext/docs/assets/img/schools/schedule/examination.png
new file mode 100644
index 0000000..4e58565
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/examination.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/schedule/schedule-section.png b/erpnext/docs/assets/img/schools/schedule/schedule-section.png
new file mode 100644
index 0000000..c942a0f
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/schedule-section.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/schedule/scheduling-tool.png b/erpnext/docs/assets/img/schools/schedule/scheduling-tool.png
new file mode 100644
index 0000000..da20eaf
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/scheduling-tool.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/schedule/student-attendance.png b/erpnext/docs/assets/img/schools/schedule/student-attendance.png
new file mode 100644
index 0000000..5cc4086
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/schedule/student-attendance.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/setup/__init__.py b/erpnext/docs/assets/img/schools/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/__init__.py
diff --git a/erpnext/docs/assets/img/schools/setup/academic-term.png b/erpnext/docs/assets/img/schools/setup/academic-term.png
new file mode 100644
index 0000000..6230f49
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/academic-term.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/setup/academic-year.png b/erpnext/docs/assets/img/schools/setup/academic-year.png
new file mode 100644
index 0000000..83aa64c
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/academic-year.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/setup/course.png b/erpnext/docs/assets/img/schools/setup/course.png
new file mode 100644
index 0000000..fe9fbb3
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/course.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/setup/instructor.png b/erpnext/docs/assets/img/schools/setup/instructor.png
new file mode 100644
index 0000000..8ea86bb
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/instructor.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/setup/program.png b/erpnext/docs/assets/img/schools/setup/program.png
new file mode 100644
index 0000000..2498716
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/program.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/setup/room.png b/erpnext/docs/assets/img/schools/setup/room.png
new file mode 100644
index 0000000..fd1831e
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/room.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/setup/setup-section.png b/erpnext/docs/assets/img/schools/setup/setup-section.png
new file mode 100644
index 0000000..c02bbc4
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/setup/setup-section.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/student/__init__.py b/erpnext/docs/assets/img/schools/student/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/__init__.py
diff --git a/erpnext/docs/assets/img/schools/student/program-enrollment.png b/erpnext/docs/assets/img/schools/student/program-enrollment.png
new file mode 100644
index 0000000..df96f3c
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/program-enrollment.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/student/student-applicant-enroll.png b/erpnext/docs/assets/img/schools/student/student-applicant-enroll.png
new file mode 100644
index 0000000..fb92a67
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/student-applicant-enroll.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/student/student-applicant.png b/erpnext/docs/assets/img/schools/student/student-applicant.png
new file mode 100644
index 0000000..4834cf6
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/student-applicant.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/student/student-group-creation-tool.png b/erpnext/docs/assets/img/schools/student/student-group-creation-tool.png
new file mode 100644
index 0000000..32e6498
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/student-group-creation-tool.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/student/student-group.png b/erpnext/docs/assets/img/schools/student/student-group.png
new file mode 100644
index 0000000..894ef91
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/student-group.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/student/student-section.png b/erpnext/docs/assets/img/schools/student/student-section.png
new file mode 100644
index 0000000..009443d
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/student-section.png
Binary files differ
diff --git a/erpnext/docs/assets/img/schools/student/student.png b/erpnext/docs/assets/img/schools/student/student.png
new file mode 100644
index 0000000..79dc0f9
--- /dev/null
+++ b/erpnext/docs/assets/img/schools/student/student.png
Binary files differ
diff --git a/erpnext/docs/user/manual/en/schools/__init__.py b/erpnext/docs/user/manual/en/schools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/__init__.py
diff --git a/erpnext/docs/user/manual/en/schools/fees/__init__.py b/erpnext/docs/user/manual/en/schools/fees/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/fees/__init__.py
diff --git a/erpnext/docs/user/manual/en/schools/fees/fee-category.md b/erpnext/docs/user/manual/en/schools/fees/fee-category.md
new file mode 100644
index 0000000..d6694b5
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/fees/fee-category.md
@@ -0,0 +1,7 @@
+# Fee Category
+
+List of all different type of fees collected.
+
+<img class="screenshot" alt="Fees Category" src="{{url_prefix}}/assets/img/schools/fees/fee-category.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/fees/fee-structure.md b/erpnext/docs/user/manual/en/schools/fees/fee-structure.md
new file mode 100644
index 0000000..08d09e5
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/fees/fee-structure.md
@@ -0,0 +1,7 @@
+# Fee Structure
+
+A Fee Structure is a template that can be used while making fee records.
+
+<img class="screenshot" alt="Fees Structure" src="{{url_prefix}}/assets/img/schools/fees/fee-structure.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/fees/fees.md b/erpnext/docs/user/manual/en/schools/fees/fees.md
new file mode 100644
index 0000000..242abf8
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/fees/fees.md
@@ -0,0 +1,8 @@
+# Fees
+
+Maintain a record of fees collected from students.
+The [Fee Structure]({{docs_base_url}}/user/manual/en/schools/fees/fee-structure.html) is fetched based on the selected Program and Academic Term.
+
+<img class="screenshot" alt="Fees" src="{{url_prefix}}/assets/img/schools/fees/fees.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/fees/index.md b/erpnext/docs/user/manual/en/schools/fees/index.md
new file mode 100644
index 0000000..f75c537
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/fees/index.md
@@ -0,0 +1,9 @@
+# Fees
+
+This section contains 'Fee' related documents.
+
+<img class="screenshot" alt="Fees Section" src="{{url_prefix}}/assets/img/schools/fees/fees-section.png">
+
+### Topics
+
+{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/fees/index.txt b/erpnext/docs/user/manual/en/schools/fees/index.txt
new file mode 100644
index 0000000..265ac6a
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/fees/index.txt
@@ -0,0 +1,3 @@
+fees
+fee-structure
+fee-category
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/index.md b/erpnext/docs/user/manual/en/schools/index.md
new file mode 100644
index 0000000..0dff60b
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/index.md
@@ -0,0 +1 @@
+{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/index.txt b/erpnext/docs/user/manual/en/schools/index.txt
new file mode 100644
index 0000000..780bfa5
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/index.txt
@@ -0,0 +1,4 @@
+student
+schedule
+fees
+setup
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/__init__.py b/erpnext/docs/user/manual/en/schools/schedule/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/schedule/__init__.py
diff --git a/erpnext/docs/user/manual/en/schools/schedule/course-schedule.md b/erpnext/docs/user/manual/en/schools/schedule/course-schedule.md
new file mode 100644
index 0000000..9c27f61
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/schedule/course-schedule.md
@@ -0,0 +1,25 @@
+# Course Schedule
+
+Course Schedule is the schedule of a session conducted by an Instructor for a particular Course.
+You can see the overall course schedule in the Calendar view.
+
+<img class="screenshot" alt="Course Schedule" src="{{url_prefix}}/assets/img/schools/schedule/course-schedule.png">
+
+### Marking Attendance
+
+You can mark attendance for a Student Group against a Course Schedule.
+
+<img class="screenshot" alt="Course Schedule Attendance" src="{{url_prefix}}/assets/img/schools/schedule/course-schedule-att.png">
+
+- To make attendance, expand the attendance section.
+- Check the students who were present for that session.
+- Click on 'Mark Attendance'. The system will create the Attendance records.
+
+###View Attendance
+
+Once you have marked Attendance against a Course Schedule the Attendance section in the Course Schedule shall be hidden. 
+A View Attendance button shall appear. Click on that button to view all attendance records created against that Course Schedule.
+
+<img class="screenshot" alt="Course Schedule Attendance" src="{{url_prefix}}/assets/img/schools/schedule/course-schedule-att-1.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/examination.md b/erpnext/docs/user/manual/en/schools/schedule/examination.md
new file mode 100644
index 0000000..cd5d838
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/schedule/examination.md
@@ -0,0 +1,8 @@
+# Examination
+
+The Examination record can be used to track the exam schedule and the results of that exam.
+
+<img class="screenshot" alt="Examination" src="{{url_prefix}}/assets/img/schools/schedule/examination.png">
+
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/index.md b/erpnext/docs/user/manual/en/schools/schedule/index.md
new file mode 100644
index 0000000..3fd993e
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/schedule/index.md
@@ -0,0 +1,7 @@
+# Schedule
+
+<img class="screenshot" alt="Schedule Section" src="{{url_prefix}}/assets/img/schools/schedule/schedule-section.png">
+
+### Topics
+
+{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/index.txt b/erpnext/docs/user/manual/en/schools/schedule/index.txt
new file mode 100644
index 0000000..704ad84
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/schedule/index.txt
@@ -0,0 +1,4 @@
+course-schedule
+student-attendance
+scheduling-tool
+examination
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/scheduling-tool.md b/erpnext/docs/user/manual/en/schools/schedule/scheduling-tool.md
new file mode 100644
index 0000000..84b3908
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/schedule/scheduling-tool.md
@@ -0,0 +1,23 @@
+# Scheduling Tool
+
+This tool can be used to create 'Course Schedules'. 
+
+<img class="screenshot" alt="Scheduling Tool" src="{{url_prefix}}/assets/img/schools/schedule/scheduling-tool.png">
+
+### Creating Course Schedules
+
+- Select Student Group for which you need to create Course Schedules.
+- Select Course, Room and Instructor for Course Schedules.
+- Enter From Time and To Time for Course Schedule.
+- Enter Start Date and End Date of the Course (Course Schedules will be created within this date range)
+- Enter Day of the week on which you want to schedule the Course.
+- Click on the 'Schedule Course' button
+- The system will create Course Schedules if the Room and Instructor are available and there is no conflict for the selected Student Group with other Course Schedules.
+
+###Rescheduling
+
+- If you wish to reschedule Course Schedules created against a Course, follow the instructions for creating course schedules
+- Check the 'Reschedule' checkbox and then click 'Schedule Course' button.
+- System will delete existing Course Schedules for specified Course within the mentioned Course Start Date and Course End Date and crate new Course Schedules.
+
+{next}
diff --git a/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md b/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md
new file mode 100644
index 0000000..474b543
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md
@@ -0,0 +1,7 @@
+# Student Attendance
+
+Maintains attendance record of the student. Attendance Records can be created against Course Schedules.
+
+<img class="screenshot" alt="Student Attendance" src="{{url_prefix}}/assets/img/schools/schedule/student-attendance.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/__init__.py b/erpnext/docs/user/manual/en/schools/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/schools/setup/academic-term.md b/erpnext/docs/user/manual/en/schools/setup/academic-term.md
new file mode 100644
index 0000000..dbce6d9
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/academic-term.md
@@ -0,0 +1,6 @@
+# Academic Term
+
+<img class="screenshot" alt="Academic Term" src="{{url_prefix}}/assets/img/schools/setup/academic-term.png">
+
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/academic-year.md b/erpnext/docs/user/manual/en/schools/setup/academic-year.md
new file mode 100644
index 0000000..4a15393
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/academic-year.md
@@ -0,0 +1,5 @@
+# Academic Year
+
+<img class="screenshot" alt="Academic Year" src="{{url_prefix}}/assets/img/schools/setup/academic-year.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/course.md b/erpnext/docs/user/manual/en/schools/setup/course.md
new file mode 100644
index 0000000..da5fa37
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/course.md
@@ -0,0 +1,5 @@
+# Course
+
+<img class="screenshot" alt="Course" src="{{url_prefix}}/assets/img/schools/setup/course.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/index.md b/erpnext/docs/user/manual/en/schools/setup/index.md
new file mode 100644
index 0000000..5a360dd
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/index.md
@@ -0,0 +1,7 @@
+# Setup
+
+<img class="screenshot" alt="Setup Section" src="{{url_prefix}}/assets/img/schools/setup/setup-section.png">
+
+### Topics
+
+{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/index.txt b/erpnext/docs/user/manual/en/schools/setup/index.txt
new file mode 100644
index 0000000..fb9ba05
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/index.txt
@@ -0,0 +1,6 @@
+course
+program
+instructor
+room
+academic-term
+academic-year
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/instructor.md b/erpnext/docs/user/manual/en/schools/setup/instructor.md
new file mode 100644
index 0000000..adbfe2a
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/instructor.md
@@ -0,0 +1,5 @@
+# Instructor
+
+<img class="screenshot" alt="Instructor" src="{{url_prefix}}/assets/img/schools/setup/instructor.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/program.md b/erpnext/docs/user/manual/en/schools/setup/program.md
new file mode 100644
index 0000000..813019b
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/program.md
@@ -0,0 +1,5 @@
+# Program
+
+<img class="screenshot" alt="Program" src="{{url_prefix}}/assets/img/schools/setup/program.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/room.md b/erpnext/docs/user/manual/en/schools/setup/room.md
new file mode 100644
index 0000000..052e962
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/room.md
@@ -0,0 +1,6 @@
+# Room
+
+
+<img class="screenshot" alt="Room" src="{{url_prefix}}/assets/img/schools/setup/room.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/__init__.py b/erpnext/docs/user/manual/en/schools/student/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/__init__.py
diff --git a/erpnext/docs/user/manual/en/schools/student/index.md b/erpnext/docs/user/manual/en/schools/student/index.md
new file mode 100644
index 0000000..12d8b82
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/index.md
@@ -0,0 +1,9 @@
+# Student
+
+This section contains student related documents.
+
+<img class="screenshot" alt="Student Section" src="{{url_prefix}}/assets/img/schools/student/student-section.png">
+
+### Topics
+
+{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/index.txt b/erpnext/docs/user/manual/en/schools/student/index.txt
new file mode 100644
index 0000000..1e34141
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/index.txt
@@ -0,0 +1,5 @@
+student-applicant
+student
+program-enrollment
+student-group
+student-group-creation-tool
diff --git a/erpnext/docs/user/manual/en/schools/student/program-enrollment.md b/erpnext/docs/user/manual/en/schools/student/program-enrollment.md
new file mode 100644
index 0000000..2c8ec12
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/program-enrollment.md
@@ -0,0 +1,5 @@
+This form allows you to enroll a student to a program. A student can be enrolled to multiple programs.  
+
+<img class="screenshot" alt="Student Applicant Enrollment" src="{{url_prefix}}/assets/img/schools/student/program-enrollment.png">
+
+{next}
diff --git a/erpnext/docs/user/manual/en/schools/student/student-applicant.md b/erpnext/docs/user/manual/en/schools/student/student-applicant.md
new file mode 100644
index 0000000..cd4426c
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/student-applicant.md
@@ -0,0 +1,28 @@
+# Student Applicant
+
+A Student Applicant record needs to be created when a student applies for a program at your institute.
+You can Approve or Reject a student applicant. By accepting a student applicant you can add them to the student master.
+
+<img class="screenshot" alt="Student Applicant" src="{{url_prefix}}/assets/img/schools/student/student-applicant.png">
+
+### Application Status
+
+- By default when a student applicant is created in the system, the application status is set to 'Applied'
+
+- You can update the status to 'Approved' once you approve the applicant to join your institute.
+
+- Once the application status is set to 'Approved', the 'Enroll' button should show up. 
+	You can create a student record against the student applicant and enroll them to a program by clicking on this button.
+	
+- Once a student is created against the student applicant, the system shall set the application status to 'Admitted' 
+	and will not allow you to change the application status unless the student record is deleted.
+
+### Student Enrollment
+
+
+Once you approve a Student Applicant you can enroll them to a program. When you click the 'Enroll' buttom,
+the system shall create a student against that applicant and redirect you to the [Program Enrollment form]({{docs_base_url}}/user/manual/en/schools/student/program-enrollment.html).
+
+<img class="screenshot" alt="Student Applicant Enrollment" src="{{url_prefix}}/assets/img/schools/student/student-applicant-enroll.png">
+
+{next}
diff --git a/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md b/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
new file mode 100644
index 0000000..1fcd87c
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
@@ -0,0 +1,6 @@
+This tool allows you to create student groups in bulk. You can specify multiple parameters to create them.
+
+
+<img class="screenshot" alt="Student Group Creation Tool" src="{{url_prefix}}/assets/img/schools/student/student-group-creation-tool.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student-group.md b/erpnext/docs/user/manual/en/schools/student/student-group.md
new file mode 100644
index 0000000..eaa60f7
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/student-group.md
@@ -0,0 +1,8 @@
+# Student Group
+
+A student group is a collection of students taking a same course. You can create Course Schedules and Examinations against a Student Group.
+A student group needs to be created for every course in a particular academic term and academic year.
+
+<img class="screenshot" alt="Student Group" src="{{url_prefix}}/assets/img/schools/student/student-group.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student.md b/erpnext/docs/user/manual/en/schools/student/student.md
new file mode 100644
index 0000000..d0b1089
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/student.md
@@ -0,0 +1,10 @@
+# Student
+
+A Student is defined as a person who has enrolled at your institute and you have accepted their application.
+The student doctype maintains personal details of the student. 
+
+You can view everything related to a particular student on this page. Eg : Fees, Student Group, etc
+
+<img class="screenshot" alt="Student" src="{{url_prefix}}/assets/img/schools/student/student.png">
+
+{next}
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 566a98b..c1cee0c 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -101,7 +101,7 @@
 	{"title": _("Addresses"), "route": "/addresses", "reference_doctype": "Address"},
 	{"title": _("Announcements"), "route": "/announcement", "reference_doctype": "Announcement"},
 	{"title": _("Courses"), "route": "/course", "reference_doctype": "Course"},
-	{"title": _("Assessment Schedule"), "route": "/Assessment", "reference_doctype": "Assessment"},
+	{"title": _("Assessment Schedule"), "route": "/assessment", "reference_doctype": "Assessment"},
 	{"title": _("Fees"), "route": "/fees", "reference_doctype": "Fees"}
 ]
 
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 73eac92..fd1fc74 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -267,7 +267,6 @@
 erpnext.patches.v6_20x.update_product_bundle_description
 erpnext.patches.v7_0.update_party_status
 erpnext.patches.v7_0.update_item_projected
-erpnext.patches.v7_0.fix_duplicate_icons
 erpnext.patches.v7_0.remove_features_setup
 erpnext.patches.v7_0.update_home_page
 erpnext.patches.v7_0.create_budget_record
@@ -309,4 +308,6 @@
 erpnext.patches.v7_0.update_refdoc_in_landed_cost_voucher
 erpnext.patches.v7_0.set_material_request_type_in_item
 erpnext.patches.v7_0.rename_examination_to_assessment
+erpnext.patches.v7_0.set_portal_settings
 erpnext.patches.v7_0.repost_future_gle_for_purchase_invoice
+erpnext.patches.v7_0.fix_duplicate_icons
\ No newline at end of file
diff --git a/erpnext/patches/v7_0/migrate_schools_to_erpnext.py b/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
index 9933743..695f6cc 100644
--- a/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
+++ b/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
@@ -1,6 +1,5 @@
 from __future__ import unicode_literals
 import frappe
-from erpnext.setup.setup_wizard import domainify
 
 def execute():
 	reload_doctypes_for_schools_icons()
@@ -10,7 +9,6 @@
 	frappe.reload_doc('buying', 'doctype', 'request_for_quotation')
 
 	if 'schools' in frappe.get_installed_apps():
-		frappe.get_doc('Portal Settings', 'Portal Settings').sync_menu()
 		frappe.db.sql("""delete from `tabDesktop Icon`""")
 		if not frappe.db.exists('Module Def', 'Schools'):
 			frappe.get_doc({
@@ -21,12 +19,7 @@
 		frappe.db.sql("""update `tabDocType` set module='Schools' where module='Academics'""")
 		from frappe.installer import remove_from_installed_apps
 		remove_from_installed_apps("schools")
-		domainify.setup_domain('Education')
-	else:
-		frappe.get_doc('Portal Settings', 'Portal Settings').sync_menu()
-		domainify.setup_sidebar_items(domainify.get_domain('Manufacturing'))
 
 def reload_doctypes_for_schools_icons():
-	for name in ('student', 'student_group', 'course_schedule', 'student_attendance',
-		'course', 'program', 'student_applicant', 'examination', 'fees', 'instructor', 'announcement'):
-		frappe.reload_doc('schools', 'doctype', name)
+	for d in frappe.get_all('DocType', filters={'module': 'Schools'}):
+		frappe.reload_doc('schools', 'doctype', frappe.scrub(d.name))
diff --git a/erpnext/patches/v7_0/rename_examination_to_assessment.py b/erpnext/patches/v7_0/rename_examination_to_assessment.py
index 31c8aed..3c79c51 100644
--- a/erpnext/patches/v7_0/rename_examination_to_assessment.py
+++ b/erpnext/patches/v7_0/rename_examination_to_assessment.py
@@ -12,4 +12,5 @@
 		frappe.reload_doctype("Assessment")
 		rename_field("Assessment", "exam_name", "assessment_name")
 		rename_field("Assessment", "exam_code", "assessment_code")
-	
\ No newline at end of file
+	
+		frappe.db.sql("delete from `tabPortal Menu Item` where route = '/examination'")
\ No newline at end of file
diff --git a/erpnext/patches/v7_0/repost_future_gle_for_purchase_invoice.py b/erpnext/patches/v7_0/repost_future_gle_for_purchase_invoice.py
index 3a6526c..ebc1e69 100644
--- a/erpnext/patches/v7_0/repost_future_gle_for_purchase_invoice.py
+++ b/erpnext/patches/v7_0/repost_future_gle_for_purchase_invoice.py
@@ -9,7 +9,8 @@
 def execute():
 	if not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")):
 		return
-		
+	
+	frappe.reload_doctype("Purchase Invoice")	
 	wh_account = get_warehouse_account()
 	
 	for pi in frappe.get_all("Purchase Invoice", filters={"docstatus": 1, "update_stock": 1}):
diff --git a/erpnext/patches/v7_0/set_portal_settings.py b/erpnext/patches/v7_0/set_portal_settings.py
new file mode 100644
index 0000000..3e3b729
--- /dev/null
+++ b/erpnext/patches/v7_0/set_portal_settings.py
@@ -0,0 +1,18 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+from erpnext.setup.setup_wizard import domainify
+
+def execute():
+	for dt in ("assessment", "announcement", "course", "fees"):
+		frappe.reload_doc("schools", "doctype", dt)
+		
+	frappe.get_doc('Portal Settings').sync_menu()
+	
+	if 'schools' in frappe.get_installed_apps():
+		domainify.setup_domain('Education')
+	else:
+		domainify.setup_sidebar_items(domainify.get_domain('Manufacturing'))
\ No newline at end of file
diff --git a/erpnext/portal/doctype/homepage/homepage.json b/erpnext/portal/doctype/homepage/homepage.json
index cbe58c7..51d7955 100644
--- a/erpnext/portal/doctype/homepage/homepage.json
+++ b/erpnext/portal/doctype/homepage/homepage.json
@@ -9,6 +9,7 @@
  "docstatus": 0, 
  "doctype": "DocType", 
  "document_type": "Setup", 
+ "editable_grid": 0, 
  "fields": [
   {
    "allow_on_submit": 0, 
@@ -40,6 +41,31 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "title", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "TItle", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "description": "Company Tagline for website homepage", 
    "fieldname": "tag_line", 
    "fieldtype": "Data", 
@@ -145,13 +171,14 @@
  "hide_heading": 0, 
  "hide_toolbar": 0, 
  "idx": 0, 
+ "image_view": 0, 
  "in_create": 0, 
  "in_dialog": 0, 
  "is_submittable": 0, 
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-05-12 14:19:41.689519", 
+ "modified": "2016-08-09 05:01:30.287861", 
  "modified_by": "Administrator", 
  "module": "Portal", 
  "name": "Homepage", 
diff --git a/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
index f3f9ce9..870c8b1 100644
--- a/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
+++ b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
@@ -98,6 +98,31 @@
   {
    "allow_on_submit": 0, 
    "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "view", 
+   "fieldtype": "Button", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "label": "View", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
    "collapsible": 1, 
    "fieldname": "section_break_5", 
    "fieldtype": "Section Break", 
@@ -260,7 +285,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-11 03:28:00.729983", 
+ "modified": "2016-08-09 06:09:34.731971", 
  "modified_by": "Administrator", 
  "module": "Portal", 
  "name": "Homepage Featured Product", 
diff --git a/erpnext/public/css/erpnext.css b/erpnext/public/css/erpnext.css
index b8d51c0..d67f9e0 100644
--- a/erpnext/public/css/erpnext.css
+++ b/erpnext/public/css/erpnext.css
@@ -46,9 +46,10 @@
   line-height: 0;
   color: #d1d8dd;
   font-size: 30px;
-  background-size: cover;
+  background-size: contain;
   border: 1px solid transparent;
-  background-position: top center;
+  background-position: center;
+  background-repeat: no-repeat;
 }
 .pos-item-area {
   border: 1px solid #d1d8dd;
diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js
index 202000f..37ce5de 100644
--- a/erpnext/public/js/controllers/accounts.js
+++ b/erpnext/public/js/controllers/accounts.js
@@ -55,6 +55,48 @@
 	}
 });
 
+frappe.ui.form.on('Sales Invoice Payment', {
+	mode_of_payment: function(frm, cdt, cdn) {
+		var d = locals[cdt][cdn];
+		get_payment_mode_account(frm, d.mode_of_payment, function(account){
+			frappe.model.set_value(cdt, cdn, 'account', account)
+		})
+	}
+})
+
+frappe.ui.form.on('Purchase Invoice', {
+	mode_of_payment: function(frm) {
+		get_payment_mode_account(frm, frm.doc.mode_of_payment, function(account){
+			frm.set_value('cash_bank_account', account);
+		})
+	}
+})
+
+frappe.ui.form.on('Payment Entry', {
+	mode_of_payment: function(frm) {
+		get_payment_mode_account(frm, frm.doc.mode_of_payment, function(account){
+			var payment_account_field = frm.doc.payment_type == "Receive" ? "paid_to" : "paid_from";
+			frm.set_value(payment_account_field, account);
+		})
+	}
+})
+
+get_payment_mode_account = function(frm, mode_of_payment, callback){
+	return  frappe.call({
+		method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
+		args: {
+			"mode_of_payment": mode_of_payment,
+			"company": frm.doc.company
+		},
+		callback: function(r, rt) {
+			if(r.message) {
+				callback(r.message.account)
+			}
+		}
+	});
+}
+
+
 cur_frm.cscript.account_head = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	if(!d.charge_type && d.account_head){
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 55d3296..0013fdb 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -311,6 +311,8 @@
 				slide.fields.push({fieldtype: "Section Break"});
 				slide.fields.push({fieldtype: "Check", fieldname: "add_sample_data",
 					label: __("Add a few sample records"), "default": 1});
+				slide.fields.push({fieldtype: "Check", fieldname: "setup_website",
+					label: __("Setup a simple website for my organization"), "default": 1});
 			},
 			css_class: "two-column"
 		},
diff --git a/erpnext/public/less/erpnext.less b/erpnext/public/less/erpnext.less
index 896aee7..d39f924 100644
--- a/erpnext/public/less/erpnext.less
+++ b/erpnext/public/less/erpnext.less
@@ -58,9 +58,10 @@
 	line-height: 0;
 	color: @text-extra-muted;
 	font-size: 30px;
-	background-size: cover;
+	background-size: contain;
 	border: 1px solid transparent;
-	background-position: top center;
+	background-position: center;
+	background-repeat: no-repeat;
 }
 
 .pos-item-area {
diff --git a/erpnext/schools/doctype/course/course.py b/erpnext/schools/doctype/course/course.py
index beeb6ec..b590acb 100644
--- a/erpnext/schools/doctype/course/course.py
+++ b/erpnext/schools/doctype/course/course.py
@@ -14,9 +14,9 @@
 	user = frappe.session.user
 	student = frappe.db.sql("select name from `tabStudent` where student_email_id= %s", user)
 	if student:
-		return frappe.db.sql('''select group_name, course, academic_term, academic_year, SG.name from `tabStudent Group`
-			as SG, `tabStudent Group Student` as SGS where SG.group_name = SGS.parent and SGS.student = %s
-			order by SG.group_name asc limit {0} , {1}'''.format(limit_start, limit_page_length), student, as_dict=True)
+		return frappe.db.sql('''select course, academic_term, academic_year, SG.name from `tabStudent Group`
+			as SG, `tabStudent Group Student` as SGS where SG.name = SGS.parent and SGS.student = %s
+			order by SG.name asc limit {0} , {1}'''.format(limit_start, limit_page_length), student, as_dict=True)
 
 def get_list_context(context=None):
 	return {
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 97ca7a3..c9679bd 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -41,7 +41,9 @@
 		create_instructor(args)
 		create_room(args)
 
-	website_maker(args)
+	if args.get('setup_website'):
+		website_maker(args)
+
 	create_logo(args)
 
 	frappe.local.message_log = []
diff --git a/erpnext/templates/includes/course/course_row.html b/erpnext/templates/includes/course/course_row.html
index 9b9317b..fddfc3c 100644
--- a/erpnext/templates/includes/course/course_row.html
+++ b/erpnext/templates/includes/course/course_row.html
@@ -5,7 +5,7 @@
 				{{ doc.course }}
 			</div>
 			<div class="col-xs-3">
-				{{ doc.group_name }}
+				{{ doc.name }}
 			</div>
 			<div class="col-xs-2">
 				{{doc.academic_term }}
diff --git a/erpnext/templates/pages/home.py b/erpnext/templates/pages/home.py
index 00cd3a9..9a4c89c 100644
--- a/erpnext/templates/pages/home.py
+++ b/erpnext/templates/pages/home.py
@@ -15,6 +15,8 @@
 		if route:
 			item.route = '/' + route
 
+	context.title = homepage.title or homepage.company
+
 	# show atleast 3 products
 	if len(homepage.products) < 3:
 		for i in xrange(3 - len(homepage.products)):
@@ -24,6 +26,4 @@
 				'route': '#'
 			})
 
-	return {
-		'homepage': homepage
-	}
+	context.homepage = homepage
diff --git a/erpnext/tests/test_client.py b/erpnext/tests/test_client.py
index 153ce75..bf88341 100644
--- a/erpnext/tests/test_client.py
+++ b/erpnext/tests/test_client.py
@@ -6,7 +6,7 @@
 from frappe.utils import sel
 from frappe.utils import formatdate
 
-selenium_tests = True
+#selenium_tests = True
 
 # class TestLogin(unittest.TestCase):
 # 	def setUp(self):