diff --git a/stock/doctype/delivery_note/test_delivery_note.py b/stock/doctype/delivery_note/test_delivery_note.py
index 7c52550..ca95a50 100644
--- a/stock/doctype/delivery_note/test_delivery_note.py
+++ b/stock/doctype/delivery_note/test_delivery_note.py
@@ -160,7 +160,7 @@
 		
 	def test_serialized(self):
 		from stock.doctype.stock_entry.test_stock_entry import make_serialized_item
-		from stock.doctype.stock_ledger_entry.stock_ledger_entry import get_serial_nos
+		from stock.doctype.serial_no.serial_no import get_serial_nos
 		
 		se = make_serialized_item()
 		serial_nos = get_serial_nos(se.doclist[1].serial_no)
@@ -180,7 +180,7 @@
 		return dn
 			
 	def test_serialized_cancel(self):
-		from stock.doctype.stock_ledger_entry.stock_ledger_entry import get_serial_nos
+		from stock.doctype.serial_no.serial_no import get_serial_nos
 		dn = self.test_serialized()
 		dn.cancel()
 
@@ -192,7 +192,7 @@
 			"delivery_document_no"))
 
 	def test_serialize_status(self):
-		from stock.doctype.stock_ledger_entry.stock_ledger_entry import SerialNoStatusError, get_serial_nos
+		from stock.doctype.serial_no.serial_no import SerialNoStatusError, get_serial_nos
 		from stock.doctype.stock_entry.test_stock_entry import make_serialized_item
 		
 		se = make_serialized_item()
diff --git a/stock/doctype/material_request/test_material_request.py b/stock/doctype/material_request/test_material_request.py
index 8ebad15..13fdd02 100644
--- a/stock/doctype/material_request/test_material_request.py
+++ b/stock/doctype/material_request/test_material_request.py
@@ -315,10 +315,10 @@
 		self.assertRaises(webnotes.MappingMismatchError, se.insert)
 		
 	def test_warehouse_company_validation(self):
-		from controllers.buying_controller import WrongWarehouseCompany
+		from stock.utils import InvalidWarehouseCompany
 		mr = webnotes.bean(copy=test_records[0])
 		mr.doc.company = "_Test Company 1"
