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