chore: renaming functions and variables again, and continuing refactoring AssetValueAdjustment
This commit is contained in:
parent
7db66b0916
commit
f35b19eac3
@ -29,11 +29,12 @@ from erpnext.assets.doctype.asset.depreciation import (
|
|||||||
)
|
)
|
||||||
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.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
||||||
cancel_asset_depreciation_schedules,
|
cancel_asset_depr_schedules,
|
||||||
convert_draft_asset_depreciation_schedules_into_active,
|
convert_draft_asset_depr_schedules_into_active,
|
||||||
get_asset_depreciation_schedule,
|
get_asset_depr_schedule,
|
||||||
make_draft_asset_depreciation_schedules,
|
get_depr_schedule_from_asset_depr_schedule_of_asset,
|
||||||
update_draft_asset_depreciation_schedules,
|
make_draft_asset_depr_schedules,
|
||||||
|
update_draft_asset_depr_schedules,
|
||||||
)
|
)
|
||||||
from erpnext.controllers.accounts_controller import AccountsController
|
from erpnext.controllers.accounts_controller import AccountsController
|
||||||
|
|
||||||
@ -47,7 +48,7 @@ class Asset(AccountsController):
|
|||||||
self.set_missing_values()
|
self.set_missing_values()
|
||||||
if not self.split_from:
|
if not self.split_from:
|
||||||
self.prepare_depreciation_data()
|
self.prepare_depreciation_data()
|
||||||
update_draft_asset_depreciation_schedules(self)
|
update_draft_asset_depr_schedules(self)
|
||||||
self.validate_gross_and_purchase_amount()
|
self.validate_gross_and_purchase_amount()
|
||||||
self.validate_expected_value_after_useful_life()
|
self.validate_expected_value_after_useful_life()
|
||||||
|
|
||||||
@ -59,13 +60,13 @@ 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)
|
convert_draft_asset_depr_schedules_into_active(self)
|
||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
self.validate_cancellation()
|
self.validate_cancellation()
|
||||||
self.cancel_movement_entries()
|
self.cancel_movement_entries()
|
||||||
self.delete_depreciation_entries()
|
self.delete_depreciation_entries()
|
||||||
cancel_asset_depreciation_schedules(self)
|
cancel_asset_depr_schedules(self)
|
||||||
self.set_status()
|
self.set_status()
|
||||||
self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry")
|
self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry")
|
||||||
make_reverse_gl_entries(voucher_type="Asset", voucher_no=self.name)
|
make_reverse_gl_entries(voucher_type="Asset", voucher_no=self.name)
|
||||||
@ -73,7 +74,7 @@ class Asset(AccountsController):
|
|||||||
|
|
||||||
def after_insert(self):
|
def after_insert(self):
|
||||||
if not self.split_from:
|
if not self.split_from:
|
||||||
make_draft_asset_depreciation_schedules(self)
|
make_draft_asset_depr_schedules(self)
|
||||||
|
|
||||||
def validate_asset_and_reference(self):
|
def validate_asset_and_reference(self):
|
||||||
if self.purchase_invoice or self.purchase_receipt:
|
if self.purchase_invoice or self.purchase_receipt:
|
||||||
@ -246,7 +247,7 @@ class Asset(AccountsController):
|
|||||||
return value_after_depreciation
|
return value_after_depreciation
|
||||||
|
|
||||||
def get_from_date(self, finance_book):
|
def get_from_date(self, finance_book):
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(self.name, finance_book)
|
asset_depr_schedule = get_asset_depr_schedule(self.name, finance_book)
|
||||||
|
|
||||||
if not asset_depr_schedule:
|
if not asset_depr_schedule:
|
||||||
return self.available_for_use_date
|
return self.available_for_use_date
|
||||||
@ -357,18 +358,16 @@ class Asset(AccountsController):
|
|||||||
return depreciation_amount_for_last_row
|
return depreciation_amount_for_last_row
|
||||||
|
|
||||||
def get_depreciation_amount_for_first_row(self, finance_book):
|
def get_depreciation_amount_for_first_row(self, finance_book):
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(self.name, finance_book)
|
return get_depr_schedule_from_asset_depr_schedule_of_asset(self.name, finance_book)[
|
||||||
|
0
|
||||||
asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
|
].depreciation_amount
|
||||||
|
|
||||||
return asset_depr_schedule_doc.get("depreciation_schedule")[0].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)
|
||||||
|
|
||||||
def validate_expected_value_after_useful_life(self):
|
def validate_expected_value_after_useful_life(self):
|
||||||
for row in self.get("finance_books"):
|
for row in self.get("finance_books"):
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(self.name, row.finance_book)
|
asset_depr_schedule = get_asset_depr_schedule(self.name, row.finance_book)
|
||||||
|
|
||||||
if not asset_depr_schedule:
|
if not asset_depr_schedule:
|
||||||
return
|
return
|
||||||
@ -426,7 +425,7 @@ class Asset(AccountsController):
|
|||||||
|
|
||||||
def delete_depreciation_entries(self):
|
def delete_depreciation_entries(self):
|
||||||
for row in self.get("finance_books"):
|
for row in self.get("finance_books"):
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(self.name, row.finance_book)
|
asset_depr_schedule = get_asset_depr_schedule(self.name, row.finance_book)
|
||||||
|
|
||||||
if not asset_depr_schedule:
|
if not asset_depr_schedule:
|
||||||
return
|
return
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
|
|||||||
)
|
)
|
||||||
from erpnext.accounts.doctype.journal_entry.journal_entry import make_reverse_journal_entry
|
from erpnext.accounts.doctype.journal_entry.journal_entry import make_reverse_journal_entry
|
||||||
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
||||||
get_temp_asset_depreciation_schedule_doc,
|
get_temp_asset_depr_schedule_doc,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -514,13 +514,13 @@ def get_value_after_depreciation_on_disposal_date(asset, disposal_date, finance_
|
|||||||
|
|
||||||
row = asset_doc.finance_books[idx - 1]
|
row = asset_doc.finance_books[idx - 1]
|
||||||
|
|
||||||
temp_asset_depreciation_schedule = get_temp_asset_depreciation_schedule_doc(
|
temp_asset_depreciation_schedule = get_temp_asset_depr_schedule_doc(
|
||||||
asset_doc, row, getdate(disposal_date)
|
asset_doc, row, getdate(disposal_date)
|
||||||
)
|
)
|
||||||
|
|
||||||
depr_schedule = temp_asset_depreciation_schedule.get("depreciation_schedule")
|
accumulated_depr_amount = temp_asset_depreciation_schedule.get("depreciation_schedule")[
|
||||||
|
-1
|
||||||
accumulated_depr_amount = depr_schedule[-1].accumulated_depreciation_amount
|
].accumulated_depreciation_amount
|
||||||
|
|
||||||
return flt(
|
return flt(
|
||||||
flt(asset_doc.gross_purchase_amount) - accumulated_depr_amount,
|
flt(asset_doc.gross_purchase_amount) - accumulated_depr_amount,
|
||||||
|
|||||||
@ -882,7 +882,7 @@ class TestDepreciationBasics(AssetSetup):
|
|||||||
"""Tests if get_depreciation_amount() returns the right value."""
|
"""Tests if get_depreciation_amount() returns the right value."""
|
||||||
|
|
||||||
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
||||||
get_depreciation_amount
|
get_depreciation_amount,
|
||||||
)
|
)
|
||||||
|
|
||||||
asset = create_asset(item_code="Macbook Pro", available_for_use_date="2019-12-31")
|
asset = create_asset(item_code="Macbook Pro", available_for_use_date="2019-12-31")
|
||||||
@ -902,8 +902,8 @@ class TestDepreciationBasics(AssetSetup):
|
|||||||
depreciation_amount = get_depreciation_amount(asset, 100000, asset.finance_books[0])
|
depreciation_amount = get_depreciation_amount(asset, 100000, asset.finance_books[0])
|
||||||
self.assertEqual(depreciation_amount, 30000)
|
self.assertEqual(depreciation_amount, 30000)
|
||||||
|
|
||||||
def test_make_depreciation_schedule(self):
|
def test_make_depr_schedule(self):
|
||||||
"""Tests if make_depreciation_schedule() returns the right values."""
|
"""Tests if make_depr_schedule() returns the right values."""
|
||||||
|
|
||||||
asset = create_asset(
|
asset = create_asset(
|
||||||
item_code="Macbook Pro",
|
item_code="Macbook Pro",
|
||||||
@ -1194,8 +1194,8 @@ class TestDepreciationBasics(AssetSetup):
|
|||||||
depr_expense_account.parent_account = "Expenses - _TC"
|
depr_expense_account.parent_account = "Expenses - _TC"
|
||||||
depr_expense_account.save()
|
depr_expense_account.save()
|
||||||
|
|
||||||
def test_clear_depreciation_schedule(self):
|
def test_clear_depr_schedule(self):
|
||||||
"""Tests if clear_depreciation_schedule() works as expected."""
|
"""Tests if clear_depr_schedule() works as expected."""
|
||||||
|
|
||||||
asset = create_asset(
|
asset = create_asset(
|
||||||
item_code="Macbook Pro",
|
item_code="Macbook Pro",
|
||||||
@ -1211,11 +1211,11 @@ class TestDepreciationBasics(AssetSetup):
|
|||||||
post_depreciation_entries(date="2021-06-01")
|
post_depreciation_entries(date="2021-06-01")
|
||||||
asset.load_from_db()
|
asset.load_from_db()
|
||||||
|
|
||||||
asset.clear_depreciation_schedule()
|
asset.clear_depr_schedule()
|
||||||
|
|
||||||
self.assertEqual(len(asset.schedules), 1)
|
self.assertEqual(len(asset.schedules), 1)
|
||||||
|
|
||||||
def test_clear_depreciation_schedule_for_multiple_finance_books(self):
|
def test_clear_depr_schedule_for_multiple_finance_books(self):
|
||||||
asset = create_asset(item_code="Macbook Pro", available_for_use_date="2019-12-31", do_not_save=1)
|
asset = create_asset(item_code="Macbook Pro", available_for_use_date="2019-12-31", do_not_save=1)
|
||||||
|
|
||||||
asset.calculate_depreciation = 1
|
asset.calculate_depreciation = 1
|
||||||
@ -1254,7 +1254,7 @@ class TestDepreciationBasics(AssetSetup):
|
|||||||
post_depreciation_entries(date="2020-04-01")
|
post_depreciation_entries(date="2020-04-01")
|
||||||
asset.load_from_db()
|
asset.load_from_db()
|
||||||
|
|
||||||
asset.clear_depreciation_schedule()
|
asset.clear_depr_schedule()
|
||||||
|
|
||||||
self.assertEqual(len(asset.schedules), 6)
|
self.assertEqual(len(asset.schedules), 6)
|
||||||
|
|
||||||
|
|||||||
@ -20,46 +20,44 @@ class AssetDepreciationSchedule(Document):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def make_draft_asset_depreciation_schedules(asset_doc, date_of_disposal=None, date_of_return=None):
|
def make_draft_asset_depr_schedules(asset_doc, date_of_disposal=None, date_of_return=None):
|
||||||
for row in asset_doc.get("finance_books"):
|
for row in asset_doc.get("finance_books"):
|
||||||
asset_depr_schedule_doc = frappe.new_doc("Asset Depreciation Schedule")
|
asset_depr_schedule_doc = frappe.new_doc("Asset Depreciation Schedule")
|
||||||
|
|
||||||
prepare_draft_asset_depreciation_schedule_data(
|
prepare_draft_asset_depr_schedule_data(
|
||||||
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
||||||
)
|
)
|
||||||
|
|
||||||
asset_depr_schedule_doc.insert()
|
asset_depr_schedule_doc.insert()
|
||||||
|
|
||||||
|
|
||||||
def update_draft_asset_depreciation_schedules(
|
def update_draft_asset_depr_schedules(asset_doc, date_of_disposal=None, date_of_return=None):
|
||||||
asset_doc, date_of_disposal=None, date_of_return=None
|
|
||||||
):
|
|
||||||
for row in asset_doc.get("finance_books"):
|
for row in asset_doc.get("finance_books"):
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(asset_doc.name, row.finance_book)
|
asset_depr_schedule = get_asset_depr_schedule(asset_doc.name, row.finance_book)
|
||||||
|
|
||||||
if not asset_depr_schedule:
|
if not asset_depr_schedule:
|
||||||
return
|
return
|
||||||
|
|
||||||
asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
|
asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
|
||||||
|
|
||||||
prepare_draft_asset_depreciation_schedule_data(
|
prepare_draft_asset_depr_schedule_data(
|
||||||
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
||||||
)
|
)
|
||||||
|
|
||||||
asset_depr_schedule_doc.save()
|
asset_depr_schedule_doc.save()
|
||||||
|
|
||||||
|
|
||||||
def prepare_draft_asset_depreciation_schedule_data(
|
def prepare_draft_asset_depr_schedule_data(
|
||||||
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
||||||
):
|
):
|
||||||
set_draft_asset_depreciation_schedule_details(asset_depr_schedule_doc, asset_doc.name, row)
|
set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset_doc.name, row)
|
||||||
make_depreciation_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal)
|
make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal)
|
||||||
set_accumulated_depreciation(
|
set_accumulated_depreciation(
|
||||||
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def set_draft_asset_depreciation_schedule_details(asset_depr_schedule_doc, asset, row):
|
def set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset, row):
|
||||||
asset_depr_schedule_doc.asset = asset
|
asset_depr_schedule_doc.asset = asset
|
||||||
asset_depr_schedule_doc.finance_book = row.finance_book
|
asset_depr_schedule_doc.finance_book = row.finance_book
|
||||||
asset_depr_schedule_doc.depreciation_method = row.depreciation_method
|
asset_depr_schedule_doc.depreciation_method = row.depreciation_method
|
||||||
@ -70,9 +68,9 @@ def set_draft_asset_depreciation_schedule_details(asset_depr_schedule_doc, asset
|
|||||||
asset_depr_schedule_doc.status = "Draft"
|
asset_depr_schedule_doc.status = "Draft"
|
||||||
|
|
||||||
|
|
||||||
def convert_draft_asset_depreciation_schedules_into_active(asset_doc):
|
def convert_draft_asset_depr_schedules_into_active(asset_doc):
|
||||||
for row in asset_doc.get("finance_books"):
|
for row in asset_doc.get("finance_books"):
|
||||||
asset_depr_schedule_name = get_asset_depreciation_schedule(asset_doc.name, row.finance_book)
|
asset_depr_schedule_name = get_asset_depr_schedule(asset_doc.name, row.finance_book)
|
||||||
|
|
||||||
if not asset_depr_schedule_name:
|
if not asset_depr_schedule_name:
|
||||||
return
|
return
|
||||||
@ -84,48 +82,48 @@ def convert_draft_asset_depreciation_schedules_into_active(asset_doc):
|
|||||||
asset_depr_schedule.submit()
|
asset_depr_schedule.submit()
|
||||||
|
|
||||||
|
|
||||||
def make_new_active_asset_depreciation_schedules_and_cancel_old_ones(
|
def make_new_active_asset_depr_schedules_and_cancel_current_ones(
|
||||||
asset_doc, date_of_disposal=None, date_of_return=None, notes=None
|
asset_doc, date_of_disposal=None, date_of_return=None, notes=None
|
||||||
):
|
):
|
||||||
for row in asset_doc.get("finance_books"):
|
for row in asset_doc.get("finance_books"):
|
||||||
old_asset_depr_schedule = get_asset_depreciation_schedule(asset_doc.name, row.finance_book)
|
current_asset_depr_schedule = get_asset_depr_schedule(asset_doc.name, row.finance_book)
|
||||||
|
|
||||||
if not old_asset_depr_schedule:
|
if not current_asset_depr_schedule:
|
||||||
return
|
return
|
||||||
|
|
||||||
old_asset_depr_schedule_doc = frappe.get_doc(
|
current_asset_depr_schedule_doc = frappe.get_doc(
|
||||||
"Asset Depreciation Schedule", old_asset_depr_schedule
|
"Asset Depreciation Schedule", current_asset_depr_schedule
|
||||||
)
|
)
|
||||||
|
|
||||||
asset_depr_schedule_doc = frappe.copy_doc(old_asset_depr_schedule_doc, ignore_no_copy=False)
|
new_asset_depr_schedule_doc = frappe.copy_doc(
|
||||||
|
current_asset_depr_schedule_doc, ignore_no_copy=False
|
||||||
|
)
|
||||||
|
|
||||||
old_asset_depr_schedule.cancel()
|
current_asset_depr_schedule_doc.cancel()
|
||||||
|
|
||||||
make_depreciation_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal)
|
make_depr_schedule(new_asset_depr_schedule_doc, asset_doc, row, date_of_disposal)
|
||||||
set_accumulated_depreciation(
|
set_accumulated_depreciation(
|
||||||
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
new_asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
||||||
)
|
)
|
||||||
|
|
||||||
asset_depr_schedule_doc.notes = notes
|
new_asset_depr_schedule_doc.notes = notes
|
||||||
|
|
||||||
asset_depr_schedule_doc.submit()
|
new_asset_depr_schedule_doc.submit()
|
||||||
|
|
||||||
|
|
||||||
def get_temp_asset_depreciation_schedule_doc(
|
def get_temp_asset_depr_schedule_doc(asset_doc, row, date_of_disposal=None, date_of_return=None):
|
||||||
asset_doc, row, date_of_disposal=None, date_of_return=None
|
|
||||||
):
|
|
||||||
asset_depr_schedule_doc = frappe.new_doc("Asset Depreciation Schedule")
|
asset_depr_schedule_doc = frappe.new_doc("Asset Depreciation Schedule")
|
||||||
|
|
||||||
prepare_draft_asset_depreciation_schedule_data(
|
prepare_draft_asset_depr_schedule_data(
|
||||||
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
|
||||||
)
|
)
|
||||||
|
|
||||||
return asset_depr_schedule_doc
|
return asset_depr_schedule_doc
|
||||||
|
|
||||||
|
|
||||||
def cancel_asset_depreciation_schedules(asset_doc):
|
def cancel_asset_depr_schedules(asset_doc):
|
||||||
for row in asset_doc.get("finance_books"):
|
for row in asset_doc.get("finance_books"):
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(asset_doc.name, row.finance_book)
|
asset_depr_schedule = get_asset_depr_schedule(asset_doc.name, row.finance_book)
|
||||||
|
|
||||||
if not asset_depr_schedule:
|
if not asset_depr_schedule:
|
||||||
return
|
return
|
||||||
@ -135,7 +133,7 @@ def cancel_asset_depreciation_schedules(asset_doc):
|
|||||||
asset_depr_schedule_doc.cancel()
|
asset_depr_schedule_doc.cancel()
|
||||||
|
|
||||||
|
|
||||||
def get_asset_depreciation_schedule(asset, finance_book):
|
def get_asset_depr_schedule(asset, finance_book):
|
||||||
return frappe.db.get_value(
|
return frappe.db.get_value(
|
||||||
doctype="Asset Depreciation Schedule",
|
doctype="Asset Depreciation Schedule",
|
||||||
filters=[
|
filters=[
|
||||||
@ -146,7 +144,13 @@ def get_asset_depreciation_schedule(asset, finance_book):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def make_depreciation_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal):
|
def get_depr_schedule_from_asset_depr_schedule_of_asset(asset, finance_book):
|
||||||
|
asset_depr_schedule = get_asset_depr_schedule(asset, finance_book)
|
||||||
|
asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
|
||||||
|
return asset_depr_schedule_doc.get("depreciation_schedule")
|
||||||
|
|
||||||
|
|
||||||
|
def make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal):
|
||||||
if row.depreciation_method != "Manual" and not asset_depr_schedule_doc.get(
|
if row.depreciation_method != "Manual" and not asset_depr_schedule_doc.get(
|
||||||
"depreciation_schedule"
|
"depreciation_schedule"
|
||||||
):
|
):
|
||||||
@ -155,12 +159,12 @@ def make_depreciation_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_
|
|||||||
if not asset_doc.available_for_use_date:
|
if not asset_doc.available_for_use_date:
|
||||||
return
|
return
|
||||||
|
|
||||||
start = clear_depreciation_schedule(asset_depr_schedule_doc)
|
start = clear_depr_schedule(asset_depr_schedule_doc)
|
||||||
|
|
||||||
_make_depreciation_schedule(asset_depr_schedule_doc, asset_doc, row, start, date_of_disposal)
|
_make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, start, date_of_disposal)
|
||||||
|
|
||||||
|
|
||||||
def clear_depreciation_schedule(asset_depr_schedule_doc):
|
def clear_depr_schedule(asset_depr_schedule_doc):
|
||||||
start = []
|
start = []
|
||||||
num_of_depreciations_completed = 0
|
num_of_depreciations_completed = 0
|
||||||
depr_schedule = []
|
depr_schedule = []
|
||||||
@ -189,7 +193,7 @@ def clear_depreciation_schedule(asset_depr_schedule_doc):
|
|||||||
return start
|
return start
|
||||||
|
|
||||||
|
|
||||||
def _make_depreciation_schedule(asset_depr_schedule_doc, asset_doc, row, start, date_of_disposal):
|
def _make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, start, date_of_disposal):
|
||||||
asset_doc.validate_asset_finance_books(row)
|
asset_doc.validate_asset_finance_books(row)
|
||||||
|
|
||||||
value_after_depreciation = asset_doc._get_value_after_depreciation(row)
|
value_after_depreciation = asset_doc._get_value_after_depreciation(row)
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import erpnext
|
|||||||
from erpnext.accounts.general_ledger import make_gl_entries
|
from erpnext.accounts.general_ledger import make_gl_entries
|
||||||
from erpnext.assets.doctype.asset.asset import get_asset_account
|
from erpnext.assets.doctype.asset.asset import get_asset_account
|
||||||
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
||||||
get_asset_depreciation_schedule,
|
get_depr_schedule_from_asset_depr_schedule_of_asset,
|
||||||
)
|
)
|
||||||
from erpnext.controllers.accounts_controller import AccountsController
|
from erpnext.controllers.accounts_controller import AccountsController
|
||||||
|
|
||||||
@ -282,11 +282,10 @@ class AssetRepair(AccountsController):
|
|||||||
asset.number_of_depreciations_booked
|
asset.number_of_depreciations_booked
|
||||||
)
|
)
|
||||||
|
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(asset.name, row.finance_book)
|
depr_schedule = get_depr_schedule_from_asset_depr_schedule_of_asset(asset.name, row.finance_book)
|
||||||
depr_schedule = asset_depr_schedule.get("depreciation_schedule")
|
|
||||||
|
|
||||||
# the Schedule Date in the final row of the old Depreciation Schedule
|
# the Schedule Date in the final row of the old Depreciation Schedule
|
||||||
last_schedule_date = asset_depr_schedule[len(asset_depr_schedule) - 1].schedule_date
|
last_schedule_date = depr_schedule[len(depr_schedule) - 1].schedule_date
|
||||||
|
|
||||||
# the Schedule Date in the final row of the new Depreciation Schedule
|
# the Schedule Date in the final row of the new Depreciation Schedule
|
||||||
asset.to_date = add_months(last_schedule_date, extra_months)
|
asset.to_date = add_months(last_schedule_date, extra_months)
|
||||||
@ -316,11 +315,10 @@ class AssetRepair(AccountsController):
|
|||||||
asset.number_of_depreciations_booked
|
asset.number_of_depreciations_booked
|
||||||
)
|
)
|
||||||
|
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(asset.name, row.finance_book)
|
depr_schedule = get_depr_schedule_from_asset_depr_schedule_of_asset(asset.name, row.finance_book)
|
||||||
depr_schedule = asset_depr_schedule.get("depreciation_schedule")
|
|
||||||
|
|
||||||
# the Schedule Date in the final row of the modified Depreciation Schedule
|
# the Schedule Date in the final row of the modified Depreciation Schedule
|
||||||
last_schedule_date = asset_depr_schedule[len(asset_depr_schedule) - 1].schedule_date
|
last_schedule_date = depr_schedule[len(depr_schedule) - 1].schedule_date
|
||||||
|
|
||||||
# the Schedule Date in the final row of the original Depreciation Schedule
|
# the Schedule Date in the final row of the original Depreciation Schedule
|
||||||
asset.to_date = add_months(last_schedule_date, -extra_months)
|
asset.to_date = add_months(last_schedule_date, -extra_months)
|
||||||
|
|||||||
@ -5,15 +5,16 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe.utils import cint, date_diff, flt, formatdate, getdate
|
from frappe.utils import date_diff, flt, formatdate, getdate
|
||||||
|
|
||||||
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
|
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
|
||||||
get_checks_for_pl_and_bs_accounts,
|
get_checks_for_pl_and_bs_accounts,
|
||||||
)
|
)
|
||||||
from erpnext.assets.doctype.asset.depreciation import get_depreciation_accounts
|
from erpnext.assets.doctype.asset.depreciation import get_depreciation_accounts
|
||||||
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
|
||||||
get_asset_depreciation_schedule,
|
get_asset_depr_schedule,
|
||||||
get_depreciation_amount,
|
get_depreciation_amount,
|
||||||
|
set_accumulated_depreciation,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -115,8 +116,17 @@ class AssetValueAdjustment(Document):
|
|||||||
for d in asset.finance_books:
|
for d in asset.finance_books:
|
||||||
d.value_after_depreciation = asset_value
|
d.value_after_depreciation = asset_value
|
||||||
|
|
||||||
asset_depr_schedule = get_asset_depreciation_schedule(asset.name, d.finance_book)
|
current_asset_depr_schedule = get_asset_depr_schedule(asset.name, d.finance_book)
|
||||||
depr_schedule = asset_depr_schedule.get("depreciation_schedule")
|
|
||||||
|
current_asset_depr_schedule_doc = frappe.get_doc(
|
||||||
|
"Asset Depreciation Schedule", current_asset_depr_schedule
|
||||||
|
)
|
||||||
|
|
||||||
|
new_asset_depr_schedule_doc = frappe.copy_doc(
|
||||||
|
current_asset_depr_schedule_doc, ignore_no_copy=False
|
||||||
|
)
|
||||||
|
|
||||||
|
depr_schedule = new_asset_depr_schedule_doc.get("depreciation_schedule")
|
||||||
|
|
||||||
if d.depreciation_method in ("Straight Line", "Manual"):
|
if d.depreciation_method in ("Straight Line", "Manual"):
|
||||||
end_date = max(s.schedule_date for s in depr_schedule)
|
end_date = max(s.schedule_date for s in depr_schedule)
|
||||||
@ -128,7 +138,7 @@ class AssetValueAdjustment(Document):
|
|||||||
|
|
||||||
value_after_depreciation = d.value_after_depreciation
|
value_after_depreciation = d.value_after_depreciation
|
||||||
for data in depr_schedule:
|
for data in depr_schedule:
|
||||||
if cint(data.finance_book_id) == d.idx and not data.journal_entry:
|
if not data.journal_entry:
|
||||||
if d.depreciation_method in ("Straight Line", "Manual"):
|
if d.depreciation_method in ("Straight Line", "Manual"):
|
||||||
days = date_diff(data.schedule_date, from_date)
|
days = date_diff(data.schedule_date, from_date)
|
||||||
depreciation_amount = days * rate_per_day
|
depreciation_amount = days * rate_per_day
|
||||||
@ -142,10 +152,16 @@ class AssetValueAdjustment(Document):
|
|||||||
|
|
||||||
d.db_update()
|
d.db_update()
|
||||||
|
|
||||||
asset.set_accumulated_depreciation(ignore_booked_entry=True)
|
set_accumulated_depreciation(new_asset_depr_schedule_doc, asset, d, ignore_booked_entry=True)
|
||||||
for asset_data in asset.schedules:
|
for asset_data in depr_schedule:
|
||||||
if not asset_data.journal_entry:
|
if not asset_data.journal_entry:
|
||||||
asset_data.db_update()
|
asset_data.db_update()
|
||||||
|
|
||||||
|
current_asset_depr_schedule_doc.cancel()
|
||||||
|
|
||||||
|
new_asset_depr_schedule_doc.notes = "Asset value adjustment"
|
||||||
|
|
||||||
|
new_asset_depr_schedule_doc.submit()
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user