mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-16 02:11:39 +00:00
test: cover depreciation, sale, revaluation and capitalization in FA register
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,15 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
|
||||||
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||||
|
from erpnext.assets.doctype.asset.depreciation import post_depreciation_entries
|
||||||
from erpnext.assets.doctype.asset.test_asset import create_asset, set_depreciation_settings_in_company
|
from erpnext.assets.doctype.asset.test_asset import create_asset, set_depreciation_settings_in_company
|
||||||
|
from erpnext.assets.doctype.asset_capitalization.test_asset_capitalization import (
|
||||||
|
create_asset_capitalization,
|
||||||
|
)
|
||||||
|
from erpnext.assets.doctype.asset_value_adjustment.test_asset_value_adjustment import (
|
||||||
|
make_asset_value_adjustment,
|
||||||
|
)
|
||||||
from erpnext.assets.report.fixed_asset_register.fixed_asset_register import execute
|
from erpnext.assets.report.fixed_asset_register.fixed_asset_register import execute
|
||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
@@ -16,6 +24,9 @@ class TestFixedAssetRegister(ERPNextTestSuite):
|
|||||||
filters = frappe._dict(company="_Test Company", **extra)
|
filters = frappe._dict(company="_Test Company", **extra)
|
||||||
return execute(filters)[1]
|
return execute(filters)[1]
|
||||||
|
|
||||||
|
def report_row(self, asset_name, **extra):
|
||||||
|
return next(row for row in self.run_report(**extra) if row["asset_id"] == asset_name)
|
||||||
|
|
||||||
def test_asset_appears_with_purchase_value(self):
|
def test_asset_appears_with_purchase_value(self):
|
||||||
asset = create_asset(
|
asset = create_asset(
|
||||||
item_code="Macbook Pro", net_purchase_amount=100000, purchase_amount=100000, submit=True
|
item_code="Macbook Pro", net_purchase_amount=100000, purchase_amount=100000, submit=True
|
||||||
@@ -70,3 +81,71 @@ class TestFixedAssetRegister(ERPNextTestSuite):
|
|||||||
computers = next(row for row in rows if row["asset_category"] == "Computers")
|
computers = next(row for row in rows if row["asset_category"] == "Computers")
|
||||||
self.assertEqual(computers["net_purchase_amount"], 150000)
|
self.assertEqual(computers["net_purchase_amount"], 150000)
|
||||||
self.assertEqual(computers["asset_value"], 150000)
|
self.assertEqual(computers["asset_value"], 150000)
|
||||||
|
|
||||||
|
def test_booked_depreciation_reduces_asset_value(self):
|
||||||
|
asset = create_asset(
|
||||||
|
item_code="Macbook Pro",
|
||||||
|
calculate_depreciation=1,
|
||||||
|
available_for_use_date="2019-12-31",
|
||||||
|
depreciation_start_date="2020-12-31",
|
||||||
|
frequency_of_depreciation=12,
|
||||||
|
total_number_of_depreciations=3,
|
||||||
|
expected_value_after_useful_life=10000,
|
||||||
|
net_purchase_amount=100000,
|
||||||
|
purchase_amount=100000,
|
||||||
|
submit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
# books one depreciation entry of (100000 - 10000) / 3 = 30000
|
||||||
|
post_depreciation_entries(date="2021-01-01")
|
||||||
|
|
||||||
|
row = self.report_row(asset.name)
|
||||||
|
self.assertEqual(row["depreciated_amount"], 30000)
|
||||||
|
self.assertEqual(row["asset_value"], 70000) # 100000 - 30000
|
||||||
|
|
||||||
|
def test_revaluation_adjusts_asset_value(self):
|
||||||
|
asset = create_asset(
|
||||||
|
item_code="Macbook Pro", net_purchase_amount=100000, purchase_amount=100000, submit=True
|
||||||
|
)
|
||||||
|
|
||||||
|
# revalue the asset upwards by 20000
|
||||||
|
make_asset_value_adjustment(
|
||||||
|
asset=asset.name, current_asset_value=100000, new_asset_value=120000
|
||||||
|
).submit()
|
||||||
|
|
||||||
|
row = self.report_row(asset.name)
|
||||||
|
self.assertEqual(row["asset_value"], 120000) # 100000 + 20000 revaluation
|
||||||
|
|
||||||
|
def test_sold_asset_hidden_from_in_location_and_shown_in_disposed(self):
|
||||||
|
asset = create_asset(
|
||||||
|
item_code="Macbook Pro", net_purchase_amount=100000, purchase_amount=100000, submit=True
|
||||||
|
)
|
||||||
|
|
||||||
|
create_sales_invoice(item_code="Macbook Pro", asset=asset.name, qty=1, rate=80000)
|
||||||
|
self.assertEqual(frappe.db.get_value("Asset", asset.name, "status"), "Sold")
|
||||||
|
|
||||||
|
self.assertNotIn(asset.name, {row["asset_id"] for row in self.run_report(status="In Location")})
|
||||||
|
self.assertIn(asset.name, {row["asset_id"] for row in self.run_report(status="Disposed")})
|
||||||
|
|
||||||
|
def test_capitalized_asset_hidden_from_in_location_and_shown_in_disposed(self):
|
||||||
|
consumed_asset = create_asset(
|
||||||
|
asset_name="Consumed Asset",
|
||||||
|
net_purchase_amount=100000,
|
||||||
|
purchase_amount=100000,
|
||||||
|
submit=True,
|
||||||
|
)
|
||||||
|
composite_asset = create_asset(
|
||||||
|
asset_name="Composite Asset", asset_type="Composite Asset", submit=False
|
||||||
|
)
|
||||||
|
|
||||||
|
create_asset_capitalization(
|
||||||
|
target_asset=composite_asset.name, consumed_asset=consumed_asset.name, submit=1
|
||||||
|
)
|
||||||
|
self.assertEqual(frappe.db.get_value("Asset", consumed_asset.name, "status"), "Capitalized")
|
||||||
|
|
||||||
|
self.assertNotIn(
|
||||||
|
consumed_asset.name, {row["asset_id"] for row in self.run_report(status="In Location")}
|
||||||
|
)
|
||||||
|
self.assertIn(
|
||||||
|
consumed_asset.name, {row["asset_id"] for row in self.run_report(status="Disposed")}
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user