@@ -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
16991752def get_gl_entries (doctype , docname ):
17001753 gl_entry = frappe .qb .DocType ("GL Entry" )
0 commit comments