refactor!: Subcontracted Item To Be Transferred
diff --git a/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py b/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py
index 6b8a3b1..a837b24 100644
--- a/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py
+++ b/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.py
@@ -46,10 +46,10 @@
 
 
 def get_data(filters):
-	po_rm_item_details = get_po_items_to_supply(filters)
+	sco_rm_item_details = get_sco_items_to_supply(filters)
 
 	data = []
-	for row in po_rm_item_details:
+	for row in sco_rm_item_details:
 		transferred_qty = row.get("transferred_qty") or 0
 		if transferred_qty < row.get("reqd_qty", 0):
 			pending_qty = frappe.utils.flt(row.get("reqd_qty", 0) - transferred_qty)
@@ -59,23 +59,22 @@
 	return data
 
 
-def get_po_items_to_supply(filters):
+def get_sco_items_to_supply(filters):
 	return frappe.db.get_all(
-		"Purchase Order",
+		"Subcontracting Order",
 		fields=[
-			"name as purchase_order",
+			"name as subcontracting_order",
 			"transaction_date as date",
 			"supplier as supplier",
-			"`tabPurchase Order Item Supplied`.rm_item_code as rm_item_code",
-			"`tabPurchase Order Item Supplied`.required_qty as reqd_qty",
-			"`tabPurchase Order Item Supplied`.supplied_qty as transferred_qty",
+			"`tabSubcontracting Order Supplied Item`.rm_item_code as rm_item_code",
+			"`tabSubcontracting Order Supplied Item`.required_qty as reqd_qty",
+			"`tabSubcontracting Order Supplied Item`.supplied_qty as transferred_qty",
 		],
 		filters=[
-			["Purchase Order", "per_received", "<", "100"],
-			["Purchase Order", "is_subcontracted", "=", 1],
-			["Purchase Order", "supplier", "=", filters.supplier],
-			["Purchase Order", "transaction_date", "<=", filters.to_date],
-			["Purchase Order", "transaction_date", ">=", filters.from_date],
-			["Purchase Order", "docstatus", "=", 1],
+			["Subcontracting Order", "per_received", "<", "100"],
+			["Subcontracting Order", "supplier", "=", filters.supplier],
+			["Subcontracting Order", "transaction_date", "<=", filters.to_date],
+			["Subcontracting Order", "transaction_date", ">=", filters.from_date],
+			["Subcontracting Order", "docstatus", "=", 1],
 		],
 	)
diff --git a/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/test_subcontracted_raw_materials_to_be_transferred.py b/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/test_subcontracted_raw_materials_to_be_transferred.py
index 2791a26..d29791c 100644
--- a/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/test_subcontracted_raw_materials_to_be_transferred.py
+++ b/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/test_subcontracted_raw_materials_to_be_transferred.py
@@ -3,24 +3,36 @@
 # Compiled at: 2019-05-06 10:24:35
 # Decompiled by https://python-decompiler.com
 
-import json
-
 import frappe
 from frappe.tests.utils import FrappeTestCase
 
-from erpnext.buying.doctype.purchase_order.purchase_order import make_rm_stock_entry
-from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
 from erpnext.buying.report.subcontracted_raw_materials_to_be_transferred.subcontracted_raw_materials_to_be_transferred import (
 	execute,
 )
+from erpnext.controllers.tests.test_subcontracting_controller import (
+	get_subcontracting_order,
+	make_service_item,
+)
 from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
+from erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order import (
+	make_rm_stock_entry,
+)
 
 
 class TestSubcontractedItemToBeTransferred(FrappeTestCase):
 	def test_pending_and_transferred_qty(self):
-		po = create_purchase_order(
-			item_code="_Test FG Item", is_subcontracted=1, supplier_warehouse="_Test Warehouse 1 - _TC"
-		)
+		make_service_item("Subcontracted Service Item 1")
+		service_items = [
+			{
+				"warehouse": "_Test Warehouse - _TC",
+				"item_code": "Subcontracted Service Item 1",
+				"qty": 10,
+				"rate": 500,
+				"fg_item": "_Test FG Item",
+				"fg_item_qty": 10,
+			},
+		]
+		sco = get_subcontracting_order(service_items=service_items)
 
 		# Material Receipt of RMs
 		make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=100, basic_rate=100)
