diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js
index ad6ea7d..0dc0ee6 100644
--- a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js
+++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js
@@ -2,29 +2,29 @@
 // For license information, please see license.txt
 
 frappe.query_reports["Quoted Item Comparison"] = {
-	"filters": [
+	filters: [
 		{
-			"fieldname": "supplier_quotation",
-			"label": __("Supplier Quotation"),
-			"fieldtype": "Link",
-			"options": "Supplier Quotation",
-			"default": "",
-			"get_query": function () {
+			fieldtype: "Link",
+			label: __("Supplier Quotation"),
+			options: "Supplier Quotation",
+			fieldname: "supplier_quotation",
+			default: "",
+			get_query: () => {
 				return { filters: { "docstatus": ["<", 2] } }
 			}
 		},
 		{
-			"fieldname": "item",
-			"label": __("Item"),
-			"fieldtype": "Link",
-			"options": "Item",
-			"default": "",
-			"reqd": 1,
-			"get_query": function () {
-				var quote = frappe.query_report_filters_by_name.supplier_quotation.get_value();
+			reqd: 1,
+			default: "",
+			options: "Item",
+			label: __("Item"),
+			fieldname: "item",
+			fieldtype: "Link",
+			get_query: () => {
+				let quote = frappe.query_report_filters_by_name.supplier_quotation.get_value();
 				if (quote != "") {
 					return {
-						query: "erpnext.buying.doctype.quality_inspection.quality_inspection.item_query",
+						query: "erpnext.stock.doctype.quality_inspection.quality_inspection.item_query",
 						filters: {
 							"from": "Supplier Quotation Item",
 							"parent": quote
@@ -39,47 +39,50 @@
 			}
 		}
 	],
-	onload: function (report) {
+	onload: (report) => {
 		// Create a button for setting the default supplier
-		report.page.add_inner_button(__("Select Default Supplier"), function () {
-
-			var reporter = frappe.query_reports["Quoted Item Comparison"];
+		report.page.add_inner_button(__("Select Default Supplier"), () => {
+			let reporter = frappe.query_reports["Quoted Item Comparison"];
 
 			//Always make a new one so that the latest values get updated
 			reporter.make_default_supplier_dialog(report);
-			report.dialog.show();
-			setTimeout(function () { report.dialog.input.focus(); }, 1000);
-
 		}, 'Tools');
 
 	},
-	"make_default_supplier_dialog": function (report) {
+	make_default_supplier_dialog: (report) => {
 		// Get the name of the item to change
-		var filters = report.get_values();
-		var item_code = filters.item;
+		if(!report.data) return;
+
+		let filters = report.get_values();
+		let item_code = filters.item;
 
 		// Get a list of the suppliers (with a blank as well) for the user to select
-		var select_options = "";
-		for (let supplier of report.data) {
-			select_options += supplier.supplier_name + '\n'
-		}
+		let suppliers = $.map(report.data, (row, idx)=>{ return row.supplier_name })
 
 		// Create a dialog window for the user to pick their supplier
-		var d = new frappe.ui.Dialog({
+		let dialog = new frappe.ui.Dialog({
 			title: __('Select Default Supplier'),
 			fields: [
-				{ fieldname: 'supplier', fieldtype: 'Select', label: 'Supplier', reqd: 1, options: select_options },
-				{ fieldname: 'ok_button', fieldtype: 'Button', label: 'Set Default Supplier' },
+				{
+					reqd: 1,
+					label: 'Supplier',
+					fieldtype: 'Link',
+					options: 'Supplier',
+					fieldname: 'supplier',
+					get_query: () => {
+						return {
+							filters: {
+								'name': ['in', suppliers]
+							}
+						}
+					}
+				}
 			]
 		});
 
-		// On the user clicking the ok button
-		d.fields_dict.ok_button.input.onclick = function () {
-			var btn = d.fields_dict.ok_button.input;
-			var v = report.dialog.get_values();
-			if (v) {
-				$(btn).set_working();
-
+		dialog.set_primary_action("Set Default Supplier", () => {
+			let values = dialog.get_values();
+			if(values) {
 				// Set the default_supplier field of the appropriate Item to the selected supplier
 				frappe.call({
 					method: "frappe.client.set_value",
@@ -87,17 +90,17 @@
 						doctype: "Item",
 						name: item_code,
 						fieldname: "default_supplier",
-						value: v.supplier,
+						value: values.supplier,
 					},
-					callback: function (r) {
-						$(btn).done_working();
+					freeze: true,
+					callback: (r) => {
 						frappe.msgprint("Successfully Set Supplier");
-						report.dialog.hide();
+						dialog.hide();
 					}
 				});
 			}
-		}
-		report.dialog = d;
+		});
+		dialog.show();
 	}
 }
 
diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
index 44e247e..c399f3e 100644
--- a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
+++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
@@ -8,53 +8,55 @@
 
 def execute(filters=None):
 	qty_list = get_quantity_list(filters.item)
-	
 	data = get_quote_list(filters.item, qty_list)
-	
 	columns = get_columns(qty_list)
-	
 	return columns, data
 	
 def get_quote_list(item, qty_list):
 	out = []
-	if item:
-		price_data = []
-		suppliers = []
-		company_currency = frappe.db.get_default("currency")
-		float_precision = cint(frappe.db.get_default("float_precision")) or 2 
-		# Get the list of suppliers
-		for root in frappe.db.sql("""select parent, qty, rate from `tabSupplier Quotation Item` where item_code=%s and docstatus < 2""", item, as_dict=1):
-			for splr in frappe.db.sql("""SELECT supplier from `tabSupplier Quotation` where name =%s and docstatus < 2""", root.parent, as_dict=1):
-				ip = frappe._dict({
+	if not item:
+		return []
+
+	suppliers = []
+	price_data = []
+	company_currency = frappe.db.get_default("currency")
+	float_precision = cint(frappe.db.get_default("float_precision")) or 2 
+	# Get the list of suppliers
+	for root in frappe.db.sql("""select parent, qty, rate from `tabSupplier Quotation Item`
+		where item_code=%s and docstatus < 2""", item, as_dict=1):
+		for splr in frappe.db.sql("""select supplier from `tabSupplier Quotation`
+			where name =%s and docstatus < 2""", root.parent, as_dict=1):
+			ip = frappe._dict({
 				"supplier": splr.supplier,
 				"qty": root.qty,
 				"parent": root.parent,
-				"rate": root.rate})
-				price_data.append(ip)
-				suppliers.append(splr.supplier)
-			
-		#Add a row for each supplier
-		for root in set(suppliers):
-			supplier_currency = frappe.db.get_value("Supplier", root, "default_currency")
-			if supplier_currency:
-				exchange_rate = get_exchange_rate(supplier_currency, company_currency)
-			else:
-				exchange_rate = 1
-
-			row = frappe._dict({
-				"supplier_name": root
+				"rate": root.rate
 			})
-			for col in qty_list:
-				# Get the quantity for this row
-				for item_price in price_data:
-					if str(item_price.qty) == col.key and item_price.supplier == root:
-						row[col.key] = flt(item_price.rate * exchange_rate, float_precision)
-						row[col.key + "QUOTE"] = item_price.parent
-						break
-					else:
-						row[col.key] = ""
-						row[col.key + "QUOTE"] = ""
-			out.append(row)
+			price_data.append(ip)
+			suppliers.append(splr.supplier)
+
+	#Add a row for each supplier
+	for root in set(suppliers):
+		supplier_currency = frappe.db.get_value("Supplier", root, "default_currency")
+		if supplier_currency:
+			exchange_rate = get_exchange_rate(supplier_currency, company_currency)
+		else:
+			exchange_rate = 1
+
+		row = frappe._dict({
+			"supplier_name": root
+		})
+		for col in qty_list:
+			# Get the quantity for this row
+			for item_price in price_data:
+				if str(item_price.qty) == col.key and item_price.supplier == root:
+					row[col.key] = flt(item_price.rate * exchange_rate, float_precision)
+					row[col.key + "QUOTE"] = item_price.parent
+					break
+				else:
+					row[col.key] = ""
+					row[col.key + "QUOTE"] = ""
+		out.append(row)
 			
 	return out
 	
@@ -62,7 +64,8 @@
 	out = []
 	
 	if item:
-		qty_list = frappe.db.sql("""select distinct qty from `tabSupplier Quotation Item` where ifnull(item_code,'')=%s and docstatus < 2""", item, as_dict=1)
+		qty_list = frappe.db.sql("""select distinct qty from `tabSupplier Quotation Item`
+			where ifnull(item_code,'')=%s and docstatus < 2""", item, as_dict=1)
 		qty_list.sort(reverse=False)
 		for qt in qty_list:
 			col = frappe._dict({
@@ -98,4 +101,4 @@
 			"width": 90
 		})
 
-	return columns
+	return columns
\ No newline at end of file
