Skip to content

Commit 9eeccb7

Browse files
committed
test: validate asset partial sales
1 parent a88fe2e commit 9eeccb7

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

erpnext/assets/doctype/asset/test_asset.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,6 +1695,59 @@ def test_multi_currency_asset_pr_creation(self):
16951695
pr.submit()
16961696
self.assertTrue(get_gl_entries("Purchase Receipt", pr.name))
16971697

1698+
def test_partial_asset_sale_for_existing_asset(self):
1699+
date = nowdate()
1700+
purchase_date = add_months(get_first_day(date), -2)
1701+
depreciation_start_date = add_months(get_last_day(date), -2)
1702+
1703+
# create an asset
1704+
asset = create_asset(
1705+
item_code="Macbook Pro",
1706+
is_existing_asset=1,
1707+
calculate_depreciation=1,
1708+
available_for_use_date=purchase_date,
1709+
purchase_date=purchase_date,
1710+
depreciation_start_date=depreciation_start_date,
1711+
net_purchase_amount=1000000,
1712+
purchase_amount=1000000,
1713+
asset_quantity=10,
1714+
total_number_of_depreciations=12,
1715+
frequency_of_depreciation=1,
1716+
submit=1,
1717+
)
1718+
asset_depr_schedule_before_sale = get_asset_depr_schedule_doc(asset.name, "Active")
1719+
post_depreciation_entries(date)
1720+
asset.reload()
1721+
1722+
# check asset values before sale
1723+
self.assertEqual(asset.asset_quantity, 10)
1724+
self.assertEqual(asset.net_purchase_amount, 1000000)
1725+
self.assertEqual(asset.status, "Partially Depreciated")
1726+
self.assertEqual(
1727+
asset_depr_schedule_before_sale.depreciation_schedule[0].get("depreciation_amount"), 83333.33
1728+
)
1729+
1730+
# make a partial sales againt the asset
1731+
si = make_sales_invoice(
1732+
asset=asset.name, item_code="Macbook Pro", company="_Test Company", sell_qty=5
1733+
)
1734+
si.customer = "_Test Customer"
1735+
si.due_date = date
1736+
si.get("items")[0].rate = 25000
1737+
si.insert()
1738+
si.submit()
1739+
1740+
asset.reload()
1741+
asset_depr_schedule_after_sale = get_asset_depr_schedule_doc(asset.name, "Active")
1742+
1743+
# check asset values after sales
1744+
self.assertEqual(asset.asset_quantity, 5)
1745+
self.assertEqual(asset.net_purchase_amount, 500000)
1746+
self.assertEqual(asset.status, "Sold")
1747+
self.assertEqual(
1748+
asset_depr_schedule_after_sale.depreciation_schedule[0].get("depreciation_amount"), 41666.66
1749+
)
1750+
16981751

16991752
def get_gl_entries(doctype, docname):
17001753
gl_entry = frappe.qb.DocType("GL Entry")

0 commit comments

Comments
 (0)