Merge branch 'master' into develop
diff --git a/.travis.yml b/.travis.yml
index 9cad59f..8f2febd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,6 +13,7 @@
 
 install:
   - sudo apt-get purge -y mysql-common mysql-server mysql-client
+  - nvm install v7.10.0
   # - wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
   # - sudo bash setup_frappe.sh --skip-setup-bench --mysql-root-password travis --bench-branch develop
   - wget https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index e6f65d0..915d97b 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
 from __future__ import unicode_literals
 import frappe
 
-__version__ = '8.0.42'
+__version__ = '8.0.43'
 
 
 def get_default_company(user=None):
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index d2f894a..45447d7 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -144,7 +144,8 @@
 	}))
 	item_dict = valid_items[ref_item_row.item_code]
 	item_dict["qty"] += ref_item_row.qty
-	item_dict["rate"] = ref_item_row.get("rate", 0)
+	if ref_item_row.get("rate", 0) > item_dict["rate"]:
+		item_dict["rate"] = ref_item_row.get("rate", 0)
 
 	if ref_item_row.parenttype in ['Purchase Invoice', 'Purchase Receipt']:
 		item_dict["received_qty"] += ref_item_row.received_qty
diff --git a/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py b/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py
index 60bb02c..59f56d7 100644
--- a/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py
+++ b/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py
@@ -25,11 +25,10 @@
 	]
 
 def get_employees(filters):
-	holiday_filter = {"holiday_date": (">=", filters.from_date),
-				"holiday_date": ("<=", filters.to_date)}
+	holiday_filter = [["holiday_date", ">=", filters.from_date], ["holiday_date", "<=", filters.to_date]]
 	if filters.holiday_list:
-		holiday_filter["parent"] = filters.holiday_list
-		
+		holiday_filter.append(["parent", "=", filters.holiday_list])
+
 	holidays = frappe.get_all("Holiday", fields=["holiday_date", "description"],
 				filters=holiday_filter)
 
diff --git a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
index 3eb8e80..7cfdf60 100644
--- a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
+++ b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
@@ -8,9 +8,9 @@
 
 
 def execute():
-
 	# for converting student batch into student group
-	frappe.reload_doctype("Student Group")
+	for doctype in ["Student Group", "Student Group Student", "Student Group Instructor", "Student Attendance"]:
+		frappe.reload_doc("schools", "doctype", doctype)
 
 	if frappe.db.table_exists("Student Batch"):
 		student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch,
@@ -32,7 +32,7 @@
 			else:
 				cond = " "
 			student_list = frappe.db.sql('''select student, student_name {cond} from `tabStudent Batch Student`
-				where parent=%s'''.format(cond=cond), (doc.name), as_dict=1)
+				where parent=%s'''.format(cond=cond), (doc.student_group_name), as_dict=1)
 
 			if student_list:
 				for i, student in enumerate(student_list):
@@ -40,7 +40,7 @@
 				doc.extend("students", student_list)
 
 			instructor_list = frappe.db.sql('''select instructor, instructor_name from `tabStudent Batch Instructor`
-				where parent=%s''', (doc.name), as_dict=1)
+				where parent=%s''', (doc.student_group_name), as_dict=1)
 			if instructor_list:
 				doc.extend("instructors", instructor_list)
 			doc.save()
@@ -62,8 +62,6 @@
 		frappe.delete_doc("DocType", "Attendance Tool Student", force=1)
 
 	# change the student batch to student group in the student attendance
-	frappe.reload_doctype("Student Attendance")
-
 	table_columns = frappe.db.get_table_columns("Student Attendance")
 	if "student_batch" in table_columns:
 		rename_field("Student Attendance", "student_batch", "student_group")
diff --git a/erpnext/patches/v8_0/update_student_groups_from_student_batches.py b/erpnext/patches/v8_0/update_student_groups_from_student_batches.py
new file mode 100644
index 0000000..ae24fe4
--- /dev/null
+++ b/erpnext/patches/v8_0/update_student_groups_from_student_batches.py
@@ -0,0 +1,38 @@
+# Copyright (c) 2017, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.utils.rename_field import *
+from frappe.model.mapper import get_mapped_doc
+
+
+def execute():
+	if frappe.db.table_exists("Student Batch"):
+		student_batches = frappe.db.sql('''select name from `tabStudent Batch`''', as_dict=1)
+
+		for student_batch in student_batches:
+			if frappe.db.exists("Student Group", student_batch.get("name")):
+				student_group = frappe.get_doc("Student Group", student_batch.get("name"))
+
+				if frappe.db.table_exists("Student Batch Student"):
+					current_student_list = frappe.db.sql_list('''select student from `tabStudent Group Student`
+						where parent=%s''', (student_group.name))
+					batch_student_list = frappe.db.sql_list('''select student from `tabStudent Batch Student`
+						where parent=%s''', (student_group.name))
+
+					student_list = list(set(batch_student_list)-set(current_student_list))
+					if student_list:
+						student_group.extend("students", [{"student":d} for d in student_list])
+
+				if frappe.db.table_exists("Student Batch Instructor"):
+					current_instructor_list = frappe.db.sql_list('''select instructor from `tabStudent Group Instructor`
+						where parent=%s''', (student_group.name))
+					batch_instructor_list = frappe.db.sql_list('''select instructor from `tabStudent Batch Instructor`
+						where parent=%s''', (student_group.name))
+
+					instructor_list = list(set(batch_instructor_list)-set(current_instructor_list))
+					if instructor_list:
+						student_group.extend("instructors", [{"instructor":d} for d in instructor_list])
+
+				student_group.save()
diff --git a/erpnext/stock/doctype/material_request/material_request_list.js b/erpnext/stock/doctype/material_request/material_request_list.js
index b6ceeac..6611a20 100644
--- a/erpnext/stock/doctype/material_request/material_request_list.js
+++ b/erpnext/stock/doctype/material_request/material_request_list.js
@@ -6,7 +6,7 @@
 		} else if(doc.docstatus==1 && flt(doc.per_ordered, 2) == 0) {
 			return [__("Pending"), "orange", "per_ordered,=,0"];
 		}  else if(doc.docstatus==1 && flt(doc.per_ordered, 2) < 100) {
-			return [__("Partially ordred"), "yellow", "per_ordered,<,100"];
+			return [__("Partially ordered"), "yellow", "per_ordered,<,100"];
 		} else if(doc.docstatus==1 && flt(doc.per_ordered, 2) == 100) {
 			if (doc.material_request_type == "Purchase") {
 				return [__("Ordered"), "green", "per_ordered,=,100"];