List route for tree browser based doctypes; Fixes to add child in tree browsers
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index 2a805cf..4b865ed 100644
--- a/erpnext/accounts/doctype/account/account.js
+++ b/erpnext/accounts/doctype/account/account.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.list_route = "Accounts Browser/Account";
+
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 	if(doc.__islocal) {
 		msgprint(__("Please create new account from Chart of Accounts."));
@@ -8,20 +10,20 @@
 	}
 
 	cur_frm.toggle_display('account_name', doc.__islocal);
-	
+
 	// hide fields if group
-	cur_frm.toggle_display(['account_type', 'master_type', 'master_name', 
-		'credit_days', 'credit_limit', 'tax_rate'], doc.group_or_ledger=='Ledger')	
-		
+	cur_frm.toggle_display(['account_type', 'master_type', 'master_name',
+		'credit_days', 'credit_limit', 'tax_rate'], doc.group_or_ledger=='Ledger')
+
 	// disable fields
 	cur_frm.toggle_enable(['account_name', 'group_or_ledger', 'company'], false);
-	
+
 	if(doc.group_or_ledger=='Ledger') {
 		frappe.model.with_doc("Accounts Settings", "Accounts Settings", function (name) {
 			var accounts_settings = frappe.get_doc("Accounts Settings", name);
-			var display = accounts_settings["frozen_accounts_modifier"] 
+			var display = accounts_settings["frozen_accounts_modifier"]
 				&& in_list(user_roles, accounts_settings["frozen_accounts_modifier"]);
-			
+
 			cur_frm.toggle_display('freeze_account', display);
 		});
 	}
