mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-22 19:55:29 +00:00
test: added tests for reschedule depreciation after asset revaluation cancellation
This commit is contained in:
@@ -14,6 +14,9 @@ from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_sched
|
||||
get_depr_schedule,
|
||||
)
|
||||
from erpnext.assets.doctype.asset_repair.test_asset_repair import create_asset_repair
|
||||
from erpnext.assets.doctype.asset_value_adjustment.test_asset_value_adjustment import (
|
||||
make_asset_value_adjustment,
|
||||
)
|
||||
|
||||
|
||||
class UnitTestAssetDepreciationSchedule(UnitTestCase):
|
||||
@@ -743,3 +746,239 @@ class TestAssetDepreciationSchedule(IntegrationTestCase):
|
||||
self.assertEqual(schedules, expected_depreciation_before_repair)
|
||||
asset.reload()
|
||||
self.assertEqual(asset.finance_books[0].value_after_depreciation, 500)
|
||||
|
||||
def test_depreciation_schedule_after_cancelling_asset_value_adjustent(self):
|
||||
asset = create_asset(
|
||||
item_code="Macbook Pro",
|
||||
gross_purchase_amount=1000,
|
||||
calculate_depreciation=1,
|
||||
depreciation_method="Straight Line",
|
||||
available_for_use_date="2023-01-01",
|
||||
depreciation_start_date="2023-01-31",
|
||||
frequency_of_depreciation=1,
|
||||
total_number_of_depreciations=12,
|
||||
submit=1,
|
||||
)
|
||||
|
||||
expected_depreciation_before_adjustment = [
|
||||
["2023-01-31", 83.33, 83.33],
|
||||
["2023-02-28", 83.33, 166.66],
|
||||
["2023-03-31", 83.33, 249.99],
|
||||
["2023-04-30", 83.33, 333.32],
|
||||
["2023-05-31", 83.33, 416.65],
|
||||
["2023-06-30", 83.33, 499.98],
|
||||
["2023-07-31", 83.33, 583.31],
|
||||
["2023-08-31", 83.33, 666.64],
|
||||
["2023-09-30", 83.33, 749.97],
|
||||
["2023-10-31", 83.33, 833.3],
|
||||
["2023-11-30", 83.33, 916.63],
|
||||
["2023-12-31", 83.37, 1000.0],
|
||||
]
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_before_adjustment)
|
||||
|
||||
current_asset_value = asset.finance_books[0].value_after_depreciation
|
||||
asset_value_adjustment = make_asset_value_adjustment(
|
||||
asset=asset,
|
||||
date="2023-04-01",
|
||||
current_asset_value=current_asset_value,
|
||||
new_asset_value=1200,
|
||||
)
|
||||
asset_value_adjustment.submit()
|
||||
|
||||
expected_depreciation_after_adjustment = [
|
||||
["2023-01-31", 100.0, 100.0],
|
||||
["2023-02-28", 100.0, 200.0],
|
||||
["2023-03-31", 100.0, 300.0],
|
||||
["2023-04-30", 100.0, 400.0],
|
||||
["2023-05-31", 100.0, 500.0],
|
||||
["2023-06-30", 100.0, 600.0],
|
||||
["2023-07-31", 100.0, 700.0],
|
||||
["2023-08-31", 100.0, 800.0],
|
||||
["2023-09-30", 100.0, 900.0],
|
||||
["2023-10-31", 100.0, 1000.0],
|
||||
["2023-11-30", 100.0, 1100.0],
|
||||
["2023-12-31", 100.0, 1200.0],
|
||||
]
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_after_adjustment)
|
||||
|
||||
asset_value_adjustment.cancel()
|
||||
asset.reload()
|
||||
self.assertEqual(asset.finance_books[0].value_after_depreciation, 1000)
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_before_adjustment)
|
||||
|
||||
def test_depreciation_schedule_after_cancelling_asset_value_adjustent_for_existing_asset(self):
|
||||
asset = create_asset(
|
||||
item_code="Macbook Pro",
|
||||
gross_purchase_amount=500,
|
||||
calculate_depreciation=1,
|
||||
depreciation_method="Straight Line",
|
||||
available_for_use_date="2023-01-15",
|
||||
depreciation_start_date="2023-03-31",
|
||||
frequency_of_depreciation=1,
|
||||
total_number_of_depreciations=12,
|
||||
is_existing_asset=1,
|
||||
opening_accumulated_depreciation=64.52,
|
||||
opening_number_of_booked_depreciations=2,
|
||||
submit=1,
|
||||
)
|
||||
|
||||
expected_depreciation_before_adjustment = [
|
||||
["2023-03-31", 41.39, 105.91],
|
||||
["2023-04-30", 41.39, 147.3],
|
||||
["2023-05-31", 41.39, 188.69],
|
||||
["2023-06-30", 41.39, 230.08],
|
||||
["2023-07-31", 41.39, 271.47],
|
||||
["2023-08-31", 41.39, 312.86],
|
||||
["2023-09-30", 41.39, 354.25],
|
||||
["2023-10-31", 41.39, 395.64],
|
||||
["2023-11-30", 41.39, 437.03],
|
||||
["2023-12-31", 41.39, 478.42],
|
||||
["2024-01-15", 21.58, 500.0],
|
||||
]
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_before_adjustment)
|
||||
|
||||
current_asset_value = asset.finance_books[0].value_after_depreciation
|
||||
asset_value_adjustment = make_asset_value_adjustment(
|
||||
asset=asset,
|
||||
date="2023-04-01",
|
||||
current_asset_value=current_asset_value,
|
||||
new_asset_value=600,
|
||||
)
|
||||
asset_value_adjustment.submit()
|
||||
|
||||
expected_depreciation_after_adjustment = [
|
||||
["2023-03-31", 57.03, 121.55],
|
||||
["2023-04-30", 57.03, 178.58],
|
||||
["2023-05-31", 57.03, 235.61],
|
||||
["2023-06-30", 57.03, 292.64],
|
||||
["2023-07-31", 57.03, 349.67],
|
||||
["2023-08-31", 57.03, 406.7],
|
||||
["2023-09-30", 57.03, 463.73],
|
||||
["2023-10-31", 57.03, 520.76],
|
||||
["2023-11-30", 57.03, 577.79],
|
||||
["2023-12-31", 57.03, 634.82],
|
||||
["2024-01-15", 29.7, 664.52],
|
||||
]
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_after_adjustment)
|
||||
|
||||
asset_value_adjustment.cancel()
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
|
||||
self.assertEqual(schedules, expected_depreciation_before_adjustment)
|
||||
|
||||
def test_depreciation_schedule_for_parallel_adjustment_and_repair(self):
|
||||
asset = create_asset(
|
||||
item_code="Macbook Pro",
|
||||
gross_purchase_amount=600,
|
||||
calculate_depreciation=1,
|
||||
depreciation_method="Straight Line",
|
||||
available_for_use_date="2021-01-01",
|
||||
depreciation_start_date="2021-12-31",
|
||||
frequency_of_depreciation=12,
|
||||
total_number_of_depreciations=3,
|
||||
is_existing_asset=1,
|
||||
submit=1,
|
||||
)
|
||||
post_depreciation_entries(date="2021-12-31")
|
||||
asset.reload()
|
||||
|
||||
expected_depreciation_before_adjustment = [
|
||||
["2021-12-31", 200, 200],
|
||||
["2022-12-31", 200, 400],
|
||||
["2023-12-31", 200, 600],
|
||||
]
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_before_adjustment)
|
||||
|
||||
current_asset_value = asset.finance_books[0].value_after_depreciation
|
||||
asset_value_adjustment = make_asset_value_adjustment(
|
||||
asset=asset,
|
||||
date="2022-01-15",
|
||||
current_asset_value=current_asset_value,
|
||||
new_asset_value=500,
|
||||
)
|
||||
asset_value_adjustment.submit()
|
||||
|
||||
expected_depreciation_after_adjustment = [
|
||||
["2021-12-31", 200, 200],
|
||||
["2022-12-31", 250, 450],
|
||||
["2023-12-31", 250, 700],
|
||||
]
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_after_adjustment)
|
||||
|
||||
asset_repair = create_asset_repair(
|
||||
asset=asset,
|
||||
capitalize_repair_cost=1,
|
||||
item="_Test Non Stock Item",
|
||||
failure_date="2022-01-20",
|
||||
pi_repair_cost1=60,
|
||||
pi_repair_cost2=40,
|
||||
increase_in_asset_life=0,
|
||||
submit=1,
|
||||
)
|
||||
self.assertEqual(asset_repair.total_repair_cost, 100)
|
||||
|
||||
expected_depreciation_after_repair = [
|
||||
["2021-12-31", 200, 200],
|
||||
["2022-12-31", 300, 500],
|
||||
["2023-12-31", 300, 800],
|
||||
]
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
self.assertEqual(schedules, expected_depreciation_after_repair)
|
||||
asset.reload()
|
||||
|
||||
asset_value_adjustment.cancel()
|
||||
|
||||
expected_depreciation_after_cancelling_adjustment = [
|
||||
["2021-12-31", 200, 200],
|
||||
["2022-12-31", 250, 450],
|
||||
["2023-12-31", 250, 700],
|
||||
]
|
||||
|
||||
schedules = [
|
||||
[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
|
||||
for d in get_depr_schedule(asset.name, "Active")
|
||||
]
|
||||
|
||||
self.assertEqual(schedules, expected_depreciation_after_cancelling_adjustment)
|
||||
|
||||
Reference in New Issue
Block a user