-		self.assertRaises(WrongWarehouseCompany, mr.insert)
+		self.assertRaises(InvalidWarehouseCompany, mr.insert)
 
 test_dependencies = ["Currency Exchange"]
 test_records = [
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 2dd450f..537d75d 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -242,7 +242,7 @@
 		self.update_stock()
 
 		from stock.doctype.serial_no.serial_no import update_serial_nos_after_submit
-		update_serial_nos_after_submit(self, "Purchase Receipt", "purchase_receipt_details")
+		update_serial_nos_after_submit(self, "purchase_receipt_details")
 
 		purchase_controller.update_last_purchase_rate(self, 1)
 		
diff --git a/stock/doctype/purchase_receipt/test_purchase_receipt.py b/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 010c29b..613dfbc 100644
--- a/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -104,6 +104,7 @@
 		pr.doclist[1].received_qty = 1
 		pr.insert()
 		pr.submit()
+		
 		self.assertEquals(webnotes.conn.get_value("Serial No", pr.doclist[1].serial_no, 
 			"supplier"), pr.doc.supplier)
 			
@@ -112,7 +113,7 @@
 	def test_serial_no_cancel(self):
 		pr = self.test_serial_no_supplier()
 		pr.cancel()
-
+		
 		self.assertFalse(webnotes.conn.get_value("Serial No", pr.doclist[1].serial_no, 
 			"warehouse"))
 			
diff --git a/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py
index 93836d6..61b2841 100644
--- a/stock/doctype/serial_no/serial_no.py
+++ b/stock/doctype/serial_no/serial_no.py
@@ -37,11 +37,8 @@
 		self.validate_warehouse()
 		self.validate_item()
 		
-		if self.via_stock_ledger:
-			self.set_status()
-			self.set_purchase_details()
-			self.set_sales_details()
-
+		self.on_stock_ledger_entry()
+		
 	def validate_amc_status(self):
 		"""
 			validate amc status
@@ -118,7 +115,7 @@
 			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)
-
+		
 		if purchase_sle:
 			self.doc.purchase_document_type = purchase_sle[0].voucher_type
 			self.doc.purchase_document_no = purchase_sle[0].voucher_no
@@ -181,6 +178,12 @@
 				webnotes.conn.sql("""update `tab%s` set serial_no = %s 
 					where name=%s""" % (dt[0], '%s', '%s'),
 					('\n'.join(serial_nos), item[0]))
+					
+	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()
 
 def process_serial_no(sle):
 	item_det = get_item_details(sle.item_code)
@@ -233,6 +236,14 @@
 				+ 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:
+		from webnotes.model.doc import make_autoname
+		serial_nos = []
+		for i in xrange(cint(sle.actual_qty)):
+			serial_nos.append(make_autoname(item_det.serial_no_series))
+		
+		webnotes.conn.set(sle, "serial_no", "\n".join(serial_nos))
+	
 	if sle.serial_no:
 		serial_nos = get_serial_nos(sle.serial_no)
 		for serial_no in serial_nos:
@@ -243,12 +254,6 @@
 				sr.save()
 			elif sle.actual_qty > 0:
 				make_serial_no(serial_no, sle)
-	elif 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)):
-			serial_nos.append(make_serial_no(make_autoname(item_det.serial_no_series), sle))
-		sle.serial_no = "\n".join(serial_nos)
 
 def get_item_details(item_code):
 	return webnotes.conn.sql("""select name, has_batch_no, docstatus, 
@@ -270,13 +275,16 @@
 	webnotes.msgprint(_("Serial No created") + ": " + sr.doc.name)
 	return sr.doc.name
 	
-def update_serial_nos_after_submit(controller, parenttype, parentfield):
-	if not hasattr(webnotes, "new_stock_ledger_entries"):
-		return
+def update_serial_nos_after_submit(controller, parentfield):
+	stock_ledger_entries = webnotes.conn.sql("""select voucher_detail_no, serial_no
+		from `tabStock Ledger Entry` where voucher_type=%s and voucher_no=%s""", 
+		(controller.doc.doctype, controller.doc.name), as_dict=True)
 		
+	if not stock_ledger_entries: return
+	
 	for d in controller.doclist.get({"parentfield": parentfield}):
 		serial_no = None
-		for sle in webnotes.new_stock_ledger_entries:
+		for sle in stock_ledger_entries:
 			if sle.voucher_detail_no==d.name:
 				serial_no = sle.serial_no
 				break
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 0117864..63cfd2b 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -53,7 +53,7 @@
 		self.update_stock_ledger()
 
 		from stock.doctype.serial_no.serial_no import update_serial_nos_after_submit
-		update_serial_nos_after_submit(self, "Stock Entry", "mtn_details")
+		update_serial_nos_after_submit(self, "mtn_details")
 		
 		self.update_production_order(1)
 		self.make_gl_entries()
diff --git a/stock/doctype/stock_entry/test_stock_entry.py b/stock/doctype/stock_entry/test_stock_entry.py
index b41a626..f01a83b 100644
--- a/stock/doctype/stock_entry/test_stock_entry.py
+++ b/stock/doctype/stock_entry/test_stock_entry.py
@@ -44,9 +44,10 @@
 
 	def test_warehouse_company_validation(self):
 		self._clear_stock_account_balance()
-		webnotes.session.user = "test2@example.com"
 		webnotes.bean("Profile", "test2@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
+			
+		webnotes.session.user = "test2@example.com"
 
 		from stock.utils import InvalidWarehouseCompany
 		st1 = webnotes.bean(copy=test_records[0])
@@ -59,13 +60,13 @@
 	def test_warehouse_user(self):
 		from stock.utils import UserNotAllowedForWarehouse
 
-		webnotes.session.user = "test@example.com"
 		webnotes.bean("Profile", "test@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
 
 		webnotes.bean("Profile", "test2@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
-
+			
+		webnotes.session.user = "test@example.com"
 		st1 = webnotes.bean(copy=test_records[0])
 		st1.doc.company = "_Test Company 1"
 		st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1"
diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 8fef889..c7703ed 100644
--- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -14,10 +14,6 @@
 
 	def validate(self):
 		from stock.utils import validate_warehouse_user, validate_warehouse_company
-		if not hasattr(webnotes, "new_stock_ledger_entries"):
-			webnotes.new_stock_ledger_entries = []
-			
-		webnotes.new_stock_ledger_entries.append(self.doc)
 		self.validate_mandatory()
 		self.validate_item()
 		validate_warehouse_user(self.doc.warehouse)
@@ -52,7 +48,7 @@
 					<b>%(item_code)s</b> at Warehouse <b>%(warehouse)s</b> \
 					as on %(posting_date)s %(posting_time)s""" % self.doc.fields)
 
-				sself.doc.fields.pop('batch_bal')
+				self.doc.fields.pop('batch_bal')
 
 	def validate_mandatory(self):
 		mandatory = ['warehouse','posting_date','voucher_type','voucher_no','actual_qty','company']
diff --git a/stock/utils.py b/stock/utils.py
index 1f50164..95b9bff 100644
--- a/stock/utils.py
+++ b/stock/utils.py
@@ -252,10 +252,10 @@
 
 def reorder_item():
 	""" Reorder item if stock reaches reorder level"""
-	if not hasattr(webnotes, "auto_indent"):
-		webnotes.auto_indent = cint(webnotes.conn.get_value('Stock Settings', None, 'auto_indent'))
+	if getattr(webnotes.local, "auto_indent", None) is None:
+		webnotes.local.auto_indent = cint(webnotes.conn.get_value('Stock Settings', None, 'auto_indent'))
 	
-	if webnotes.auto_indent:
+	if webnotes.local.auto_indent:
 		material_requests = {}
 		bin_list = webnotes.conn.sql("""select item_code, warehouse, projected_qty
 			from tabBin where ifnull(item_code, '') != '' and ifnull(warehouse, '') != ''
@@ -340,18 +340,18 @@
 				mr_list.append(mr_bean)
 
 			except:
-				if webnotes.message_log:
-					exceptions_list.append([] + webnotes.message_log)
-					webnotes.message_log = []
+				if webnotes.local.message_log:
+					exceptions_list.append([] + webnotes.local.message_log)
+					webnotes.local.message_log = []
 				else:
 					exceptions_list.append(webnotes.getTraceback())
 
 	if mr_list:
-		if not hasattr(webnotes, "reorder_email_notify"):
-			webnotes.reorder_email_notify = cint(webnotes.conn.get_value('Stock Settings', None, 
+		if getattr(webnotes.local, "reorder_email_notify", None) is None:
+			webnotes.local.reorder_email_notify = cint(webnotes.conn.get_value('Stock Settings', None, 
 				'reorder_email_notify'))
 			
-		if(webnotes.reorder_email_notify):
+		if(webnotes.local.reorder_email_notify):
 			send_email_notification(mr_list)
 
 	if exceptions_list:
