chore: Add test case
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index f0e59ee..f414930 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -332,7 +332,7 @@
 		const fields = [
 			{
 				fieldname: 'split_qty',
-				fieldtype:'Int',
+				fieldtype: 'Int',
 				label: __('Split Qty'),
 				reqd: 1
 			}
diff --git a/erpnext/assets/doctype/asset/asset.json b/erpnext/assets/doctype/asset/asset.json
index 72f692c..9dba171 100644
--- a/erpnext/assets/doctype/asset/asset.json
+++ b/erpnext/assets/doctype/asset/asset.json
@@ -24,7 +24,6 @@
   "asset_category",
   "location",
   "split_from",
-  "qty",
   "custodian",
   "department",
   "disposal_date",
@@ -37,6 +36,7 @@
   "available_for_use_date",
   "column_break_23",
   "gross_purchase_amount",
+  "asset_quantity",
   "purchase_date",
   "section_break_23",
   "calculate_depreciation",
@@ -484,16 +484,16 @@
    "label": "Finance Books"
   },
   {
-   "fieldname": "qty",
-   "fieldtype": "Int",
-   "label": "Qty"
-  },
-  {
    "fieldname": "split_from",
    "fieldtype": "Link",
    "label": "Split From",
    "options": "Asset",
    "read_only": 1
+  },
+  {
+   "fieldname": "asset_quantity",
+   "fieldtype": "Int",
+   "label": "Asset Quantity"
   }
  ],
  "idx": 72,
@@ -516,7 +516,7 @@
    "link_fieldname": "asset"
   }
  ],
- "modified": "2022-01-18 09:15:34.238601",
+ "modified": "2022-01-19 01:36:51.361485",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Asset",
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 3d51af8..01c1f71 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -913,51 +913,57 @@
 	asset = frappe.get_doc("Asset", asset_name)
 	split_qty = cint(split_qty)
 
-	if split_qty >= asset.qty:
+	if split_qty >= asset.asset_quantity:
 		frappe.throw(_("Split qty cannot be grater than or equal to asset qty"))
 
-	remaining_qty = asset.qty - split_qty
+	remaining_qty = asset.asset_quantity - split_qty
 
-	# Update gross purchase amount
-	new_gross_purchase_amount = flt((asset.gross_purchase_amount * split_qty) / asset.qty)
-	remaining_gross_purchase_amount = flt((asset.gross_purchase_amount * split_qty) / asset.qty)
-
-	new_asset = create_new_asset_after_split(asset, new_gross_purchase_amount, split_qty)
-	update_existing_asset(asset, remaining_gross_purchase_amount, remaining_qty)
+	new_asset = create_new_asset_after_split(asset, split_qty)
+	update_existing_asset(asset, remaining_qty)
 
 	return new_asset
 
-def update_existing_asset(asset, remaingin_gross_purchase_amount, remaining_qty):
+def update_existing_asset(asset, remaining_qty):
+	remaining_gross_purchase_amount = flt((asset.gross_purchase_amount * remaining_qty) / asset.asset_quantity)
+	opening_accumulated_depreciation = flt((asset.opening_accumulated_depreciation * remaining_qty) / asset.asset_quantity)
+
 	frappe.db.set_value("Asset", asset.name, {
-		'gross_purchase_amount': remaingin_gross_purchase_amount,
-		'qty': remaining_qty
+		'opening_accumulated_depreciation': opening_accumulated_depreciation,
+		'gross_purchase_amount': remaining_gross_purchase_amount,
+		'asset_quantity': remaining_qty
 	})
 
 	for finance_book in asset.get('finance_books'):
-		value_after_depreciation = flt((finance_book.value_after_depreciation * remaining_qty)/asset.qty)
+		value_after_depreciation = flt((finance_book.value_after_depreciation * remaining_qty)/asset.asset_quantity)
+		expected_value_after_useful_life = flt((finance_book.expected_value_after_useful_life * remaining_qty)/asset.asset_quantity)
 		frappe.db.set_value('Asset Finance Book', finance_book.name, 'value_after_depreciation', value_after_depreciation)
+		frappe.db.set_value('Asset Finance Book', finance_book.name, 'expected_value_after_useful_life', expected_value_after_useful_life)
 
 	accumulated_depreciation = 0
 
 	for term in asset.get('schedules'):
-		depreciation_amount = flt((term.depreciation_amount * remaining_qty)/asset.qty)
+		depreciation_amount = flt((term.depreciation_amount * remaining_qty)/asset.asset_quantity)
 		frappe.db.set_value('Depreciation Schedule', term.name, 'depreciation_amount', depreciation_amount)
 		accumulated_depreciation += depreciation_amount
-		frappe.db.set_value('Depreciation Schedule', term.name, 'accumulated_depreciation_amount', depreciation_amount)
+		frappe.db.set_value('Depreciation Schedule', term.name, 'accumulated_depreciation_amount', accumulated_depreciation)
 
-def create_new_asset_after_split(asset, new_gross_purchase_amount, split_qty):
+def create_new_asset_after_split(asset, split_qty):
 	new_asset = frappe.copy_doc(asset)
+	new_gross_purchase_amount = flt((asset.gross_purchase_amount * split_qty) / asset.asset_quantity)
+	opening_accumulated_depreciation = flt((asset.opening_accumulated_depreciation * split_qty) / asset.asset_quantity)
 
 	new_asset.gross_purchase_amount = new_gross_purchase_amount