@@ -28,50 +40,47 @@
 			item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", qty=100, basic_rate=100
 		)
 
-		se = transfer_subcontracted_raw_materials(po)
+		transfer_subcontracted_raw_materials(sco)
 
 		col, data = execute(
 			filters=frappe._dict(
 				{
-					"supplier": po.supplier,
+					"supplier": sco.supplier,
 					"from_date": frappe.utils.get_datetime(
-						frappe.utils.add_to_date(po.transaction_date, days=-10)
+						frappe.utils.add_to_date(sco.transaction_date, days=-10)
 					),
-					"to_date": frappe.utils.get_datetime(frappe.utils.add_to_date(po.transaction_date, days=10)),
+					"to_date": frappe.utils.get_datetime(frappe.utils.add_to_date(sco.transaction_date, days=10)),
 				}
 			)
 		)
-		po.reload()
+		sco.reload()
 
-		po_data = [row for row in data if row.get("purchase_order") == po.name]
+		sco_data = [row for row in data if row.get("subcontracting_order") == sco.name]
 		# Alphabetically sort to be certain of order
-		po_data = sorted(po_data, key=lambda i: i["rm_item_code"])
+		sco_data = sorted(sco_data, key=lambda i: i["rm_item_code"])
 
-		self.assertEqual(len(po_data), 2)
-		self.assertEqual(po_data[0]["purchase_order"], po.name)
+		self.assertEqual(len(sco_data), 2)
+		self.assertEqual(sco_data[0]["subcontracting_order"], sco.name)
 
-		self.assertEqual(po_data[0]["rm_item_code"], "_Test Item")
-		self.assertEqual(po_data[0]["p_qty"], 8)
-		self.assertEqual(po_data[0]["transferred_qty"], 2)
+		self.assertEqual(sco_data[0]["rm_item_code"], "_Test Item")
+		self.assertEqual(sco_data[0]["p_qty"], 8)
+		self.assertEqual(sco_data[0]["transferred_qty"], 2)
 
-		self.assertEqual(po_data[1]["rm_item_code"], "_Test Item Home Desktop 100")
-		self.assertEqual(po_data[1]["p_qty"], 19)
-		self.assertEqual(po_data[1]["transferred_qty"], 1)
-
-		se.cancel()
-		po.cancel()
+		self.assertEqual(sco_data[1]["rm_item_code"], "_Test Item Home Desktop 100")
+		self.assertEqual(sco_data[1]["p_qty"], 19)
+		self.assertEqual(sco_data[1]["transferred_qty"], 1)
 
 
-def transfer_subcontracted_raw_materials(po):
-	# Order of supplied items fetched in PO is flaky
+def transfer_subcontracted_raw_materials(sco):
+	# Order of supplied items fetched in SCO is flaky
 	transfer_qty_map = {"_Test Item": 2, "_Test Item Home Desktop 100": 1}
 
-	item_1 = po.supplied_items[0].rm_item_code
-	item_2 = po.supplied_items[1].rm_item_code
+	item_1 = sco.supplied_items[0].rm_item_code
+	item_2 = sco.supplied_items[1].rm_item_code
 
-	rm_item = [
+	rm_items = [
 		{
-			"name": po.supplied_items[0].name,
+			"name": sco.supplied_items[0].name,
 			"item_code": item_1,
 			"rm_item_code": item_1,
 			"item_name": item_1,
@@ -82,7 +91,7 @@
 			"stock_uom": "Nos",
 		},
 		{
-			"name": po.supplied_items[1].name,
+			"name": sco.supplied_items[1].name,
 			"item_code": item_2,
 			"rm_item_code": item_2,
 			"item_name": item_2,
@@ -93,8 +102,7 @@
 			"stock_uom": "Nos",
 		},
 	]
-	rm_item_string = json.dumps(rm_item)
-	se = frappe.get_doc(make_rm_stock_entry(po.name, rm_item_string))
+	se = frappe.get_doc(make_rm_stock_entry(sco.name, rm_items))
 	se.from_warehouse = "_Test Warehouse - _TC"
 	se.to_warehouse = "_Test Warehouse - _TC"
 	se.stock_entry_type = "Send to Subcontractor"