chore: add convert_draft_asset_depreciation_schedules_into_active and fix some bugs
This commit is contained in:
parent
97ab7bd36b
commit
ed495dc846
@ -31,6 +31,7 @@ from erpnext.assets.doctype.asset.depreciation import (
|
|||||||
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
||||||
make_draft_asset_depreciation_schedules,
|
make_draft_asset_depreciation_schedules,
|
||||||
modify_draft_asset_depreciation_schedules,
|
modify_draft_asset_depreciation_schedules,
|
||||||
|
convert_draft_asset_depreciation_schedules_into_active,
|
||||||
)
|
)
|
||||||
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
|
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
|
||||||
from erpnext.controllers.accounts_controller import AccountsController
|
from erpnext.controllers.accounts_controller import AccountsController
|
||||||
@ -58,6 +59,7 @@ class Asset(AccountsController):
|
|||||||
self.make_asset_movement()
|
self.make_asset_movement()
|
||||||
if not self.booked_fixed_asset and self.validate_make_gl_entry():
|
if not self.booked_fixed_asset and self.validate_make_gl_entry():
|
||||||
self.make_gl_entries()
|
self.make_gl_entries()
|
||||||
|
convert_draft_asset_depreciation_schedules_into_active(self)
|
||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
self.validate_cancellation()
|
self.validate_cancellation()
|
||||||
@ -407,45 +409,6 @@ class Asset(AccountsController):
|
|||||||
if len(self.finance_books) == 1:
|
if len(self.finance_books) == 1:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def set_accumulated_depreciation(
|
|
||||||
self, date_of_sale=None, date_of_return=None, ignore_booked_entry=False
|
|
||||||
):
|
|
||||||
straight_line_idx = [
|
|
||||||
d.idx for d in self.get("schedules") if d.depreciation_method == "Straight Line"
|
|
||||||
]
|
|
||||||
finance_books = []
|
|
||||||
|
|
||||||
for i, d in enumerate(self.get("schedules")):
|
|
||||||
if ignore_booked_entry and d.journal_entry:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if int(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(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
|
|
||||||
and not date_of_sale
|
|
||||||
and not date_of_return
|
|
||||||
):
|
|
||||||
book = self.get("finance_books")[cint(d.finance_book_id) - 1]
|
|
||||||
depreciation_amount += flt(
|
|
||||||
value_after_depreciation - flt(book.expected_value_after_useful_life),
|
|
||||||
d.precision("depreciation_amount"),
|
|
||||||
)
|
|
||||||
|
|
||||||
d.depreciation_amount = depreciation_amount
|
|
||||||
accumulated_depreciation += d.depreciation_amount
|
|
||||||
d.accumulated_depreciation_amount = flt(
|
|
||||||
accumulated_depreciation, d.precision("accumulated_depreciation_amount")
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_value_after_depreciation(self, idx):
|
def get_value_after_depreciation(self, idx):
|
||||||
return flt(self.get("finance_books")[cint(idx) - 1].value_after_depreciation)
|
return flt(self.get("finance_books")[cint(idx) - 1].value_after_depreciation)
|
||||||
|
|
||||||
|
@ -29,7 +29,9 @@ def make_draft_asset_depreciation_schedules(asset):
|
|||||||
|
|
||||||
def modify_draft_asset_depreciation_schedules(asset):
|
def modify_draft_asset_depreciation_schedules(asset):
|
||||||
for row in asset.get("finance_books"):
|
for row in asset.get("finance_books"):
|
||||||
asset_depr_schedule_name = get_draft_asset_depreciation_schedule_name(asset.name, row)
|
asset_depr_schedule_name = get_draft_asset_depreciation_schedule_name(
|
||||||
|
asset.name, row.finance_book
|
||||||
|
)
|
||||||
|
|
||||||
if not asset_depr_schedule_name:
|
if not asset_depr_schedule_name:
|
||||||
return
|
return
|
||||||
@ -57,11 +59,29 @@ def set_draft_asset_depreciation_schedule_details(asset_depr_schedule, asset_nam
|
|||||||
asset_depr_schedule.status = "Draft"
|
asset_depr_schedule.status = "Draft"
|
||||||
|
|
||||||
|
|
||||||
|
def convert_draft_asset_depreciation_schedules_into_active(asset):
|
||||||
|
for row in asset.get("finance_books"):
|
||||||
|
asset_depr_schedule_name = get_draft_asset_depreciation_schedule_name(
|
||||||
|
asset.name, row.finance_book
|
||||||
|
)
|
||||||
|
|
||||||
|
if not asset_depr_schedule_name:
|
||||||
|
return
|
||||||
|
|
||||||
|
asset_depr_schedule = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
|
||||||
|
|
||||||
|
asset_depr_schedule.status = "Active"
|
||||||
|
|
||||||
|
asset_depr_schedule.submit()
|
||||||
|
|
||||||
|
|
||||||
def make_new_active_asset_depreciation_schedules_from_existing(
|
def make_new_active_asset_depreciation_schedules_from_existing(
|
||||||
asset, date_of_disposal=None, date_of_return=None
|
asset, date_of_disposal=None, date_of_return=None
|
||||||
):
|
):
|
||||||
for row in asset.get("finance_books"):
|
for row in asset.get("finance_books"):
|
||||||
old_asset_depr_schedule_name = get_active_asset_depreciation_schedule(asset.name, row)
|
old_asset_depr_schedule_name = get_active_asset_depreciation_schedule(
|
||||||
|
asset.name, row.finance_book
|
||||||
|
)
|
||||||
|
|
||||||
if not old_asset_depr_schedule_name:
|
if not old_asset_depr_schedule_name:
|
||||||
return
|
return
|
||||||
@ -79,7 +99,7 @@ def make_new_active_asset_depreciation_schedules_from_existing(
|
|||||||
asset_depr_schedule.save()
|
asset_depr_schedule.save()
|
||||||
|
|
||||||
|
|
||||||
def make_depreciation_schedule(asset_depr_schedule, asset, row, date_of_disposal):
|
def make_depreciation_schedule(asset_depr_schedule, asset, row, date_of_disposal=None):
|
||||||
if row.depreciation_method != "Manual" and not asset_depr_schedule.get("depreciation_schedule"):
|
if row.depreciation_method != "Manual" and not asset_depr_schedule.get("depreciation_schedule"):
|
||||||
asset_depr_schedule.depreciation_schedule = []
|
asset_depr_schedule.depreciation_schedule = []
|
||||||
|
|
||||||
@ -293,7 +313,12 @@ def add_depr_schedule_row(
|
|||||||
|
|
||||||
|
|
||||||
def set_accumulated_depreciation(
|
def set_accumulated_depreciation(
|
||||||
asset_depr_schedule, asset, row, date_of_disposal, date_of_return, ignore_booked_entry=False
|
asset_depr_schedule,
|
||||||
|
asset,
|
||||||
|
row,
|
||||||
|
date_of_disposal=None,
|
||||||
|
date_of_return=None,
|
||||||
|
ignore_booked_entry=False
|
||||||
):
|
):
|
||||||
straight_line_idx = [
|
straight_line_idx = [
|
||||||
d.idx for d in asset_depr_schedule.get("depreciation_schedule")
|
d.idx for d in asset_depr_schedule.get("depreciation_schedule")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user