feat(Asset): Modify depreciation schedule

This commit is contained in:
GangaManoj 2021-05-21 10:12:28 +05:30
parent 6bb920f25e
commit 30fdebafa7
3 changed files with 26 additions and 7 deletions

View File

@ -171,15 +171,23 @@ class Asset(AccountsController):
d.precision("rate_of_depreciation"))
def make_depreciation_schedule(self):
if 'Manual' not in [d.depreciation_method for d in self.finance_books]:
if 'Manual' not in [d.depreciation_method for d in self.finance_books] and not self.schedules:
self.schedules = []
if self.get("schedules") or not self.available_for_use_date:
if not self.available_for_use_date:
return
for d in self.get('finance_books'):
self.validate_asset_finance_books(d)
start = 0
for n in range (len(self.schedules)):
if not self.schedules[n].journal_entry:
print("*"*100)
del self.schedules[n:]
start = n
break
value_after_depreciation = (flt(self.gross_purchase_amount) -
flt(self.opening_accumulated_depreciation))
@ -192,9 +200,9 @@ class Asset(AccountsController):
if has_pro_rata:
number_of_pending_depreciations += 1
skip_row = False
for n in range(number_of_pending_depreciations):
for n in range(start, number_of_pending_depreciations):
# If depreciation is already completed (for double declining balance)
if skip_row: continue
@ -350,11 +358,12 @@ class Asset(AccountsController):
if d.finance_book_id not in finance_books:
accumulated_depreciation = flt(self.opening_accumulated_depreciation)
value_after_depreciation = flt(self.get_value_after_depreciation(d.finance_book_id))
finance_books.append(d.finance_book_id)
finance_books.append(int(d.finance_book_id))
depreciation_amount = flt(d.depreciation_amount, d.precision("depreciation_amount"))
value_after_depreciation -= flt(depreciation_amount)
# for the last row, if depreciation method = Straight Line
if straight_line_idx and i == max(straight_line_idx) - 1:
book = self.get('finance_books')[cint(d.finance_book_id) - 1]
depreciation_amount += flt(value_after_depreciation -

View File

@ -28,7 +28,8 @@ frappe.ui.form.on('Asset Repair', {
refresh: function(frm) {
frm.toggle_display(['completion_date', 'repair_status', 'accounting_details', 'accounting_dimensions_section'], !(frm.doc.__islocal));
frm.toggle_display(['stock_consumption_details_section', 'total_repair_cost'], frm.doc.stock_consumption)
frm.toggle_display(['stock_consumption_details_section', 'total_repair_cost'], frm.doc.stock_consumption);
frm.toggle_display('asset_depreciation_details_section', frm.doc.capitalize_repair_cost);
if (frm.doc.docstatus) {
frm.add_custom_button("View General Ledger", function() {

View File

@ -48,6 +48,7 @@ class AssetRepair(Document):
if self.capitalize_repair_cost:
self.check_for_purchase_invoice()
self.make_gl_entries()
self.modify_depreciation_schedule()
def check_repair_status(self):
if self.repair_status == "Pending":
@ -140,8 +141,16 @@ class AssetRepair(Document):
for account in asset_category.accounts:
if account.company_name == company:
return account.fixed_asset_account
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.prepare_depreciation_data()
asset.save()
@frappe.whitelist()
def get_downtime(failure_date, completion_date):
downtime = time_diff_in_hours(completion_date, failure_date)