From 11679884e4b7f629bbb39760c2d9ca67792c8dcc Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Sat, 12 May 2018 15:05:09 +0530 Subject: [PATCH] Patch to move asset fields to Asset Finance Book table --- .../asset_category/asset_category.json | 94 +------------------ .../doctype/asset_category/asset_category.py | 7 +- .../asset_finance_book.json | 9 +- ..._asset_finance_book_against_old_entries.py | 46 +++++++++ .../v11_0/make_location_from_warehouse.py | 3 + 5 files changed, 59 insertions(+), 100 deletions(-) create mode 100644 erpnext/patches/v11_0/make_asset_finance_book_against_old_entries.py diff --git a/erpnext/assets/doctype/asset_category/asset_category.json b/erpnext/assets/doctype/asset_category/asset_category.json index b655b40475f..882cbe2eaa8 100644 --- a/erpnext/assets/doctype/asset_category/asset_category.json +++ b/erpnext/assets/doctype/asset_category/asset_category.json @@ -43,38 +43,6 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "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, @@ -104,66 +72,6 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "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, @@ -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 fa0bd83117f..bbdc6ec2cfa 100644 --- a/erpnext/assets/doctype/asset_category/asset_category.py +++ b/erpnext/assets/doctype/asset_category/asset_category.py @@ -10,9 +10,10 @@ from frappe.model.document import Document 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 351f9d0c660..f75c8510dcb 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 00000000000..75f0ce64505 --- /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 a3c66635b24..b838ec98bc5 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 @@ def execute(): 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