[fixed conflict]
diff --git a/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt b/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
deleted file mode 100644
index 8c11d50..0000000
--- a/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-[
- {
-  "creation": "2010-08-08 17:09:35", 
-  "docstatus": 0, 
-  "modified": "2013-07-03 18:00:40", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "name": "__common__", 
-  "parent": "Purchase Order-Purchase Invoice", 
-  "parentfield": "table_mapper_details", 
-  "parenttype": "DocType Mapper"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "name": "__common__", 
-  "parent": "Purchase Order-Purchase Invoice", 
-  "parentfield": "field_mapper_details", 
-  "parenttype": "DocType Mapper"
- }, 
- {
-  "doctype": "DocType Mapper", 
-  "from_doctype": "Purchase Order", 
-  "module": "Accounts", 
-  "name": "__common__", 
-  "ref_doc_submitted": 1, 
-  "to_doctype": "Purchase Invoice"
- }, 
- {
-  "doctype": "DocType Mapper", 
-  "name": "Purchase Order-Purchase Invoice"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / obj.purchase_rate", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "qty"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "purchase_rate", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "rate"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: flt(obj.amount) - flt(obj.billed_amt)", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "amount"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / flt(obj.conversion_rate)", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "import_amount"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "parent", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "purchase_order"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "name", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "po_detail"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "naming_series", 
-  "map": "No", 
-  "match_id": 0, 
-  "to_field": "naming_series"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "total_tax", 
-  "map": "Yes", 
-  "match_id": 0, 
-  "to_field": "total_tax"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "conversion_rate", 
-  "map": "Yes", 
-  "match_id": 0, 
-  "to_field": "conversion_rate"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "from_table": "Purchase Order", 
-  "match_id": 0, 
-  "to_table": "Purchase Invoice", 
-  "validation_logic": "docstatus =1"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "from_field": "po_details", 
-  "from_table": "Purchase Order Item", 
-  "match_id": 1, 
-  "to_field": "entries", 
-  "to_table": "Purchase Invoice Item", 
-  "validation_logic": "ifnull(billed_amt,0)  < amount and docstatus = 1"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "from_field": "purchase_tax_details", 
-  "from_table": "Purchase Taxes and Charges", 
-  "match_id": 2, 
-  "to_field": "purchase_tax_details", 
-  "to_table": "Purchase Taxes and Charges", 
-  "validation_logic": "docstatus =1"
- }
-]
\ No newline at end of file
diff --git a/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt b/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
deleted file mode 100644
index 99c74ac..0000000
--- a/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
+++ /dev/null
@@ -1,144 +0,0 @@
-[
- {
-  "creation": "2010-08-08 17:09:35", 
-  "docstatus": 0, 
-  "modified": "2013-07-03 17:56:30", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "name": "__common__", 
-  "parent": "Purchase Receipt-Purchase Invoice", 
-  "parentfield": "table_mapper_details", 
-  "parenttype": "DocType Mapper"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "name": "__common__", 
-  "parent": "Purchase Receipt-Purchase Invoice", 
-  "parentfield": "field_mapper_details", 
-  "parenttype": "DocType Mapper"
- }, 
- {
-  "doctype": "DocType Mapper", 
-  "from_doctype": "Purchase Receipt", 
-  "module": "Accounts", 
-  "name": "__common__", 
-  "ref_doc_submitted": 1, 
-  "to_doctype": "Purchase Invoice"
- }, 
- {
-  "doctype": "DocType Mapper", 
-  "name": "Purchase Receipt-Purchase Invoice"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / obj.purchase_rate", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "qty"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "purchase_rate", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "rate"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: flt(obj.amount) - flt(obj.billed_amt)", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "amount"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / flt(obj.conversion_rate)", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "import_amount"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "parent", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "purchase_receipt"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "prevdoc_docname", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "purchase_order"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "name", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "pr_detail"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "prevdoc_detail_docname", 
-  "map": "Yes", 
-  "match_id": 1, 
-  "to_field": "po_detail"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "naming_series", 
-  "map": "No", 
-  "match_id": 0, 
-  "to_field": "naming_series"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "net_total", 
-  "map": "Yes", 
-  "match_id": 0, 
-  "to_field": "net_total"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "grand_total", 
-  "map": "Yes", 
-  "match_id": 0, 
-  "to_field": "grand_total"
- }, 
- {
-  "doctype": "Field Mapper Detail", 
-  "from_field": "total_tax", 
-  "map": "Yes", 
-  "match_id": 0, 
-  "to_field": "total_tax"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "from_field": "purchase_receipt_details", 
-  "from_table": "Purchase Receipt Item", 
-  "match_id": 1, 
-  "to_field": "entries", 
-  "to_table": "Purchase Invoice Item", 
-  "validation_logic": "ifnull(billed_amt,0)  < amount"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "from_table": "Purchase Receipt", 
-  "match_id": 0, 
-  "to_table": "Purchase Invoice", 
-  "validation_logic": "docstatus=1"
- }, 
- {
-  "doctype": "Table Mapper Detail", 
-  "from_field": "purchase_tax_details", 
-  "from_table": "Purchase Taxes and Charges", 
-  "match_id": 2, 
-  "to_field": "purchase_tax_details", 
-  "to_table": "Purchase Taxes and Charges", 
-  "validation_logic": "docstatus=1"
- }
-]
\ No newline at end of file
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/accounts_settings/accounts_settings.py b/accounts/doctype/accounts_settings/accounts_settings.py
index 4b58048..b548936 100644
--- a/accounts/doctype/accounts_settings/accounts_settings.py
+++ b/accounts/doctype/accounts_settings/accounts_settings.py
@@ -2,6 +2,7 @@
 
 from __future__ import unicode_literals
 import webnotes
