fix: rearrange functions
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index ae54b80..4b2c922 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -73,11 +73,6 @@
 					gl_entries = self.get_gl_entries(warehouse_account)
 				make_gl_entries(gl_entries, from_repost=from_repost)
 
-		elif self.doctype in ["Purchase Receipt", "Purchase Invoice"] and self.docstatus == 1:
-			gl_entries = []
-			gl_entries = self.get_asset_gl_entry(gl_entries)
-			make_gl_entries(gl_entries, from_repost=from_repost)
-
 	def validate_serialized_batch(self):
 		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 6440f80..bd3aeac 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -313,7 +313,6 @@
 
 		self.make_item_gl_entries(gl_entries, warehouse_account=warehouse_account)
 		self.make_tax_gl_entries(gl_entries)
-		# self.get_asset_gl_entry(gl_entries)
 
 		return process_gl_map(gl_entries)
 
@@ -351,34 +350,7 @@
 		)
 		exchange_rate_map, net_rate_map = get_purchase_document_details(self)
 
-		def make_item_asset_inward_entries(item, stock_value_diff):
-			if d.is_fixed_asset:
-				stock_asset_account_name = (
-					get_asset_category_account(
-						asset_category=item.asset_category,
-						fieldname="capital_work_in_progress_account",
-						company=self.company,
-					)
-					if is_cwip_accounting_enabled(d.asset_category)
-					else get_asset_category_account(
-						asset_category=item.asset_category, fieldname="fixed_asset_account", company=self.company
-					)
-				)
-
-				stock_value_diff = flt(item.net_amount) + flt(item.item_tax_amount / self.conversion_rate)
-			elif (flt(item.valuation_rate) or self.is_return) and flt(item.qty):
-				# If PR is sub-contracted and fg item rate is zero
-				# in that case if account for source and target warehouse are same,
-				# then GL entries should not be posted
-				if (
-					flt(stock_value_diff) == flt(d.rm_supp_cost)
-					and warehouse_account.get(self.supplier_warehouse)
-					and stock_asset_account_name == supplier_warehouse_account
-				):
-					return
-
-				stock_asset_account_name = warehouse_account[item.warehouse]["account"]
-
+		def make_item_asset_inward_entries(item, stock_value_diff, stock_asset_account_name):
 			account_currency = get_account_currency(stock_asset_account_name)
 			self.add_gl_entry(
 				gl_entries=gl_entries,
@@ -402,20 +374,7 @@
 			)
 
 			if self.is_internal_transfer() and item.valuation_rate:
-				outgoing_amount = abs(
-					frappe.db.get_value(
-						"Stock Ledger Entry",
-						{
-							"voucher_type": "Purchase Receipt",
-							"voucher_no": self.name,
-							"voucher_detail_no": item.name,
-							"warehouse": item.from_warehouse,
-							"is_cancelled": 0,
-						},
-						"stock_value_difference",
-					)
-				)
-				credit_amount = outgoing_amount
+				credit_amount = abs(get_stock_value_difference(self.name, item.name, item.from_warehouse) or 0)
 
 			if credit_amount:
 				account = (
@@ -583,20 +542,37 @@
 				)
 
 				if warehouse_account.get(d.warehouse):
-					stock_value_diff = frappe.db.get_value(
-						"Stock Ledger Entry",
-						{
-							"voucher_type": "Purchase Receipt",
-							"voucher_no": self.name,
-							"voucher_detail_no": d.name,
-							"warehouse": d.warehouse,
-							"is_cancelled": 0,
-						},
-						"stock_value_difference",
-					)
-
+					stock_value_diff = get_stock_value_difference(self.name, d.name, d.warehouse)
 					outgoing_amount = d.base_net_amount + d.item_tax_amount
-					make_item_asset_inward_entries(d, stock_value_diff)
+
+					if d.is_fixed_asset:
+						stock_asset_account_name = (
+							get_asset_category_account(
+								asset_category=d.asset_category,
+								fieldname="capital_work_in_progress_account",
+								company=self.company,
+							)
+							if is_cwip_accounting_enabled(d.asset_category)
+							else get_asset_category_account(
+								asset_category=d.asset_category, fieldname="fixed_asset_account", company=self.company
+							)
+						)
+
+						stock_value_diff = flt(d.net_amount) + flt(d.item_tax_amount / self.conversion_rate)
+					elif (flt(d.valuation_rate) or self.is_return) and flt(d.qty):
+						stock_asset_account_name = warehouse_account[d.warehouse]["account"]
+
+					# If PR is sub-contracted and fg item rate is zero
+					# in that case if account for source and target warehouse are same,
+					# then GL entries should not be posted
+					if (
+						flt(stock_value_diff) == flt(d.rm_supp_cost)
+						and warehouse_account.get(self.supplier_warehouse)
+						and stock_asset_account_name == supplier_warehouse_account
+					):
+						continue
+
+					make_item_asset_inward_entries(d, stock_value_diff, stock_asset_account_name)
 					make_stock_received_but_not_billed_entry(d, outgoing_amount)
 					make_landed_cost_gl_entries(d)
 					make_rate_difference_entry(d)
@@ -745,18 +721,6 @@
 
 					i += 1
 
-	def get_asset_gl_entry(self, gl_entries):
-		for item in self.get("items"):
-			if item.is_fixed_asset:
-				if is_cwip_accounting_enabled(item.asset_category):
-					self.add_asset_gl_entries(item, gl_entries)
-				if flt(item.landed_cost_voucher_amount):
-					self.add_lcv_gl_entries(item, gl_entries)
-					# update assets gross amount by its valuation rate
-					# valuation rate is total of net rate, raw mat supp cost, tax amount, lcv amount per item
-
-		return gl_entries
-
 	def update_assets(self, item, valuation_rate):
 		assets = frappe.db.get_all(
 			"Asset", filters={"purchase_receipt": self.name, "item_code": item.item_code}
@@ -790,6 +754,20 @@
 		self.load_from_db()
 
 
+def get_stock_value_difference(voucher_no, voucher_detail_no, warehouse):
+	frappe.db.get_value(
+		"Stock Ledger Entry",
+		{
+			"voucher_type": "Purchase Receipt",
+			"voucher_no": voucher_no,
+			"voucher_detail_no": voucher_detail_no,
+			"warehouse": warehouse,
+			"is_cancelled": 0,
+		},
+		"stock_value_difference",
+	)
+
+
 def update_billed_amount_based_on_po(po_details, update_modified=True):
 	po_billed_amt_details = get_billed_amount_against_po(po_details)
 
diff --git a/erpnext/templates/pages/integrations/__init__.py b/erpnext/templates/pages/integrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/templates/pages/integrations/__init__.py