frappe/frappe#478
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py
index 0559559..b3949ff 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py
@@ -18,7 +18,7 @@
 		if cint(self.auto_accounting_for_stock):
 			# set default perpetual account in company
 			for company in frappe.db.sql("select name from tabCompany"):
-				frappe.bean("Company", company[0]).save()
+				frappe.get_doc("Company", company[0]).save()
 			
 			# Create account head for warehouses
 			warehouse_list = frappe.db.sql("select name, company from tabWarehouse", as_dict=1)
@@ -27,5 +27,5 @@
 				frappe.throw(_("Company is missing in following warehouses") + ": \n" + 
 					"\n".join(warehouse_with_no_company))
 			for wh in warehouse_list:
-				wh_bean = frappe.bean("Warehouse", wh.name)
+				wh_bean = frappe.get_doc("Warehouse", wh.name)
 				wh_bean.save()
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/chart_of_accounts/chart_of_accounts.py
index 536b199..3be7c04 100644
--- a/erpnext/accounts/doctype/chart_of_accounts/chart_of_accounts.py
+++ b/erpnext/accounts/doctype/chart_of_accounts/chart_of_accounts.py
@@ -36,7 +36,7 @@
 					child.update(account_properties.get(chart.get("name"), {})\
 						.get(account_name, {}))
 					
