diff --git a/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py
index db32ca0..8dfed01 100644
--- a/stock/doctype/serial_no/serial_no.py
+++ b/stock/doctype/serial_no/serial_no.py
@@ -74,23 +74,16 @@
 		self.doc.item_name = item.item_name
 		self.doc.brand = item.brand
 		self.doc.warranty_period = item.warranty_period
-				
-	def set_status(self):
-		last_sle = webnotes.conn.sql("""select * from `tabStock Ledger Entry` 
-			where (serial_no like %s or serial_no like %s or serial_no=%s) 
-			and item_code=%s and ifnull(is_cancelled, 'No')='No' 
-			order by name desc limit 1""", 
-			("%%%s%%" % (self.doc.name+"\n"), "%%%s%%" % ("\n"+self.doc.name), self.doc.name, 
-				self.doc.item_code), as_dict=1)
 		
+	def set_status(self, last_sle):
 		if last_sle:
-			if last_sle[0].voucher_type == "Stock Entry":
-				document_type = webnotes.conn.get_value("Stock Entry", last_sle[0].voucher_no, 
+			if last_sle.voucher_type == "Stock Entry":
+				document_type = webnotes.conn.get_value("Stock Entry", last_sle.voucher_no, 
 					"purpose")
 			else:
-				document_type = last_sle[0].voucher_type
+				document_type = last_sle.voucher_type
 
-			if last_sle[0].actual_qty > 0:
+			if last_sle.actual_qty > 0:
 				if document_type == "Sales Return":
 					self.doc.status = "Sales Returned"
 				else:
@@ -98,59 +91,73 @@
 			else:
 				if document_type == "Purchase Return":
 					self.doc.status = "Purchase Returned"
-				elif last_sle[0].voucher_type in ("Delivery Note", "Sales Invoice"):
+				elif last_sle.voucher_type in ("Delivery Note", "Sales Invoice"):
 					self.doc.status = "Delivered"
 				else:
 					self.doc.status = "Not Available"
 		
-	def set_purchase_details(self):
-		purchase_sle = webnotes.conn.sql("""select * from `tabStock Ledger Entry` 
-			where (serial_no like %s or serial_no like %s or serial_no=%s) 
-			and item_code=%s and actual_qty > 0 
-			and ifnull(is_cancelled, 'No')='No' order by name asc limit 1""", 
-			("%%%s%%" % (self.doc.name+"\n"), "%%%s%%" % ("\n"+self.doc.name), self.doc.name, 
-				 self.doc.item_code), as_dict=1)
-
+	def set_purchase_details(self, purchase_sle):
 		if purchase_sle:
-			self.doc.purchase_document_type = purchase_sle[0].voucher_type
-			self.doc.purchase_document_no = purchase_sle[0].voucher_no
-			self.doc.purchase_date = purchase_sle[0].posting_date
-			self.doc.purchase_time = purchase_sle[0].posting_time
-			self.doc.purchase_rate = purchase_sle[0].incoming_rate
-			if purchase_sle[0].voucher_type == "Purchase Receipt":
+			self.doc.purchase_document_type = purchase_sle.voucher_type
+			self.doc.purchase_document_no = purchase_sle.voucher_no
+			self.doc.purchase_date = purchase_sle.posting_date
+			self.doc.purchase_time = purchase_sle.posting_time
+			self.doc.purchase_rate = purchase_sle.incoming_rate
+			if purchase_sle.voucher_type == "Purchase Receipt":
 				self.doc.supplier, self.doc.supplier_name = \
-					webnotes.conn.get_value("Purchase Receipt", purchase_sle[0].voucher_no, 
+					webnotes.conn.get_value("Purchase Receipt", purchase_sle.voucher_no, 
 						["supplier", "supplier_name"])
 		else:
 			for fieldname in ("purchase_document_type", "purchase_document_no", 
 				"purchase_date", "purchase_time", "purchase_rate", "supplier", "supplier_name"):
 					self.doc.fields[fieldname] = None
 				
-	def set_sales_details(self):
-		delivery_sle = webnotes.conn.sql("""select * from `tabStock Ledger Entry` 
-			where (serial_no like %s or serial_no like %s or serial_no=%s)
-			and item_code=%s and actual_qty<0 
-			and voucher_type in ('Delivery Note', 'Sales Invoice')
-			and ifnull(is_cancelled, 'No')='No' order by name desc limit 1""", 
-			("%%%s%%" % (self.doc.name+"\n"), "%%%s%%" % ("\n"+self.doc.name), self.doc.name, 
-				 self.doc.item_code), as_dict=1)
+	def set_sales_details(self, delivery_sle):
 		if delivery_sle:
-			self.doc.delivery_document_type = delivery_sle[0].voucher_type
-			self.doc.delivery_document_no = delivery_sle[0].voucher_no
-			self.doc.delivery_date = delivery_sle[0].posting_date
-			self.doc.delivery_time = delivery_sle[0].posting_time
+			self.doc.delivery_document_type = delivery_sle.voucher_type
+			self.doc.delivery_document_no = delivery_sle.voucher_no
+			self.doc.delivery_date = delivery_sle.posting_date
+			self.doc.delivery_time = delivery_sle.posting_time
 			self.doc.customer, self.doc.customer_name = \
-				webnotes.conn.get_value(delivery_sle[0].voucher_type, delivery_sle[0].voucher_no, 
+				webnotes.conn.get_value(delivery_sle.voucher_type, delivery_sle.voucher_no, 
 					["customer", "customer_name"])
 			if self.doc.warranty_period:
-				self.doc.warranty_expiry_date	= add_days(cstr(delivery_sle[0].posting_date), 
+				self.doc.warranty_expiry_date	= add_days(cstr(delivery_sle.posting_date), 
 					cint(self.doc.warranty_period))
 		else:
 			for fieldname in ("delivery_document_type", "delivery_document_no", 
 				"delivery_date", "delivery_time", "customer", "customer_name", 
 				"warranty_expiry_date"):
-					self.doc.fields[fieldname] = None		
+					self.doc.fields[fieldname] = None
+					
+	def get_last_sle(self):
+		entries = {}
 		
+		for sle in self.get_stock_ledger_entries():
+			if self.doc.name in sle.serial_no.split("\n"):
+				if not entries.get("last_sle"):
+					entries["last_sle"] = sle
+					
+				if not entries.get("purchase_sle") and sle.actual_qty > 0:
+					entries["purchase_sle"] = sle
+				elif not entries.get("delivery_sle") and sle.actual_qty < 0 \
+						and sle.voucher_type in ('Delivery Note', 'Sales Invoice'):
+					entries["delivery_sle"] = sle
+				
+				if entries.get("last_sle") and entries.get("purchase_sle") \
+						and entries.get("delivery_sle"):
+					break
+				
+		return entries
+		
+	def get_stock_ledger_entries(self):
+		return webnotes.conn.sql("""select * from `tabStock Ledger Entry` 
+			where (serial_no like %s or serial_no like %s or serial_no like %s or serial_no=%s)
+			and item_code=%s and ifnull(is_cancelled, 'No')='No' 
+			order by name desc""", 
+			("%s%%" % (self.doc.name+"\n"), "%%%s%%" % ("\n"+self.doc.name+"\n"), 
+				"%%%s" % ("\n"+self.doc.name), self.doc.name, self.doc.item_code), as_dict=1)		
+	
 	def on_trash(self):
 		if self.doc.status == 'Delivered':
 			webnotes.throw(_("Delivered Serial No ") + self.doc.name + _(" can not be deleted"))
@@ -177,9 +184,10 @@
 	
 	def on_stock_ledger_entry(self):
 		if self.via_stock_ledger and not self.doc.fields.get("__islocal"):
-			self.set_status()
-			self.set_purchase_details()
-			self.set_sales_details()
+			last_sle = self.get_last_sle()
+			self.set_status(last_sle.get("last_sle"))
+			self.set_purchase_details(last_sle.get("purchase_sle"))
+			self.set_sales_details(last_sle.get("delivery_sle"))
 
 def process_serial_no(sle):
 	item_det = get_item_details(sle.item_code)
@@ -227,12 +235,12 @@
 					# transfer out
 					webnotes.throw(_("Serial No must exist to transfer out.") + \
 						": " + serial_no, SerialNoNotExistsError)
-		elif not item_det.serial_no_series:
+		elif sle.actual_qty < 0 or not item_det.serial_no_series:
 			webnotes.throw(_("Serial Number Required for Serialized Item" + ": " 
 				+ sle.item_code), SerialNoRequiredError)
 				
 def update_serial_nos(sle, item_det):
-	if not sle.serial_no and sle.actual_qty > 0 and item_det.serial_no_series:
+	if sle.is_cancelled == "No" and not sle.serial_no and sle.actual_qty > 0 and item_det.serial_no_series:
 		from webnotes.model.doc import make_autoname
 		serial_nos = []
 		for i in xrange(cint(sle.actual_qty)):
