diff --git a/buying/doctype/quality_inspection/quality_inspection.js b/buying/doctype/quality_inspection/quality_inspection.js
index 8c7c932..f3517b4 100644
--- a/buying/doctype/quality_inspection/quality_inspection.js
+++ b/buying/doctype/quality_inspection/quality_inspection.js
@@ -1,11 +1,6 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 // License: GNU General Public License v3. See license.txt
 
-cur_frm.cscript.item_code = function(doc, cdt, cdn) {
-	if (doc.item_code)
-		return get_server_fields('get_purchase_receipt_item_details','','',doc,cdt,cdn,1);
-}
-
 cur_frm.cscript.inspection_type = function(doc, cdt, cdn) {
 	if(doc.inspection_type == 'Incoming'){
 		doc.delivery_note_no = '';
@@ -30,13 +25,22 @@
 
 // item code based on GRN/DN
 cur_frm.fields_dict['item_code'].get_query = function(doc, cdt, cdn) {
-	var filter = {};
-	if (doc.purchase_receipt_no) filter['parent'] = doc.purchase_receipt_no;
-		
-	else if (doc.delivery_note_no) filter['parent'] =  doc.delivery_note_no;
-
-	return{
-		filters: filter
+	if (doc.purchase_receipt_no) {
+		return {
+			query: "buying.doctype.quality_inspection.quality_inspection.item_query",
+			filters: {
+				"from": "Purchase Receipt Item",
+				"parent": doc.purchase_receipt_no
+			}
+		}
+	} else if (doc.delivery_note_no) {
+		return {
+			query: "buying.doctype.quality_inspection.quality_inspection.item_query",
+			filters: {
+				"from": "Delivery Note Item",
+				"parent": doc.delivery_note_no
+			}
+		}
 	}
 }
 
diff --git a/buying/doctype/quality_inspection/quality_inspection.py b/buying/doctype/quality_inspection/quality_inspection.py
index 19b2d2a..3380bd6 100644
--- a/buying/doctype/quality_inspection/quality_inspection.py
+++ b/buying/doctype/quality_inspection/quality_inspection.py
@@ -33,3 +33,17 @@
 			webnotes.conn.sql("update `tabPurchase Receipt Item` t1, `tabPurchase Receipt` t2 set t1.qa_no = '', t2.modified = '%s' \
 				where t1.parent = '%s' and t1.item_code = '%s' and t1.parent = t2.name" \
 				% (self.doc.modified, self.doc.purchase_receipt_no, self.doc.item_code))
+
+
+def item_query(doctype, txt, searchfield, start, page_len, filters):
+	if filters.get("from"):
+		from webnotes.widgets.reportview import get_match_cond
+		filters.update({
+			"txt": txt,
+			"mcond": get_match_cond(filters["from"], searchfield),
+			"start": start,
+			"page_len": page_len
+		})
+		return webnotes.conn.sql("""select item_code from `tab%(from)s` 
+			where parent='%(parent)s' and docstatus < 2 and item_code like '%%%(txt)s%%' %(mcond)s
+			order by item_code limit %(start)s, %(page_len)s""" % filters)
\ No newline at end of file
