diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 19fda8e..9fa972d 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -113,9 +113,8 @@
 		if not hasattr(self, "account_map"):
 			self.account_map = dict(((r.name, r) for r in webnotes.conn.sql("""select 
 				acc.name, cust.name as customer, cust.customer_name, cust.territory
-				from `tabAccount` acc, `tabCustomer` cust 
-				where acc.master_type="Customer" 
-				and cust.name=acc.master_name""", as_dict=True)))
+				from `tabAccount` acc left join `tabCustomer` cust 
+				on cust.name=acc.master_name where acc.master_type="Customer" """, as_dict=True)))
 				
 		return self.account_map
 		
@@ -134,7 +133,6 @@
 			self.gl_entries = webnotes.conn.sql("""select * from `tabGL Entry`
 				where docstatus < 2 {0} order by posting_date, account""".format(conditions),
 				values, as_dict=True)
-				
 		return self.gl_entries
 		
 	def prepare_conditions(self):
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 941c2ae..495284a 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -355,20 +355,23 @@
 		and fiscal_year='%(fiscal_year)s' and company='%(company)s' %(condition)s
 	""" % (args))[0][0]
 	
-def rename_account_for(dt, olddn, newdn, merge):
+def rename_account_for(dt, olddn, newdn, merge, company):
 	old_account = get_account_for(dt, olddn)
 	if old_account:
 		new_account = None
 		if not merge:
-			if old_account == olddn:
-				new_account = webnotes.rename_doc("Account", olddn, newdn)
+			if old_account == add_abbr_if_missing(olddn, company):
+				new_account = webnotes.rename_doc("Account", old_account, newdn)
 		else:
 			existing_new_account = get_account_for(dt, newdn)
 			new_account = webnotes.rename_doc("Account", old_account, 
 				existing_new_account or newdn, merge=True if existing_new_account else False)
 
-		if new_account:
-			webnotes.conn.set_value("Account", new_account, "master_name", newdn)
+		webnotes.conn.set_value("Account", new_account or old_account, "master_name", newdn)
+		
+def add_abbr_if_missing(dn, company):
+	from setup.doctype.company.company import get_name_with_abbr
+	return get_name_with_abbr(dn, company)
 			
 def get_account_for(account_for_doctype, account_for):
 	if account_for_doctype in ["Customer", "Supplier"]:
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/erpnext/buying/doctype/purchase_common/purchase_common.py
index d967b24..2ec67fd 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.py
@@ -93,7 +93,7 @@
 			if not item:
 				webnotes.throw("Item %s does not exist in Item Master." % cstr(d.item_code))
 			
-			from erpnext.stock.utils import validate_end_of_life
+			from erpnext.stock.doctype.item.item import validate_end_of_life
 			validate_end_of_life(d.item_code, item[0][3])
 			
 			# validate stock item
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index 9fe52c8..94a16f5 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -92,7 +92,7 @@
 		
 	def before_rename(self, olddn, newdn, merge=False):
 		from erpnext.accounts.utils import rename_account_for
-		rename_account_for("Supplier", olddn, newdn, merge)
+		rename_account_for("Supplier", olddn, newdn, merge, self.doc.company)
 
 	def after_rename(self, olddn, newdn, merge=False):
 		set_field = ''
@@ -126,5 +126,4 @@
 	out["total_billing"] = billing[0][0]
 	out["total_unpaid"] = billing[0][1]
 	
-	return out
-	
\ No newline at end of file
+	return out
\ No newline at end of file
diff --git a/patches/1401/fix_planned_qty.py b/erpnext/patches/1401/fix_planned_qty.py
similarity index 100%
rename from patches/1401/fix_planned_qty.py
rename to erpnext/patches/1401/fix_planned_qty.py
diff --git a/patches/1401/fix_serial_no_status_and_warehouse.py b/erpnext/patches/1401/fix_serial_no_status_and_warehouse.py
similarity index 100%
rename from patches/1401/fix_serial_no_status_and_warehouse.py
rename to erpnext/patches/1401/fix_serial_no_status_and_warehouse.py
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index f51cd55..df17689 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -3,15 +3,12 @@
 
 from __future__ import unicode_literals
 import webnotes