-					account = frappe.bean({
+					account = frappe.get_doc({
 						"doctype": "Account",
 						"account_name": account_name,
 						"company": company,
diff --git a/erpnext/accounts/doctype/chart_of_accounts/import_charts.py b/erpnext/accounts/doctype/chart_of_accounts/import_charts.py
index 1d34ab2..fd36bf8 100644
--- a/erpnext/accounts/doctype/chart_of_accounts/import_charts.py
+++ b/erpnext/accounts/doctype/chart_of_accounts/import_charts.py
@@ -13,7 +13,7 @@
 				chart = json.loads(f.read())
 				country = frappe.db.get_value("Country", {"code": fname.split("_", 1)[0]})
 				if country:
-					bean = frappe.bean({
+					bean = frappe.get_doc({
 						"doctype":"Chart of Accounts",
 						"chart_name": chart.get("name"),
 						"source_file": fname,
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index 99aae56..cbb8fd9 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -347,7 +347,7 @@
 @frappe.whitelist()
 def get_payment_entry_from_sales_invoice(sales_invoice):
 	from erpnext.accounts.utils import get_balance_on
-	si = frappe.bean("Sales Invoice", sales_invoice)
+	si = frappe.get_doc("Sales Invoice", sales_invoice)
 	jv = get_payment_entry(si.doc)
 	jv.remark = 'Payment received against Sales Invoice %(name)s. %(remarks)s' % si.fields
 
@@ -365,7 +365,7 @@
 @frappe.whitelist()
 def get_payment_entry_from_purchase_invoice(purchase_invoice):
 	from erpnext.accounts.utils import get_balance_on
-	pi = frappe.bean("Purchase Invoice", purchase_invoice)
+	pi = frappe.get_doc("Purchase Invoice", purchase_invoice)
 	jv = get_payment_entry(pi.doc)
 	jv.remark = 'Payment against Purchase Invoice %(name)s. %(remarks)s' % pi.fields
 	
diff --git a/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
index 0e02e02..20a342d 100644
--- a/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
@@ -9,14 +9,14 @@
 class TestJournalVoucher(unittest.TestCase):
 	def test_journal_voucher_with_against_jv(self):
 		self.clear_account_balance()
-		jv_invoice = frappe.bean(copy=test_records[2])
+		jv_invoice = frappe.get_doc(copy=test_records[2])
 		jv_invoice.insert()
 		jv_invoice.submit()
 		
 		self.assertTrue(not frappe.db.sql("""select name from `tabJournal Voucher Detail`
 			where against_jv=%s""", jv_invoice.name))
 		
-		jv_payment = frappe.bean(copy=test_records[0])
+		jv_payment = frappe.get_doc(copy=test_records[0])
 		jv_payment.doclist[1].against_jv = jv_invoice.name
 		jv_payment.insert()
 		jv_payment.submit()
@@ -37,7 +37,7 @@
 		from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
 		set_perpetual_inventory()
 		
-		jv = frappe.bean(copy=test_records[0])
+		jv = frappe.get_doc(copy=test_records[0])
 		jv.doclist[1].account = "_Test Warehouse - _TC"
 		jv.insert()
 		
@@ -50,7 +50,7 @@
 		frappe.db.set_value("Company", "_Test Company", "monthly_bgt_flag", "Ignore")
 		self.clear_account_balance()
 		
-		jv = frappe.bean(copy=test_records[0])
+		jv = frappe.get_doc(copy=test_records[0])
 		jv.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
 		jv.doclist[2].cost_center = "_Test Cost Center - _TC"
 		jv.doclist[2].debit = 20000.0
@@ -65,7 +65,7 @@
 		frappe.db.set_value("Company", "_Test Company", "monthly_bgt_flag", "Stop")
 		self.clear_account_balance()
 		
-		jv = frappe.bean(copy=test_records[0])
+		jv = frappe.get_doc(copy=test_records[0])
 		jv.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
 		jv.doclist[2].cost_center = "_Test Cost Center - _TC"
 		jv.doclist[2].debit = 20000.0
@@ -83,7 +83,7 @@
 		
 		frappe.db.set_value("Company", "_Test Company", "yearly_bgt_flag", "Stop")
 		
-		jv = frappe.bean(copy=test_records[0])
+		jv = frappe.get_doc(copy=test_records[0])
 		jv.posting_date = "2013-08-12"
 		jv.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
 		jv.doclist[2].cost_center = "_Test Cost Center - _TC"
@@ -100,7 +100,7 @@
 		frappe.db.set_value("Company", "_Test Company", "monthly_bgt_flag", "Stop")
 		self.clear_account_balance()
 		
-		jv = frappe.bean(copy=test_records[0])
+		jv = frappe.get_doc(copy=test_records[0])
 		jv.doclist[1].account = "_Test Account Cost for Goods Sold - _TC"
 		jv.doclist[1].cost_center = "_Test Cost Center - _TC"
 		jv.doclist[1].credit = 30000.0
@@ -110,7 +110,7 @@
 		self.assertTrue(frappe.db.get_value("GL Entry", 
 			{"voucher_type": "Journal Voucher", "voucher_no": jv.name}))
 		
-		jv1 = frappe.bean(copy=test_records[0])
+		jv1 = frappe.get_doc(copy=test_records[0])
 		jv1.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
 		jv1.doclist[2].cost_center = "_Test Cost Center - _TC"
 		jv1.doclist[2].debit = 40000.0
diff --git a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
index b9dca05..9ffe451 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
@@ -12,18 +12,18 @@
 		frappe.db.sql("""delete from `tabGL Entry`""")
 		
 		from erpnext.accounts.doctype.journal_voucher.test_journal_voucher import test_records as jv_records
-		jv = frappe.bean(copy=jv_records[2])
+		jv = frappe.get_doc(copy=jv_records[2])
 		jv.insert()
 		jv.submit()
 		
-		jv1 = frappe.bean(copy=jv_records[0])
+		jv1 = frappe.get_doc(copy=jv_records[0])
 		jv1.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
 		jv1.doclist[2].debit = 600.0
 		jv1.doclist[1].credit = 600.0
 		jv1.insert()
 		jv1.submit()
 		
-		pcv = frappe.bean(copy=test_record)
+		pcv = frappe.get_doc(copy=test_record)
 		pcv.insert()
 		pcv.submit()
 		
diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
index 9d1e5da..c1bd319 100644
--- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
@@ -19,7 +19,7 @@
 			"price": 0, 
 			"discount_percentage": 10, 
 		}]
-		frappe.bean(copy=test_record).insert()
+		frappe.get_doc(copy=test_record).insert()
 		
 		args = frappe._dict({
 			"item_code": "_Test Item",
@@ -38,7 +38,7 @@
 		details = get_item_details(args)
 		self.assertEquals(details.get("discount_percentage"), 10)
 		
-		prule = frappe.bean(copy=test_record)
+		prule = frappe.get_doc(copy=test_record)
 		prule.applicable_for = "Customer"
 		self.assertRaises(MandatoryError, prule.insert)
 		prule.customer = "_Test Customer"
@@ -47,7 +47,7 @@
 		details = get_item_details(args)
 		self.assertEquals(details.get("discount_percentage"), 20)
 		
-		prule = frappe.bean(copy=test_record)
+		prule = frappe.get_doc(copy=test_record)
 		prule.apply_on = "Item Group"
 		prule.item_group = "All Item Groups"
 		prule.discount_percentage = 15
@@ -57,7 +57,7 @@
 		details = get_item_details(args)
 		self.assertEquals(details.get("discount_percentage"), 10)
 		
-		prule = frappe.bean(copy=test_record)
+		prule = frappe.get_doc(copy=test_record)
 		prule.applicable_for = "Campaign"
 		prule.campaign = "_Test Campaign"
 		prule.discount_percentage = 5
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index f3fae30..fa79c37 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -19,7 +19,7 @@
 		set_perpetual_inventory(0)
 		self.assertTrue(not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")))
 		
-		wrapper = frappe.bean(copy=test_records[0])
+		wrapper = frappe.get_doc(copy=test_records[0])
 		wrapper.insert()
 		wrapper.submit()
 		wrapper.load_from_db()
@@ -45,7 +45,7 @@
 		set_perpetual_inventory(1)
 		self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
 		
-		pi = frappe.bean(copy=test_records[1])
+		pi = frappe.get_doc(copy=test_records[1])
 		pi.insert()
 		pi.submit()
 		
@@ -73,7 +73,7 @@
 		set_perpetual_inventory()
 		self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
 		
-		pi = frappe.bean(copy=test_records[1])
+		pi = frappe.get_doc(copy=test_records[1])
 		pi.doclist[1].item_code = "_Test Non Stock Item"
 		pi.doclist[1].expense_account = "_Test Account Cost for Goods Sold - _TC"
 		pi.doclist.pop(2)
@@ -99,7 +99,7 @@
 		set_perpetual_inventory(0)
 			
 	def test_purchase_invoice_calculation(self):
-		wrapper = frappe.bean(copy=test_records[0])
+		wrapper = frappe.get_doc(copy=test_records[0])
 		wrapper.insert()
 		wrapper.load_from_db()
 		
@@ -132,7 +132,7 @@
 			self.assertEqual(tax.total, expected_values[i][2])
 			
 	def test_purchase_invoice_with_subcontracted_item(self):
-		wrapper = frappe.bean(copy=test_records[0])
+		wrapper = frappe.get_doc(copy=test_records[0])
 		wrapper.doclist[1].item_code = "_Test FG Item"
 		wrapper.insert()
 		wrapper.load_from_db()
@@ -169,11 +169,11 @@
 		from erpnext.accounts.doctype.journal_voucher.test_journal_voucher \
 			import test_records as jv_test_records
 			
-		jv = frappe.bean(copy=jv_test_records[1])
+		jv = frappe.get_doc(copy=jv_test_records[1])
 		jv.insert()
 		jv.submit()
 		
-		pi = frappe.bean(copy=test_records[0])
+		pi = frappe.get_doc(copy=test_records[0])
 		pi.append("advance_allocation_details", {
 			"journal_voucher": jv.name,
 			"jv_detail_no": jv.doclist[1].name,
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 449fca0..ccdd99f 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -156,7 +156,7 @@
 	def update_time_log_batch(self, sales_invoice):
 		for d in self.doclist.get({"doctype":"Sales Invoice Item"}):
 			if d.time_log_batch:
-				tlb = frappe.bean("Time Log Batch", d.time_log_batch)
+				tlb = frappe.get_doc("Time Log Batch", d.time_log_batch)
 				tlb.sales_invoice = sales_invoice
 				tlb.update_after_submit()
 
@@ -672,7 +672,7 @@
 				where posting_date=%s and recurring_id=%s and docstatus=1""",
 				(next_date, recurring_id)):
 			try:
-				ref_wrapper = frappe.bean('Sales Invoice', ref_invoice)
+				ref_wrapper = frappe.get_doc('Sales Invoice', ref_invoice)
 				new_invoice_wrapper = make_new_invoice(ref_wrapper, next_date)
 				send_notification(new_invoice_wrapper)
 				if commit:
@@ -798,7 +798,7 @@
 	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
-		bean = frappe.bean(target)
+		bean = frappe.get_doc(target)
 		bean.run_method("onload_post_render")
 		
 	def update_item(source_doc, target_doc, source_parent):
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 740e752..87c8923 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -10,29 +10,29 @@
 
 class TestSalesInvoice(unittest.TestCase):
 	def make(self):
-		w = frappe.bean(copy=test_records[0])
+		w = frappe.get_doc(copy=test_records[0])
 		w.is_pos = 0
 		w.insert()
 		w.submit()
 		return w
 		
 	def test_double_submission(self):
-		w = frappe.bean(copy=test_records[0])
+		w = frappe.get_doc(copy=test_records[0])
 		w.docstatus = '0'
 		w.insert()
 		
 		w2 = [d for d in w.doclist]
 		w.submit()
 		
-		w = frappe.bean(w2)
+		w = frappe.get_doc(w2)
 		self.assertRaises(DocstatusTransitionError, w.submit)
 		
 	def test_timestamp_change(self):
-		w = frappe.bean(copy=test_records[0])
+		w = frappe.get_doc(copy=test_records[0])
 		w.docstatus = '0'
 		w.insert()
 
-		w2 = frappe.bean([d.fields.copy() for d in w.doclist])
+		w2 = frappe.get_doc([d.fields.copy() for d in w.doclist])
 		
 		import time
 		time.sleep(1)
@@ -43,7 +43,7 @@
 		self.assertRaises(TimestampMismatchError, w2.save)
 		
 	def test_sales_invoice_calculation_base_currency(self):
-		si = frappe.bean(copy=test_records[2])
+		si = frappe.get_doc(copy=test_records[2])
 		si.insert()
 		
 		expected_values = {
@@ -87,7 +87,7 @@
 		self.assertEquals(si.grand_total_export, 1627.05)
 		
 	def test_sales_invoice_calculation_export_currency(self):
-		si = frappe.bean(copy=test_records[2])
+		si = frappe.get_doc(copy=test_records[2])
 		si.currency = "USD"
 		si.conversion_rate = 50
 		si.doclist[1].rate = 1
@@ -137,7 +137,7 @@
 		self.assertEquals(si.grand_total_export, 32.54)
 
 	def test_sales_invoice_discount_amount(self):
-		si = frappe.bean(copy=test_records[3])
+		si = frappe.get_doc(copy=test_records[3])
 		si.discount_amount = 104.95
 		si.append("other_charges", {
 			"doctype": "Sales Taxes and Charges",
@@ -192,7 +192,7 @@
 		self.assertEquals(si.grand_total_export, 1500)
 
 	def test_discount_amount_gl_entry(self):
-		si = frappe.bean(copy=test_records[3])
+		si = frappe.get_doc(copy=test_records[3])
 		si.discount_amount = 104.95
 		si.append("other_charges", {
 			"doctype": "Sales Taxes and Charges",
@@ -240,7 +240,7 @@
 		self.assertFalse(gle)
 
 	def test_inclusive_rate_validations(self):
-		si = frappe.bean(copy=test_records[2])
+		si = frappe.get_doc(copy=test_records[2])
 		for i, tax in enumerate(si.get("other_charges")):
 			tax.idx = i+1
 		
@@ -258,7 +258,7 @@
 		
 	def test_sales_invoice_calculation_base_currency_with_tax_inclusive_price(self):
 		# prepare
-		si = frappe.bean(copy=test_records[3])
+		si = frappe.get_doc(copy=test_records[3])
 		si.insert()
 		
 		expected_values = {
@@ -303,7 +303,7 @@
 		
 	def test_sales_invoice_calculation_export_currency_with_tax_inclusive_price(self):
 		# prepare
-		si = frappe.bean(copy=test_records[3])
+		si = frappe.get_doc(copy=test_records[3])
 		si.currency = "USD"
 		si.conversion_rate = 50
 		si.doclist[1].price_list_rate = 55.56
@@ -365,7 +365,7 @@
 		from erpnext.accounts.doctype.journal_voucher.test_journal_voucher \
 			import test_records as jv_test_records
 			
-		jv = frappe.bean(frappe.copy_doc(jv_test_records[0]))
+		jv = frappe.get_doc(frappe.copy_doc(jv_test_records[0]))
 		jv.doclist[1].against_invoice = w.name
 		jv.insert()
 		jv.submit()
@@ -378,10 +378,10 @@
 			561.8)
 			
 	def test_time_log_batch(self):
-		tlb = frappe.bean("Time Log Batch", "_T-Time Log Batch-00001")
+		tlb = frappe.get_doc("Time Log Batch", "_T-Time Log Batch-00001")
 		tlb.submit()
 		
-		si = frappe.bean(frappe.copy_doc(test_records[0]))
+		si = frappe.get_doc(frappe.copy_doc(test_records[0]))
 		si.doclist[1].time_log_batch = "_T-Time Log Batch-00001"
 		si.insert()
 		si.submit()
@@ -403,7 +403,7 @@
 	def test_sales_invoice_gl_entry_without_aii(self):
 		self.clear_stock_account_balance()
 		set_perpetual_inventory(0)
-		si = frappe.bean(copy=test_records[1])
+		si = frappe.get_doc(copy=test_records[1])
 		si.insert()
 		si.submit()
 		
@@ -447,7 +447,7 @@
 		pos[0]["cash_bank_account"] = "_Test Account Bank Account - _TC"
 		pos[0]["paid_amount"] = 600.0
 
-		si = frappe.bean(copy=pos)
+		si = frappe.get_doc(copy=pos)
 		si.insert()
 		si.submit()
 		
@@ -500,7 +500,7 @@
 		# insert purchase receipt
 		from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import test_records \
 			as pr_test_records
-		pr = frappe.bean(copy=pr_test_records[0])
+		pr = frappe.get_doc(copy=pr_test_records[0])
 		pr.naming_series = "_T-Purchase Receipt-"
 		pr.doclist[1].warehouse = "_Test Warehouse No Account - _TC"
 		pr.insert()
@@ -511,7 +511,7 @@
 		si_doclist[0]["posting_time"] = "12:05"
 		si_doclist[1]["warehouse"] = "_Test Warehouse No Account - _TC"
 
-		si = frappe.bean(copy=si_doclist)
+		si = frappe.get_doc(copy=si_doclist)
 		si.insert()
 		si.submit()
 		
@@ -553,7 +553,7 @@
 				
 		si_copy = frappe.copy_doc(test_records[1])
 		si_copy[1]["item_code"] = None
-		si = frappe.bean(si_copy)		
+		si = frappe.get_doc(si_copy)		
 		si.insert()
 		si.submit()
 		
@@ -580,7 +580,7 @@
 		set_perpetual_inventory()
 		si_copy = frappe.copy_doc(test_records[1])
 		si_copy[1]["item_code"] = "_Test Non Stock Item"
-		si = frappe.bean(si_copy)
+		si = frappe.get_doc(si_copy)
 		si.insert()
 		si.submit()
 		
@@ -605,7 +605,7 @@
 	def _insert_purchase_receipt(self):
 		from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import test_records \
 			as pr_test_records
-		pr = frappe.bean(copy=pr_test_records[0])
+		pr = frappe.get_doc(copy=pr_test_records[0])
 		pr.naming_series = "_T-Purchase Receipt-"
 		pr.insert()
 		pr.submit()
@@ -613,7 +613,7 @@
 	def _insert_delivery_note(self):
 		from erpnext.stock.doctype.delivery_note.test_delivery_note import test_records \
 			as dn_test_records
-		dn = frappe.bean(copy=dn_test_records[0])
+		dn = frappe.get_doc(copy=dn_test_records[0])
 		dn.naming_series = "_T-Delivery Note-"
 		dn.insert()
 		dn.submit()
@@ -624,18 +624,18 @@
 			import test_records as pos_setting_test_records
 		frappe.db.sql("""delete from `tabPOS Setting`""")
 		
-		ps = frappe.bean(copy=pos_setting_test_records[0])
+		ps = frappe.get_doc(copy=pos_setting_test_records[0])
 		ps.insert()
 		
 	def test_sales_invoice_with_advance(self):
 		from erpnext.accounts.doctype.journal_voucher.test_journal_voucher \
 			import test_records as jv_test_records
 			
-		jv = frappe.bean(copy=jv_test_records[0])
+		jv = frappe.get_doc(copy=jv_test_records[0])
 		jv.insert()
 		jv.submit()
 		
-		si = frappe.bean(copy=test_records[0])
+		si = frappe.get_doc(copy=test_records[0])
 		si.append("advance_adjustment_details", {
 			"doctype": "Sales Invoice Advance",
 			"journal_voucher": jv.name,
@@ -665,7 +665,7 @@
 		from frappe.utils import get_first_day, get_last_day, add_to_date, nowdate, getdate
 		from erpnext.accounts.utils import get_fiscal_year
 		today = nowdate()
-		base_si = frappe.bean(copy=test_records[0])
+		base_si = frappe.get_doc(copy=test_records[0])
 		base_si.update({
 			"convert_into_recurring_invoice": 1,
 			"recurring_type": "Monthly",
@@ -678,13 +678,13 @@
 		})
 		
 		# monthly
-		si1 = frappe.bean(copy=base_si.doclist)
+		si1 = frappe.get_doc(copy=base_si.doclist)
 		si1.insert()
 		si1.submit()
 		self._test_recurring_invoice(si1, True)
 		
 		# monthly without a first and last day period
-		si2 = frappe.bean(copy=base_si.doclist)
+		si2 = frappe.get_doc(copy=base_si.doclist)
 		si2.update({
 			"invoice_period_from_date": today,
 			"invoice_period_to_date": add_to_date(today, days=30)
@@ -694,7 +694,7 @@
 		self._test_recurring_invoice(si2, False)
 		
 		# quarterly
-		si3 = frappe.bean(copy=base_si.doclist)
+		si3 = frappe.get_doc(copy=base_si.doclist)
 		si3.update({
 			"recurring_type": "Quarterly",
 			"invoice_period_from_date": get_first_day(today),
@@ -705,7 +705,7 @@
 		self._test_recurring_invoice(si3, True)
 		
 		# quarterly without a first and last day period
-		si4 = frappe.bean(copy=base_si.doclist)
+		si4 = frappe.get_doc(copy=base_si.doclist)
 		si4.update({
 			"recurring_type": "Quarterly",
 			"invoice_period_from_date": today,
@@ -716,7 +716,7 @@
 		self._test_recurring_invoice(si4, False)
 		
 		# yearly
-		si5 = frappe.bean(copy=base_si.doclist)
+		si5 = frappe.get_doc(copy=base_si.doclist)
 		si5.update({
 			"recurring_type": "Yearly",
 			"invoice_period_from_date": get_first_day(today),
@@ -727,7 +727,7 @@
 		self._test_recurring_invoice(si5, True)
 		
 		# yearly without a first and last day period
-		si6 = frappe.bean(copy=base_si.doclist)
+		si6 = frappe.get_doc(copy=base_si.doclist)
 		si6.update({
 			"recurring_type": "Yearly",
 			"invoice_period_from_date": today,
@@ -738,7 +738,7 @@
 		self._test_recurring_invoice(si6, False)
 		
 		# change posting date but keep recuring day to be today
-		si7 = frappe.bean(copy=base_si.doclist)
+		si7 = frappe.get_doc(copy=base_si.doclist)
 		si7.update({
 			"posting_date": add_to_date(today, days=-1)
 		})
@@ -771,7 +771,7 @@
 			
 			self.assertEquals(i+2, len(recurred_invoices))
 			
-			new_si = frappe.bean("Sales Invoice", recurred_invoices[0][0])
+			new_si = frappe.get_doc("Sales Invoice", recurred_invoices[0][0])
 			
 			for fieldname in ["convert_into_recurring_invoice", "recurring_type",
 				"repeat_on_day_of_month", "notification_email_address"]:
@@ -811,7 +811,7 @@
 		se = make_serialized_item()
 		serial_nos = get_serial_nos(se.doclist[1].serial_no)
 		
-		si = frappe.bean(copy=test_records[0])
+		si = frappe.get_doc(copy=test_records[0])
 		si.update_stock = 1
 		si.doclist[1].item_code = "_Test Serialized Item With Series"
 		si.doclist[1].qty = 1
@@ -845,11 +845,11 @@
 		se = make_serialized_item()
 		serial_nos = get_serial_nos(se.doclist[1].serial_no)
 		
-		sr = frappe.bean("Serial No", serial_nos[0])
+		sr = frappe.get_doc("Serial No", serial_nos[0])
 		sr.status = "Not Available"
 		sr.save()
 		
-		si = frappe.bean(copy=test_records[0])
+		si = frappe.get_doc(copy=test_records[0])
 		si.update_stock = 1
 		si.doclist[1].item_code = "_Test Serialized Item With Series"
 		si.doclist[1].qty = 1
diff --git a/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
index 4085347..fe763e7 100644
--- a/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
+++ b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
@@ -7,12 +7,12 @@
 
 class TestShippingRule(unittest.TestCase):
 	def test_from_greater_than_to(self):
-		shipping_rule = frappe.bean(copy=test_records[0])
+		shipping_rule = frappe.get_doc(copy=test_records[0])
 		shipping_rule.doclist[1].from_value = 101
 		self.assertRaises(FromGreaterThanToError, shipping_rule.insert)
 		
 	def test_many_zero_to_values(self):
-		shipping_rule = frappe.bean(copy=test_records[0])
+		shipping_rule = frappe.get_doc(copy=test_records[0])
 		shipping_rule.doclist[1].to_value = 0
 		self.assertRaises(ManyBlankToValuesError, shipping_rule.insert)
 		
@@ -24,7 +24,7 @@
 			((50, 150), (25, 175)),
 			((50, 150), (50, 150)),
 		]:
-			shipping_rule = frappe.bean(copy=test_records[0])
+			shipping_rule = frappe.get_doc(copy=test_records[0])
 			shipping_rule.doclist[1].from_value = range_a[0]
 			shipping_rule.doclist[1].to_value = range_a[1]
 			shipping_rule.doclist[2].from_value = range_b[0]
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index f2eef28..2531e17 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -77,7 +77,7 @@
 	
 def make_entry(args, adv_adj, update_outstanding):
 	args.update({"doctype": "GL Entry"})
-	gle = frappe.bean([args])
+	gle = frappe.get_doc([args])
 	gle.ignore_permissions = 1
 	gle.insert()
 	gle.run_method("on_update_with_args", adv_adj, update_outstanding)
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 1557e3f..7804734 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -25,7 +25,7 @@
 	if not ignore_permissions and not frappe.has_permission(party_type, "read", party):
 		frappe.throw("Not Permitted", frappe.PermissionError)
 
-	party_bean = frappe.bean(party_type, party)
+	party_bean = frappe.get_doc(party_type, party)
 	party = party_bean.doc
 
 	set_address_details(out, party, party_type)
@@ -166,7 +166,7 @@
 			frappe.throw(_("Please enter Account Receivable/Payable group in company master"))
 		
 		# create
-		account = frappe.bean({
+		account = frappe.get_doc({
 			"doctype": "Account",
 			'account_name': party,
 			'parent_account': parent_account, 
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index db13d62..e0c1e3a 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -103,7 +103,7 @@
 		args = frappe.local.form_dict
 		args.pop("cmd")
 		
-	ac = frappe.bean(args)
+	ac = frappe.get_doc(args)
 	ac.doctype = "Account"
 	ac.old_parent = ""
 	ac.freeze_account = "No"
@@ -116,7 +116,7 @@
 		args = frappe.local.form_dict
 		args.pop("cmd")
 		
-	cc = frappe.bean(args)
+	cc = frappe.get_doc(args)
 	cc.doctype = "Cost Center"
 	cc.old_parent = ""
 	cc.insert()
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 066afe0..ee68134 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -185,7 +185,7 @@
 	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
-		bean = frappe.bean(target)
+		bean = frappe.get_doc(target)
 		bean.run_method("set_missing_values")
 
 	def update_item(obj, target, source_parent):
@@ -224,7 +224,7 @@
 	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
-		bean = frappe.bean(target)
+		bean = frappe.get_doc(target)
 		bean.run_method("set_missing_values")
 
 	def update_item(obj, target, source_parent):
diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
index 1bc7c54..997d6dc 100644
--- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
@@ -11,12 +11,12 @@
 	def test_make_purchase_receipt(self):		
 		from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt
 
-		po = frappe.bean(copy=test_records[0]).insert()
+		po = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_purchase_receipt, 
 			po.name)
 
-		po = frappe.bean("Purchase Order", po.name)
+		po = frappe.get_doc("Purchase Order", po.name)
 		po.submit()
 		
 		pr = make_purchase_receipt(po.name)
@@ -26,7 +26,7 @@
 		self.assertEquals(len(pr), len(test_records[0]))
 		
 		pr[0]["naming_series"] = "_T-Purchase Receipt-"
-		pr_bean = frappe.bean(pr)
+		pr_bean = frappe.get_doc(pr)
 		pr_bean.insert()
 			
 	def test_ordered_qty(self):
@@ -34,12 +34,12 @@
 		
 		from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt
 
-		po = frappe.bean(copy=test_records[0]).insert()
+		po = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_purchase_receipt, 
 			po.name)
 
-		po = frappe.bean("Purchase Order", po.name)
+		po = frappe.get_doc("Purchase Order", po.name)
 		po.is_subcontracted = "No"
 		po.doclist[1].item_code = "_Test Item"
 		po.submit()
@@ -54,7 +54,7 @@
 		pr[0]["posting_date"] = "2013-05-12"
 		pr[0]["naming_series"] = "_T-Purchase Receipt-"
 		pr[1]["qty"] = 4.0
-		pr_bean = frappe.bean(pr)
+		pr_bean = frappe.get_doc(pr)
 		pr_bean.insert()
 		pr_bean.submit()
 		
@@ -67,7 +67,7 @@
 		pr1[0]["naming_series"] = "_T-Purchase Receipt-"
 		pr1[0]["posting_date"] = "2013-05-12"
 		pr1[1]["qty"] = 8
-		pr1_bean = frappe.bean(pr1)
+		pr1_bean = frappe.get_doc(pr1)
 		pr1_bean.insert()
 		pr1_bean.submit()
 		
@@ -77,12 +77,12 @@
 	def test_make_purchase_invoice(self):
 		from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_invoice
 
-		po = frappe.bean(copy=test_records[0]).insert()
+		po = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_purchase_invoice, 
 			po.name)
 
-		po = frappe.bean("Purchase Order", po.name)
+		po = frappe.get_doc("Purchase Order", po.name)
 		po.submit()
 		pi = make_purchase_invoice(po.name)
 		
@@ -90,23 +90,23 @@
 		self.assertEquals(len(pi), len(test_records[0]))
 		pi[0]["posting_date"] = "2013-05-12"
 		pi[0]["bill_no"] = "NA"
-		frappe.bean(pi).insert()
+		frappe.get_doc(pi).insert()
 		
 	def test_subcontracting(self):
-		po = frappe.bean(copy=test_records[0])
+		po = frappe.get_doc(copy=test_records[0])
 		po.insert()
 		self.assertEquals(len(po.get("po_raw_material_details")), 2)
 
 	def test_warehouse_company_validation(self):
 		from erpnext.stock.utils import InvalidWarehouseCompany
-		po = frappe.bean(copy=test_records[0])
+		po = frappe.get_doc(copy=test_records[0])
 		po.company = "_Test Company 1"
 		po.conversion_rate = 0.0167
 		self.assertRaises(InvalidWarehouseCompany, po.insert)
 
 	def test_uom_integer_validation(self):
 		from erpnext.utilities.transaction_base import UOMMustBeIntegerError
-		po = frappe.bean(copy=test_records[0])
+		po = frappe.get_doc(copy=test_records[0])
 		po.doclist[1].qty = 3.4
 		self.assertRaises(UOMMustBeIntegerError, po.insert)
 
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index ef48c79..6fced37 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -56,7 +56,7 @@
 	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
-		bean = frappe.bean(target)
+		bean = frappe.get_doc(target)
 		bean.run_method("set_missing_values")
 		bean.run_method("get_schedule_dates")
 
diff --git a/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
index 3e5461a..fc1d25d 100644
--- a/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
@@ -11,12 +11,12 @@
 	def test_make_purchase_order(self):
 		from erpnext.buying.doctype.supplier_quotation.supplier_quotation import make_purchase_order
 
-		sq = frappe.bean(copy=test_records[0]).insert()
+		sq = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_purchase_order, 
 			sq.name)
 
-		sq = frappe.bean("Supplier Quotation", sq.name)
+		sq = frappe.get_doc("Supplier Quotation", sq.name)
 		sq.submit()
 		po = make_purchase_order(sq.name)
 		
@@ -29,7 +29,7 @@
 			if doc.get("item_code"):
 				doc["schedule_date"] = "2013-04-12"
 
-		frappe.bean(po).insert()
+		frappe.get_doc(po).insert()
 		
 test_records = [
 	[
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 7ebd1af..4801c75 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -118,7 +118,7 @@
 			tax_doctype = self.meta.get_field(tax_parentfield).options
 			
 			from frappe.model import default_fields
-			tax_master = frappe.bean(tax_master_doctype, self.get(tax_master_field))
+			tax_master = frappe.get_doc(tax_master_doctype, self.get(tax_master_field))
 			
 			for i, tax in enumerate(tax_master.get(tax_parentfield)):
 				for fieldname in default_fields:
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 5495e6f..da4d939 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -35,7 +35,7 @@
 		if self.customer:
 			from erpnext.accounts.party import _get_party_details
 			self.update_if_missing(_get_party_details(self.customer,
-				ignore_permissions=self.bean.ignore_permissions))
+				ignore_permissions=self.ignore_permissions))
 		
 		elif self.lead:
 			from erpnext.selling.doctype.lead.lead import get_lead_details
@@ -47,7 +47,7 @@
 										
 	def apply_shipping_rule(self):
 		if self.shipping_rule:
-			shipping_rule = frappe.bean("Shipping Rule", self.shipping_rule)
+			shipping_rule = frappe.get_doc("Shipping Rule", self.shipping_rule)
 			value = self.net_total
 			
 			# TODO
@@ -274,7 +274,7 @@
 			total_outstanding = total_outstanding[0][0] if total_outstanding else 0
 			
 			outstanding_including_current = flt(total_outstanding) + flt(grand_total)
-			frappe.bean('Account', customer_account).run_method("check_credit_limit", 
+			frappe.get_doc('Account', customer_account).run_method("check_credit_limit", 
 				outstanding_including_current)
 				
 	def validate_max_discount(self):
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 0291eb6..914d80d 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -101,7 +101,7 @@
 			if not user_wrapper.user_image == self.image:
 				user_wrapper.user_image = self.image
 				try:
-					frappe.doc({
+					frappe.get_doc({
 						"doctype": "File Data",
 						"file_name": self.image,
 						"attached_to_doctype": "User",
diff --git a/erpnext/hr/doctype/job_applicant/get_job_applications.py b/erpnext/hr/doctype/job_applicant/get_job_applications.py
index c384ccc..a94325d 100644
--- a/erpnext/hr/doctype/job_applicant/get_job_applications.py
+++ b/erpnext/hr/doctype/job_applicant/get_job_applications.py
@@ -9,7 +9,7 @@
 
 class JobsMailbox(POP3Mailbox):	
 	def setup(self, args=None):
-		self.settings = args or frappe.doc("Jobs Email Settings", "Jobs Email Settings")
+		self.settings = args or frappe.get_doc("Jobs Email Settings", "Jobs Email Settings")
 		
 	def process_message(self, mail):
 		if mail.from_email == self.settings.email_id:
@@ -18,7 +18,7 @@
 		name = frappe.db.get_value("Job Applicant", {"email_id": mail.from_email}, 
 			"name")
 		if name:
-			applicant = frappe.bean("Job Applicant", name)
+			applicant = frappe.get_doc("Job Applicant", name)
 			if applicant.status!="Rejected":
 				applicant.status = "Open"
 			applicant.ignore_permissions = True
@@ -26,7 +26,7 @@
 		else:
 			name = (mail.from_real_name and (mail.from_real_name + " - ") or "") \
 				+ mail.from_email
-			applicant = frappe.bean({
+			applicant = frappe.get_doc({
 				"creation": mail.date,
 				"doctype":"Job Applicant",
 				"applicant_name": name,
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index de8bff7..f2f95bf 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -18,7 +18,7 @@
 class LeaveApplication(DocListController):
 	def setup(self):
 		if frappe.db.exists(self.doctype, self.name):
-			self.previous_doc = frappe.doc(self.doctype, self.name)
+			self.previous_doc = frappe.get_doc(self.doctype, self.name)
 		else:
 			self.previous_doc = None
 		
@@ -147,7 +147,7 @@
 				(self.leave_type, max_days))
 			
 	def validate_leave_approver(self):
-		employee = frappe.bean("Employee", self.employee)
+		employee = frappe.get_doc("Employee", self.employee)
 		leave_approvers = [l.leave_approver for l in 
 			employee.get("employee_leave_approvers")]
 			
@@ -166,7 +166,7 @@
 				raise_exception=LeaveApproverIdentityError)
 			
 	def notify_employee(self, status):
-		employee = frappe.doc("Employee", self.employee)
+		employee = frappe.get_doc("Employee", self.employee)
 		if not employee.user_id:
 			return
 			
@@ -186,7 +186,7 @@
 		})
 		
 	def notify_leave_approver(self):
-		employee = frappe.doc("Employee", self.employee)
+		employee = frappe.get_doc("Employee", self.employee)
 		
 		def _get_message(url=False):
 			name = self.name
diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py
index 26cc093..3ed9d56 100644
--- a/erpnext/hr/doctype/leave_application/test_leave_application.py
+++ b/erpnext/hr/doctype/leave_application/test_leave_application.py
@@ -23,7 +23,7 @@
 	def _add_employee_leave_approver(self, employee, leave_approver):
 		temp_session_user = frappe.session.user
 		frappe.set_user("Administrator")
-		employee = frappe.bean("Employee", employee)
+		employee = frappe.get_doc("Employee", employee)
 		employee.append("employee_leave_approvers", {
 			"doctype": "Employee Leave Approver",
 			"leave_approver": leave_approver
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.py b/erpnext/hr/doctype/salary_manager/salary_manager.py
index cd11598..0079b2e 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.py
+++ b/erpnext/hr/doctype/salary_manager/salary_manager.py
@@ -86,7 +86,7 @@
 			if not frappe.db.sql("""select name from `tabSalary Slip` 
 					where docstatus!= 2 and employee = %s and month = %s and fiscal_year = %s and company = %s
 					""", (emp[0], self.month, self.fiscal_year, self.company)):
-				ss = frappe.bean({
+				ss = frappe.get_doc({
 					"doctype": "Salary Slip",
 					"fiscal_year": self.fiscal_year,
 					"employee": emp[0],
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index e991a8a..c14901a 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -9,7 +9,7 @@
 		frappe.db.sql("""delete from `tabLeave Application`""")
 		frappe.db.sql("""delete from `tabSalary Slip`""")
 		from erpnext.hr.doctype.leave_application.test_leave_application import test_records as leave_applications
-		la = frappe.bean(copy=leave_applications[4])
+		la = frappe.get_doc(copy=leave_applications[4])
 		la.insert()
 		la.status = "Approved"
 		la.submit()
@@ -19,7 +19,7 @@
 		
 	def test_salary_slip_with_holidays_included(self):
 		frappe.db.set_value("HR Settings", "HR Settings", "include_holidays_in_total_working_days", 1)
-		ss = frappe.bean(copy=test_records[0])
+		ss = frappe.get_doc(copy=test_records[0])
 		ss.insert()
 		self.assertEquals(ss.total_days_in_month, 31)
 		self.assertEquals(ss.payment_days, 30)
@@ -31,7 +31,7 @@
 		self.assertEquals(ss.net_pay, 14867.74)
 		
 	def test_salary_slip_with_holidays_excluded(self):
-		ss = frappe.bean(copy=test_records[0])
+		ss = frappe.get_doc(copy=test_records[0])
 		ss.insert()
 		self.assertEquals(ss.total_days_in_month, 30)
 		self.assertEquals(ss.payment_days, 29)
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 4c01073..09956d1 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -77,7 +77,7 @@
 	from frappe.model.mapper import get_mapped_doc
 	
 	def postprocess(source, target):
-		sal_slip = frappe.bean(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")
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index e3199f9..237c0cd 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -134,11 +134,11 @@
 			})["rate"]
 		
 		if self.docstatus == 0:
-			frappe.bean(self.doclist).save()
+			frappe.get_doc(self.doclist).save()
 		elif self.docstatus == 1:
 			self.calculate_cost()
 			self.update_exploded_items()
-			frappe.bean(self.doclist).update_after_submit()
+			frappe.get_doc(self.doclist).update_after_submit()
 
 	def get_bom_unitcost(self, bom_no):
 		bom = frappe.db.sql("""select name, total_cost/quantity as unit_cost from `tabBOM`
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index a22088a..f878cd8 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -152,7 +152,7 @@
 
 @frappe.whitelist()
 def make_stock_entry(production_order_id, purpose):
-	production_order = frappe.bean("Production Order", production_order_id)
+	production_order = frappe.get_doc("Production Order", production_order_id)
 		
 	stock_entry = frappe.new_bean("Stock Entry")
 	stock_entry.purpose = purpose
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index 73b7bcf..b3d655a 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -17,22 +17,22 @@
 		frappe.db.sql("""delete from `tabBin`""")
 		frappe.db.sql("""delete from `tabGL Entry`""")
 		
-		pro_bean = frappe.bean(copy = test_records[0])
+		pro_bean = frappe.get_doc(copy = test_records[0])
 		pro_bean.insert()
 		pro_bean.submit()
 		
 		from erpnext.stock.doctype.stock_entry.test_stock_entry import test_records as se_test_records
-		mr1 = frappe.bean(copy = se_test_records[0])
+		mr1 = frappe.get_doc(copy = se_test_records[0])
 		mr1.insert()
 		mr1.submit()
 		
-		mr2 = frappe.bean(copy = se_test_records[0])
+		mr2 = frappe.get_doc(copy = se_test_records[0])
 		mr2.doclist[1].item_code = "_Test Item Home Desktop 100"
 		mr2.insert()
 		mr2.submit()
 		
 		stock_entry = make_stock_entry(pro_bean.name, "Manufacture/Repack")
-		stock_entry = frappe.bean(stock_entry)
+		stock_entry = frappe.get_doc(stock_entry)
 		stock_entry.fiscal_year = "_Test Fiscal Year 2013"
 		stock_entry.fg_completed_qty = 4
 		stock_entry.posting_date = "2013-05-12"
@@ -52,7 +52,7 @@
 		pro_order = self.test_planned_qty()
 		
 		stock_entry = make_stock_entry(pro_order, "Manufacture/Repack")
-		stock_entry = frappe.bean(stock_entry)
+		stock_entry = frappe.get_doc(stock_entry)
 		stock_entry.posting_date = "2013-05-12"
 		stock_entry.fiscal_year = "_Test Fiscal Year 2013"
 		stock_entry.fg_completed_qty = 15
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index cdda05e..39a0d57 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -365,7 +365,7 @@
 		purchase_request_list = []
 		if items_to_be_requested:
 			for item in items_to_be_requested:
-				item_wrapper = frappe.bean("Item", item)
+				item_wrapper = frappe.get_doc("Item", item)
 				pr_doc = frappe.get_doc({
 					"doctype": "Material Request",
 					"__islocal": 1,
diff --git a/erpnext/patches/4_0/customer_discount_to_pricing_rule.py b/erpnext/patches/4_0/customer_discount_to_pricing_rule.py
index 1566301..51719c5 100644
--- a/erpnext/patches/4_0/customer_discount_to_pricing_rule.py
+++ b/erpnext/patches/4_0/customer_discount_to_pricing_rule.py
@@ -17,7 +17,7 @@
 			else:
 				item_group = d.item_group
 				
-			frappe.bean([{
+			frappe.get_doc([{
 				"doctype": "Pricing Rule",
 				"apply_on": "Item Group",
 				"item_group": item_group,
diff --git a/erpnext/patches/4_0/fix_contact_address.py b/erpnext/patches/4_0/fix_contact_address.py
index fe33230..91d1a0b 100644
--- a/erpnext/patches/4_0/fix_contact_address.py
+++ b/erpnext/patches/4_0/fix_contact_address.py
@@ -4,8 +4,8 @@
 	frappe.reload_doc("website", "doctype", "contact_us_settings")
 	address = frappe.db.get_value("Contact Us Settings", None, "address")
 	if address:
-		address = frappe.doc("Address", address)
-		contact = frappe.bean("Contact Us Settings", "Contact Us Settings")
+		address = frappe.get_doc("Address", address)
+		contact = frappe.get_doc("Contact Us Settings", "Contact Us Settings")
 		for f in ("address_title", "address_line1", "address_line2", "city", "state", "country", "pincode"):
 			contact.set(f, address.get(f))
 		
diff --git a/erpnext/patches/4_0/split_email_settings.py b/erpnext/patches/4_0/split_email_settings.py
index 6f4395b..40aad39 100644
--- a/erpnext/patches/4_0/split_email_settings.py
+++ b/erpnext/patches/4_0/split_email_settings.py
@@ -8,13 +8,13 @@
 	frappe.reload_doc("core", "doctype", "outgoing_email_settings")
 	frappe.reload_doc("support", "doctype", "support_email_settings")
 	
-	email_settings = frappe.bean("Email Settings")
+	email_settings = frappe.get_doc("Email Settings")
 	map_outgoing_email_settings(email_settings)
 	map_support_email_settings(email_settings)
 	frappe.delete_doc("Doctype", "Email Settings")
 	
 def map_outgoing_email_settings(email_settings):
-	outgoing_email_settings = frappe.bean("Outgoing Email Settings")
+	outgoing_email_settings = frappe.get_doc("Outgoing Email Settings")
 	for fieldname in (("outgoing_mail_server", "mail_server"), 
 		"use_ssl", "mail_port", "mail_login", "mail_password",
 		"always_use_login_id_as_sender",
@@ -30,7 +30,7 @@
 	outgoing_email_settings.save()
 	
 def map_support_email_settings(email_settings):
-	support_email_settings = frappe.bean("Support Email Settings")
+	support_email_settings = frappe.get_doc("Support Email Settings")
 	
 	for fieldname in ("sync_support_mails", "support_email", 
 		("support_host", "mail_server"), 
diff --git a/erpnext/patches/4_0/update_user_properties.py b/erpnext/patches/4_0/update_user_properties.py
index 262f7b8..da8635e 100644
--- a/erpnext/patches/4_0/update_user_properties.py
+++ b/erpnext/patches/4_0/update_user_properties.py
@@ -87,7 +87,7 @@
 			where `tabEmployee Leave Approver`.parent=`tabEmployee`.name)
 		or ifnull(`reports_to`, '')!=''"""):
 		
-		frappe.bean("Employee", employee).save()
+		frappe.get_doc("Employee", employee).save()
 
 def update_permissions():
 	# clear match conditions other than owner
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index f9c561e..2225acd 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -47,7 +47,7 @@
 		for milestone in self.get("project_milestones"):
 			if milestone.milestone_date:
 				description = (milestone.milestone or "Milestone") + " for " + self.name
-				frappe.bean({
+				frappe.get_doc({
 					"doctype": "Event",
 					"owner": self.owner,
 					"subject": description,
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 9de6b1b..a4dfb47 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -44,7 +44,7 @@
 	def on_update(self):
 		"""update percent complete in project"""
 		if self.project:
-			project = frappe.bean("Project", self.project)
+			project = frappe.get_doc("Project", self.project)
 			project.run_method("update_percent_complete")
 
 @frappe.whitelist()
diff --git a/erpnext/projects/doctype/time_log/test_time_log.py b/erpnext/projects/doctype/time_log/test_time_log.py
index 973e89b..c0bfa75 100644
--- a/erpnext/projects/doctype/time_log/test_time_log.py
+++ b/erpnext/projects/doctype/time_log/test_time_log.py
@@ -8,7 +8,7 @@
 
 class TestTimeLog(unittest.TestCase):
 	def test_duplication(self):		
-		ts = frappe.bean(frappe.copy_doc(test_records[0]))
+		ts = frappe.get_doc(frappe.copy_doc(test_records[0]))
 		self.assertRaises(OverlapError, ts.insert)
 
 test_records = [[{
diff --git a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
index f974d70..e059c04 100644
--- a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
+++ b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
@@ -6,7 +6,7 @@
 class TimeLogBatchTest(unittest.TestCase):
 	def test_time_log_status(self):
 		from erpnext.projects.doctype.time_log.test_time_log import test_records as time_log_records
-		time_log = frappe.bean(copy=time_log_records[0])
+		time_log = frappe.get_doc(copy=time_log_records[0])
 		time_log.update({
 			"from_time": "2013-01-02 10:00:00.000000",
 			"to_time": "2013-01-02 11:00:00.000000",
@@ -16,7 +16,7 @@
 		time_log.submit()
 		
 		self.assertEquals(frappe.db.get_value("Time Log", time_log.name, "status"), "Submitted")
-		tlb = frappe.bean(copy=test_records[0])
+		tlb = frappe.get_doc(copy=test_records[0])
 		tlb.doclist[1].time_log = time_log.name
 		tlb.insert()
 		tlb.submit()
diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch.py b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
index 103eb11..a8e9be8 100644
--- a/erpnext/projects/doctype/time_log_batch/time_log_batch.py
+++ b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
@@ -15,7 +15,7 @@
 		self.set_status()
 		self.total_hours = 0.0
 		for d in self.doclist.get({"doctype":"Time Log Batch Detail"}):
-			tl = frappe.doc("Time Log", d.time_log)
+			tl = frappe.get_doc("Time Log", d.time_log)
 			self.update_time_log_values(d, tl)
 			self.validate_time_log_is_submitted(tl)
 			self.total_hours += float(tl.hours or 0.0)
@@ -54,7 +54,7 @@
 	def update_status(self, time_log_batch):
 		self.set_status()
 		for d in self.doclist.get({"doctype":"Time Log Batch Detail"}):
-			tl = frappe.bean("Time Log", d.time_log)
+			tl = frappe.get_doc("Time Log", d.time_log)
 			tl.time_log_batch = time_log_batch
 			tl.sales_invoice = self.sales_invoice
 			tl.update_after_submit()
\ No newline at end of file
diff --git a/erpnext/selling/doctype/lead/get_leads.py b/erpnext/selling/doctype/lead/get_leads.py
index 1fe4907..661021e 100644
--- a/erpnext/selling/doctype/lead/get_leads.py
+++ b/erpnext/selling/doctype/lead/get_leads.py
@@ -14,7 +14,7 @@
 
 	if not (lead_name or contact_name):
 		# none, create a new Lead
-		lead = frappe.bean({
+		lead = frappe.get_doc({
 			"doctype":"Lead",
 			"lead_name": real_name or sender,
 			"email_id": sender,
@@ -34,12 +34,12 @@
 	
 	if mail:
 		# save attachments to parent if from mail
-		bean = frappe.bean(parent_doctype, parent_name)
+		bean = frappe.get_doc(parent_doctype, parent_name)
 		mail.save_attachments_in_doc(bean.doc)
 
 class SalesMailbox(POP3Mailbox):	
 	def setup(self, args=None):
-		self.settings = args or frappe.doc("Sales Email Settings", "Sales Email Settings")
+		self.settings = args or frappe.get_doc("Sales Email Settings", "Sales Email Settings")
 		
 	def process_message(self, mail):
 		if mail.from_email == self.settings.email_id:
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 9852429..9e4ead8 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -127,7 +127,7 @@
 	from erpnext.accounts.party import set_address_details
 	out = frappe._dict()
 	
-	lead_bean = frappe.bean("Lead", lead)
+	lead_bean = frappe.get_doc("Lead", lead)
 	lead = lead_bean.doc
 		
 	out.update({
diff --git a/erpnext/selling/doctype/lead/test_lead.py b/erpnext/selling/doctype/lead/test_lead.py
index 1e64851..a403e93 100644
--- a/erpnext/selling/doctype/lead/test_lead.py
+++ b/erpnext/selling/doctype/lead/test_lead.py
@@ -28,5 +28,5 @@
 		
 		customer[0]["company"] = "_Test Company"
 		customer[0]["customer_group"] = "_Test Customer Group"
-		frappe.bean(customer).insert()
+		frappe.get_doc(customer).insert()
 		
\ No newline at end of file
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index 8a103be..bd33f04 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -109,7 +109,7 @@
 
 	def on_submit(self):
 		if self.lead:
-			frappe.bean("Lead", self.lead).get_controller().set_status(update=True)
+			frappe.get_doc("Lead", self.lead).set_status(update=True)
 	
 	def on_cancel(self):
 		if self.has_quotation():
@@ -134,7 +134,7 @@
 	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
-		quotation = frappe.bean(target)
+		quotation = frappe.get_doc(target)
 		quotation.run_method("onload_post_render")
 		quotation.run_method("calculate_taxes_and_totals")
 	
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index bcccdaa..ad6d30b 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -55,7 +55,7 @@
 
 	def update_opportunity(self):
 		for opportunity in self.doclist.get_distinct_values("prevdoc_docname"):
-			frappe.bean("Opportunity", opportunity).get_controller().set_status(update=True)
+			frappe.get_doc("Opportunity", opportunity).set_status(update=True)
 	
 	def declare_order_lost(self, arg):
 		if not self.has_sales_order():
@@ -108,7 +108,7 @@
 			target[0].customer = customer.name
 			target[0].customer_name = customer.customer_name
 			
-		si = frappe.bean(target)
+		si = frappe.get_doc(target)
 		si.ignore_permissions = ignore_permissions
 		si.run_method("onload_post_render")
 			
@@ -147,7 +147,7 @@
 		if not customer_name:
 			from erpnext.selling.doctype.lead.lead import _make_customer
 			customer_doclist = _make_customer(lead_name, ignore_permissions=ignore_permissions)
-			customer = frappe.bean(customer_doclist)
+			customer = frappe.get_doc(customer_doclist)
 			customer.ignore_permissions = ignore_permissions
 			if quotation[1] == "Shopping Cart":
 				customer.customer_group = frappe.db.get_value("Shopping Cart Settings", None,
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index b3c6d61..b9f4921 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -11,7 +11,7 @@
 	def test_make_sales_order(self):
 		from erpnext.selling.doctype.quotation.quotation import make_sales_order
 		
-		quotation = frappe.bean(copy=test_records[0])
+		quotation = frappe.get_doc(copy=test_records[0])
 		quotation.insert()
 		
 		self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)
@@ -29,7 +29,7 @@
 		sales_order[0]["delivery_date"] = "2014-01-01"
 		sales_order[0]["naming_series"] = "_T-Quotation-"
 		sales_order[0]["transaction_date"] = "2013-05-12"
-		frappe.bean(sales_order).insert()
+		frappe.get_doc(sales_order).insert()
 
 
 test_records = [
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index ff235b1..f29b36f 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -150,11 +150,11 @@
 
 	def update_prevdoc_status(self, flag):				
 		for quotation in self.doclist.get_distinct_values("prevdoc_docname"):
-			bean = frappe.bean("Quotation", quotation)
+			bean = frappe.get_doc("Quotation", quotation)
 			if bean.docstatus==2:
 				frappe.throw(quotation + ": " + frappe._("Quotation is cancelled."))
 				
-			bean.get_controller().set_status(update=True)
+			bean.set_status(update=True)
 
 	def on_submit(self):
 		self.update_stock_ledger(update_stock = 1)
@@ -253,7 +253,7 @@
 		return "order" if self.docstatus==1 else None
 		
 def set_missing_values(source, target):
-	bean = frappe.bean(target)
+	bean = frappe.get_doc(target)
 	bean.run_method("onload_post_render")
 	
 @frappe.whitelist()
@@ -322,7 +322,7 @@
 @frappe.whitelist()
 def make_sales_invoice(source_name, target_doc=None):
 	def set_missing_values(source, target):
-		bean = frappe.bean(target)
+		bean = frappe.get_doc(target)
 		bean.is_pos = 0
 		bean.run_method("onload_post_render")
 		
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index 6171a2b..62411b0 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -12,12 +12,12 @@
 	def test_make_material_request(self):
 		from erpnext.selling.doctype.sales_order.sales_order import make_material_request
 		
-		so = frappe.bean(copy=test_records[0]).insert()
+		so = frappe.get_doc(copy=test_records[0]).insert()
 		
 		self.assertRaises(frappe.ValidationError, make_material_request, 
 			so.name)
 
-		sales_order = frappe.bean("Sales Order", so.name)
+		sales_order = frappe.get_doc("Sales Order", so.name)
 		sales_order.submit()
 		mr = make_material_request(so.name)
 		
@@ -27,12 +27,12 @@
 	def test_make_delivery_note(self):
 		from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
 
-		so = frappe.bean(copy=test_records[0]).insert()
+		so = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_delivery_note, 
 			so.name)
 
-		sales_order = frappe.bean("Sales Order", so.name)
+		sales_order = frappe.get_doc("Sales Order", so.name)
 		sales_order.submit()
 		dn = make_delivery_note(so.name)
 		
@@ -42,12 +42,12 @@
 	def test_make_sales_invoice(self):
 		from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
 
-		so = frappe.bean(copy=test_records[0]).insert()
+		so = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_sales_invoice, 
 			so.name)
 
-		sales_order = frappe.bean("Sales Order", so.name)
+		sales_order = frappe.get_doc("Sales Order", so.name)
 		sales_order.submit()
 		si = make_sales_invoice(so.name)
 		
@@ -55,7 +55,7 @@
 		self.assertEquals(len(si), len(sales_order.doclist))
 		self.assertEquals(len([d for d in si if d["doctype"]=="Sales Invoice Item"]), 1)
 		
-		si = frappe.bean(si)
+		si = frappe.get_doc(si)
 		si.posting_date = "2013-10-10"
 		si.insert()
 		si.submit()
@@ -68,7 +68,7 @@
 		if not so_doclist:
 			so_doclist = test_records[0]
 		
-		w = frappe.bean(copy=so_doclist)
+		w = frappe.get_doc(copy=so_doclist)
 		w.insert()
 		w.submit()
 
@@ -80,7 +80,7 @@
 
 		_insert_purchase_receipt(so.doclist[1].item_code)
 		
-		dn = frappe.bean(frappe.copy_doc(dn_test_records[0]))
+		dn = frappe.get_doc(frappe.copy_doc(dn_test_records[0]))
 		dn.doclist[1].item_code = so.doclist[1].item_code
 		dn.doclist[1].against_sales_order = so.name
 		dn.doclist[1].prevdoc_detail_docname = so.doclist[1].name
@@ -281,16 +281,16 @@
 
 	def test_warehouse_user(self):
 		frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction")
-		frappe.bean("User", "test@example.com").get_controller()\
+		frappe.get_doc("User", "test@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
 			
-		frappe.bean("User", "test2@example.com").get_controller()\
+		frappe.get_doc("User", "test2@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
 		
 		frappe.set_user("test@example.com")
 
 		from frappe.model.bean import BeanPermissionError
-		so = frappe.bean(copy = test_records[0])
+		so = frappe.get_doc(copy = test_records[0])
 		so.company = "_Test Company 1"
 		so.conversion_rate = 0.02
 		so.plc_conversion_rate = 0.02
diff --git a/erpnext/selling/page/sales_browser/sales_browser.py b/erpnext/selling/page/sales_browser/sales_browser.py
index 42839f3..fcb270e 100644
--- a/erpnext/selling/page/sales_browser/sales_browser.py
+++ b/erpnext/selling/page/sales_browser/sales_browser.py
@@ -35,4 +35,4 @@
 	if ctype == "Sales Person":
 		doclist[0]["employee"] = frappe.form_dict.get('employee')
 		
-	frappe.bean(doclist).save()
\ No newline at end of file
+	frappe.get_doc(doclist).save()
\ No newline at end of file
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 2aa3245..1880ffd 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -61,7 +61,7 @@
 				stock_group = frappe.db.get_value("Account", {"account_type": "Stock", 
 					"group_or_ledger": "Group"})
 				if stock_group:
-					frappe.bean({
+					frappe.get_doc({
 						"doctype":"Warehouse",
 						"warehouse_name": whname,
 						"company": self.name,
@@ -73,7 +73,7 @@
 				not frappe.db.sql("select name from tabCompany where name!=%s", self.name):
 			import os
 			with open(os.path.join(os.path.dirname(__file__), "sample_home_page.html"), "r") as webfile:
-				webpage = frappe.bean({
+				webpage = frappe.get_doc({
 					"doctype": "Web Page",
 					"title": self.name + " Home",
 					"published": 1,
@@ -82,7 +82,7 @@
 				}).insert()
 			
 				# update in home page in settings
-				website_settings = frappe.bean("Website Settings", "Website Settings")
+				website_settings = frappe.get_doc("Website Settings", "Website Settings")
 				website_settings.home_page = webpage.name
 				website_settings.brand_html = self.name
 				website_settings.copyright = self.name
@@ -97,7 +97,7 @@
 					"url": "blog"
 				})
 				website_settings.save()
-				style_settings = frappe.bean("Style Settings", "Style Settings")
+				style_settings = frappe.get_doc("Style Settings", "Style Settings")
 				style_settings.top_bar_background = "F2F2F2"
 				style_settings.font_size = "15px"
 				style_settings.save()
@@ -111,11 +111,11 @@
 			frappe.db.set(self, "payables_group", "Accounts Payable - " + self.abbr)
 			
 	def import_chart_of_account(self):
-		chart = frappe.bean("Chart of Accounts", self.chart_of_accounts)
+		chart = frappe.get_doc("Chart of Accounts", self.chart_of_accounts)
 		chart.make_controller().create_accounts(self.name)
 
 	def add_acc(self,lst):
-		account = frappe.bean({
+		account = frappe.get_doc({
 			"doctype": "Account",
 			"freeze_account": "No",
 			"master_type": "",
@@ -163,7 +163,7 @@
 		]
 		for cc in cc_list:
 			cc.update({"doctype": "Cost Center"})
-			cc_bean = frappe.bean(cc)
+			cc_bean = frappe.get_doc(cc)
 			cc_bean.ignore_permissions = True
 		
 			if cc.get("cost_center_name") == self.name:
diff --git a/erpnext/setup/doctype/company/test_company.py b/erpnext/setup/doctype/company/test_company.py
index 932c45a..691bc72 100644
--- a/erpnext/setup/doctype/company/test_company.py
+++ b/erpnext/setup/doctype/company/test_company.py
@@ -13,7 +13,7 @@
 				print "Country: ", country
 				print "Chart Name: ", chart_name
 				
-				company_bean = frappe.bean({
+				company_bean = frappe.get_doc({
 					"doctype": "Company",
 					"company_name": "_Test Company 2",
 					"abbr": "_TC2",
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py
index 26b4497..a9896dc 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.py
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.py
@@ -60,7 +60,7 @@
 					raise_exception=1)
 
 	def update_control_panel(self):
-		cp_bean = frappe.bean("Control Panel")
+		cp_bean = frappe.get_doc("Control Panel")
 		if self.country:
 			cp_bean.country = self.country
 		if self.time_zone:
diff --git a/erpnext/setup/doctype/item_group/test_item_group.py b/erpnext/setup/doctype/item_group/test_item_group.py
index 2716095..4bdace8 100644
--- a/erpnext/setup/doctype/item_group/test_item_group.py
+++ b/erpnext/setup/doctype/item_group/test_item_group.py
@@ -127,7 +127,7 @@
 		return get_no_of_children([item_group], 0)
 			
 	def test_recursion(self):
-		group_b = frappe.bean("Item Group", "_Test Item Group B")
+		group_b = frappe.get_doc("Item Group", "_Test Item Group B")
 		group_b.parent_item_group = "_Test Item Group B - 3"
 		self.assertRaises(NestedSetRecursionError, group_b.save)
 		
@@ -140,7 +140,7 @@
 		self.test_basic_tree()
 		
 	def move_it_back(self):
-		group_b = frappe.bean("Item Group", "_Test Item Group B")
+		group_b = frappe.get_doc("Item Group", "_Test Item Group B")
 		group_b.parent_item_group = "All Item Groups"
 		group_b.save()
 		self.test_basic_tree()
@@ -150,7 +150,7 @@
 		old_lft, old_rgt = frappe.db.get_value("Item Group", "_Test Item Group C", ["lft", "rgt"])
 		
 		# put B under C
-		group_b = frappe.bean("Item Group", "_Test Item Group B")
+		group_b = frappe.get_doc("Item Group", "_Test Item Group B")
 		lft, rgt = group_b.lft, group_b.rgt
 		
 		group_b.parent_item_group = "_Test Item Group C"
@@ -169,7 +169,7 @@
 		self.move_it_back()
 		
 	def test_move_group_into_root(self):
-		group_b = frappe.bean("Item Group", "_Test Item Group B")
+		group_b = frappe.get_doc("Item Group", "_Test Item Group B")
 		group_b.parent_item_group = ""
 		self.assertRaises(NestedSetMultipleRootsError, group_b.save)
 
@@ -186,7 +186,7 @@
 		# before move
 		old_lft, old_rgt = frappe.db.get_value("Item Group", "_Test Item Group C", ["lft", "rgt"])
 		
-		group_b_3 = frappe.bean("Item Group", "_Test Item Group B - 3")
+		group_b_3 = frappe.get_doc("Item Group", "_Test Item Group B - 3")
 		lft, rgt = group_b_3.lft, group_b_3.rgt
 		
 		# child of right sibling is moved into it
@@ -203,7 +203,7 @@
 		self.assertEquals(new_rgt - old_rgt, rgt - lft + 1)
 		
 		# move it back
-		group_b_3 = frappe.bean("Item Group", "_Test Item Group B - 3")
+		group_b_3 = frappe.get_doc("Item Group", "_Test Item Group B - 3")
 		group_b_3.parent_item_group = "_Test Item Group B"
 		group_b_3.save()
 		self.test_basic_tree()
@@ -228,7 +228,7 @@
 			self.assertEquals(new_rgt, item_group.rgt - 2)
 		
 		# insert it back
-		frappe.bean(copy=test_records[6]).insert()
+		frappe.get_doc(copy=test_records[6]).insert()
 		
 		self.test_basic_tree()
 		
@@ -243,14 +243,14 @@
 		self.test_basic_tree(records=records_to_test)
 		
 		# insert Group B back
-		frappe.bean(copy=test_records[3]).insert()
+		frappe.get_doc(copy=test_records[3]).insert()
 		self.test_basic_tree()
 		
 		# move its children back
 		for name in frappe.db.sql_list("""select name from `tabItem Group`
 			where parent_item_group='_Test Item Group C'"""):
 			
-			bean = frappe.bean("Item Group", name)
+			bean = frappe.get_doc("Item Group", name)
 			bean.parent_item_group = "_Test Item Group B"
 			bean.save()
 
@@ -263,7 +263,7 @@
 		self.test_basic_tree(records=records_to_test)
 		
 		# insert Group B - 2back
-		frappe.bean(copy=test_records[5]).insert()
+		frappe.get_doc(copy=test_records[5]).insert()
 		self.test_basic_tree()
 		
 	def test_merge_leaf_into_group(self):
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 9fe243d..c7955d9 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -24,7 +24,7 @@
 	for name in data:
 		country = frappe._dict(data[name])
 		if not frappe.db.exists("Country", name):
-			frappe.doc({
+			frappe.get_doc({
 				"doctype": "Country",
 				"country_name": name,
 				"code": country.code,
@@ -33,7 +33,7 @@
 			}).insert()
 		
 		if country.currency and not frappe.db.exists("Currency", country.currency):
-			frappe.doc({
+			frappe.get_doc({
 				"doctype": "Currency",
 				"currency_name": country.currency,
 				"fraction": country.currency_fraction,
@@ -111,7 +111,7 @@
 	
 	from frappe.modules import scrub
 	for r in records:
-		bean = frappe.bean(r)
+		bean = frappe.get_doc(r)
 		
 		# ignore mandatory for root
 		parent_link_field = ("parent_" + scrub(bean.doctype))
@@ -122,7 +122,7 @@
 		
 def feature_setup():
 	"""save global defaults and features setup"""
-	bean = frappe.bean("Features Setup", "Features Setup")
+	bean = frappe.get_doc("Features Setup", "Features Setup")
 	bean.ignore_permissions = True
 
 	# store value as 1 for all these fields
@@ -142,7 +142,7 @@
 			where parent=%s""", dt, as_dict=True)
 		if default_values:
 			try:
-				b = frappe.bean(dt, dt)
+				b = frappe.get_doc(dt, dt)
 				for fieldname, value in default_values:
 					b.set(fieldname, value)
 				b.save()
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index 917cfd1..d635e08 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -45,7 +45,7 @@
 	if args.get("email"):
 		args['name'] = args.get("email")
 		frappe.flags.mute_emails = True
-		frappe.bean({
+		frappe.get_doc({
 			"doctype":"User",
 			"email": args.get("email"),
 			"first_name": args.get("first_name"),
@@ -73,7 +73,7 @@
 	
 def create_fiscal_year_and_company(args):
 	curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
-	frappe.bean([{
+	frappe.get_doc([{
 		"doctype":"Fiscal Year",
 		'year': curr_fiscal_year,
 		'year_start_date': args.get('fy_start_date'),
@@ -82,7 +82,7 @@
 
 	print args
 	# Company
-	frappe.bean([{
+	frappe.get_doc([{
 		"doctype":"Company",
 		'domain': args.get("industry"),
 		'company_name':args.get('company_name'),
@@ -96,7 +96,7 @@
 	
 def create_price_lists(args):
 	for pl_type in ["Selling", "Buying"]:
-		frappe.bean([
+		frappe.get_doc([
 			{
 				"doctype": "Price List",
 				"price_list_name": "Standard " + pl_type,
@@ -116,7 +116,7 @@
 	# enable default currency
 	frappe.db.set_value("Currency", args.get("currency"), "enabled", 1)
 	
-	global_defaults = frappe.bean("Global Defaults", "Global Defaults")
+	global_defaults = frappe.get_doc("Global Defaults", "Global Defaults")
 	global_defaults.update({
 		'current_fiscal_year': args.curr_fiscal_year,
 		'default_currency': args.get('currency'),
@@ -128,46 +128,46 @@
 	})
 	global_defaults.save()
 	
-	accounts_settings = frappe.bean("Accounts Settings")
+	accounts_settings = frappe.get_doc("Accounts Settings")
 	accounts_settings.auto_accounting_for_stock = 1
 	accounts_settings.save()
 
-	stock_settings = frappe.bean("Stock Settings")
+	stock_settings = frappe.get_doc("Stock Settings")
 	stock_settings.item_naming_by = "Item Code"
 	stock_settings.valuation_method = "FIFO"
 	stock_settings.stock_uom = "Nos"
 	stock_settings.auto_indent = 1
 	stock_settings.save()
 	
-	selling_settings = frappe.bean("Selling Settings")
+	selling_settings = frappe.get_doc("Selling Settings")
 	selling_settings.cust_master_name = "Customer Name"
 	selling_settings.so_required = "No"
 	selling_settings.dn_required = "No"
 	selling_settings.save()
 
-	buying_settings = frappe.bean("Buying Settings")
+	buying_settings = frappe.get_doc("Buying Settings")
 	buying_settings.supp_master_name = "Supplier Name"
 	buying_settings.po_required = "No"
 	buying_settings.pr_required = "No"
 	buying_settings.maintain_same_rate = 1
 	buying_settings.save()
 
-	notification_control = frappe.bean("Notification Control")
+	notification_control = frappe.get_doc("Notification Control")
 	notification_control.quotation = 1
 	notification_control.sales_invoice = 1
 	notification_control.purchase_order = 1
 	notification_control.save()
 
-	hr_settings = frappe.bean("HR Settings")
+	hr_settings = frappe.get_doc("HR Settings")
 	hr_settings.emp_created_by = "Naming Series"
 	hr_settings.save()
 
-	email_settings = frappe.bean("Outgoing Email Settings")
+	email_settings = frappe.get_doc("Outgoing Email Settings")
 	email_settings.send_print_in_body_and_attachment = 1
 	email_settings.save()
 
 	# control panel
-	cp = frappe.doc("Control Panel", "Control Panel")
+	cp = frappe.get_doc("Control Panel", "Control Panel")
 	cp.company_name = args["company_name"]
 	cp.save()
 			
@@ -186,7 +186,7 @@
 	companies = frappe.db.sql_list("select name FROM `tabCompany`")
 	for company in companies:
 		if not frappe.db.exists("Email Digest", "Default Weekly Digest - " + company):
-			edigest = frappe.bean({
+			edigest = frappe.get_doc({
 				"doctype": "Email Digest",
 				"name": "Default Weekly Digest - " + company,
 				"company": company,
@@ -224,7 +224,7 @@
 def create_taxes(args):
 	for i in xrange(1,6):
 		if args.get("tax_" + str(i)):
-			frappe.bean({
+			frappe.get_doc({
 				"doctype":"Account",
 				"company": args.get("company_name"),
 				"parent_account": "Duties and Taxes - " + args.get("company_abbr"),
@@ -240,7 +240,7 @@
 		item = args.get("item_" + str(i))
 		if item:
 			item_group = args.get("item_group_" + str(i))
-			frappe.bean({
+			frappe.get_doc({
 				"doctype":"Item",
 				"item_code": item,
 				"item_name": item,
@@ -261,7 +261,7 @@
 		item = args.get("item_buy_" + str(i))
 		if item:
 			item_group = args.get("item_buy_group_" + str(i))
-			frappe.bean({
+			frappe.get_doc({
 				"doctype":"Item",
 				"item_code": item,
 				"item_name": item,
@@ -283,7 +283,7 @@
 	for i in xrange(1,6):
 		customer = args.get("customer_" + str(i))
 		if customer:
-			frappe.bean({
+			frappe.get_doc({
 				"doctype":"Customer",
 				"customer_name": customer,
 				"customer_type": "Company",
@@ -294,7 +294,7 @@
 			
 			if args.get("customer_contact_" + str(i)):
 				contact = args.get("customer_contact_" + str(i)).split(" ")
-				frappe.bean({
+				frappe.get_doc({
 					"doctype":"Contact",
 					"customer": customer,
 					"first_name":contact[0],
@@ -305,7 +305,7 @@
 	for i in xrange(1,6):
 		supplier = args.get("supplier_" + str(i))
 		if supplier:
-			frappe.bean({
+			frappe.get_doc({
 				"doctype":"Supplier",
 				"supplier_name": supplier,
 				"supplier_type": "Local",
@@ -314,7 +314,7 @@
 
 			if args.get("supplier_contact_" + str(i)):
 				contact = args.get("supplier_contact_" + str(i)).split(" ")
-				frappe.bean({
+				frappe.get_doc({
 					"doctype":"Contact",
 					"supplier": supplier,
 					"first_name":contact[0],
@@ -324,7 +324,7 @@
 
 def create_letter_head(args):
 	if args.get("attach_letterhead"):
-		lh = frappe.bean({
+		lh = frappe.get_doc({
 			"doctype":"Letter Head",
 			"letter_head_name": "Standard",
 			"is_default": 1
@@ -349,7 +349,7 @@
 	root_territory = get_root_of("Territory")
 	for name in (country, "Rest Of The World"):
 		if name and not frappe.db.exists("Territory", name):
-			frappe.bean({
+			frappe.get_doc({
 				"doctype": "Territory",
 				"territory_name": name.replace("'", ""),
 				"parent_territory": root_territory,
diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py
index fdc20fa..0311cdc 100644
--- a/erpnext/startup/boot.py
+++ b/erpnext/startup/boot.py
@@ -19,7 +19,7 @@
 		load_country_and_currency(bootinfo)
 		
 		import frappe.model.doctype
-		bootinfo['notification_settings'] = frappe.doc("Notification Control", 
+		bootinfo['notification_settings'] = frappe.get_doc("Notification Control", 
 			"Notification Control").get_values()
 				
 		# if no company, show a dialog box to create a new company
@@ -35,7 +35,7 @@
 def load_country_and_currency(bootinfo):
 	if bootinfo.control_panel.country and \
 		frappe.db.exists("Country", bootinfo.control_panel.country):
-		bootinfo["docs"] += [frappe.doc("Country", bootinfo.control_panel.country)]
+		bootinfo["docs"] += [frappe.get_doc("Country", bootinfo.control_panel.country)]
 		
 	bootinfo["docs"] += frappe.db.sql("""select * from tabCurrency
 		where ifnull(enabled,0)=1""", as_dict=1, update={"doctype":":Currency"})
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index d48024f..ce6986c 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -289,7 +289,7 @@
 	invoiced_qty_map = get_invoiced_qty_map(source_name)
 	
 	def update_accounts(source, target):
-		si = frappe.bean(target)
+		si = frappe.get_doc(target)
 		si.is_pos = 0
 		si.run_method("onload_post_render")
 		
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 4c6af1b..1c2becec 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -13,7 +13,7 @@
 	if not item_code:
 		item_code = pr_test_records[0][1]["item_code"]
 	
-	pr = frappe.bean(copy=pr_test_records[0])
+	pr = frappe.get_doc(copy=pr_test_records[0])
 	pr.doclist[1].item_code = item_code
 	pr.insert()
 	pr.submit()
@@ -25,12 +25,12 @@
 		
 		from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_invoice
 		_insert_purchase_receipt()
-		dn = frappe.bean(copy=test_records[0]).insert()
+		dn = frappe.get_doc(copy=test_records[0]).insert()
 		
 		self.assertRaises(frappe.ValidationError, make_sales_invoice, 
 			dn.name)
 
-		dn = frappe.bean("Delivery Note", dn.name)
+		dn = frappe.get_doc("Delivery Note", dn.name)
 		dn.submit()
 		si = make_sales_invoice(dn.name)
 		
@@ -38,7 +38,7 @@
 		
 		# modify amount
 		si[1]["rate"] = 200
-		self.assertRaises(frappe.ValidationError, frappe.bean(si).insert)
+		self.assertRaises(frappe.ValidationError, frappe.get_doc(si).insert)
 		
 	
 	def test_delivery_note_no_gl_entry(self):
@@ -48,7 +48,7 @@
 		
 		_insert_purchase_receipt()
 		
-		dn = frappe.bean(copy=test_records[0])
+		dn = frappe.get_doc(copy=test_records[0])
 		dn.insert()
 		dn.submit()
 		
@@ -68,7 +68,7 @@
 		
 		_insert_purchase_receipt()
 		
-		dn = frappe.bean(copy=test_records[0])
+		dn = frappe.get_doc(copy=test_records[0])
 		dn.doclist[1].expense_account = "Cost of Goods Sold - _TC"
 		dn.doclist[1].cost_center = "Main - _TC"
 
@@ -95,7 +95,7 @@
 		self.assertEquals(bal, prev_bal - 375.0)
 				
 		# back dated purchase receipt
-		pr = frappe.bean(copy=pr_test_records[0])
+		pr = frappe.get_doc(copy=pr_test_records[0])
 		pr.posting_date = "2013-01-01"
 		pr.doclist[1].rate = 100
 		pr.doclist[1].base_amount = 100
@@ -123,7 +123,7 @@
 		_insert_purchase_receipt()
 		_insert_purchase_receipt("_Test Item Home Desktop 100")
 		
-		dn = frappe.bean(copy=test_records[0])
+		dn = frappe.get_doc(copy=test_records[0])
 		dn.doclist[1].item_code = "_Test Sales BOM Item"
 		dn.doclist[1].qty = 1
 	
@@ -162,7 +162,7 @@
 		se = make_serialized_item()
 		serial_nos = get_serial_nos(se.doclist[1].serial_no)
 		
-		dn = frappe.bean(copy=test_records[0])
+		dn = frappe.get_doc(copy=test_records[0])
 		dn.doclist[1].item_code = "_Test Serialized Item With Series"
 		dn.doclist[1].qty = 1
 		dn.doclist[1].serial_no = serial_nos[0]
@@ -195,11 +195,11 @@
 		se = make_serialized_item()
 		serial_nos = get_serial_nos(se.doclist[1].serial_no)
 		
-		sr = frappe.bean("Serial No", serial_nos[0])
+		sr = frappe.get_doc("Serial No", serial_nos[0])
 		sr.status = "Not Available"
 		sr.save()
 		
-		dn = frappe.bean(copy=test_records[0])
+		dn = frappe.get_doc(copy=test_records[0])
 		dn.doclist[1].item_code = "_Test Serialized Item With Series"
 		dn.doclist[1].qty = 1
 		dn.doclist[1].serial_no = serial_nos[0]
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 8d99b2f..0ad6be2 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -13,7 +13,7 @@
 class TestItem(unittest.TestCase):
 	def test_default_warehouse(self):
 		from erpnext.stock.doctype.item.item import WarehouseNotSet
-		item = frappe.bean(copy=test_records[0])
+		item = frappe.get_doc(copy=test_records[0])
 		item.is_stock_item = "Yes"
 		item.default_warehouse = None
 		self.assertRaises(WarehouseNotSet, item.insert)
diff --git a/erpnext/stock/doctype/item_price/test_item_price.py b/erpnext/stock/doctype/item_price/test_item_price.py
index 4585e38..310c7d9 100644
--- a/erpnext/stock/doctype/item_price/test_item_price.py
+++ b/erpnext/stock/doctype/item_price/test_item_price.py
@@ -8,7 +8,7 @@
 class TestItem(unittest.TestCase):
 	def test_duplicate_item(self):
 		from erpnext.stock.doctype.item_price.item_price import ItemPriceDuplicateItem
-		bean = frappe.bean(copy=test_records[0])
+		bean = frappe.get_doc(copy=test_records[0])
 		self.assertRaises(ItemPriceDuplicateItem, bean.insert)
 
 test_records = [
diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
index 2a80a4d..3850cec 100644
--- a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
+++ b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
@@ -34,7 +34,7 @@
 		total_amt = self.get_total_pr_amt(purchase_receipts)
 		
 		for pr in purchase_receipts:
-			pr_bean = frappe.bean('Purchase Receipt', pr)
+			pr_bean = frappe.get_doc('Purchase Receipt', pr)
 			pr_items = pr_bean.get("purchase_tax_details")
 			
 			for lc in self.get("landed_cost_details"):
@@ -76,7 +76,7 @@
 			
 	def cancel_pr(self, purchase_receipts):
 		for pr in purchase_receipts:
-			pr_bean = frappe.bean("Purchase Receipt", pr)
+			pr_bean = frappe.get_doc("Purchase Receipt", pr)
 			
 			pr_bean.run_method("update_ordered_qty")
 			
@@ -87,7 +87,7 @@
 			
 	def submit_pr(self, purchase_receipts):
 		for pr in purchase_receipts:
-			pr_bean = frappe.bean("Purchase Receipt", pr)
+			pr_bean = frappe.get_doc("Purchase Receipt", pr)
 			pr_bean.run_method("update_ordered_qty")
 			pr_bean.run_method("update_stock")
 			pr_bean.run_method("make_gl_entries")
\ No newline at end of file
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 30ebb1b..c8f38ed 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -218,7 +218,7 @@
 		})
 
 def set_missing_values(source, target_doc):
-	po = frappe.bean(target_doc)
+	po = frappe.get_doc(target_doc)
 	po.run_method("set_missing_values")
 	
 def update_item(obj, target, source_parent):
@@ -343,7 +343,7 @@
 	
 	def set_missing_values(source, target):
 		target[0].purpose = "Material Transfer"
-		se = frappe.bean(target)
+		se = frappe.get_doc(target)
 		se.run_method("get_stock_and_rate")
 
 	doclist = get_mapped_doc("Material Request", source_name, {
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index f70f14c..66c4dd2 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -15,12 +15,12 @@
 	def test_make_purchase_order(self):
 		from erpnext.stock.doctype.material_request.material_request import make_purchase_order
 
-		mr = frappe.bean(copy=test_records[0]).insert()
+		mr = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_purchase_order, 
 			mr.name)
 
-		mr = frappe.bean("Material Request", mr.name)
+		mr = frappe.get_doc("Material Request", mr.name)
 		mr.submit()
 		po = make_purchase_order(mr.name)
 		
@@ -30,12 +30,12 @@
 	def test_make_supplier_quotation(self):
 		from erpnext.stock.doctype.material_request.material_request import make_supplier_quotation
 
-		mr = frappe.bean(copy=test_records[0]).insert()
+		mr = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_supplier_quotation, 
 			mr.name)
 
-		mr = frappe.bean("Material Request", mr.name)
+		mr = frappe.get_doc("Material Request", mr.name)
 		mr.submit()
 		sq = make_supplier_quotation(mr.name)
 		
@@ -46,12 +46,12 @@
 	def test_make_stock_entry(self):
 		from erpnext.stock.doctype.material_request.material_request import make_stock_entry
 
-		mr = frappe.bean(copy=test_records[0]).insert()
+		mr = frappe.get_doc(copy=test_records[0]).insert()
 
 		self.assertRaises(frappe.ValidationError, make_stock_entry, 
 			mr.name)
 
-		mr = frappe.bean("Material Request", mr.name)
+		mr = frappe.get_doc("Material Request", mr.name)
 		mr.material_request_type = "Transfer"
 		mr.submit()
 		se = make_stock_entry(mr.name)
@@ -71,7 +71,7 @@
 			"warehouse": "_Test Warehouse - _TC"}, "indented_qty")), qty2)
 			
 	def _insert_stock_entry(self, qty1, qty2):
-		se = frappe.bean([
+		se = frappe.get_doc([
 			{
 				"company": "_Test Company", 
 				"doctype": "Stock Entry", 
@@ -112,7 +112,7 @@
 		frappe.db.sql("""delete from `tabBin`""")
 		
 		# submit material request of type Purchase
-		mr = frappe.bean(copy=test_records[0])
+		mr = frappe.get_doc(copy=test_records[0])
 		mr.insert()
 		mr.submit()
 		
@@ -133,14 +133,14 @@
 
 		
 		# check for stopped status of Material Request
-		po = frappe.bean(copy=po_doclist)
+		po = frappe.get_doc(copy=po_doclist)
 		po.insert()
 		mr.obj.update_status('Stopped')
 		self.assertRaises(frappe.ValidationError, po.submit)
 		self.assertRaises(frappe.ValidationError, po.cancel)
 
 		mr.obj.update_status('Submitted')
-		po = frappe.bean(copy=po_doclist)
+		po = frappe.get_doc(copy=po_doclist)
 		po.insert()
 		po.submit()
 		
@@ -160,7 +160,7 @@
 		frappe.db.sql("""delete from `tabStock Ledger Entry`""")
 		
 		# submit material request of type Purchase
-		mr = frappe.bean(copy=test_records[0])
+		mr = frappe.get_doc(copy=test_records[0])
 		mr.material_request_type = "Transfer"
 		mr.insert()
 		mr.submit()
@@ -196,14 +196,14 @@
 		self._insert_stock_entry(27.0, 1.5)
 		
 		# check for stopped status of Material Request
-		se = frappe.bean(copy=se_doclist)
+		se = frappe.get_doc(copy=se_doclist)
 		se.insert()
 		mr.obj.update_status('Stopped')
 		self.assertRaises(frappe.ValidationError, se.submit)
 		self.assertRaises(frappe.ValidationError, se.cancel)
 		
 		mr.obj.update_status('Submitted')
-		se = frappe.bean(copy=se_doclist)
+		se = frappe.get_doc(copy=se_doclist)
 		se.insert()
 		se.submit()
 		
@@ -223,7 +223,7 @@
 		frappe.db.sql("""delete from `tabStock Ledger Entry`""")
 		
 		# submit material request of type Purchase
-		mr = frappe.bean(copy=test_records[0])
+		mr = frappe.get_doc(copy=test_records[0])
 		mr.material_request_type = "Transfer"
 		mr.insert()
 		mr.submit()
@@ -259,14 +259,14 @@
 		self._insert_stock_entry(60.0, 3.0)
 		
 		# check for stopped status of Material Request
-		se = frappe.bean(copy=se_doclist)
+		se = frappe.get_doc(copy=se_doclist)
 		se.insert()
 		mr.obj.update_status('Stopped')
 		self.assertRaises(frappe.ValidationError, se.submit)
 		self.assertRaises(frappe.ValidationError, se.cancel)
 		
 		mr.obj.update_status('Submitted')
-		se = frappe.bean(copy=se_doclist)
+		se = frappe.get_doc(copy=se_doclist)
 		se.insert()
 		se.submit()
 		
@@ -283,7 +283,7 @@
 		
 	def test_incorrect_mapping_of_stock_entry(self):
 		# submit material request of type Purchase
-		mr = frappe.bean(copy=test_records[0])
+		mr = frappe.get_doc(copy=test_records[0])
 		mr.material_request_type = "Transfer"
 		mr.insert()
 		mr.submit()
@@ -312,12 +312,12 @@
 		})
 		
 		# check for stopped status of Material Request
-		se = frappe.bean(copy=se_doclist)
+		se = frappe.get_doc(copy=se_doclist)
 		self.assertRaises(frappe.MappingMismatchError, se.insert)
 		
 	def test_warehouse_company_validation(self):
 		from erpnext.stock.utils import InvalidWarehouseCompany
-		mr = frappe.bean(copy=test_records[0])
+		mr = frappe.get_doc(copy=test_records[0])
 		mr.company = "_Test Company 1"
 		self.assertRaises(InvalidWarehouseCompany, mr.insert)
 
diff --git a/erpnext/stock/doctype/price_list/price_list.py b/erpnext/stock/doctype/price_list/price_list.py
index bfb3ea7..7f5d7e7 100644
--- a/erpnext/stock/doctype/price_list/price_list.py
+++ b/erpnext/stock/doctype/price_list/price_list.py
@@ -44,7 +44,7 @@
 
 	def on_trash(self):
 		def _update_default_price_list(module):
-			b = frappe.bean(module + " Settings")
+			b = frappe.get_doc(module + " Settings")
 			price_list_fieldname = module.lower() + "_price_list"
 
 			if self.name == b.fields[price_list_fieldname]:
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 74c8cff..f970d94 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -299,7 +299,7 @@
 	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
-		bean = frappe.bean(target)
+		bean = frappe.get_doc(target)
 		bean.run_method("set_missing_values")
 
 	doclist = get_mapped_doc("Purchase Receipt", source_name,	{
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 58b8d7d..0b22425 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -14,12 +14,12 @@
 		set_perpetual_inventory(0)
 		from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
 
-		pr = frappe.bean(copy=test_records[0]).insert()
+		pr = frappe.get_doc(copy=test_records[0]).insert()
 		
 		self.assertRaises(frappe.ValidationError, make_purchase_invoice, 
 			pr.name)
 
-		pr = frappe.bean("Purchase Receipt", pr.name)
+		pr = frappe.get_doc("Purchase Receipt", pr.name)
 		pr.submit()
 		pi = make_purchase_invoice(pr.name)
 		
@@ -28,12 +28,12 @@
 		
 		# modify rate
 		pi[1]["rate"] = 200
-		self.assertRaises(frappe.ValidationError, frappe.bean(pi).submit)
+		self.assertRaises(frappe.ValidationError, frappe.get_doc(pi).submit)
 		
 	def test_purchase_receipt_no_gl_entry(self):
 		self._clear_stock_account_balance()
 		set_perpetual_inventory(0)
-		pr = frappe.bean(copy=test_records[0])
+		pr = frappe.get_doc(copy=test_records[0])
 		pr.insert()
 		pr.submit()
 		
@@ -56,7 +56,7 @@
 		set_perpetual_inventory()
 		self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
 		
-		pr = frappe.bean(copy=test_records[0])
+		pr = frappe.get_doc(copy=test_records[0])
 		pr.insert()
 		pr.submit()
 		
@@ -90,7 +90,7 @@
 		frappe.db.sql("""delete from `tabGL Entry`""")
 		
 	def test_subcontracting(self):
-		pr = frappe.bean(copy=test_records[1])
+		pr = frappe.get_doc(copy=test_records[1])
 		pr.run_method("calculate_taxes_and_totals")
 		pr.insert()
 		
@@ -98,7 +98,7 @@
 		self.assertEquals(len(pr.get("pr_raw_material_details")), 2)
 		
 	def test_serial_no_supplier(self):
-		pr = frappe.bean(copy=test_records[0])
+		pr = frappe.get_doc(copy=test_records[0])
 		pr.doclist[1].item_code = "_Test Serialized Item With Series"
 		pr.doclist[1].qty = 1
 		pr.doclist[1].received_qty = 1
@@ -123,7 +123,7 @@
 		order by account desc""", (voucher_type, voucher_no), as_dict=1)
 		
 def set_perpetual_inventory(enable=1):
-	accounts_settings = frappe.bean("Accounts Settings")
+	accounts_settings = frappe.get_doc("Accounts Settings")
 	accounts_settings.auto_accounting_for_stock = enable
 	accounts_settings.save()
 	
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 333f3f7..7f4c438 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -66,7 +66,7 @@
 		"""
 			Validate whether serial no is required for this item
 		"""
-		item = frappe.doc("Item", self.item_code)
+		item = frappe.get_doc("Item", self.item_code)
 		if item.has_serial_no!="Yes":
 			frappe.throw(_("Item must have 'Has Serial No' as 'Yes'") + ": " + self.item_code)
 			
@@ -223,7 +223,7 @@
 			
 			for serial_no in serial_nos:
 				if frappe.db.exists("Serial No", serial_no):
-					sr = frappe.bean("Serial No", serial_no)
+					sr = frappe.get_doc("Serial No", serial_no)
 					
 					if sr.item_code!=sle.item_code:
 						frappe.throw(_("Serial No does not belong to Item") + 
@@ -263,7 +263,7 @@
 		serial_nos = get_serial_nos(sle.serial_no)
 		for serial_no in serial_nos:
 			if frappe.db.exists("Serial No", serial_no):
-				sr = frappe.bean("Serial No", serial_no)
+				sr = frappe.get_doc("Serial No", serial_no)
 				sr.make_controller().via_stock_ledger = True
 				sr.warehouse = sle.warehouse if sle.actual_qty > 0 else None
 				sr.save()
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index eeb8d82..92f7746 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -337,7 +337,7 @@
 					self.production_order)
 		
 		if self.production_order:
-			pro_bean = frappe.bean("Production Order", self.production_order)
+			pro_bean = frappe.get_doc("Production Order", self.production_order)
 			_validate_production_order(pro_bean)
 			self.update_produced_qty(pro_bean)
 			if self.purpose == "Manufacture/Repack":
@@ -749,7 +749,7 @@
 
 @frappe.whitelist()
 def make_return_jv(stock_entry):
-	se = frappe.bean("Stock Entry", stock_entry)
+	se = frappe.get_doc("Stock Entry", stock_entry)
 	if not se.purpose in ["Sales Return", "Purchase Return"]:
 		return
 	
@@ -840,7 +840,7 @@
 	
 	for se_item in se.get("mtn_details"):
 		for sales_invoice in invoices_against_delivery:
-			si = frappe.bean("Sales Invoice", sales_invoice)
+			si = frappe.get_doc("Sales Invoice", sales_invoice)
 			
 			if se_item.item_code in packing_item_parent_map:
 				ref_item = si.doclist.get({"item_code": packing_item_parent_map[se_item.item_code]})
@@ -897,7 +897,7 @@
 	
 	for se_item in se.get("mtn_details"):
 		for purchase_invoice in invoice_against_receipt:
-			pi = frappe.bean("Purchase Invoice", purchase_invoice)
+			pi = frappe.get_doc("Purchase Invoice", purchase_invoice)
 			ref_item = pi.doclist.get({"item_code": se_item.item_code})
 			
 			if not ref_item:
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index bcdc0fe..db816fd 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -22,11 +22,11 @@
 
 		frappe.db.set_value("Stock Settings", None, "auto_indent", True)
 
-		st1 = frappe.bean(copy=test_records[0])
+		st1 = frappe.get_doc(copy=test_records[0])
 		st1.insert()
 		st1.submit()
 
-		st2 = frappe.bean(copy=test_records[1])
+		st2 = frappe.get_doc(copy=test_records[1])
 		st2.insert()
 		st2.submit()
 				
@@ -45,7 +45,7 @@
 		self._clear_stock_account_balance()
 		set_perpetual_inventory()
 
-		mr = frappe.bean(copy=test_records[0])
+		mr = frappe.get_doc(copy=test_records[0])
 		mr.insert()
 		mr.submit()
 
@@ -77,7 +77,7 @@
 
 		self._insert_material_receipt()
 
-		mi = frappe.bean(copy=test_records[1])
+		mi = frappe.get_doc(copy=test_records[1])
 		mi.insert()
 		mi.submit()
 
@@ -113,7 +113,7 @@
 
 		self._insert_material_receipt()
 
-		mtn = frappe.bean(copy=test_records[2])
+		mtn = frappe.get_doc(copy=test_records[2])
 		mtn.insert()
 		mtn.submit()
 
@@ -149,7 +149,7 @@
 
 		self._insert_material_receipt()
 
-		repack = frappe.bean(copy=test_records[3])
+		repack = frappe.get_doc(copy=test_records[3])
 		repack.insert()
 		repack.submit()
 
@@ -170,7 +170,7 @@
 
 		self._insert_material_receipt()
 
-		repack = frappe.bean(copy=test_records[3])
+		repack = frappe.get_doc(copy=test_records[3])
 		repack.doclist[2].incoming_rate = 6000
 		repack.insert()
 		repack.submit()
@@ -218,11 +218,11 @@
 
 	def _insert_material_receipt(self):
 		self._clear_stock_account_balance()
-		se1 = frappe.bean(copy=test_records[0])
+		se1 = frappe.get_doc(copy=test_records[0])
 		se1.insert()
 		se1.submit()
 
-		se2 = frappe.bean(copy=test_records[0])
+		se2 = frappe.get_doc(copy=test_records[0])
 		se2.doclist[1].item_code = "_Test Item Home Desktop 100"
 		se2.insert()
 		se2.submit()
@@ -240,11 +240,11 @@
 			import test_records as sales_invoice_test_records
 
 		# invalid sales invoice as update stock not checked
-		si = frappe.bean(copy=sales_invoice_test_records[1])
+		si = frappe.get_doc(copy=sales_invoice_test_records[1])
 		si.insert()
 		si.submit()
 
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Sales Return"
 		se.sales_invoice_no = si.name
 		se.doclist[1].qty = returned_qty
@@ -257,7 +257,7 @@
 		actual_qty_0 = self._get_actual_qty()
 
 		# insert a pos invoice with update stock
-		si = frappe.bean(copy=sales_invoice_test_records[1])
+		si = frappe.get_doc(copy=sales_invoice_test_records[1])
 		si.is_pos = si.update_stock = 1
 		si.doclist[1].warehouse = "_Test Warehouse - _TC"
 		si.doclist[1].item_code = item_code
@@ -271,7 +271,7 @@
 		self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
 
 		# check if item is validated
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Sales Return"
 		se.sales_invoice_no = si.name
 		se.posting_date = "2013-03-10"
@@ -284,7 +284,7 @@
 		self.assertRaises(frappe.DoesNotExistError, se.insert)
 
 		# try again
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Sales Return"
 		se.posting_date = "2013-03-10"
 		se.fiscal_year = "_Test Fiscal Year 2013"
@@ -321,7 +321,7 @@
 
 		actual_qty_0 = self._get_actual_qty()
 		# make a delivery note based on this invoice
-		dn = frappe.bean(copy=delivery_note_test_records[0])
+		dn = frappe.get_doc(copy=delivery_note_test_records[0])
 		dn.doclist[1].item_code = item_code
 		dn.insert()
 		dn.submit()
@@ -332,7 +332,7 @@
 
 		si_doclist = make_sales_invoice(dn.name)
 
-		si = frappe.bean(si_doclist)
+		si = frappe.get_doc(si_doclist)
 		si.posting_date = dn.posting_date
 		si.debit_to = "_Test Customer - _TC"
 		for d in si.get("entries"):
@@ -342,7 +342,7 @@
 		si.submit()
 
 		# insert and submit stock entry for sales return
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Sales Return"
 		se.delivery_note_no = dn.name
 		se.posting_date = "2013-03-10"
@@ -410,7 +410,7 @@
 
 		actual_qty_0 = self._get_actual_qty()
 
-		so = frappe.bean(copy=sales_order_test_records[0])
+		so = frappe.get_doc(copy=sales_order_test_records[0])
 		so.doclist[1].item_code = item_code
 		so.doclist[1].qty = 5.0
 		so.insert()
@@ -418,7 +418,7 @@
 
 		dn_doclist = make_delivery_note(so.name)
 
-		dn = frappe.bean(dn_doclist)
+		dn = frappe.get_doc(dn_doclist)
 		dn.status = "Draft"
 		dn.posting_date = so.delivery_date
 		dn.insert()
@@ -430,7 +430,7 @@
 
 		si_doclist = make_sales_invoice(so.name)
 
-		si = frappe.bean(si_doclist)
+		si = frappe.get_doc(si_doclist)
 		si.posting_date = dn.posting_date
 		si.debit_to = "_Test Customer - _TC"
 		for d in si.get("entries"):
@@ -440,7 +440,7 @@
 		si.submit()
 
 		# insert and submit stock entry for sales return
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Sales Return"
 		se.delivery_note_no = dn.name
 		se.posting_date = "2013-03-10"
@@ -466,7 +466,7 @@
 		from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
 		
 		# submit purchase receipt
-		pr = frappe.bean(copy=purchase_receipt_test_records[0])
+		pr = frappe.get_doc(copy=purchase_receipt_test_records[0])
 		pr.insert()
 		pr.submit()
 
@@ -476,7 +476,7 @@
 
 		pi_doclist = make_purchase_invoice(pr.name)
 
-		pi = frappe.bean(pi_doclist)
+		pi = frappe.get_doc(pi_doclist)
 		pi.posting_date = pr.posting_date
 		pi.credit_to = "_Test Supplier - _TC"
 		for d in pi.get("entries"):
@@ -492,7 +492,7 @@
 		pi.submit()
 
 		# submit purchase return
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Purchase Return"
 		se.purchase_receipt_no = pr.name
 		se.posting_date = "2013-03-01"
@@ -518,7 +518,7 @@
 		prev_se, pr_docname = self.test_purchase_receipt_return()
 
 		# submit purchase return - return another 6 qtys so that exception is raised
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Purchase Return"
 		se.purchase_receipt_no = pr_docname
 		se.posting_date = "2013-03-01"
@@ -559,7 +559,7 @@
 			make_purchase_receipt, make_purchase_invoice
 
 		# submit purchase receipt
-		po = frappe.bean(copy=purchase_order_test_records[0])
+		po = frappe.get_doc(copy=purchase_order_test_records[0])
 		po.is_subcontracted = None
 		po.doclist[1].item_code = "_Test Item"
 		po.doclist[1].rate = 50
@@ -568,7 +568,7 @@
 
 		pr_doclist = make_purchase_receipt(po.name)
 
-		pr = frappe.bean(pr_doclist)
+		pr = frappe.get_doc(pr_doclist)
 		pr.posting_date = po.transaction_date
 		pr.insert()
 		pr.submit()
@@ -579,7 +579,7 @@
 
 		pi_doclist = make_purchase_invoice(po.name)
 
-		pi = frappe.bean(pi_doclist)
+		pi = frappe.get_doc(pi_doclist)
 		pi.posting_date = pr.posting_date
 		pi.credit_to = "_Test Supplier - _TC"
 		for d in pi.get("entries"):
@@ -594,7 +594,7 @@
 		pi.submit()
 
 		# submit purchase return
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Purchase Return"
 		se.purchase_receipt_no = pr.name
 		se.posting_date = "2013-03-01"
@@ -621,13 +621,13 @@
 		frappe.db.set_default("company", "_Test Company")
 
 	def test_serial_no_not_reqd(self):
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.doclist[1].serial_no = "ABCD"
 		se.insert()
 		self.assertRaises(SerialNoNotRequiredError, se.submit)
 
 	def test_serial_no_reqd(self):
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.doclist[1].item_code = "_Test Serialized Item"
 		se.doclist[1].qty = 2
 		se.doclist[1].transfer_qty = 2
@@ -635,7 +635,7 @@
 		self.assertRaises(SerialNoRequiredError, se.submit)
 
 	def test_serial_no_qty_more(self):
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.doclist[1].item_code = "_Test Serialized Item"
 		se.doclist[1].qty = 2
 		se.doclist[1].serial_no = "ABCD\nEFGH\nXYZ"
@@ -644,7 +644,7 @@
 		self.assertRaises(SerialNoQtyError, se.submit)
 
 	def test_serial_no_qty_less(self):
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.doclist[1].item_code = "_Test Serialized Item"
 		se.doclist[1].qty = 2
 		se.doclist[1].serial_no = "ABCD"
@@ -654,7 +654,7 @@
 
 	def test_serial_no_transfer_in(self):
 		self._clear_stock_account_balance()
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.doclist[1].item_code = "_Test Serialized Item"
 		se.doclist[1].qty = 2
 		se.doclist[1].serial_no = "ABCD\nEFGH"
@@ -670,7 +670,7 @@
 
 	def test_serial_no_not_exists(self):
 		self._clear_stock_account_balance()
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Material Issue"
 		se.doclist[1].item_code = "_Test Serialized Item"
 		se.doclist[1].qty = 2
@@ -685,7 +685,7 @@
 		self._clear_stock_account_balance()
 		self.test_serial_by_series()
 
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.doclist[1].item_code = "_Test Serialized Item With Series"
 		se.doclist[1].qty = 1
 		se.doclist[1].serial_no = "ABCD00001"
@@ -708,7 +708,7 @@
 		self._clear_stock_account_balance()
 		self.test_serial_by_series()
 
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Material Transfer"
 		se.doclist[1].item_code = "_Test Serialized Item"
 		se.doclist[1].qty = 1
@@ -724,7 +724,7 @@
 		se = make_serialized_item()
 		serial_no = get_serial_nos(se.doclist[1].serial_no)[0]
 
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Material Transfer"
 		se.doclist[1].item_code = "_Test Serialized Item With Series"
 		se.doclist[1].qty = 1
@@ -743,7 +743,7 @@
 		self._clear_stock_account_balance()
 		make_serialized_item()
 
-		se = frappe.bean(copy=test_records[0])
+		se = frappe.get_doc(copy=test_records[0])
 		se.purpose = "Material Transfer"
 		se.doclist[1].item_code = "_Test Serialized Item With Series"
 		se.doclist[1].qty = 1
@@ -765,12 +765,12 @@
 	def test_warehouse_company_validation(self):
 		set_perpetual_inventory(0)
 		self._clear_stock_account_balance()
-		frappe.bean("User", "test2@example.com").get_controller()\
+		frappe.get_doc("User", "test2@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
 		frappe.set_user("test2@example.com")
 
 		from erpnext.stock.utils import InvalidWarehouseCompany
-		st1 = frappe.bean(copy=test_records[0])
+		st1 = frappe.get_doc(copy=test_records[0])
 		st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1"
 		st1.insert()
 		self.assertRaises(InvalidWarehouseCompany, st1.submit)
@@ -783,19 +783,19 @@
 		
 		frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction")
 		frappe.defaults.add_default("Warehouse", "_Test Warehouse 2 - _TC1", "test2@example.com", "Restriction")
-		frappe.bean("User", "test@example.com").get_controller()\
+		frappe.get_doc("User", "test@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
-		frappe.bean("User", "test2@example.com").get_controller()\
+		frappe.get_doc("User", "test2@example.com").get_controller()\
 			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
 
 		frappe.set_user("test@example.com")
-		st1 = frappe.bean(copy=test_records[0])
+		st1 = frappe.get_doc(copy=test_records[0])
 		st1.company = "_Test Company 1"
 		st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1"
 		self.assertRaises(BeanPermissionError, st1.insert)
 
 		frappe.set_user("test2@example.com")
-		st1 = frappe.bean(copy=test_records[0])
+		st1 = frappe.get_doc(copy=test_records[0])
 		st1.company = "_Test Company 1"
 		st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1"
 		st1.insert()
@@ -811,18 +811,18 @@
 		# test freeze_stocks_upto
 		date_newer_than_test_records = add_days(getdate(test_records[0][0]['posting_date']), 5)
 		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto", date_newer_than_test_records)
-		se = frappe.bean(copy=test_records[0]).insert()
+		se = frappe.get_doc(copy=test_records[0]).insert()
 		self.assertRaises (StockFreezeError, se.submit)
 		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto", '')
 
 		# test freeze_stocks_upto_days
 		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", 7)
-		se = frappe.bean(copy=test_records[0]).insert()
+		se = frappe.get_doc(copy=test_records[0]).insert()
 		self.assertRaises (StockFreezeError, se.submit)
 		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", 0)
 
 def make_serialized_item():
-	se = frappe.bean(copy=test_records[0])
+	se = frappe.get_doc(copy=test_records[0])
 	se.doclist[1].item_code = "_Test Serialized Item With Series"
 	se.doclist[1].qty = 2
 	se.doclist[1].transfer_qty = 2
diff --git a/erpnext/stock/doctype/stock_ledger/stock_ledger.py b/erpnext/stock/doctype/stock_ledger/stock_ledger.py
index d0fe60a..4f287ac 100644
--- a/erpnext/stock/doctype/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/doctype/stock_ledger/stock_ledger.py
@@ -42,7 +42,7 @@
 
 	def make_entry(self, args):
 		args.update({"doctype": "Stock Ledger Entry"})
-		sle = frappe.bean([args])
+		sle = frappe.get_doc([args])
 		sle.ignore_permissions = 1
 		sle.insert()
 		return sle.name
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 60f37e1..2ddf831 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -97,7 +97,7 @@
 		# using try except to catch all validation msgs and display together
 		
 		try:
-			item = frappe.doc("Item", item_code)
+			item = frappe.get_doc("Item", item_code)
 			
 			# end of life and stock item
 			validate_end_of_life(item_code, item.end_of_life, verbose=0)
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index ca1519c..0438d6e 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -175,7 +175,7 @@
 		frappe.db.sql("delete from `tabGL Entry`")
 						
 	def submit_stock_reconciliation(self, qty, rate, posting_date, posting_time):
-		stock_reco = frappe.bean([{
+		stock_reco = frappe.get_doc([{
 			"doctype": "Stock Reconciliation",
 			"posting_date": posting_date,
 			"posting_time": posting_time,
@@ -221,11 +221,11 @@
 			}, 
 		]
 			
-		pr = frappe.bean(copy=stock_entry)
+		pr = frappe.get_doc(copy=stock_entry)
 		pr.insert()
 		pr.submit()
 		
-		pr1 = frappe.bean(copy=stock_entry)
+		pr1 = frappe.get_doc(copy=stock_entry)
 		pr1.posting_date = "2012-12-15"
 		pr1.posting_time = "02:00"
 		pr1.doclist[1].qty = 10
@@ -234,7 +234,7 @@
 		pr1.insert()
 		pr1.submit()
 		
-		pr2 = frappe.bean(copy=stock_entry)
+		pr2 = frappe.get_doc(copy=stock_entry)
 		pr2.posting_date = "2012-12-25"
 		pr2.posting_time = "03:00"
 		pr2.purpose = "Material Issue"
@@ -246,7 +246,7 @@
 		pr2.insert()
 		pr2.submit()
 		
-		pr3 = frappe.bean(copy=stock_entry)
+		pr3 = frappe.get_doc(copy=stock_entry)
 		pr3.posting_date = "2012-12-31"
 		pr3.posting_time = "08:00"
 		pr3.purpose = "Material Issue"
@@ -259,7 +259,7 @@
 		pr3.submit()
 		
 		
-		pr4 = frappe.bean(copy=stock_entry)
+		pr4 = frappe.get_doc(copy=stock_entry)
 		pr4.posting_date = "2013-01-05"
 		pr4.fiscal_year = "_Test Fiscal Year 2013"
 		pr4.posting_time = "07:00"
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
index 28972d3..48f5a3d 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
+++ b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
@@ -34,7 +34,7 @@
 			raise Exception
 			
 	def update_item_master(self):
-		item_bean = frappe.bean("Item", self.item_code)
+		item_bean = frappe.get_doc("Item", self.item_code)
 		item_bean.stock_uom = self.new_stock_uom
 		item_bean.save()
 		
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index d621985..0bb70a5 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -28,7 +28,7 @@
 					{"account_type": "Warehouse", "company": self.company, 
 					"master_name": self.name}, ["name", "parent_account"])
 				if warehouse_account and warehouse_account[1] != self.create_account_under:
-					acc_bean = frappe.bean("Account", warehouse_account[0])
+					acc_bean = frappe.get_doc("Account", warehouse_account[0])
 					acc_bean.parent_account = self.create_account_under
 					acc_bean.save()
 				
@@ -43,7 +43,7 @@
 				if self.get("__islocal") or not frappe.db.get_value(
 						"Stock Ledger Entry", {"warehouse": self.name}):
 					self.validate_parent_account()
-					ac_bean = frappe.bean({
+					ac_bean = frappe.get_doc({
 						"doctype": "Account",
 						'account_name': self.warehouse_name, 
 						'parent_account': self.create_account_under, 
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 1bf431a..f4588f5 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -47,7 +47,7 @@
 	elif not args.item_code and args.serial_no:
 		args.item_code = get_item_code(serial_no=args.serial_no)
 	
-	item_bean = frappe.bean("Item", args.item_code)
+	item_bean = frappe.get_doc("Item", args.item_code)
 	item = item_bean.doc
 
 	validate_item_details(args, item)
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index e812285..c8921d6 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -49,7 +49,7 @@
 		
 def make_entry(args):
 	args.update({"doctype": "Stock Ledger Entry"})
-	sle = frappe.bean([args])
+	sle = frappe.get_doc([args])
 	sle.ignore_permissions = 1
 	sle.insert()
 	sle.submit()
@@ -137,7 +137,7 @@
 	# update bin
 	if not frappe.db.exists({"doctype": "Bin", "item_code": args["item_code"], 
 			"warehouse": args["warehouse"]}):
-		bin_wrapper = frappe.bean([{
+		bin_wrapper = frappe.get_doc([{
 			"doctype": "Bin",
 			"item_code": args["item_code"],
 			"warehouse": args["warehouse"],
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 981f674..2f28e1a 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -40,7 +40,7 @@
 def get_bin(item_code, warehouse):
 	bin = frappe.db.get_value("Bin", {"item_code": item_code, "warehouse": warehouse})
 	if not bin:
-		bin_wrapper = frappe.bean([{
+		bin_wrapper = frappe.get_doc([{
 			"doctype": "Bin",
 			"item_code": item_code,
 			"warehouse": warehouse,
@@ -246,7 +246,7 @@
 				}]
 			
 				for d in items:
-					item = frappe.doc("Item", d.item_code)
+					item = frappe.get_doc("Item", d.item_code)
 					mr.append({
 						"doctype": "Material Request Item",
 						"parenttype": "Material Request",
@@ -262,7 +262,7 @@
 						"brand": item.brand,
 					})
 			
-				mr_bean = frappe.bean(mr)
+				mr_bean = frappe.get_doc(mr)
 				mr_bean.insert()
 				mr_bean.submit()
 				mr_list.append(mr_bean)
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
index 0052ab2..c10d691 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -58,7 +58,7 @@
 				self.update_amc_date(serial_nos, d.end_date)
 
 			if d.sales_person not in email_map:
-				sp = frappe.bean("Sales Person", d.sales_person).make_controller()
+				sp = frappe.get_doc("Sales Person", d.sales_person).make_controller()
 				email_map[d.sales_person] = sp.get_email_id()
 
 			scheduled_date = frappe.db.sql("""select scheduled_date from 
@@ -69,7 +69,7 @@
 				if email_map[d.sales_person]:
 					description = "Reference: %s, Item Code: %s and Customer: %s" % \
 						(self.name, d.item_code, self.customer)
-					frappe.bean({
+					frappe.get_doc({
 						"doctype": "Event",
 						"owner": email_map[d.sales_person] or self.owner,
 						"subject": description,
@@ -203,7 +203,7 @@
 
 	def update_amc_date(self, serial_nos, amc_expiry_date=None):
 		for serial_no in serial_nos:
-			serial_no_bean = frappe.bean("Serial No", serial_no)
+			serial_no_bean = frappe.get_doc("Serial No", serial_no)
 			serial_no_bean.amc_expiry_date = amc_expiry_date
 			serial_no_bean.save()
 
diff --git a/erpnext/support/doctype/newsletter/newsletter.py b/erpnext/support/doctype/newsletter/newsletter.py
index f28afa8..a2ac2de 100644
--- a/erpnext/support/doctype/newsletter/newsletter.py
+++ b/erpnext/support/doctype/newsletter/newsletter.py
@@ -130,7 +130,7 @@
 	if frappe.db.get_value("Lead", {"email_id": email_id}):
 		return
 	
-	lead = frappe.bean({
+	lead = frappe.get_doc({
 		"doctype": "Lead",
 		"email_id": email_id,
 		"lead_name": real_name or email_id,
diff --git a/erpnext/support/doctype/newsletter/test_newsletter.py b/erpnext/support/doctype/newsletter/test_newsletter.py
index f94c8d5..01ed84e 100644
--- a/erpnext/support/doctype/newsletter/test_newsletter.py
+++ b/erpnext/support/doctype/newsletter/test_newsletter.py
@@ -5,7 +5,7 @@
 
 class TestNewsletter(unittest.TestCase):
 	def test_get_recipients_lead(self):
-		w = frappe.bean(test_records[0])
+		w = frappe.get_doc(test_records[0])
 		w.insert()
 		self.assertTrue("test_lead@example.com" in w.controller.get_recipients())
 		frappe.db.sql("""delete from `tabBulk Email`""")
@@ -13,24 +13,24 @@
 		self.assertTrue(frappe.db.get_value("Bulk Email", {"recipient": "test_lead@example.com"}))
 
 	def test_get_recipients_lead_by_status(self):
-		w = frappe.bean(test_records[0])
+		w = frappe.get_doc(test_records[0])
 		w.lead_status="Converted"
 		w.insert()
 		self.assertTrue("test_lead3@example.com" in w.controller.get_recipients())
 
 	def test_get_recipients_contact_customer(self):
-		w = frappe.bean(test_records[1])
+		w = frappe.get_doc(test_records[1])
 		w.insert()
 		self.assertTrue("test_contact_customer@example.com" in w.controller.get_recipients())
 
 	def test_get_recipients_contact_supplier(self):
-		w = frappe.bean(test_records[1])
+		w = frappe.get_doc(test_records[1])
 		w.contact_type="Supplier"
 		w.insert()
 		self.assertTrue("test_contact_supplier@example.com" in w.controller.get_recipients())
 
 	def test_get_recipients_custom(self):
-		w = frappe.bean(test_records[2])
+		w = frappe.get_doc(test_records[2])
 		w.insert()
 		self.assertTrue("test_custom2@example.com" in w.controller.get_recipients())
 		self.assertTrue(frappe.db.get("Lead", 
diff --git a/erpnext/support/doctype/support_ticket/get_support_mails.py b/erpnext/support/doctype/support_ticket/get_support_mails.py
index 0edf54a..fa3b283 100644
--- a/erpnext/support/doctype/support_ticket/get_support_mails.py
+++ b/erpnext/support/doctype/support_ticket/get_support_mails.py
@@ -10,7 +10,7 @@
 
 class SupportMailbox(POP3Mailbox):	
 	def setup(self, args=None):
-		self.email_settings = frappe.doc("Support Email Settings", "Support Email Settings")
+		self.email_settings = frappe.get_doc("Support Email Settings", "Support Email Settings")
 		self.settings = args or frappe._dict({
 			"use_ssl": self.email_settings.use_ssl,
 			"host": self.email_settings.mail_server,
@@ -58,12 +58,12 @@
 		
 def add_support_communication(subject, content, sender, docname=None, mail=None):
 	if docname:
-		ticket = frappe.bean("Support Ticket", docname)
+		ticket = frappe.get_doc("Support Ticket", docname)
 		ticket.status = 'Open'
 		ticket.ignore_permissions = True
 		ticket.save()
 	else:
-		ticket = frappe.bean([decode_dict({
+		ticket = frappe.get_doc([decode_dict({
 			"doctype":"Support Ticket",
 			"description": content,
 			"subject": subject,
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.py b/erpnext/support/doctype/support_ticket/support_ticket.py
index 6aa5b78..9517ea4 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.py
+++ b/erpnext/support/doctype/support_ticket/support_ticket.py
@@ -57,7 +57,7 @@
 
 @frappe.whitelist()
 def set_status(name, status):
-	st = frappe.bean("Support Ticket", name)
+	st = frappe.get_doc("Support Ticket", name)
 	st.status = status
 	st.save()
 		
diff --git a/erpnext/utilities/doctype/contact/contact.py b/erpnext/utilities/doctype/contact/contact.py
index 96cc879..28597ef 100644
--- a/erpnext/utilities/doctype/contact/contact.py
+++ b/erpnext/utilities/doctype/contact/contact.py
@@ -56,7 +56,7 @@
 
 @frappe.whitelist()
 def get_contact_details(contact):
-	contact = frappe.doc("Contact", contact)
+	contact = frappe.get_doc("Contact", contact)
 	out = {
 		"contact_person": contact.get("name"),
 		"contact_display": " ".join(filter(None,