diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 0d42fa4cbfc..a32aa2dc60e 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '12.28.0' +__version__ = '12.29.0' def get_default_company(user=None): '''Get default company for user''' diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js index 93781d9e0ef..6b2109bf7c9 100644 --- a/erpnext/assets/doctype/asset/asset.js +++ b/erpnext/assets/doctype/asset/asset.js @@ -78,6 +78,7 @@ frappe.ui.form.on('Asset', { frappe.ui.form.trigger("Asset", "is_existing_asset"); frm.toggle_display("next_depreciation_date", frm.doc.docstatus < 1); frm.events.make_schedules_editable(frm); + frm.trigger("toggle_make_depreciation_entry"); if (frm.doc.docstatus==1) { if (in_list(["Submitted", "Partially Depreciated", "Fully Depreciated"], frm.doc.status)) { @@ -141,6 +142,18 @@ frappe.ui.form.on('Asset', { } }, + toggle_make_depreciation_entry: function(frm) { + if (frm.doc.calculate_depreciation){ + if (in_list(["Submitted", "Partially Depreciated"], frm.doc.status)){ + frm.fields_dict['schedules'].grid.set_column_disp('make_depreciation_entry', true); + } else { + frm.fields_dict['schedules'].grid.set_column_disp('make_depreciation_entry', false); + } + + frm.refresh_field('schedules'); + } + }, + toggle_reference_doc: function(frm) { if (frm.doc.purchase_receipt && frm.doc.purchase_invoice && frm.doc.docstatus === 1) { frm.set_df_property('purchase_invoice', 'read_only', 1); diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py index 251fe3fa493..dd2c531d107 100644 --- a/erpnext/assets/doctype/asset/depreciation.py +++ b/erpnext/assets/doctype/asset/depreciation.py @@ -34,6 +34,8 @@ def make_depreciation_entry(asset_name, date=None): date = today() asset = frappe.get_doc("Asset", asset_name) + validate_asset(asset) + fixed_asset_account, accumulated_depreciation_account, depreciation_expense_account = \ get_depreciation_accounts(asset) @@ -101,6 +103,10 @@ def make_depreciation_entry(asset_name, date=None): return asset +def validate_asset(asset): + if asset.status not in ['Submitted', 'Partially Depreciated']: + frappe.throw(_("Cannot depreciate {0} Asset").format(asset.status)) + def get_depreciation_accounts(asset): fixed_asset_account = accumulated_depreciation_account = depreciation_expense_account = None diff --git a/erpnext/change_log/v12/v12_29_0.md b/erpnext/change_log/v12/v12_29_0.md new file mode 100644 index 00000000000..738d900933f --- /dev/null +++ b/erpnext/change_log/v12/v12_29_0.md @@ -0,0 +1,5 @@ +## ERPNext Version 12.29.0 Release Notes + +### Fixes & Enhancements + +- Display 'Make Depreciation Entry' only for submitted or partially depreciated Assets ([#29291](https://github.com/frappe/erpnext/pull/29291)) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 6783d72af3f..8ecb047addb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ braintree==3.57.1 # frappe # https://github.com/frappe/frappe is installed during bench-init gocardless-pro==1.11.0 googlemaps==3.1.1 -pandas==0.24.2 +pandas>=0.24.0,<1.2.0 plaid-python~=7.2.1 PyGithub==1.44.1 python-stdnum==1.12