diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 00ae0e0..6d09045 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -17,10 +17,9 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import cstr, cint, flt, getdate, now, comma_or
-from webnotes.model import db_exists, delete_doc
+from webnotes.utils import cstr, cint, flt, comma_or
 from webnotes.model.doc import Document, addchild
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.model.wrapper import getlist
 from webnotes.model.code import get_obj
 from webnotes import msgprint, _
 from stock.utils import get_incoming_rate
@@ -51,6 +50,7 @@
 		self.validate_incoming_rate()
 		self.validate_bom()
 		self.validate_finished_goods()
+		self.validate_return_reference_doc()
 		
 	def on_submit(self):
 		self.update_serial_no(1)
@@ -85,6 +85,15 @@
 		validate_for_manufacture_repack = any([d.bom_no for d in self.doclist.get(
 			{"parentfield": "mtn_details"})])
 
+		if self.doc.purpose in source_mandatory and self.doc.purpose not in target_mandatory:
+			self.doc.to_warehouse = None
+			for d in getlist(self.doclist, 'mtn_details'):
+				d.t_warehouse = None
+		elif self.doc.purpose in target_mandatory and self.doc.purpose not in source_mandatory:
+			self.doc.from_warehouse = None
+			for d in getlist(self.doclist, 'mtn_details'):
+				d.s_warehouse = None
+
 		for d in getlist(self.doclist, 'mtn_details'):
 			if not d.s_warehouse and not d.t_warehouse:
 				d.s_warehouse = self.doc.from_warehouse
@@ -93,21 +102,13 @@
 			if not (d.s_warehouse or d.t_warehouse):
 				msgprint(_("Atleast one warehouse is mandatory"), raise_exception=1)
 			
-			if self.doc.purpose in source_mandatory:
-				if not d.s_warehouse:
-					msgprint(_("Row # ") + "%s: " % cint(d.idx)
-						+ _("Source Warehouse") + _(" is mandatory"), raise_exception=1)
-
-				if self.doc.purpose not in target_mandatory:
-					d.t_warehouse = None
+			if self.doc.purpose in source_mandatory and not d.s_warehouse:
+				msgprint(_("Row # ") + "%s: " % cint(d.idx)
+					+ _("Source Warehouse") + _(" is mandatory"), raise_exception=1)
 				
-			if self.doc.purpose in target_mandatory:
-				if not d.t_warehouse:
-					msgprint(_("Row # ") + "%s: " % cint(d.idx)
-						+ _("Target Warehouse") + _(" is mandatory"), raise_exception=1)
-						
-				if self.doc.purpose not in source_mandatory:
-					d.s_warehouse = None
+			if self.doc.purpose in target_mandatory and not d.t_warehouse:
+				msgprint(_("Row # ") + "%s: " % cint(d.idx)
+					+ _("Target Warehouse") + _(" is mandatory"), raise_exception=1)
 
 			if self.doc.purpose == "Manufacture/Repack":
 				if validate_for_manufacture_repack:
@@ -225,7 +226,28 @@
 					+ _("Quantity should be equal to Manufacturing Quantity. ")
 					+ _("To fetch items again, click on 'Get Items' button \
 						or update the Quantity manually."), raise_exception=1)
+						
+	def validate_return_reference_doc(self):
+		""" validate item with reference doc"""
+		ref_doctype = ref_docname = ""
+		if self.doc.purpose == "Sales Return" and \
+				(self.doc.delivery_note_no or self.doc.sales_invoice_no):
+			ref_doctype = self.doc.delivery_note_no and "Delivery Note" or "Sales Invoice"
+			ref_docname = self.doc.delivery_note_no or self.doc.sales_invoice_no
+		elif self.doc.purpose == "Purchase Return" and self.doc.purchase_receipt_no:
+			ref_doctype = "Purchase Receipt"
+			ref_docname = self.doc.purchase_receipt_no
+			
+		if ref_doctype and ref_docname:
+			for item in self.doclist.get({"parentfield": "mtn_details"}):
+				ref_exists = webnotes.conn.sql("""select name from `tab%s` 
+					where parent = %s and item_code = %s and docstatus=1""" % 
+					(ref_doctype + " Item", '%s', '%s'), (ref_docname, item.item_code))
 					
+				if not ref_exists:
+					msgprint(_("Item: '") + item.item_code + _("' does not exists in ") +
+						ref_doctype + ": " + ref_docname, raise_exception=1)
+			
 	def update_serial_no(self, is_submit):
 		"""Create / Update Serial No"""
 		from stock.utils import get_valid_serial_nos
