fix: Purchase Receipt GL Entries (#37642)

* fix: Purchase Receipt GL Entries

* chore: cleanup

* test: set cwip account
diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py
index 99824b7..d69f5ef 100644
--- a/erpnext/assets/doctype/asset/test_asset.py
+++ b/erpnext/assets/doctype/asset/test_asset.py
@@ -1789,6 +1789,7 @@
 			"fixed_asset_account": "_Test Fixed Asset - _TC",
 			"accumulated_depreciation_account": "_Test Accumulated Depreciations - _TC",
 			"depreciation_expense_account": "_Test Depreciations - _TC",
+			"capital_work_in_progress_account": "CWIP Account - _TC",
 		},
 	)
 	asset_category.append(
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index a40976b..a7330ec 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -76,8 +76,6 @@
 					gl_entries = self.get_gl_entries(warehouse_account)
 				make_gl_entries(gl_entries, from_repost=from_repost)
 
-		update_regional_gl_entries(gl_entries, self)
-
 	def validate_serialized_batch(self):
 		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 
@@ -1226,8 +1224,3 @@
 		repost_entries.append(repost_entry)
 
 	return repost_entries
-
-
-@erpnext.allow_regional
-def update_regional_gl_entries(gl_list, doc):
-	return
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 029d89c..91344ea 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -542,17 +542,19 @@
 					d, gl_entries, self.posting_date, d.get("provisional_expense_account")
 				)
 			elif flt(d.qty) and (flt(d.valuation_rate) or self.is_return):
-				is_asset_pr = any(d.is_fixed_asset for d in self.get("items"))
 				remarks = self.get("remarks") or _("Accounting Entry for {0}").format(
-					"Asset" if is_asset_pr else "Stock"
+					"Asset" if d.is_fixed_asset else "Stock"
 				)
 
-				if not (erpnext.is_perpetual_inventory_enabled(self.company) or is_asset_pr):
-					return
+				if not (
+					(erpnext.is_perpetual_inventory_enabled(self.company) and d.item_code in stock_items)
+					or d.is_fixed_asset
+				):
+					continue
 
 				stock_asset_rbnb = (
 					self.get_company_default("asset_received_but_not_billed")
-					if is_asset_pr
+					if d.is_fixed_asset
 					else self.get_company_default("stock_received_but_not_billed")
 				)
 				landed_cost_entries = get_item_account_wise_additional_cost(self.name)
@@ -758,8 +760,6 @@
 			pr_doc = self if (pr == self.name) else frappe.get_doc("Purchase Receipt", pr)
 			update_billing_percentage(pr_doc, update_modified=update_modified)
 
-		self.load_from_db()
-
 	def reserve_stock_for_sales_order(self):
 		if self.is_return or not cint(
 			frappe.db.get_single_value("Stock Settings", "auto_reserve_stock_for_sales_order_on_purchase")