-from webnotes.utils import cstr
 from webnotes.model.doc import Document, make_autoname
 from webnotes import msgprint, _
 import webnotes.defaults
 
 
 from erpnext.utilities.transaction_base import TransactionBase
-from erpnext.utilities.doctype.address.address import get_address_display
-from erpnext.utilities.doctype.contact.contact import get_contact_details
 from erpnext.accounts.party import create_party_account
 
 class DocType(TransactionBase):
@@ -128,7 +125,7 @@
 			
 	def before_rename(self, olddn, newdn, merge=False):
 		from erpnext.accounts.utils import rename_account_for
-		rename_account_for("Customer", olddn, newdn, merge)
+		rename_account_for("Customer", olddn, newdn, merge, self.doc.company)
 
 	def after_rename(self, olddn, newdn, merge=False):
 		set_field = ''
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 16938b4..dcb6c0f 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -260,3 +260,47 @@
 		webnotes.conn.set_default("allow_negative_stock", 
 			webnotes.conn.get_value("Stock Settings", None, "allow_negative_stock"))
 		webnotes.conn.auto_commit_on_many_writes = 0
+
+def validate_end_of_life(item_code, end_of_life=None, verbose=1):
+	if not end_of_life:
+		end_of_life = webnotes.conn.get_value("Item", item_code, "end_of_life")
+	
+	from webnotes.utils import getdate, now_datetime, formatdate
+	if end_of_life and getdate(end_of_life) <= now_datetime().date():
+		msg = (_("Item") + " %(item_code)s: " + _("reached its end of life on") + \
+			" %(date)s. " + _("Please check") + ": %(end_of_life_label)s " + \
+			"in Item master") % {
+				"item_code": item_code,
+				"date": formatdate(end_of_life),
+				"end_of_life_label": webnotes.get_doctype("Item").get_label("end_of_life")
+			}
+		
+		_msgprint(msg, verbose)
+		
+def validate_is_stock_item(item_code, is_stock_item=None, verbose=1):
+	if not is_stock_item:
+		is_stock_item = webnotes.conn.get_value("Item", item_code, "is_stock_item")
+		
+	if is_stock_item != "Yes":
+		msg = (_("Item") + " %(item_code)s: " + _("is not a Stock Item")) % {
+			"item_code": item_code,
+		}
+		
+		_msgprint(msg, verbose)
+		
+def validate_cancelled_item(item_code, docstatus=None, verbose=1):
+	if docstatus is None:
+		docstatus = webnotes.conn.get_value("Item", item_code, "docstatus")
+	
+	if docstatus == 2:
+		msg = (_("Item") + " %(item_code)s: " + _("is a cancelled Item")) % {
+			"item_code": item_code,
+		}
+		
+		_msgprint(msg, verbose)
+
+def _msgprint(msg, verbose):
+	if verbose:
+		msgprint(msg, raise_exception=True)
+	else:
+		raise webnotes.ValidationError, msg
\ No newline at end of file
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index f219aa0..f61bd40 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -90,8 +90,8 @@
 			raise webnotes.ValidationError
 						
 	def validate_item(self, item_code, row_num):
-		from erpnext.stock.utils import validate_end_of_life, validate_is_stock_item, \
-			validate_cancelled_item
+		from erpnext.stock.doctype.item.item import validate_end_of_life, \
+			validate_is_stock_item, validate_cancelled_item
 		
 		# using try except to catch all validation msgs and display together
 		
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 0f2d138..68dea05 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -106,7 +106,7 @@
 			webnotes.conn.sql("delete from `tabBin` where warehouse=%s", olddn)
 			
 		from erpnext.accounts.utils import rename_account_for
