Merge branch 'responsive' of git://github.com/webnotes/erpnext into responsive
diff --git a/accounts/doctype/account/account.py b/accounts/doctype/account/account.py
index 2d49f0d..98808f4 100644
--- a/accounts/doctype/account/account.py
+++ b/accounts/doctype/account/account.py
@@ -18,7 +18,7 @@
 import webnotes
 
 from webnotes.utils import flt, fmt_money
-from webnotes import msgprint
+from webnotes import msgprint, _
 
 sql = webnotes.conn.sql
 get_value = webnotes.conn.get_value
@@ -196,10 +196,23 @@
 
 		if parts[-1].lower() != company_abbr.lower():
 			parts.append(company_abbr)
-
+		
 		# rename account name
-		account_name = " - ".join(parts[:-1])
-		sql("update `tabAccount` set account_name = %s where name = %s", (account_name, old))
+		new_account_name = " - ".join(parts[:-1])
+		sql("update `tabAccount` set account_name = %s where name = %s", (new_account_name, old))
+		
+		if merge:
+			new_name = " - ".join(parts)
+			val = list(webnotes.conn.get_value("Account", new_name, 
+				["group_or_ledger", "debit_or_credit", "is_pl_account"]))
+			
+			if val != [self.doc.group_or_ledger, self.doc.debit_or_credit, self.doc.is_pl_account]:
+				msgprint(_("""Merging is only possible if following \
+					properties are same in both records.
+					Group or Ledger, Debit or Credit, Is PL Account"""), raise_exception=1)
+
+			from webnotes.utils.nestedset import rebuild_tree
+			rebuild_tree("Account", "parent_account")
 
 		return " - ".join(parts)
 
diff --git a/accounts/doctype/cost_center/cost_center.py b/accounts/doctype/cost_center/cost_center.py
index e405b4d..8be14c7 100644
--- a/accounts/doctype/cost_center/cost_center.py
+++ b/accounts/doctype/cost_center/cost_center.py
@@ -98,5 +98,7 @@
 		cost_center_name = " - ".join(parts[:-1])
 		webnotes.conn.sql("update `tabCost Center` set cost_center_name = %s where name = %s", \
 			(cost_center_name, old))
+			
+		super(DocType, self).on_rename(new, old, merge, "group_or_ledger")
 
 		return " - ".join(parts)	
diff --git a/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py
index c481edf..a4af7f8 100644
--- a/setup/doctype/setup_control/setup_control.py
+++ b/setup/doctype/setup_control/setup_control.py
@@ -251,7 +251,7 @@
 	country = webnotes.conn.get_value("Control Panel", None, "country")
 	root_territory = get_root_of("Territory")
 	for name in (country, "Rest Of The World"):
-		if not webnotes.conn.exists("Territory", name):
+		if name and not webnotes.conn.exists("Territory", name):
 			webnotes.bean({
 				"doctype": "Territory",
 				"territory_name": name,
diff --git a/setup/utils.py b/setup/utils.py
index 04c4527..c343ed1 100644
--- a/setup/utils.py
+++ b/setup/utils.py
@@ -32,14 +32,15 @@
 def get_root_of(doctype):
 	"""Get root element of a DocType with a tree structure"""
 	result = webnotes.conn.sql_list("""select name from `tab%s` 
-		where lft=1 and rgt=(select max(rgt) from `tab%s`)""" % (doctype, doctype))
+		where lft=1 and rgt=(select max(rgt) from `tab%s` where docstatus < 2)""" % 
+		(doctype, doctype))
 	return result[0] if result else None
 	
 def get_ancestors_of(doctype, name):
 	"""Get ancestor elements of a DocType with a tree structure"""
 	lft, rgt = webnotes.conn.get_value(doctype, name, ["lft", "rgt"])
 	result = webnotes.conn.sql_list("""select name from `tab%s` 
-		where lft<%s and rgt>%s""" % (doctype, "%s", "%s"), (lft, rgt))
+		where lft<%s and rgt>%s and docstatus < 2""" % (doctype, "%s", "%s"), (lft, rgt))
 	return result or None
 
 @webnotes.whitelist()
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index 295bff3..cd1f37c 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -287,8 +287,14 @@
 			from webnotes.webutils import clear_cache
 			clear_cache(self.doc.page_name)
 
-	def on_rename(self,newdn,olddn, merge=False):
+	def on_rename(self, newdn, olddn, merge=False):
 		webnotes.conn.sql("update tabItem set item_code = %s where name = %s", (newdn, olddn))
 		if self.doc.page_name:
 			from webnotes.webutils import clear_cache
-			clear_cache(self.doc.page_name)
\ No newline at end of file
+			clear_cache(self.doc.page_name)
+			
+		if merge:
+			from stock.stock_ledger import update_entries_after
+			for wh in webnotes.conn.sql("""select warehouse from `tabBin` 
+				where item_code=%s""", newdn):
+					update_entries_after({"item_code": newdn, "warehouse": wh})
diff --git a/stock/doctype/warehouse/warehouse.py b/stock/doctype/warehouse/warehouse.py
index 758bd31..7eb407c 100644
--- a/stock/doctype/warehouse/warehouse.py
+++ b/stock/doctype/warehouse/warehouse.py
@@ -204,3 +204,9 @@
 		else:
 			sql("delete from `tabStock Ledger Entry` where warehouse = %s", self.doc.name)
 
+	def on_rename(self, newdn, olddn, merge=False):
+		if merge:
+			from stock.stock_ledger import update_entries_after
+			for item_code in webnotes.conn.sql("""select item_code from `tabBin` 
+				where warehouse=%s""", newdn):
+					update_entries_after({"item_code": item_code, "warehouse": newdn})