@@ -33,9 +35,9 @@
 	} else {
 		// credit days and type if customer or supplier
 		cur_frm.set_intro(null);
-		cur_frm.toggle_display(['credit_days', 'credit_limit'], in_list(['Customer', 'Supplier'], 
+		cur_frm.toggle_display(['credit_days', 'credit_limit'], in_list(['Customer', 'Supplier'],
 			doc.master_type));
-		
+
 		cur_frm.cscript.master_type(doc, cdt, cdn);
 		cur_frm.cscript.account_type(doc, cdt, cdn);
 
@@ -45,10 +47,10 @@
 }
 
 cur_frm.cscript.master_type = function(doc, cdt, cdn) {
-	cur_frm.toggle_display(['credit_days', 'credit_limit'], in_list(['Customer', 'Supplier'], 
+	cur_frm.toggle_display(['credit_days', 'credit_limit'], in_list(['Customer', 'Supplier'],
 		doc.master_type));
-		
-	cur_frm.toggle_display('master_name', doc.account_type=='Warehouse' || 
+
+	cur_frm.toggle_display('master_name', doc.account_type=='Warehouse' ||
 		in_list(['Customer', 'Supplier'], doc.master_type));
 }
 
@@ -58,22 +60,22 @@
 	if(doc.group_or_ledger=='Ledger') {
 		cur_frm.toggle_display(['tax_rate'], doc.account_type == 'Tax');
 		cur_frm.toggle_display('master_type', cstr(doc.account_type)=='');
-		cur_frm.toggle_display('master_name', doc.account_type=='Warehouse' || 
+		cur_frm.toggle_display('master_name', doc.account_type=='Warehouse' ||
 			in_list(['Customer', 'Supplier'], doc.master_type));
 	}
 }
 
 cur_frm.cscript.add_toolbar_buttons = function(doc) {
-	cur_frm.appframe.add_button(__('Chart of Accounts'), 
+	cur_frm.appframe.add_button(__('Chart of Accounts'),
 		function() { frappe.set_route("Accounts Browser", "Account"); }, 'icon-sitemap')
 
 	if (cstr(doc.group_or_ledger) == 'Group') {
-		cur_frm.add_custom_button(__('Convert to Ledger'), 
+		cur_frm.add_custom_button(__('Convert to Ledger'),
 			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
 	} else if (cstr(doc.group_or_ledger) == 'Ledger') {
-		cur_frm.add_custom_button(__('Convert to Group'), 
+		cur_frm.add_custom_button(__('Convert to Group'),
 			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet')
-			
+
 		cur_frm.appframe.add_button(__('View Ledger'), function() {
 			frappe.route_options = {
 				"account": doc.name,
@@ -88,7 +90,7 @@
 
 cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) {
   return $c_obj(cur_frm.doc,'convert_group_to_ledger','',function(r,rt) {
-    if(r.message == 1) {  
+    if(r.message == 1) {
 	  cur_frm.refresh();
     }
   });
@@ -119,8 +121,8 @@
 cur_frm.fields_dict['parent_account'].get_query = function(doc) {
 	return {
 		filters: {
-			"group_or_ledger": "Group", 
+			"group_or_ledger": "Group",
 			"company": doc.company
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index 71239ba..808ad52 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -2,11 +2,14 @@
 // License: GNU General Public License v3. See license.txt
 
 frappe.provide("erpnext.accounts");
+
+cur_frm.list_route = "Accounts Browser/Cost Center";
+
 erpnext.accounts.CostCenterController = frappe.ui.form.Controller.extend({
 	onload: function() {
 		this.setup_queries();
 	},
-	
+
 	setup_queries: function() {
 		var me = this;
 		if(this.frm.fields_dict["budget_details"].grid.get_field("account")) {
@@ -20,10 +23,10 @@
 				}
 			});
 		}
-		
+
 		this.frm.set_query("parent_cost_center", function() {
 			return {
-				filters:[			
+				filters:[
 					['Cost Center', 'group_or_ledger', '=', 'Group'],
 					['Cost Center', 'company', '=', me.frm.doc.company],
 				]
@@ -44,11 +47,11 @@
 	}
 
 	cur_frm.cscript.hide_unhide_group_ledger(doc);
-	
+
 	cur_frm.toggle_display('sb1', doc.group_or_ledger=='Ledger')
 	cur_frm.set_intro(intro_txt);
-	
-	cur_frm.appframe.add_button(__('Chart of Cost Centers'), 
+
+	cur_frm.appframe.add_button(__('Chart of Cost Centers'),
 		function() { frappe.set_route("Accounts Browser", "Cost Center"); }, 'icon-sitemap')
 }
 
@@ -60,10 +63,10 @@
 
 cur_frm.cscript.hide_unhide_group_ledger = function(doc) {
 	if (cstr(doc.group_or_ledger) == 'Group') {
-		cur_frm.add_custom_button(__('Convert to Ledger'), 
+		cur_frm.add_custom_button(__('Convert to Ledger'),
 			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
 	} else if (cstr(doc.group_or_ledger) == 'Ledger') {
-		cur_frm.add_custom_button(__('Convert to Group'), 
+		cur_frm.add_custom_button(__('Convert to Group'),
 			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet')
 	}
 }
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index b40722c..6d4bf3a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -784,8 +784,7 @@
 	from frappe.model.mapper import get_mapped_doc
 
 	def set_missing_values(source, target):
-		doc = frappe.get_doc(target)
-		doc.run_method("onload_post_render")
+		target.run_method("onload_post_render")
 
 	def update_item(source_doc, target_doc, source_parent):
 		target_doc.base_amount = (flt(source_doc.qty) - flt(source_doc.delivered_qty)) * \
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js
index a94a923..ca6ebff 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.js
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js
@@ -12,7 +12,7 @@
 		parent: wrapper,
 		single_column: true
 	})
-	
+
 	wrapper.appframe.add_module_icon("Accounts");
 
 	var main = $(wrapper).find(".layout-main"),
@@ -30,7 +30,7 @@
 		    '</li>'+
 			'<li>'+__('Please do NOT create Account (Ledgers) for Customers and Suppliers. They are created directly from the Customer / Supplier masters.')+'</li>'+
 			'<li>'+
-			     '<b>'+__('To create a Bank Account:')+'</b>'+ 
+			     '<b>'+__('To create a Bank Account:')+'</b>'+
 			      __('Go to the appropriate group (usually Application of Funds > Current Assets > Bank Accounts and create a new Account Ledger (by clicking on Add Child) of type "Bank"')+
 			'</li>'+
 			'<li>'+
@@ -39,13 +39,13 @@
 			'</li>'+
 		'</ol>'+
 		'<p>'+__('Please setup your chart of accounts before you start Accounting Entries')+'</p></div>').appendTo(main);
-	
+
 	if (frappe.boot.user.can_create.indexOf("Company") !== -1) {
 		wrapper.appframe.add_button(__('New Company'), function() { newdoc('Company'); },
 			'icon-plus');
 	}
-	
-	wrapper.appframe.set_title_right('Refresh', function() {  	
+
+	wrapper.appframe.set_title_right('Refresh', function() {
 			wrapper.$company_select.change();
 		});
 
@@ -53,11 +53,11 @@
 	wrapper.$company_select = wrapper.appframe.add_select("Company", [])
 		.change(function() {
 			var ctype = frappe.get_route()[1] || 'Account';
-			erpnext.account_chart = new erpnext.AccountsChart(ctype, $(this).val(), 
+			erpnext.account_chart = new erpnext.AccountsChart(ctype, $(this).val(),
 				chart_area.get(0));
 			pscript.set_title(wrapper, ctype, $(this).val());
 		})
-		
+
 	// load up companies
 	return frappe.call({
 		method: 'erpnext.accounts.page.accounts_browser.accounts_browser.get_companies',
@@ -86,7 +86,7 @@
 	if(erpnext.account_chart && erpnext.account_chart.ctype != ctype) {
 		wrapper.$company_select.change();
 	}
-	
+
 	pscript.set_title(wrapper, ctype);
 }
 
@@ -98,11 +98,11 @@
 		me.can_create = frappe.model.can_create(this.ctype);
 		me.can_delete = frappe.model.can_delete(this.ctype);
 		me.can_write = frappe.model.can_write(this.ctype);
-		
-		
+
+
 		me.company = company;
 		this.tree = new frappe.ui.Tree({
-			parent: $(wrapper), 
+			parent: $(wrapper),
 			label: ctype==="Account" ? "Accounts" : "Cost Centers",
 			args: {ctype: ctype, comp: company},
 			method: 'erpnext.accounts.page.accounts_browser.accounts_browser.get_children',
@@ -114,7 +114,7 @@
 			},
 			toolbar: [
 				{ toggle_btn: true },
-				{ 
+				{
 					label: __("Open"),
 					condition: function(node) { return !node.root },
 					click: function(node, btn) {
@@ -134,7 +134,7 @@
 				},
 				{
 					condition: function(node) {
-						return !node.root && me.ctype === 'Account' 
+						return !node.root && me.ctype === 'Account'
 							&& frappe.boot.user.can_read.indexOf("GL Entry") !== -1
 					},
 					label: __("View Ledger"),
@@ -147,7 +147,7 @@
 						};
 						frappe.set_route("query-report", "General Ledger");
 					}
-					
+
 				},
 				{
 					condition: function(node) { return !node.root && me.can_write },
@@ -170,8 +170,8 @@
 			],
 			onrender: function(node) {
 				if (me.ctype == 'Account' && node.data && node.data.balance!==undefined) {
-					$('<span class="balance-area pull-right text-muted">' 
-						+ format_currency(node.data.balance, node.data.currency) 
+					$('<span class="balance-area pull-right text-muted">'
+						+ format_currency(node.data.balance, node.data.currency)
 						+ '</span>').insertBefore(node.$ul);
 				}
 			}
@@ -179,18 +179,18 @@
 	},
 	new_account: function() {
 		var me = this;
-		
+
 		// the dialog
 		var d = new frappe.ui.Dialog({
 			title:__('New Account'),
 			fields: [
-				{fieldtype:'Data', fieldname:'account_name', label:__('New Account Name'), reqd:true, 
+				{fieldtype:'Data', fieldname:'account_name', label:__('New Account Name'), reqd:true,
 					description: __("Name of new Account. Note: Please don't create accounts for Customers and Suppliers, they are created automatically from the Customer and Supplier master")},
 				{fieldtype:'Select', fieldname:'group_or_ledger', label:__('Group or Ledger'),
 					options:'Group\nLedger', description: __('Further accounts can be made under Groups, but entries can be made against Ledger')},
 				{fieldtype:'Select', fieldname:'account_type', label:__('Account Type'),
-					options: ['', 'Bank', 'Cash', 'Warehouse', 'Receivable', 'Payable', 
-						'Equity', 'Cost of Goods Sold', 'Fixed Asset', 'Expense Account', 
+					options: ['', 'Bank', 'Cash', 'Warehouse', 'Receivable', 'Payable',
+						'Equity', 'Cost of Goods Sold', 'Fixed Asset', 'Expense Account',
 						'Income Account', 'Tax', 'Chargeable'].join('\n'),
 					description: __("Optional. This setting will be used to filter in various transactions.") },
 				{fieldtype:'Float', fieldname:'tax_rate', label:__('Tax Rate')},
@@ -199,7 +199,7 @@
 		})
 
 		var fd = d.fields_dict;
-		
+
 		// account type if ledger
 		$(fd.group_or_ledger.input).change(function() {
 			if($(this).val()=='Group') {
@@ -212,7 +212,7 @@
 				}
 			}
 		});
-		
+
 		// tax rate if tax
 		$(fd.account_type.input).change(function() {
 			if($(this).val()=='Tax') {
@@ -221,38 +221,38 @@
 				$(fd.tax_rate.wrapper).toggle(false);
 			}
 		})
-		
+
 		// create
 		$(fd.create_new.input).click(function() {
 			var btn = this;
 			var v = d.get_values();
 			if(!v) return;
-					
+
 			var node = me.tree.get_selected_node();
 			v.parent_account = node.label;
 			v.master_type = '';
 			v.company = me.company;
-			
+
 			return frappe.call({
 				args: v,
 				method: 'erpnext.accounts.utils.add_ac',
 				callback: function(r) {
 					d.hide();
-					node.reload;
+					node.reload();
 				}
 			});
 		});
-		
+
 		// show
 		d.onshow = function() {
 			$(fd.group_or_ledger.input).change();
 			$(fd.account_type.input).change();
 		}
-		
+
 		$(fd.group_or_ledger.input).val("Ledger").change();
 		d.show();
 	},
-	
+
 	new_cost_center: function(){
 		var me = this;
 		// the dialog
@@ -265,17 +265,17 @@
 				{fieldtype:'Button', fieldname:'create_new', label:__('Create New') }
 			]
 		});
-	
+
 		// create
 		$(d.fields_dict.create_new.input).click(function() {
 			var v = d.get_values();
 			if(!v) return;
-			
+
 			var node = me.tree.get_selected_node();
-			
+
 			v.parent_cost_center = node.label;
 			v.company = me.company;
-			
+
 			return frappe.call({
 				args: v,
 				method: 'erpnext.accounts.utils.add_cc',
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 4eb5045..e215ae6 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -99,11 +99,12 @@
 		args = frappe.local.form_dict
 		args.pop("cmd")
 
-	ac = frappe.get_doc(args)
-	ac.doctype = "Account"
+	ac = frappe.new_doc("Account")
+	ac.update(args)
 	ac.old_parent = ""
 	ac.freeze_account = "No"
 	ac.insert()
+
 	return ac.name
 
 @frappe.whitelist()
@@ -112,8 +113,8 @@
 		args = frappe.local.form_dict
 		args.pop("cmd")
 
-	cc = frappe.get_doc(args)
-	cc.doctype = "Cost Center"
+	cc = frappe.new_doc("Cost Center")
+	cc.update(args)
 	cc.old_parent = ""
 	cc.insert()
 	return cc.name
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index a83debc..c33039f 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.utils import cstr, flt
-from frappe import msgprint, _
+from frappe import msgprint, _, throw
 from erpnext.controllers.buying_controller import BuyingController
 
 class PurchaseOrder(BuyingController):
@@ -183,8 +183,7 @@
 	from frappe.model.mapper import get_mapped_doc
 
 	def set_missing_values(source, target):
-		doc = frappe.get_doc(target)
-		doc.run_method("set_missing_values")
+		target.run_method("set_missing_values")
 
 	def update_item(obj, target, source_parent):
 		target.qty = flt(obj.qty) - flt(obj.received_qty)
@@ -222,8 +221,7 @@
 	from frappe.model.mapper import get_mapped_doc
 
 	def set_missing_values(source, target):
-		doc = frappe.get_doc(target)
-		doc.run_method("set_missing_values")
+		target.run_method("set_missing_values")
 
 	def update_item(obj, target, source_parent):
 		target.amount = flt(obj.amount) - flt(obj.billed_amt)
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index fa48488..84eeccf 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -8,17 +8,17 @@
 class SupplierQuotation(BuyingController):
 	tname = "Supplier Quotation Item"
 	fname = "quotation_items"
-	
+
 	def validate(self):
 		super(SupplierQuotation, self).validate()
-		
+
 		if not self.status:
 			self.status = "Draft"
 
 		from erpnext.utilities import validate_status
-		validate_status(self.status, ["Draft", "Submitted", "Stopped", 
+		validate_status(self.status, ["Draft", "Submitted", "Stopped",
 			"Cancelled"])
-		
+
 		self.validate_common()
 		self.validate_with_previous_doc()
 		self.validate_uom_is_integer("uom", "qty")
@@ -28,10 +28,10 @@
 
 	def on_cancel(self):
 		frappe.db.set(self, "status", "Cancelled")
-		
+
 	def on_trash(self):
 		pass
-			
+
 	def validate_with_previous_doc(self):
 		super(SupplierQuotation, self).validate_with_previous_doc(self.tname, {
 			"Material Request": {
@@ -45,7 +45,7 @@
 			}
 		})
 
-			
+
 	def validate_common(self):
 		pc = frappe.get_doc('Purchase Common')
 		pc.validate_for_items(self)
@@ -53,27 +53,26 @@
 @frappe.whitelist()
 def make_purchase_order(source_name, target_doc=None):
 	from frappe.model.mapper import get_mapped_doc
-	
+
 	def set_missing_values(source, target):
-		doc = frappe.get_doc(target)
-		doc.run_method("set_missing_values")
-		doc.run_method("get_schedule_dates")
+		target.run_method("set_missing_values")
+		target.run_method("get_schedule_dates")
 
 	def update_item(obj, target, source_parent):
 		target.conversion_factor = 1
 
 	doclist = get_mapped_doc("Supplier Quotation", source_name,		{
 		"Supplier Quotation": {
-			"doctype": "Purchase Order", 
+			"doctype": "Purchase Order",
 			"validation": {
 				"docstatus": ["=", 1],
 			}
-		}, 
+		},
 		"Supplier Quotation Item": {
-			"doctype": "Purchase Order Item", 
+			"doctype": "Purchase Order Item",
 			"field_map": [
-				["name", "supplier_quotation_item"], 
-				["parent", "supplier_quotation"], 
+				["name", "supplier_quotation_item"],
+				["parent", "supplier_quotation"],
 				["uom", "stock_uom"],
 				["uom", "uom"],
 				["prevdoc_detail_docname", "prevdoc_detail_docname"],
@@ -81,11 +80,11 @@
 				["prevdoc_docname", "prevdoc_docname"]
 			],
 			"postprocess": update_item
-		}, 
+		},
 		"Purchase Taxes and Charges": {
-			"doctype": "Purchase Taxes and Charges", 
+			"doctype": "Purchase Taxes and Charges",
 			"add_if_empty": True
 		},
 	}, target_doc, set_missing_values)
 
-	return doclist
\ No newline at end of file
+	return doclist
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 6843644..a57a0ce 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -76,10 +76,9 @@
 	from frappe.model.mapper import get_mapped_doc
 
 	def postprocess(source, target):
-		sal_slip = frappe.get_doc(target)
-		sal_slip.run_method("pull_emp_details")
-		sal_slip.run_method("get_leave_details")
-		sal_slip.run_method("calculate_net_pay")
+		target.run_method("pull_emp_details")
+		target.run_method("get_leave_details")
+		target.run_method("calculate_net_pay")
 
 	doc = get_mapped_doc("Salary Structure", source_name, {
 		"Salary Structure": {
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 0551aaa..aa87e1e 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -247,8 +247,7 @@
 		return "order" if self.docstatus==1 else None
 
 def set_missing_values(source, target):
-	doc = frappe.get_doc(target)
-	doc.run_method("onload_post_render")
+	target.run_method("onload_post_render")
 
 @frappe.whitelist()
 def make_material_request(source_name, target_doc=None):
@@ -316,9 +315,8 @@
 @frappe.whitelist()
 def make_sales_invoice(source_name, target_doc=None):
 	def set_missing_values(source, target):
-		doc = frappe.get_doc(target)
-		doc.is_pos = 0
-		doc.run_method("onload_post_render")
+		target.is_pos = 0
+		target.run_method("onload_post_render")
 
 	def update_item(source, target, source_parent):
 		target.amount = flt(source.amount) - flt(source.billed_amt)
diff --git a/erpnext/selling/page/sales_browser/sales_browser.js b/erpnext/selling/page/sales_browser/sales_browser.js
index adfbd00..950e3f6 100644
--- a/erpnext/selling/page/sales_browser/sales_browser.js
+++ b/erpnext/selling/page/sales_browser/sales_browser.js
@@ -5,18 +5,18 @@
 	frappe.ui.make_app_page({
 		parent: wrapper,
 	})
-	
+
 	wrapper.appframe.add_module_icon("Selling")
-	
-	wrapper.appframe.set_title_right('Refresh', function() {  
+
+	wrapper.appframe.set_title_right('Refresh', function() {
 			wrapper.make_tree();
 		});
 
 
 	$(wrapper)
 		.find(".layout-side-section")
-		.html('<div class="text-muted">'+ 
-			__('Click on a link to get options to expand get options ') + 
+		.html('<div class="text-muted">'+
+			__('Click on a link to get options to expand get options ') +
 			__('Add') + ' / ' + __('Edit') + ' / '+ __('Delete') + '.</div>')
 
 	wrapper.make_tree = function() {
@@ -26,7 +26,7 @@
 			args: {ctype: ctype},
 			callback: function(r) {
 				var root = r.message[0]["value"];
-				erpnext.sales_chart = new erpnext.SalesChart(ctype, root, 
+				erpnext.sales_chart = new erpnext.SalesChart(ctype, root,
 					$(wrapper)
 						.find(".layout-main-section")
 						.css({
@@ -36,7 +36,7 @@
 			}
 		});
 	}
-	
+
 	wrapper.make_tree();
 }
 
@@ -61,17 +61,17 @@
 					frappe.boot.user.in_create.indexOf(this.ctype) !== -1;
 		me.can_write = frappe.model.can_write(this.ctype);
 		me.can_delete = frappe.model.can_delete(this.ctype);
-		
+
 		this.tree = new frappe.ui.Tree({
-			parent: $(parent), 
+			parent: $(parent),
 			label: root,
 			args: {ctype: ctype},
 			method: 'erpnext.selling.page.sales_browser.sales_browser.get_children',
 			toolbar: [
 				{toggle_btn: true},
 				{
-					label:__("Edit"), 
-					condition: function(node) { 
+					label:__("Edit"),
+					condition: function(node) {
 						return !node.root && me.can_read;
 					},
 					click: function(node) {
@@ -103,44 +103,44 @@
 						});
 					}
 				}
-				
+
 			]
 		});
 	},
 	new_node: function() {
 		var me = this;
-		
+
 		var fields = [
-			{fieldtype:'Data', fieldname: 'name_field', 
+			{fieldtype:'Data', fieldname: 'name_field',
 				label:'New ' + me.ctype + ' Name', reqd:true},
-			{fieldtype:'Select', fieldname:'is_group', label:'Group Node', options:'No\nYes', 
-				description: __("Further nodes can be only created under 'Group' type nodes")}, 
+			{fieldtype:'Select', fieldname:'is_group', label:'Group Node', options:'No\nYes',
+				description: __("Further nodes can be only created under 'Group' type nodes")},
 			{fieldtype:'Button', fieldname:'create_new', label:'Create New' }
 		]
-		
+
 		if(me.ctype == "Sales Person") {
 			fields.splice(-1, 0, {fieldtype:'Link', fieldname:'employee', label:'Employee',
 				options:'Employee', description: __("Please enter Employee Id of this sales parson")});
 		}
-		
+
 		// the dialog
 		var d = new frappe.ui.Dialog({
 			title: __('New ') + __(me.ctype),
 			fields: fields
-		})		
-	
+		})
+
 		d.set_value("is_group", "No");
 		// create
 		$(d.fields_dict.create_new.input).click(function() {
 			var btn = this;
 			var v = d.get_values();
 			if(!v) return;
-			
+
 			var node = me.tree.get_selected_node();
-			
+
 			v.parent = node.label;
 			v.ctype = me.ctype;
-			
+
 			return frappe.call({
 				method: 'erpnext.selling.page.sales_browser.sales_browser.add_node',
 				args: v,
@@ -152,9 +152,9 @@
 							node.toggle_node();
 						}
 					}
-				}	
-			})			
+				}
+			});
 		});
-		d.show();		
+		d.show();
 	},
-});
\ No newline at end of file
+});
diff --git a/erpnext/selling/page/sales_browser/sales_browser.py b/erpnext/selling/page/sales_browser/sales_browser.py
index fcb270e..41d9f19 100644
--- a/erpnext/selling/page/sales_browser/sales_browser.py
+++ b/erpnext/selling/page/sales_browser/sales_browser.py
@@ -11,28 +11,27 @@
 	frappe.local.form_dict['parent_field'] = 'parent_' + ctype.lower().replace(' ', '_')
 	if not frappe.form_dict.get('parent'):
 		frappe.local.form_dict['parent'] = ''
-		
-	return frappe.db.sql("""select name as value, 
+
+	return frappe.db.sql("""select name as value,
 		if(is_group='Yes', 1, 0) as expandable
 		from `tab%(ctype)s`
 		where docstatus < 2
 		and ifnull(%(parent_field)s,'') = "%(parent)s"
 		order by name""" % frappe.local.form_dict, as_dict=1)
-		
+
 @frappe.whitelist()
 def add_node():
-	# 	ctype = frappe.form_dict.get('ctype')
+	ctype = frappe.form_dict.get('ctype')
 	parent_field = 'parent_' + ctype.lower().replace(' ', '_')
 	name_field = ctype.lower().replace(' ', '_') + '_name'
-	
-	doclist = [{
-		"doctype": ctype,
-		"__islocal": 1,
+
+	doc = frappe.new_doc(ctype)
+	doc.update({
 		name_field: frappe.form_dict['name_field'],
 		parent_field: frappe.form_dict['parent'],
 		"is_group": frappe.form_dict['is_group']
-	}]
+	})
 	if ctype == "Sales Person":
-		doclist[0]["employee"] = frappe.form_dict.get('employee')
-		
-	frappe.get_doc(doclist).save()
\ No newline at end of file
+		doc.employee = frappe.form_dict.get('employee')
+
+	doc.save()
diff --git a/erpnext/setup/doctype/customer_group/customer_group.js b/erpnext/setup/doctype/customer_group/customer_group.js
index 0467072..03c5c2b 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.js
+++ b/erpnext/setup/doctype/customer_group/customer_group.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
- 
+
+cur_frm.list_route = "Sales Browser/Customer Group";
+
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 	cur_frm.cscript.set_root_readonly(doc);
 }
@@ -22,5 +24,5 @@
 		filters: {
 			'is_group': "Yes"
 		}
-	} 
-}
\ No newline at end of file
+	}
+}
diff --git a/erpnext/setup/doctype/item_group/item_group.js b/erpnext/setup/doctype/item_group/item_group.js
index 589039e..43a7117 100644
--- a/erpnext/setup/doctype/item_group/item_group.js
+++ b/erpnext/setup/doctype/item_group/item_group.js
@@ -1,6 +1,7 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.list_route = "Sales Browser/Item Group";
 
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 	cur_frm.cscript.set_root_readonly(doc);
@@ -33,4 +34,4 @@
 			['Item Group', 'name', '!=', doc.item_group_name]
 		]
 	}
-}
\ No newline at end of file
+}
diff --git a/erpnext/setup/doctype/sales_person/sales_person.js b/erpnext/setup/doctype/sales_person/sales_person.js
index a87279f..b342485 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.js
+++ b/erpnext/setup/doctype/sales_person/sales_person.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.list_route = "Sales Browser/Sales Person";
+
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 	cur_frm.cscript.set_root_readonly(doc);
 }
@@ -33,4 +35,4 @@
 
 cur_frm.fields_dict.employee.get_query = function(doc, cdt, cdn) {
 	return { query: "erpnext.controllers.queries.employee_query" }
-}
\ No newline at end of file
+}
diff --git a/erpnext/setup/doctype/territory/territory.js b/erpnext/setup/doctype/territory/territory.js
index 4b7b2f6..f870641 100644
--- a/erpnext/setup/doctype/territory/territory.js
+++ b/erpnext/setup/doctype/territory/territory.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.list_route = "Sales Browser/Territory";
+
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 	cur_frm.cscript.set_root_readonly(doc);
 }
@@ -26,7 +28,7 @@
 }
 
 
-// ******************** ITEM Group ******************************** 
+// ******************** ITEM Group ********************************
 cur_frm.fields_dict['target_details'].grid.get_field("item_group").get_query = function(doc, cdt, cdn) {
 	return{
 		filters:{ 'is_group': "No"}