+from webnotes.utils import cint
 
 class DocType:
 	def __init__(self, d, dl):
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/accounts/report/purchase_register/purchase_register.py b/accounts/report/purchase_register/purchase_register.py
index 655cf8c..0fbe451 100644
--- a/accounts/report/purchase_register/purchase_register.py
+++ b/accounts/report/purchase_register/purchase_register.py
@@ -58,7 +58,7 @@
 			row.append(invoice_tax_map.get(inv.name, {}).get(tax_acc))
 
 		# total tax, grand total, outstanding amount & rounded total
-		row += [inv.other_charges_total, inv.grand_total, flt(inv.grand_total, 2), \
+		row += [inv.total_tax, inv.grand_total, flt(inv.grand_total, 2), \
 			inv.outstanding_amount]
 		data.append(row)
 	
@@ -164,4 +164,4 @@
 		where name in (%s)""" % ", ".join(["%s"]*len(accounts)), tuple(accounts), as_dict=1):
 			account_map[acc.name] = acc.parent_account
 						
-	return account_map	
\ No newline at end of file
+	return account_map	
diff --git a/buying/doctype/purchase_order/purchase_order.js b/buying/doctype/purchase_order/purchase_order.js
index 4429251..fd420ca 100644
--- a/buying/doctype/purchase_order/purchase_order.js
+++ b/buying/doctype/purchase_order/purchase_order.js
@@ -83,7 +83,13 @@
 
 }
 
-//========================= Make Purchase Receipt =======================================================
+cur_frm.cscript.get_items = function(doc, dt, dn) {
+	wn.model.map_current_doc({
+		method: "stock.doctype.material_request.material_request.make_purchase_order",
+		source_name: cur_frm.doc.indent_no,
+	})
+}
+
 cur_frm.cscript['Make Purchase Receipt'] = function() {
 	n = wn.model.make_new_doc_and_get_name('Purchase Receipt');
 	$c('dt_map', args={
diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py
index 908df67..fba448c 100644
--- a/buying/doctype/purchase_order/purchase_order.py
+++ b/buying/doctype/purchase_order/purchase_order.py
@@ -21,7 +21,6 @@
 from webnotes.model.bean import getlist
 from webnotes.model.code import get_obj
 from webnotes import msgprint
-from buying.utils import get_last_purchase_details
 
 sql = webnotes.conn.sql
 	
@@ -72,24 +71,6 @@
 	def get_bin_details(self, arg = ''):
 		return get_obj(dt='Purchase Common').get_bin_details(arg)
 
-	# Pull Material Request
-	def get_indent_details(self):
-		if self.doc.indent_no:
-			get_obj('DocType Mapper','Material Request-Purchase Order').dt_map('Material Request','Purchase Order',self.doc.indent_no, self.doc, self.doclist, "[['Material Request','Purchase Order'],['Material Request Item', 'Purchase Order Item']]")
-			for d in getlist(self.doclist, 'po_details'):
-				if d.item_code and not d.purchase_rate:
-					last_purchase_details = get_last_purchase_details(d.item_code, self.doc.name)
-					if last_purchase_details:
-						conversion_factor = d.conversion_factor or 1.0
-						conversion_rate = self.doc.fields.get('conversion_rate') or 1.0
-						d.purchase_ref_rate = last_purchase_details['purchase_ref_rate'] * conversion_factor
-						d.discount_rate = last_purchase_details['discount_rate']
-						d.purchase_rate = last_purchase_details['purchase_rate'] * conversion_factor
-						d.import_ref_rate = d.purchase_ref_rate / conversion_rate
-						d.import_rate = d.purchase_rate / conversion_rate						
-					else:
-						d.purchase_ref_rate = d.discount_rate = d.purchase_rate = d.import_ref_rate = d.import_rate = 0.0
-						
 	def get_supplier_quotation_items(self):
 		if self.doc.supplier_quotation:
 			get_obj("DocType Mapper", "Supplier Quotation-Purchase Order").dt_map("Supplier Quotation",
diff --git a/buying/doctype/purchase_order/purchase_order.txt b/buying/doctype/purchase_order/purchase_order.txt
index b2bf146..6fd2161 100644
--- a/buying/doctype/purchase_order/purchase_order.txt
+++ b/buying/doctype/purchase_order/purchase_order.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-05-21 16:16:39", 
   "docstatus": 0, 
-  "modified": "2013-07-04 10:48:54", 
+  "modified": "2013-07-04 18:10:21", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -31,7 +31,6 @@
   "parent": "Purchase Order", 
   "parentfield": "permissions", 
   "parenttype": "DocType", 
-  "permlevel": 0, 
   "read": 1, 
   "report": 1
  }, 
@@ -208,7 +207,6 @@
   "label": "Get Items", 
   "no_copy": 0, 
   "oldfieldtype": "Button", 
-  "options": "get_indent_details", 
   "print_hide": 1
  }, 
  {
@@ -789,15 +787,37 @@
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
+  "permlevel": 1, 
   "role": "Material User", 
   "submit": 0, 
   "write": 0
  }, 
  {
+  "amend": 0, 
+  "cancel": 0, 
+  "create": 0, 
+  "doctype": "DocPerm", 
+  "permlevel": 0, 
+  "role": "Material User", 
+  "submit": 0, 
+  "write": 0
+ }, 
+ {
+  "amend": 0, 
+  "cancel": 0, 
+  "create": 0, 
+  "doctype": "DocPerm", 
+  "permlevel": 1, 
+  "role": "Purchase Manager", 
+  "submit": 0, 
+  "write": 0
+ }, 
+ {
   "amend": 1, 
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
+  "permlevel": 0, 
   "role": "Purchase Manager", 
   "submit": 1, 
   "write": 1
@@ -807,13 +827,24 @@
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
+  "permlevel": 0, 
   "role": "Purchase User", 
   "submit": 1, 
   "write": 1
  }, 
  {
+  "amend": 0, 
+  "cancel": 0, 
+  "create": 0, 
+  "doctype": "DocPerm", 
+  "permlevel": 1, 
+  "role": "All", 
+  "submit": 0
+ }, 
+ {
   "doctype": "DocPerm", 
   "match": "supplier", 
+  "permlevel": 0, 
   "role": "Supplier"
  }
 ]
\ No newline at end of file
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.js b/buying/doctype/supplier_quotation/supplier_quotation.js
index 0ed85ff..92db302 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -31,6 +31,12 @@
 			cur_frm.add_custom_button("Make Purchase Order", cur_frm.cscript.make_purchase_order);
 		}
 	},	
+	get_items: function() {
+		wn.model.map_current_doc({
+			method: "stock.doctype.material_request.material_request.make_supplier_quotation",
+			source_name: cur_frm.doc.indent_no,
+		})
+	}
 });
 
 // for backward compatibility: combine new and previous states
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.py b/buying/doctype/supplier_quotation/supplier_quotation.py
index 421ecd0..b8cf7cb 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -17,7 +17,6 @@
 from __future__ import unicode_literals
 import webnotes
 from webnotes.model.code import get_obj
-from setup.utils import get_company_currency
 
 from controllers.buying_controller import BuyingController
 class DocType(BuyingController):
@@ -49,19 +48,6 @@
 		
 	def on_trash(self):
 		pass
-		
-	def get_indent_details(self):
-		if self.doc.indent_no:
-			mapper = get_obj("DocType Mapper", "Material Request-Supplier Quotation")
-			mapper.dt_map("Material Request", "Supplier Quotation", self.doc.indent_no,
-				self.doc, self.doclist, """[['Material Request', 'Supplier Quotation'],
-				['Material Request Item', 'Supplier Quotation Item']]""")
-			
-			from webnotes.model.bean import getlist
-			for d in getlist(self.doclist, self.fname):
-				if d.item_code and not d.purchase_rate:
-					d.purchase_ref_rate = d.discount_rate = d.purchase_rate = 0.0
-					d.import_ref_rate = d.import_rate = 0.0
 	
 	def validate_fiscal_year(self):
 		get_obj(dt = 'Purchase Common').validate_fiscal_year( \
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.txt b/buying/doctype/supplier_quotation/supplier_quotation.txt
index d9ecf60..5f2e95e 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.txt
+++ b/buying/doctype/supplier_quotation/supplier_quotation.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-05-21 16:16:45", 
   "docstatus": 0, 
-  "modified": "2013-07-04 10:51:05", 
+  "modified": "2013-07-04 18:47:51", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -31,7 +31,6 @@
   "parent": "Supplier Quotation", 
   "parentfield": "permissions", 
   "parenttype": "DocType", 
-  "permlevel": 0, 
   "read": 1, 
   "report": 1
  }, 
@@ -191,8 +190,7 @@
   "fieldtype": "Button", 
   "hidden": 0, 
   "label": "Get Items", 
-  "oldfieldtype": "Button", 
-  "options": "get_indent_details"
+  "oldfieldtype": "Button"
  }, 
  {
   "doctype": "DocField", 
@@ -644,6 +642,7 @@
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
+  "permlevel": 0, 
   "role": "Manufacturing Manager", 
   "submit": 1, 
   "write": 1
@@ -653,6 +652,7 @@
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
+  "permlevel": 0, 
   "role": "Purchase Manager", 
   "submit": 1, 
   "write": 1
@@ -662,6 +662,7 @@
   "cancel": 0, 
   "create": 1, 
   "doctype": "DocPerm", 
+  "permlevel": 0, 
   "role": "Purchase User", 
   "submit": 0, 
   "write": 1
@@ -671,6 +672,7 @@
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
+  "permlevel": 0, 
   "role": "Material User", 
   "submit": 0, 
   "write": 0
@@ -680,8 +682,19 @@
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
+  "permlevel": 0, 
   "role": "Supplier", 
   "submit": 0, 
   "write": 0
+ }, 
+ {
+  "amend": 0, 
+  "cancel": 0, 
+  "create": 0, 
+  "doctype": "DocPerm", 
+  "permlevel": 1, 
+  "role": "All", 
+  "submit": 0, 
+  "write": 0
  }
 ]
\ No newline at end of file
diff --git a/selling/doctype/quotation/quotation.py b/selling/doctype/quotation/quotation.py
index 1adce20..7e4ebe0 100644
--- a/selling/doctype/quotation/quotation.py
+++ b/selling/doctype/quotation/quotation.py
@@ -254,9 +254,6 @@
 @webnotes.whitelist()
 def make_sales_order(source_name, target_doclist=None):
 	from webnotes.model.mapper import get_mapped_doclist
-	
-	if target_doclist:
-		target_doclist = json.loads(target_doclist)
 
 	doclist = get_mapped_doclist("Quotation", source_name, {
 			"Quotation": {
diff --git a/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py
index 87d4c37..c6b0b6c 100644
--- a/setup/doctype/setup_control/setup_control.py
+++ b/setup/doctype/setup_control/setup_control.py
@@ -256,7 +256,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 812289c..e1463fa 100644
--- a/setup/utils.py
+++ b/setup/utils.py
@@ -32,7 +32,8 @@
 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):
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index dc4fde8..85bb3d1 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/material_request/material_request.js b/stock/doctype/material_request/material_request.js
index 025f7b5..6de7a29 100644
--- a/stock/doctype/material_request/material_request.js
+++ b/stock/doctype/material_request/material_request.js
@@ -36,23 +36,27 @@
 		
 		if(doc.docstatus == 1 && doc.status != 'Stopped'){
 			if(doc.material_request_type === "Purchase")
-				cur_frm.add_custom_button("Make Supplier Quotation", cur_frm.cscript.make_supplier_quotation);
+				cur_frm.add_custom_button("Make Supplier Quotation", 
+					cur_frm.cscript.make_supplier_quotation);
 				
 			if(doc.material_request_type === "Transfer" && doc.status === "Submitted")
 				cur_frm.add_custom_button("Transfer Material", cur_frm.cscript.make_stock_entry);
 			
 			if(flt(doc.per_ordered, 2) < 100) {
 				if(doc.material_request_type === "Purchase")
-					cur_frm.add_custom_button('Make Purchase Order', cur_frm.cscript['Make Purchase Order']);
+					cur_frm.add_custom_button('Make Purchase Order', 
+						cur_frm.cscript.make_purchase_order);
 				
-				cur_frm.add_custom_button('Stop Material Request', cur_frm.cscript['Stop Material Request']);
+				cur_frm.add_custom_button('Stop Material Request', 
+					cur_frm.cscript['Stop Material Request']);
 			}
 			cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
 
 		}
 
 		if(doc.docstatus == 1 && doc.status == 'Stopped')
-			cur_frm.add_custom_button('Unstop Material Request', cur_frm.cscript['Unstop Material Request']);
+			cur_frm.add_custom_button('Unstop Material Request', 
+				cur_frm.cscript['Unstop Material Request']);
 		
 		if(doc.material_request_type === "Transfer") {
 			cur_frm.toggle_display("sales_order_no", false);
@@ -66,6 +70,27 @@
 	
 	calculate_taxes_and_totals: function() {
 		return;
+	},
+	
+	make_purchase_order: function() {
+		wn.model.open_mapped_doc({
+			method: "stock.doctype.material_request.material_request.make_purchase_order",
+			source_name: cur_frm.doc.name
+		})
+	},
+
+	make_supplier_quotation: function() {
+		wn.model.open_mapped_doc({
+			method: "stock.doctype.material_request.material_request.make_supplier_quotation",
+			source_name: cur_frm.doc.name
+		})
+	},
+
+	make_stock_entry: function() {
+		wn.model.open_mapped_doc({
+			method: "stock.doctype.material_request.material_request.make_stock_entry",
+			source_name: cur_frm.doc.name
+		})
 	}
 });
 
@@ -96,25 +121,6 @@
 	if (check) {
 		$c('runserverobj', args={'method':'update_status', 'arg': 'Submitted','docs': wn.model.compress(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
 			cur_frm.refresh();
-			
 		});
 	}
 };
-
-cur_frm.cscript['Make Purchase Order'] = function() {
-	cur_frm.map([
-		["Material Request", "Purchase Order"], 
-		["Material Request Item", "Purchase Order Item"]]);
-};
-
-cur_frm.cscript.make_supplier_quotation = function() {
-	cur_frm.map([
-		["Material Request", "Supplier Quotation"], 
-		["Material Request Item", "Supplier Quotation Item"]]);
-};
-
-cur_frm.cscript.make_stock_entry = function() {
-	cur_frm.map([
-		["Material Request", "Stock Entry"], 
-		["Material Request Item", "Stock Entry Detail"]]);
-};
diff --git a/stock/doctype/material_request/material_request.py b/stock/doctype/material_request/material_request.py
index dfed6c4..3f3c212 100644
--- a/stock/doctype/material_request/material_request.py
+++ b/stock/doctype/material_request/material_request.py
@@ -240,3 +240,101 @@
 			"indented_qty": (se_detail.docstatus==2 and 1 or -1) * add_indented_qty,
 			"posting_date": controller.doc.posting_date,
 		})
+
+
+
+@webnotes.whitelist()
+def make_purchase_order(source_name, target_doclist=None):
+	from webnotes.model.mapper import get_mapped_doclist
+
+	def update_item(obj, target):
+		target.conversion_factor = 1
+		target.qty = flt(obj.qty) - flt(obj.ordered_qty)
+		
+	def set_missing_values(source, target):
+		po = webnotes.bean(target)
+		po.run_method("set_missing_values")
+
+	doclist = get_mapped_doclist("Material Request", source_name, 	{
+		"Material Request": {
+			"doctype": "Purchase Order", 
+			"validation": {
+				"docstatus": ["=", 1],
+				"material_request_type": ["=", "Purchase"]
+			}
+		}, 
+		"Material Request Item": {
+			"doctype": "Purchase Order Item", 
+			"field_map": {
+				"name": "prevdoc_detail_docname", 
+				"parent": "prevdoc_docname", 
+				"parenttype": "prevdoc_doctype", 
+				"uom": "stock_uom"
+			},
+			"postprocess": update_item
+		}
+	}, target_doclist, set_missing_values)
+
+	return [d.fields for d in doclist]
+	
+@webnotes.whitelist()
+def make_supplier_quotation(source_name, target_doclist=None):
+	from webnotes.model.mapper import get_mapped_doclist
+
+	def set_missing_values(source, target):
+		sq = webnotes.bean(target)
+		sq.run_method("set_missing_values")
+
+	doclist = get_mapped_doclist("Material Request", source_name, {
+		"Material Request": {
+			"doctype": "Supplier Quotation", 
+			"validation": {
+				"docstatus": ["=", 1],
+				"material_request_type": ["=", "Purchase"]
+			}
+		}, 
+		"Material Request Item": {
+			"doctype": "Supplier Quotation Item", 
+			"field_map": {
+				"name": "prevdoc_detail_docname", 
+				"parent": "prevdoc_docname", 
+				"parenttype": "prevdoc_doctype"
+			}
+		}
+	}, target_doclist, set_missing_values)
+
+	return [d.fields for d in doclist]
+	
+@webnotes.whitelist()
+def make_stock_entry(source_name, target_doclist=None):
+	from webnotes.model.mapper import get_mapped_doclist
+
+	def set_purpose(source, target):
+		target[0].purpose = "Material Transfer"
+		
+	def update_item(source, target):
+		target.conversion_factor = 1
+		target.qty = flt(source.qty) - flt(source.ordered_qty)
+		
+
+	doclist = get_mapped_doclist("Material Request", source_name, {
+		"Material Request": {
+			"doctype": "Stock Entry", 
+			"validation": {
+				"docstatus": ["=", 1],
+				"material_request_type": ["=", "Transfer"]
+			}
+		}, 
+		"Material Request Item": {
+			"doctype": "Stock Entry Detail", 
+			"field_map": {
+				"name": "material_request_item", 
+				"parent": "material_request", 
+				"uom": "stock_uom", 
+				"warehouse": "t_warehouse"
+			},
+			"postprocess": update_item
+		}
+	}, target_doclist, set_purpose)
+
+	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/stock/doctype/material_request/test_material_request.py b/stock/doctype/material_request/test_material_request.py
index f5dbb52..daf31ad 100644
--- a/stock/doctype/material_request/test_material_request.py
+++ b/stock/doctype/material_request/test_material_request.py
@@ -6,6 +6,53 @@
 from webnotes.utils import flt
 
 class TestMaterialRequest(unittest.TestCase):
+	def test_make_purchase_order(self):
+		from stock.doctype.material_request.material_request import make_purchase_order
+
+		mr = webnotes.bean(copy=test_records[0]).insert()
+
+		self.assertRaises(webnotes.ValidationError, make_purchase_order, 
+			mr.doc.name)
+
+		mr = webnotes.bean("Material Request", mr.doc.name)
+		mr.submit()
+		po = make_purchase_order(mr.doc.name)
+		
+		self.assertEquals(po[0]["doctype"], "Purchase Order")
+		self.assertEquals(len(po), len(mr.doclist))
+		
+	def test_make_supplier_quotation(self):
+		from stock.doctype.material_request.material_request import make_supplier_quotation
+
+		mr = webnotes.bean(copy=test_records[0]).insert()
+
+		self.assertRaises(webnotes.ValidationError, make_supplier_quotation, 
+			mr.doc.name)
+
+		mr = webnotes.bean("Material Request", mr.doc.name)
+		mr.submit()
+		sq = make_supplier_quotation(mr.doc.name)
+		
+		self.assertEquals(sq[0]["doctype"], "Supplier Quotation")
+		self.assertEquals(len(sq), len(mr.doclist))
+		
+			
+	def test_make_stock_entry(self):
+		from stock.doctype.material_request.material_request import make_stock_entry
+
+		mr = webnotes.bean(copy=test_records[0]).insert()
+
+		self.assertRaises(webnotes.ValidationError, make_stock_entry, 
+			mr.doc.name)
+
+		mr = webnotes.bean("Material Request", mr.doc.name)
+		mr.doc.material_request_type = "Transfer"
+		mr.submit()
+		se = make_stock_entry(mr.doc.name)
+		
+		self.assertEquals(se[0]["doctype"], "Stock Entry")
+		self.assertEquals(len(se), len(mr.doclist))
+	
 	def _test_expected(self, doclist, expected_values):
 		for i, expected in enumerate(expected_values):
 			for fieldname, val in expected.items():
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})