fix: asset WDV depreciation calc according to IT act
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index 66930c0..dbb18b5 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -19,6 +19,7 @@
)
from frappe.utils.user import get_users_with_role
+import erpnext
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
get_checks_for_pl_and_bs_accounts,
)
@@ -522,6 +523,13 @@
make_depreciation_entry_for_all_asset_depr_schedules(asset_doc, date)
+ cancel_depreciation_entries(asset_doc, date)
+
+
+@erpnext.allow_regional
+def cancel_depreciation_entries(asset_doc, date):
+ pass
+
def reset_depreciation_schedule(asset_doc, date, notes):
if not asset_doc.calculate_depreciation:
diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
index 67234cc..7d7e8d3 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -340,10 +340,7 @@
n == 0
and (has_pro_rata or has_wdv_or_dd_non_yearly_pro_rata)
and not self.opening_accumulated_depreciation
- and get_updated_rate_of_depreciation_for_wdv_and_dd(
- asset_doc, value_after_depreciation, row, False
- )
- == row.rate_of_depreciation
+ and not self.flags.wdv_it_act_applied
):
from_date = add_days(
asset_doc.available_for_use_date, -1
@@ -595,26 +592,17 @@
asset_depr_schedule, asset, fb_row, schedule_idx, number_of_pending_depreciations
)
else:
- rate_of_depreciation = get_updated_rate_of_depreciation_for_wdv_and_dd(
- asset, depreciable_value, fb_row
- )
return get_wdv_or_dd_depr_amount(
+ asset,
+ fb_row,
depreciable_value,
- rate_of_depreciation,
- fb_row.frequency_of_depreciation,
schedule_idx,
prev_depreciation_amount,
has_wdv_or_dd_non_yearly_pro_rata,
+ asset_depr_schedule,
)
-@erpnext.allow_regional
-def get_updated_rate_of_depreciation_for_wdv_and_dd(
- asset, depreciable_value, fb_row, show_msg=True
-):
- return fb_row.rate_of_depreciation
-
-
def get_straight_line_or_manual_depr_amount(
asset_depr_schedule, asset, row, schedule_idx, number_of_pending_depreciations
):
@@ -750,30 +738,56 @@
return dict(frappe.db.get_all("Asset Shift Factor", ["shift_name", "shift_factor"], as_list=True))
+@erpnext.allow_regional
def get_wdv_or_dd_depr_amount(
+ asset,
+ fb_row,
depreciable_value,
- rate_of_depreciation,
- frequency_of_depreciation,
schedule_idx,
prev_depreciation_amount,
has_wdv_or_dd_non_yearly_pro_rata,
+ asset_depr_schedule,
):
- if cint(frequency_of_depreciation) == 12:
- return flt(depreciable_value) * (flt(rate_of_depreciation) / 100)
+ return get_default_wdv_or_dd_depr_amount(
+ asset,
+ fb_row,
+ depreciable_value,
+ schedule_idx,
+ prev_depreciation_amount,
+ has_wdv_or_dd_non_yearly_pro_rata,
+ asset_depr_schedule,
+ )
+
+
+def get_default_wdv_or_dd_depr_amount(
+ asset,
+ fb_row,
+ depreciable_value,
+ schedule_idx,
+ prev_depreciation_amount,
+ has_wdv_or_dd_non_yearly_pro_rata,
+ asset_depr_schedule,
+):
+ if cint(fb_row.frequency_of_depreciation) == 12:
+ return flt(depreciable_value) * (flt(fb_row.rate_of_depreciation) / 100)
else:
if has_wdv_or_dd_non_yearly_pro_rata:
if schedule_idx == 0:
- return flt(depreciable_value) * (flt(rate_of_depreciation) / 100)
- elif schedule_idx % (12 / cint(frequency_of_depreciation)) == 1:
+ return flt(depreciable_value) * (flt(fb_row.rate_of_depreciation) / 100)
+ elif schedule_idx % (12 / cint(fb_row.frequency_of_depreciation)) == 1:
return (
- flt(depreciable_value) * flt(frequency_of_depreciation) * (flt(rate_of_depreciation) / 1200)
+ flt(depreciable_value)
+ * flt(fb_row.frequency_of_depreciation)
+ * (flt(fb_row.rate_of_depreciation) / 1200)
)
else:
return prev_depreciation_amount
else:
- if schedule_idx % (12 / cint(frequency_of_depreciation)) == 0:
+ if schedule_idx % (12 / cint(fb_row.frequency_of_depreciation)) == 0:
return (
- flt(depreciable_value) * flt(frequency_of_depreciation) * (flt(rate_of_depreciation) / 1200)
+ flt(depreciable_value)
+ * flt(fb_row.frequency_of_depreciation)
+ * (flt(fb_row.rate_of_depreciation) / 1200)
)
else:
return prev_depreciation_amount
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 25ae7a4..ba5b5f8 100644
--- a/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json
+++ b/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json
@@ -94,7 +94,6 @@
},
{
"default": "0",
- "depends_on": "eval:doc.depreciation_method == \"Straight Line\" || doc.depreciation_method == \"Manual\"",
"fieldname": "daily_prorata_based",
"fieldtype": "Check",
"label": "Depreciate based on daily pro-rata"
@@ -110,7 +109,7 @@
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
- "modified": "2023-11-29 00:57:07.579777",
+ "modified": "2023-12-29 08:49:39.876439",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset Finance Book",