chore: rearrange functions
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 72808db..c2c4d0f 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -323,7 +323,6 @@
 
 		is_asset_pr = any(d.is_fixed_asset for d in self.get("items"))
 		stock_asset_rbnb = None
-		stock_asset_account_name = None
 		remarks = self.get("remarks") or _("Accounting Entry for {0}").format(
 			"Asset" if is_asset_pr else "Stock"
 		)
@@ -360,12 +359,13 @@
 				item=item,
 			)
 
-		def make_stock_received_but_not_billed_entry(item, outgoing_amount):
+		def make_stock_received_but_not_billed_entry(item):
 			account = (
 				warehouse_account[item.from_warehouse]["account"] if item.from_warehouse else stock_asset_rbnb
 			)
 			account_currency = get_account_currency(account)
 
+			outgoing_amount = item.base_net_amount
 			# GL Entry for from warehouse or Stock Received but not billed
 			# Intentionally passed negative debit amount to avoid incorrect GL Entry validation
 			credit_amount = (
@@ -375,9 +375,7 @@
 			)
 
 			if self.is_internal_transfer() and item.valuation_rate:
-				outgoing_amount = abs(
-					get_stock_value_difference(self.name, item.name, item.from_warehouse) or 0
-				)
+				outgoing_amount = abs(get_stock_value_difference(self.name, item.name, item.from_warehouse))
 				credit_amount = outgoing_amount
 
 			if credit_amount:
@@ -496,7 +494,7 @@
 			# divisional loss adjustment
 			expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation")
 			valuation_amount_as_per_doc = (
-				flt(outgoing_amount, d.precision("base_net_amount"))
+				flt(item.base_net_amount, d.precision("base_net_amount"))
 				+ flt(item.landed_cost_voucher_amount)
 				+ flt(item.rm_supp_cost)
 				+ flt(item.item_tax_amount)
@@ -534,11 +532,37 @@
 				)
 
 		for d in self.get("items"):
-			if d.item_code in stock_items or d.is_fixed_asset:
-				if warehouse_account.get(d.warehouse):
-					stock_value_diff = get_stock_value_difference(self.name, d.name, d.warehouse)
-					outgoing_amount = d.base_net_amount + d.item_tax_amount
+			if (
+				d.item_code not in stock_items
+				and flt(d.qty)
+				and provisional_accounting_for_non_stock_items
+				and d.get("provisional_expense_account")
+			):
+				self.add_provisional_gl_entry(
+					d, gl_entries, self.posting_date, d.get("provisional_expense_account")
+				)
+			elif flt(d.qty) and (flt(d.valuation_rate) or self.is_return):
+				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)
+					and warehouse_account.get(d.warehouse)
+				):
+					stock_value_diff = get_stock_value_difference(self.name, d.name, d.warehouse)
+					stock_asset_account_name = warehouse_account[d.warehouse]["account"]
 					supplier_warehouse_account = warehouse_account.get(self.supplier_warehouse, {}).get("account")
 					supplier_warehouse_account_currency = warehouse_account.get(self.supplier_warehouse, {}).get(
 						"account_currency"
@@ -554,44 +578,17 @@
 					):
 						continue
 
-					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"]
-
-					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)
-					make_sub_contracting_gl_entries(d)
-					make_divisional_loss_gl_entry(d)
-				elif (
-					d.warehouse not in warehouse_with_no_account
-					or d.rejected_warehouse not in warehouse_with_no_account
-				):
-					warehouse_with_no_account.append(d.warehouse)
+				make_item_asset_inward_entries(d, stock_value_diff, stock_asset_account_name)
+				make_stock_received_but_not_billed_entry(d)
+				make_landed_cost_gl_entries(d)
+				make_rate_difference_entry(d)
+				make_sub_contracting_gl_entries(d)
+				make_divisional_loss_gl_entry(d)
 			elif (
-				d.item_code not in stock_items
-				and not d.is_fixed_asset
-				and flt(d.qty)
-				and provisional_accounting_for_non_stock_items
-				and d.get("provisional_expense_account")
+				d.warehouse not in warehouse_with_no_account
+				or d.rejected_warehouse not in warehouse_with_no_account
 			):
-				self.add_provisional_gl_entry(
-					d, gl_entries, self.posting_date, d.get("provisional_expense_account")
-				)
+				warehouse_with_no_account.append(d.warehouse)
 
 			if d.is_fixed_asset:
 				self.update_assets(d, d.valuation_rate)
@@ -754,7 +751,7 @@
 
 
 def get_stock_value_difference(voucher_no, voucher_detail_no, warehouse):
-	frappe.db.get_value(
+	return frappe.db.get_value(
 		"Stock Ledger Entry",
 		{
 			"voucher_type": "Purchase Receipt",