fix: Add comments
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 1cef290..9a8b6c9 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -179,7 +179,8 @@
start = self.clear_depreciation_schedule()
- if d.value_after_depreciation:
+ # value_after_depreciation - current Asset value
+ if d.value_after_depreciation:
value_after_depreciation = (flt(d.value_after_depreciation) -
flt(self.opening_accumulated_depreciation)) - flt(d.expected_value_after_useful_life)
else:
@@ -291,6 +292,7 @@
"finance_book_id": d.idx
})
+ # used when depreciation schedule needs to be modified due to increase in asset life
def clear_depreciation_schedule(self):
start = 0
for n in range(len(self.schedules)):
@@ -300,10 +302,13 @@
break
return start
+
+ # if it returns True, depreciation_amount will not be equal for the first and last rows
def check_is_pro_rata(self, row):
has_pro_rata = False
-
days = date_diff(row.depreciation_start_date, self.available_for_use_date) + 1
+
+ # if frequency_of_depreciation is 12 months, total_days = 365
total_days = get_total_days(row.depreciation_start_date, row.frequency_of_depreciation)
if days < total_days:
@@ -783,9 +788,12 @@
depreciation_left = flt(row.total_number_of_depreciations) - flt(asset.number_of_depreciations_booked)
if row.depreciation_method in ("Straight Line", "Manual"):
+ # if the Depreciation Schedule is being prepared for the first time
if not asset.to_date:
depreciation_amount = (flt(row.value_after_depreciation) -
flt(row.expected_value_after_useful_life)) / depreciation_left
+
+ # if the Depreciation Schedule is being modified after Asset Repair
else:
depreciation_amount = (flt(row.value_after_depreciation) -
flt(row.expected_value_after_useful_life)) / (date_diff(asset.to_date, asset.available_for_use_date) / 365)
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py
index 3bcf958..fb815a2 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.py
@@ -46,7 +46,7 @@
self.decrease_stock_quantity()
if self.capitalize_repair_cost:
self.make_gl_entries()
- if frappe.db.get_value('Asset', self.asset, 'calculate_depreciation'):
+ if frappe.db.get_value('Asset', self.asset, 'calculate_depreciation') and self.increase_in_asset_life:
self.modify_depreciation_schedule()
def check_repair_status(self):
@@ -156,27 +156,33 @@
return gl_entries
def modify_depreciation_schedule(self):
- if self.increase_in_asset_life:
- asset = frappe.get_doc('Asset', self.asset)
- asset.flags.ignore_validate_update_after_submit = True
- for row in asset.finance_books:
- row.total_number_of_depreciations += self.increase_in_asset_life/row.frequency_of_depreciation
+ asset = frappe.get_doc('Asset', self.asset)
+ asset.flags.ignore_validate_update_after_submit = True
+ for row in asset.finance_books:
+ row.total_number_of_depreciations += self.increase_in_asset_life/row.frequency_of_depreciation
- asset.edit_dates = ""
- extra_months = self.increase_in_asset_life % row.frequency_of_depreciation
- if extra_months != 0:
- self.calculate_last_schedule_date(asset, row, extra_months)
+ asset.edit_dates = ""
+ extra_months = self.increase_in_asset_life % row.frequency_of_depreciation
+ if extra_months != 0:
+ self.calculate_last_schedule_date(asset, row, extra_months)
- asset.prepare_depreciation_data()
- asset.save()
+ asset.prepare_depreciation_data()
+ asset.save()
# to help modify depreciation schedule when increase_in_asset_life is not a multiple of frequency_of_depreciation
def calculate_last_schedule_date(self, asset, row, extra_months):
asset.edit_dates = "Don't Edit"
number_of_pending_depreciations = cint(row.total_number_of_depreciations) - \
cint(asset.number_of_depreciations_booked)
+
+ # the Schedule Date in the final row of the old Depreciation Schedule
last_schedule_date = asset.schedules[len(asset.schedules)-1].schedule_date
+
+ # the Schedule Date in the final row of the new Depreciation Schedule
asset.to_date = add_months(last_schedule_date, extra_months)
+
+ # the latest possible date at which the depreciation can occur, without increasing the Total Number of Depreciations
+ # if depreciations happen yearly and the Depreciation Posting Date is 01-01-2020, this could be 01-01-2021, 01-01-2022...
schedule_date = add_months(row.depreciation_start_date,
number_of_pending_depreciations * cint(row.frequency_of_depreciation))