-		rename_account_for("Warehouse", olddn, new_warehouse, merge)
+		rename_account_for("Warehouse", olddn, newdn, merge, self.doc.company)
 
 		return new_warehouse
 
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 69a024b..f203023 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -63,50 +63,6 @@
 		msgprint("[Stock Update] Ignored %s since it is not a stock item" 
 			% args.get("item_code"))
 
-def validate_end_of_life(item_code, end_of_life=None, verbose=1):
-	if not end_of_life:
-		end_of_life = webnotes.conn.get_value("Item", item_code, "end_of_life")
-	
-	from webnotes.utils import getdate, now_datetime, formatdate
-	if end_of_life and getdate(end_of_life) <= now_datetime().date():
-		msg = (_("Item") + " %(item_code)s: " + _("reached its end of life on") + \
-			" %(date)s. " + _("Please check") + ": %(end_of_life_label)s " + \
-			"in Item master") % {
-				"item_code": item_code,
-				"date": formatdate(end_of_life),
-				"end_of_life_label": webnotes.get_doctype("Item").get_label("end_of_life")
-			}
-		
-		_msgprint(msg, verbose)
-			
-def validate_is_stock_item(item_code, is_stock_item=None, verbose=1):
-	if not is_stock_item:
-		is_stock_item = webnotes.conn.get_value("Item", item_code, "is_stock_item")
-		
-	if is_stock_item != "Yes":
-		msg = (_("Item") + " %(item_code)s: " + _("is not a Stock Item")) % {
-			"item_code": item_code,
-		}
-		
-		_msgprint(msg, verbose)
-		
-def validate_cancelled_item(item_code, docstatus=None, verbose=1):
-	if docstatus is None:
-		docstatus = webnotes.conn.get_value("Item", item_code, "docstatus")
-	
-	if docstatus == 2:
-		msg = (_("Item") + " %(item_code)s: " + _("is a cancelled Item")) % {
-			"item_code": item_code,
-		}
-		
-		_msgprint(msg, verbose)
-
-def _msgprint(msg, verbose):
-	if verbose:
-		msgprint(msg, raise_exception=True)
-	else:
-		raise webnotes.ValidationError, msg
-
 def get_incoming_rate(args):
 	"""Get Incoming Rate based on valuation method"""
 	from erpnext.stock.stock_ledger import get_previous_sle
diff --git a/erpnext/utilities/doctype/sms_control/sms_control.py b/erpnext/utilities/doctype/sms_control/sms_control.py
index 41ff2a1..5c08a41 100644
--- a/erpnext/utilities/doctype/sms_control/sms_control.py
+++ b/erpnext/utilities/doctype/sms_control/sms_control.py
@@ -8,7 +8,7 @@
 from webnotes.model.code import get_obj
 from webnotes.model.doc import Document
 from webnotes import msgprint, throw, _
-from webnotes.model.bean import getlist, copy_doclist
+from webnotes.model.bean import getlist
 
 class DocType:
 	def __init__(self, doc, doclist=[]):
@@ -55,7 +55,7 @@
 	def send_form_sms(self, arg):
 		"called from client side"
 		args = json.loads(arg)
-		self.send_sms([str(args['number'])], str(args['message']))
+		self.send_sms([cstr(args['number'])], cstr(args['message']))
 
 	def send_sms(self, receiver_list, msg, sender_name = ''):
 		receiver_list = self.validate_receiver_nos(receiver_list)
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 098a4bd..83a3857 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -201,14 +201,6 @@
 				"from_currency": currency,
 				"to_currency": company_currency
 		}, raise_exception=True)
-			
-def validate_item_fetch(args, item):
-	from erpnext.stock.utils import validate_end_of_life
-	validate_end_of_life(item.name, item.end_of_life)
-	
-	# validate company
-	if not args.company:
-		msgprint(_("Please specify Company"), raise_exception=True)
 	
 def validate_currency(args, item, meta=None):
 	from webnotes.model.meta import get_field_precision
