Merge pull request #6099 from nabinhait/patch_fix_for_v6_to_v7_migration

Patch fixed for v6 to v7 migration
diff --git a/erpnext/patches/v7_0/convert_timelog_to_timesheet.py b/erpnext/patches/v7_0/convert_timelog_to_timesheet.py
index 072ba13..b802656 100644
--- a/erpnext/patches/v7_0/convert_timelog_to_timesheet.py
+++ b/erpnext/patches/v7_0/convert_timelog_to_timesheet.py
@@ -1,23 +1,30 @@
 import frappe
 from erpnext.manufacturing.doctype.production_order.production_order \
 	import make_timesheet, add_timesheet_detail
-from erpnext.projects.doctype.timesheet.timesheet import OverlapError
 
 def execute():
 	frappe.reload_doc('projects', 'doctype', 'timesheet')
 
 	for data in frappe.get_all('Time Log', fields=["*"], filters = [["docstatus", "<", "2"]]):
-		try:
-			time_sheet = make_timesheet(data.production_order)
-			args = get_timelog_data(data)
-			add_timesheet_detail(time_sheet, args)
-			time_sheet.docstatus = data.docstatus
-			time_sheet.note = data.note
-			time_sheet.company = frappe.db.get_single_value('Global Defaults', 'default_company')
-			time_sheet.save(ignore_permissions=True)
-		except OverlapError:
-			time_sheet.flags.ignore_validate = True
-			time_sheet.save(ignore_permissions=True)
+		if data.task:
+			company = frappe.db.get_value("Task", data.task, "company")
+		elif data.production_order:
+			company = frappe.db.get_value("Prodction Order", data.production_order, "company")
+		else:
+			company = frappe.db.get_single_value('Global Defaults', 'default_company')
+		
+		time_sheet = make_timesheet(data.production_order)
+		args = get_timelog_data(data)
+		add_timesheet_detail(time_sheet, args)
+		time_sheet.docstatus = data.docstatus
+		time_sheet.note = data.note
+		time_sheet.company = company
+		
+		time_sheet.set_status()
+		time_sheet.update_cost()
+		time_sheet.calculate_total_amounts()
+		time_sheet.flags.ignore_validate = True
+		time_sheet.save(ignore_permissions=True)
 
 def get_timelog_data(data):
 	return {
diff --git a/erpnext/patches/v7_0/make_guardian.py b/erpnext/patches/v7_0/make_guardian.py
index f654b79..0839c4f 100644
--- a/erpnext/patches/v7_0/make_guardian.py
+++ b/erpnext/patches/v7_0/make_guardian.py
@@ -2,19 +2,25 @@
 import frappe
 
 def execute():
-	if frappe.db.exists("DocType", "Student") and "father_name" in frappe.db.get_table_columns("Student"):
-		frappe.reload_doc("schools", "doctype", "student")
-		frappe.reload_doc("schools", "doctype", "guardian")
-		frappe.reload_doc("schools", "doctype", "guardian_interest")
-		frappe.reload_doc("hr", "doctype", "interest")
+	if frappe.db.exists("DocType", "Student"):
+		student_table_cols = frappe.db.get_table_columns("Student")
+		if "father_name" in student_table_cols:
+			frappe.reload_doc("schools", "doctype", "student")
+			frappe.reload_doc("schools", "doctype", "guardian")
+			frappe.reload_doc("schools", "doctype", "guardian_interest")
+			frappe.reload_doc("hr", "doctype", "interest")
+		
+			fields = ["name", "father_name", "mother_name"]
+			
+			if "father_email_id" in student_table_cols:
+				fields += ["father_email_id", "mother_email_id"]
 	
-		students = frappe.get_all("Student", fields=["name", "father_name", "father_email_id", 
-			"mother_name", "mother_email_id"])
-		for stud in students:
-			if stud.father_name:
-				make_guardian(stud.father_name, stud.name, stud.father_email_id)
-			if stud.mother_name:
-				make_guardian(stud.mother_name, stud.name, stud.mother_email_id)
+			students = frappe.get_all("Student", fields)
+			for stud in students:
+				if stud.father_name:
+					make_guardian(stud.father_name, stud.name, stud.father_email_id)
+				if stud.mother_name:
+					make_guardian(stud.mother_name, stud.name, stud.mother_email_id)
 		
 def make_guardian(name, student, email=None):
 	frappe.get_doc({
diff --git a/erpnext/patches/v7_0/migrate_schools_to_erpnext.py b/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
index 80e9eac..f64f400 100644
--- a/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
+++ b/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
@@ -1,5 +1,6 @@
 from __future__ import unicode_literals
 import frappe, os
+from frappe.installer import remove_from_installed_apps
 
 def execute():
 	reload_doctypes_for_schools_icons()
@@ -10,18 +11,15 @@
 
 	if 'schools' in frappe.get_installed_apps():
 		frappe.db.sql("""delete from `tabDesktop Icon`""")
-		if not frappe.db.exists('Module Def', 'Schools'):
-			frappe.get_doc({
-				'doctype': 'Module Def',
-				'module_name': 'Schools',
-				'app_name': 'erpnext'
-			}).insert()
-		frappe.db.sql("""update `tabDocType` set module='Schools' where module='Academics'""")
-		from frappe.installer import remove_from_installed_apps
+		
+		if not frappe.db.exists('Module Def', 'Schools') and frappe.db.exists('Module Def', 'Academics'):
+			frappe.rename_doc("Module Def", "Academics", "Schools")
+			
 		remove_from_installed_apps("schools")
 
 def reload_doctypes_for_schools_icons():
 	base_path = frappe.get_app_path('erpnext', 'schools', 'doctype')
 	for doctype in os.listdir(base_path):
-		if os.path.exists(os.path.join(base_path, doctype, doctype + '.json')):
-			frappe.reload_doc('schools', 'doctype', doctype)
+		if os.path.exists(os.path.join(base_path, doctype, doctype + '.json')) \
+			and doctype not in ("fee_component", "assessment", "assessment_result"):
+			frappe.reload_doc('schools', 'doctype', doctype)
\ No newline at end of file
diff --git a/erpnext/patches/v7_0/rename_examination_to_assessment.py b/erpnext/patches/v7_0/rename_examination_to_assessment.py
index 3c79c51..1d6e688 100644
--- a/erpnext/patches/v7_0/rename_examination_to_assessment.py
+++ b/erpnext/patches/v7_0/rename_examination_to_assessment.py
@@ -9,7 +9,9 @@
 def execute():
 	if frappe.db.exists("DocType", "Examination"):
 		frappe.rename_doc("DocType", "Examination", "Assessment")
-		frappe.reload_doctype("Assessment")
+		frappe.rename_doc("DocType", "Examination Result", "Assessment Result")
+		frappe.reload_doc("schools", "doctype", "assessment")
+		frappe.reload_doc("schools", "doctype", "assessment_result")
 		rename_field("Assessment", "exam_name", "assessment_name")
 		rename_field("Assessment", "exam_code", "assessment_code")
 	
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py
index 9140927..0379f90 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/erpnext/projects/doctype/timesheet/timesheet.py
@@ -159,8 +159,8 @@
 
 		existing = self.get_overlap_for(fieldname, args, value)
 		if existing:
-			frappe.throw(_("Row {0}: From Time and To Time overlap with existing from and to time").format(args.idx),
-				OverlapError)
+			frappe.throw(_("Row {0}: From Time and To Time of {1} is overlapping with {2}")
+				.format(args.idx, self.name, existing.name), OverlapError)
 
 	def get_overlap_for(self, fieldname, args, value):
 		cond = "ts.`{0}`".format(fieldname)