-	new_asset.qty = split_qty
+	new_asset.opening_accumulated_depreciation = opening_accumulated_depreciation
+	new_asset.asset_quantity = split_qty
 	new_asset.split_from = asset.name
 	accumulated_depreciation = 0
 
 	for finance_book in new_asset.get('finance_books'):
-		finance_book.value_after_depreciation = flt((finance_book.value_after_depreciation * split_qty)/asset.qty)
+		finance_book.value_after_depreciation = flt((finance_book.value_after_depreciation * split_qty)/asset.asset_quantity)
+		finance_book.expected_value_after_useful_life = flt((finance_book.expected_value_after_useful_life * split_qty)/asset.asset_quantity)
 
 	for term in new_asset.get('schedules'):
-		depreciation_amount = flt((term.depreciation_amount * split_qty)/asset.qty)
+		depreciation_amount = flt((term.depreciation_amount * split_qty)/asset.asset_quantity)
 		term.depreciation_amount = depreciation_amount
 		accumulated_depreciation += depreciation_amount
 		term.accumulated_depreciation_amount = accumulated_depreciation
@@ -975,6 +981,7 @@
 def add_reference_in_jv_on_split(entry_name, new_asset_name, old_asset_name, depreciation_amount):
 	journal_entry = frappe.get_doc('Journal Entry', entry_name)
 	entries_to_add = []
+	idx = len(journal_entry.get('accounts')) + 1
 
 	for account in journal_entry.get('accounts'):
 		if account.reference_name == old_asset_name:
@@ -997,6 +1004,9 @@
 			entry.debit = depreciation_amount
 			entry.debit_in_account_currency = entry.exchange_rate * depreciation_amount
 
+		entry.idx = idx
+		idx += 1
+
 		journal_entry.append('accounts', entry)
 
 	journal_entry.flags.ignore_validate_update_after_submit = True
diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py
index 283b2ea..7fdcb0d 100644
--- a/erpnext/assets/doctype/asset/test_asset.py
+++ b/erpnext/assets/doctype/asset/test_asset.py
@@ -28,9 +28,9 @@
 		make_purchase_receipt(item_code="Macbook Pro", qty=1, rate=100000.0, location="Test Location")
 		frappe.db.sql("delete from `tabTax Rule`")
 
-	# @classmethod
-	# def tearDownClass(cls):
-	# 	frappe.db.rollback()
+	@classmethod
+	def tearDownClass(cls):
+		frappe.db.rollback()
 
 class TestAsset(AssetSetup):
 	def test_asset_category_is_fetched(self):
@@ -225,18 +225,53 @@
 	def test_asset_splitting(self):
 		asset = create_asset(
 			calculate_depreciation = 1,
-			qty=10,
+			asset_quantity=10,
 			available_for_use_date = '2020-01-01',
 			purchase_date = '2020-01-01',
 			expected_value_after_useful_life = 0,
-			total_number_of_depreciations = 5,
+			total_number_of_depreciations = 6,
+			number_of_depreciations_booked = 1,
 			frequency_of_depreciation = 10,
 			depreciation_start_date = '2021-01-01',
+			opening_accumulated_depreciation=20000,
+			gross_purchase_amount=120000,
 			submit = 1
 		)
 
 		post_depreciation_entries(date="2021-01-01")
-		split_asset(asset.name, 5)
+
+		self.assertEqual(asset.asset_quantity, 10)
+		self.assertEqual(asset.gross_purchase_amount, 120000)
+		self.assertEqual(asset.opening_accumulated_depreciation, 20000)
+
+		new_asset = split_asset(asset.name, 2)
+		asset.load_from_db()
+
+		self.assertEqual(new_asset.asset_quantity, 2)
+		self.assertEqual(new_asset.gross_purchase_amount, 24000)
+		self.assertEqual(new_asset.opening_accumulated_depreciation, 4000)
+		self.assertEqual(new_asset.split_from, asset.name)
+		self.assertEqual(new_asset.schedules[0].depreciation_amount, 4000)
+		self.assertEqual(new_asset.schedules[1].depreciation_amount, 4000)
+
+		self.assertEqual(asset.asset_quantity, 8)
+		self.assertEqual(asset.gross_purchase_amount, 96000)
+		self.assertEqual(asset.opening_accumulated_depreciation, 16000)
+		self.assertEqual(asset.schedules[0].depreciation_amount, 16000)
+		self.assertEqual(asset.schedules[1].depreciation_amount, 16000)
+
+		journal_entry = asset.schedules[0].journal_entry
+
+		jv = frappe.get_doc('Journal Entry', journal_entry)
+		self.assertEqual(jv.accounts[0].credit_in_account_currency, 16000)
+		self.assertEqual(jv.accounts[1].debit_in_account_currency, 16000)
+		self.assertEqual(jv.accounts[2].credit_in_account_currency, 4000)
+		self.assertEqual(jv.accounts[3].debit_in_account_currency, 4000)
+
+		self.assertEqual(jv.accounts[0].reference_name, asset.name)
+		self.assertEqual(jv.accounts[1].reference_name, asset.name)
+		self.assertEqual(jv.accounts[2].reference_name, new_asset.name)
+		self.assertEqual(jv.accounts[3].reference_name, new_asset.name)
 
 	def test_expense_head(self):
 		pr = make_purchase_receipt(item_code="Macbook Pro",
@@ -1181,7 +1216,7 @@
 		"location": args.location or "Test Location",
 		"asset_owner": args.asset_owner or "Company",
 		"is_existing_asset": args.is_existing_asset or 1,
-		"qty": args.get("qty") or 1
+		"asset_quantity": args.get("asset_quantity") or 1
 	})
 
 	if asset.calculate_depreciation: