Patch to move asset fields to Asset Finance Book table
diff --git a/erpnext/assets/doctype/asset_category/asset_category.json b/erpnext/assets/doctype/asset_category/asset_category.json
index b655b40..882cbe2 100644
--- a/erpnext/assets/doctype/asset_category/asset_category.json
+++ b/erpnext/assets/doctype/asset_category/asset_category.json
@@ -49,38 +49,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "default": "Straight Line", 
-   "fieldname": "depreciation_method", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Depreciation Method", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nStraight Line\nDouble Declining Balance\nWritten Down Value\nManual", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "column_break_3", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -110,66 +78,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "total_number_of_depreciations", 
-   "fieldtype": "Int", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Total Number of Depreciations", 
-   "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": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "frequency_of_depreciation", 
-   "fieldtype": "Int", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Frequency of Depreciation (Months)", 
-   "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": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "finance_book_detail", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -297,7 +205,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-05-10 15:12:05.954200", 
+ "modified": "2018-05-12 14:56:04.116425", 
  "modified_by": "Administrator", 
  "module": "Assets", 
  "name": "Asset Category", 
diff --git a/erpnext/assets/doctype/asset_category/asset_category.py b/erpnext/assets/doctype/asset_category/asset_category.py
index fa0bd83..bbdc6ec 100644
--- a/erpnext/assets/doctype/asset_category/asset_category.py
+++ b/erpnext/assets/doctype/asset_category/asset_category.py
@@ -10,9 +10,10 @@
 
 class AssetCategory(Document):
 	def validate(self):
-		for field in ("total_number_of_depreciations", "frequency_of_depreciation"):
-			if cint(self.get(field))<1:
-				frappe.throw(_("{0} must be greater than 0").format(self.meta.get_label(field)), frappe.MandatoryError)
+		for d in self.finance_books:
+			for field in ("Total Number of Depreciations", "Frequency of Depreciation"):
+				if cint(d.get(frappe.scrub(field)))<1:
+					frappe.throw(_("Row {0}: {1} must be greater than 0").format(d.idx, field), frappe.MandatoryError)
 
 @frappe.whitelist()
 def get_asset_category_account(asset, fieldname, account=None, asset_category = None, company = None):
diff --git a/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json b/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json
index 351f9d0..f75c851 100644
--- a/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json
+++ b/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json
@@ -70,7 +70,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
@@ -100,7 +100,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
@@ -160,7 +160,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
@@ -203,6 +203,7 @@
    "collapsible": 0, 
    "columns": 0, 
    "default": "0", 
+   "depends_on": "eval:parent.doctype == 'Asset'", 
    "fieldname": "expected_value_after_useful_life", 
    "fieldtype": "Currency", 
    "hidden": 0, 
@@ -270,7 +271,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2018-05-10 18:05:58.900298", 
+ "modified": "2018-05-12 14:56:44.800046", 
  "modified_by": "Administrator", 
  "module": "Assets", 
  "name": "Asset Finance Book", 
diff --git a/erpnext/patches/v11_0/make_asset_finance_book_against_old_entries.py b/erpnext/patches/v11_0/make_asset_finance_book_against_old_entries.py
new file mode 100644
index 0000000..75f0ce6
--- /dev/null
+++ b/erpnext/patches/v11_0/make_asset_finance_book_against_old_entries.py
@@ -0,0 +1,46 @@
+# Copyright (c) 2017, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.utils.nestedset import rebuild_tree
+
+def execute():
+	frappe.reload_doc('stock', 'doctype', 'asset_finance_book')
+	frappe.reload_doc('stock', 'doctype', 'depreciation_schedule')
+	frappe.reload_doc('assets', 'doctype', 'asset_category')
+	frappe.reload_doc('assets', 'doctype', 'asset')
+	frappe.reload_doc('assets', 'doctype', 'asset_movement')
+
+	frappe.db.sql(""" update `tabAsset` ast, `tabWarehouse` wh
+		set ast.location = wh.warehoue_name where ast.warehoue = wh.name""")
+
+	frappe.db.sql(""" update `tabAsset Movement` ast_mv
+		set ast_mv.source_location = (select warehoue_name from `tabWarehouse` where name = ast_mv.source_warehouse), 
+		ast_mv.target_location = (select warehoue_name from `tabWarehouse` where name = ast_mv.target_warehouse)""")
+
+	for d in frappe.get_all('Asset'):
+		doc = frappe.get_doc('Asset', d.name)
+		fb = doc.append('finance_books', {
+			'depreciation_method': doc.depreciation_method,
+			'total_number_of_depreciations': doc.total_number_of_depreciations,
+			'frequency_of_depreciation': doc.frequency_of_depreciation,
+			'depreciation_start_date': doc.next_depreciation_date,
+			'expected_value_after_useful_life': doc.expected_value_after_useful_life,
+			'value_after_depreciation': doc.value_after_depreciation
+		})
+
+		fb.db_update()
+
+	frappe.db.sql(""" update `tabDepreciation Schedule` ds, `tabAsset` ast 
+		set ds.depreciation_method = ast.depreciation_method, ds.finance_book_id = 1 where ds.parent = ast.name """)
+
+	for catergory in frappe.get_all('Asset Category'):
+		asset_category_doc = frappe.get_doc("Asset Category", catergory)
+		row = asset_category_doc.append('finance_books', {
+			'depreciation_method': asset_category_doc.depreciation_method,
+			'total_number_of_depreciations': asset_category_doc.total_number_of_depreciations,
+			'frequency_of_depreciation': asset_category_doc.frequency_of_depreciation
+		})
+
+		row.db_update()
\ No newline at end of file
diff --git a/erpnext/patches/v11_0/make_location_from_warehouse.py b/erpnext/patches/v11_0/make_location_from_warehouse.py
index a3c6663..b838ec9 100644
--- a/erpnext/patches/v11_0/make_location_from_warehouse.py
+++ b/erpnext/patches/v11_0/make_location_from_warehouse.py
@@ -3,6 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe.utils.nestedset import rebuild_tree
 
 def execute():
 	frappe.reload_doc('assets', 'doctype', 'location')
@@ -22,6 +23,8 @@
 		except frappe.DuplicateEntryError:
 			continue
 
+	rebuild_tree("Location", "parent_location")
+
 def get_parent_warehouse_name(warehouse):
 	return frappe.db.get_value('Warehouse', warehouse, 'warehouse_name')
 			
\ No newline at end of file