diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.json b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.json
index 6af86ed..81315af 100644
--- a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.json
+++ b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.json
@@ -58,9 +58,9 @@
    "permlevel": 0
   }, 
   {
-   "fieldname": "entries", 
+   "fieldname": "journal_entries", 
    "fieldtype": "Table", 
-   "label": "Entries", 
+   "label": "Journal Entries", 
    "options": "Bank Reconciliation Detail", 
    "permlevel": 0
   }, 
@@ -85,7 +85,7 @@
  "icon": "icon-check", 
  "idx": 1, 
  "issingle": 1, 
- "modified": "2014-05-27 03:37:21.783216", 
+ "modified": "2014-12-25 13:16:16.711609", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Bank Reconciliation", 
diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
index 2838afa..63f54a7 100644
--- a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
+++ b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
@@ -21,7 +21,7 @@
 		dl = frappe.db.sql("""select t1.name, t1.cheque_no, t1.cheque_date, t2.debit,
 				t2.credit, t1.posting_date, t2.against_account, t1.clearance_date
 			from
-				`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
+				`tabJournal Voucher` t1, `tabJournal Entry Account` t2
 			where
 				t2.parent = t1.name and t2.account = %s
 				and t1.posting_date >= %s and t1.posting_date <= %s and t1.docstatus=1
diff --git a/erpnext/accounts/doctype/budget_distribution/__init__.py b/erpnext/accounts/doctype/budget_distribution/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/accounts/doctype/budget_distribution/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/budget_distribution/test_budget_distribution.py b/erpnext/accounts/doctype/budget_distribution/test_budget_distribution.py
deleted file mode 100644
index 4626bae..0000000
--- a/erpnext/accounts/doctype/budget_distribution/test_budget_distribution.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-test_records = frappe.get_test_records('Budget Distribution')
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/README.md b/erpnext/accounts/doctype/budget_distribution_detail/README.md
deleted file mode 100644
index daa462a..0000000
--- a/erpnext/accounts/doctype/budget_distribution_detail/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Percent allocation for month for parent Budget Distribution.
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/__init__.py b/erpnext/accounts/doctype/budget_distribution_detail/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/accounts/doctype/budget_distribution_detail/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.py b/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.py
deleted file mode 100644
index 87d38fd..0000000
--- a/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.model.document import Document
-
-class BudgetDistributionDetail(Document):
-	pass
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/c_form/c_form.js b/erpnext/accounts/doctype/c_form/c_form.js
index e4046d5..1e9ff0b 100644
--- a/erpnext/accounts/doctype/c_form/c_form.js
+++ b/erpnext/accounts/doctype/c_form/c_form.js
@@ -5,7 +5,7 @@
 // -----------------------------
 frappe.require("assets/erpnext/js/utils.js");
 
-cur_frm.fields_dict.invoice_details.grid.get_field("invoice_no").get_query = function(doc) {
+cur_frm.fields_dict.invoices.grid.get_field("invoice_no").get_query = function(doc) {
 	return {
 		filters: {
 			"docstatus": 1, 
@@ -23,7 +23,7 @@
 
 cur_frm.cscript.invoice_no = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
-	return get_server_fields('get_invoice_details', d.invoice_no, 'invoice_details', doc, cdt, cdn, 1);
+	return get_server_fields('get_invoice_details', d.invoice_no, 'invoices', doc, cdt, cdn, 1);
 }
 
 cur_frm.cscript.company = function(doc, cdt, cdn) {
diff --git a/erpnext/accounts/doctype/c_form/c_form.py b/erpnext/accounts/doctype/c_form/c_form.py
index c18d28a..c04e7c2 100644
--- a/erpnext/accounts/doctype/c_form/c_form.py
+++ b/erpnext/accounts/doctype/c_form/c_form.py
@@ -12,7 +12,7 @@
 		"""Validate invoice that c-form is applicable
 			and no other c-form is received for that"""
 
-		for d in self.get('invoice_details'):
+		for d in self.get('invoices'):
 			if d.invoice_no:
 				inv = frappe.db.sql("""select c_form_applicable, c_form_no from
 					`tabSales Invoice` where name = %s and docstatus = 1""", d.invoice_no)
@@ -42,7 +42,7 @@
 		frappe.db.sql("""update `tabSales Invoice` set c_form_no=null where c_form_no=%s""", self.name)
 
 	def set_cform_in_sales_invoices(self):
-		inv = [d.invoice_no for d in self.get('invoice_details')]
+		inv = [d.invoice_no for d in self.get('invoices')]
 		if inv:
 			frappe.db.sql("""update `tabSales Invoice` set c_form_no=%s, modified=%s where name in (%s)""" %
 				('%s', '%s', ', '.join(['%s'] * len(inv))), tuple([self.name, self.modified] + inv))
@@ -54,7 +54,7 @@
 			frappe.throw(_("Please enter atleast 1 invoice in the table"))
 
 	def set_total_invoiced_amount(self):
-		total = sum([flt(d.grand_total) for d in self.get('invoice_details')])
+		total = sum([flt(d.grand_total) for d in self.get('invoices')])
 		frappe.db.set(self, 'total_invoiced_amount', total)
 
 	def get_invoice_details(self, invoice_no):
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index d9e71d9..de287d1 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -12,8 +12,8 @@
 
 	setup_queries: function() {
 		var me = this;
-		if(this.frm.fields_dict["budget_details"].grid.get_field("account")) {
-			this.frm.set_query("account", "budget_details", function() {
+		if(this.frm.fields_dict["budgets"].grid.get_field("account")) {
+			this.frm.set_query("account", "budgets", function() {
 				return {
 					filters:[
 						['Account', 'company', '=', me.frm.doc.company],
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.json b/erpnext/accounts/doctype/cost_center/cost_center.json
index 9582bd6..f8d59f8 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.json
+++ b/erpnext/accounts/doctype/cost_center/cost_center.json
@@ -85,7 +85,7 @@
    "label": "Distribution Id", 
    "oldfieldname": "distribution_id", 
    "oldfieldtype": "Link", 
-   "options": "Budget Distribution", 
+   "options": "Monthly Distribution", 
    "permlevel": 0
   }, 
   {
@@ -145,7 +145,7 @@
  "icon": "icon-money", 
  "idx": 1, 
  "in_create": 0, 
- "modified": "2014-12-24 15:18:16.937207", 
+ "modified": "2014-12-25 15:35:09.968578", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Cost Center", 
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py
index 0cc9918..d75e690 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.py
+++ b/erpnext/accounts/doctype/cost_center/cost_center.py
@@ -51,7 +51,7 @@
 
 	def validate_budget_details(self):
 		check_acc_list = []
-		for d in self.get('budget_details'):
+		for d in self.get('budgets'):
 			if self.group_or_ledger=="Group":
 				msgprint(_("Budget cannot be set for Group Cost Centers"), raise_exception=1)
 
diff --git a/erpnext/accounts/doctype/cost_center/test_records.json b/erpnext/accounts/doctype/cost_center/test_records.json
index 7ffc687..13e0ea9 100644
--- a/erpnext/accounts/doctype/cost_center/test_records.json
+++ b/erpnext/accounts/doctype/cost_center/test_records.json
@@ -1,12 +1,12 @@
 [
  {
-  "budget_details": [
+  "budgets": [
    {
     "account": "_Test Account Cost for Goods Sold - _TC", 
     "budget_allocated": 100000, 
     "doctype": "Budget Detail", 
     "fiscal_year": "_Test Fiscal Year 2013", 
-    "parentfield": "budget_details"
+    "parentfield": "budgets"
    }
   ], 
   "company": "_Test Company", 
diff --git a/erpnext/accounts/doctype/journal_voucher/README.md b/erpnext/accounts/doctype/journal_entry/README.md
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher/README.md
rename to erpnext/accounts/doctype/journal_entry/README.md
diff --git a/erpnext/accounts/doctype/journal_entry/__init__.py b/erpnext/accounts/doctype/journal_entry/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/accounts/doctype/journal_entry/__init__.py
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
similarity index 95%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher.js
rename to erpnext/accounts/doctype/journal_entry/journal_entry.js
index b1d4af0..bf694b0 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -80,7 +80,7 @@
 	setup_balance_formatter: function() {
 		var me = this;
 		$.each(["balance", "party_balance"], function(i, field) {
-			var df = frappe.meta.get_docfield("Journal Voucher Detail", field, me.frm.doc.name);
+			var df = frappe.meta.get_docfield("Journal Entry Account", field, me.frm.doc.name);
 			df.formatter = function(value, df, options, doc) {
 				var currency = frappe.meta.get_field_currency(df, doc);
 				var dr_or_cr = value ? ('<label>' + (value > 0.0 ? __("Dr") : __("Cr")) + '</label>') : "";
@@ -227,9 +227,9 @@
 		return;
 
 	var update_jv_details = function(doc, r) {
-		var jvdetail = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
+		var jvdetail = frappe.model.add_child(doc, "Journal Entry Account", "entries");
 		$.each(r, function(i, d) {
-			var row = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
+			var row = frappe.model.add_child(doc, "Journal Entry Account", "entries");
 			row.account = d.account;
 			row.balance = d.balance;
 		});
@@ -268,7 +268,7 @@
 	}
 }
 
-frappe.ui.form.on("Journal Voucher Detail", "party", function(frm, cdt, cdn) {
+frappe.ui.form.on("Journal Entry Account", "party", function(frm, cdt, cdn) {
 	var d = frappe.get_doc(cdt, cdn);
 	if(!d.account && d.party_type && d.party) {
 		return frm.call({
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.json b/erpnext/accounts/doctype/journal_entry/journal_entry.json
similarity index 94%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher.json
rename to erpnext/accounts/doctype/journal_entry/journal_entry.json
index cfad59c..62368e3 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.json
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.json
@@ -6,9 +6,9 @@
  "doctype": "DocType", 
  "fields": [
   {
-   "fieldname": "voucher_type_and_date", 
+   "fieldname": "entry_type_and_date", 
    "fieldtype": "Section Break", 
-   "label": "Voucher Type and Date", 
+   "label": "Entry Type and Date", 
    "options": "icon-flag", 
    "permlevel": 0
   }, 
@@ -42,7 +42,7 @@
    "label": "Voucher Type", 
    "oldfieldname": "voucher_type", 
    "oldfieldtype": "Select", 
-   "options": "Journal Entry\nBank Voucher\nCash Voucher\nCredit Card Voucher\nDebit Note\nCredit Note\nContra Voucher\nExcise Voucher\nWrite Off Voucher\nOpening Entry", 
+   "options": "Journal Entry\nBank Entry\nCash Entry\nCredit Card Entry\nDebit Note\nCredit Note\nContra Entry\nExcise Entry\nWrite Off Entry\nOpening Entry", 
    "permlevel": 0, 
    "print_hide": 0, 
    "read_only": 0, 
@@ -87,7 +87,7 @@
    "label": "Entries", 
    "oldfieldname": "entries", 
    "oldfieldtype": "Table", 
-   "options": "Journal Voucher Detail", 
+   "options": "Journal Entry Account", 
    "permlevel": 0, 
    "print_hide": 0, 
    "read_only": 0
@@ -307,7 +307,7 @@
   }, 
   {
    "default": "Accounts Receivable", 
-   "depends_on": "eval:doc.voucher_type == 'Write Off Voucher'", 
+   "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", 
    "fieldname": "write_off_based_on", 
    "fieldtype": "Select", 
    "label": "Write Off Based On", 
@@ -318,7 +318,7 @@
    "report_hide": 1
   }, 
   {
-   "depends_on": "eval:doc.voucher_type == 'Write Off Voucher'", 
+   "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", 
    "fieldname": "write_off_amount", 
    "fieldtype": "Currency", 
    "label": "Write Off Amount <=", 
@@ -329,7 +329,7 @@
    "report_hide": 1
   }, 
   {
-   "depends_on": "eval:doc.voucher_type == 'Write Off Voucher'", 
+   "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", 
    "fieldname": "get_outstanding_invoices", 
    "fieldtype": "Button", 
    "label": "Get Outstanding Invoices", 
@@ -439,7 +439,7 @@
    "no_copy": 1, 
    "oldfieldname": "amended_from", 
    "oldfieldtype": "Link", 
-   "options": "Journal Voucher", 
+   "options": "Journal Entry", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 1
@@ -448,10 +448,10 @@
  "icon": "icon-file-text", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-12-12 16:48:57.294150", 
+ "modified": "2014-12-25 15:29:26.441984", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
- "name": "Journal Voucher", 
+ "name": "Journal Entry", 
  "owner": "Administrator", 
  "permissions": [
   {
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
similarity index 97%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher.py
rename to erpnext/accounts/doctype/journal_entry/journal_entry.py
index 599950f..172c315 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -10,9 +10,9 @@
 from erpnext.accounts.utils import get_balance_on
 
 
-class JournalVoucher(AccountsController):
+class JournalEntry(AccountsController):
 	def __init__(self, arg1, arg2=None):
-		super(JournalVoucher, self).__init__(arg1, arg2)
+		super(JournalEntry, self).__init__(arg1, arg2)
 
 	def get_feed(self):
 		return self.voucher_type
@@ -22,7 +22,7 @@
 			self.is_opening='No'
 		self.clearance_date = None
 
-		super(JournalVoucher, self).validate_date_with_fiscal_year()
+		super(JournalEntry, self).validate_date_with_fiscal_year()
 		self.validate_party()
 		self.validate_cheque_info()
 		self.validate_entries_for_advance()
@@ -133,7 +133,7 @@
 				if d.against_jv == self.name:
 					frappe.throw(_("You can not enter current voucher in 'Against Journal Voucher' column"))
 
-				against_entries = frappe.db.sql("""select * from `tabJournal Voucher Detail`
+				against_entries = frappe.db.sql("""select * from `tabJournal Entry Account`
 					where account = %s and docstatus = 1 and parent = %s
 					and ifnull(against_jv, '') = '' and ifnull(against_invoice, '') = ''
 					and ifnull(against_voucher, '') = ''""", (d.account, d.against_jv), as_dict=True)
@@ -423,18 +423,18 @@
 			return frappe.db.sql("""select name, credit_to as account, supplier as party, outstanding_amount
 				from `tabPurchase Invoice` where docstatus = 1 and company = %s
 				and outstanding_amount > 0 %s""" % ('%s', cond), self.company, as_dict=True)
-				
+
 	def update_expense_claim(self):
 		for d in self.entries:
 			if d.against_expense_claim:
-				amt = frappe.db.sql("""select sum(debit) as amt from `tabJournal Voucher Detail` 
+				amt = frappe.db.sql("""select sum(debit) as amt from `tabJournal Entry Account`
 					where against_expense_claim = %s and docstatus = 1""", d.against_expense_claim ,as_dict=1)[0].amt
 				frappe.db.set_value("Expense Claim", d.against_expense_claim , "total_amount_reimbursed", amt)
-				
+
 	def validate_expense_claim(self):
 		for d in self.entries:
 			if d.against_expense_claim:
-				sanctioned_amount, reimbursed_amount = frappe.db.get_value("Expense Claim", d.against_expense_claim, 
+				sanctioned_amount, reimbursed_amount = frappe.db.get_value("Expense Claim", d.against_expense_claim,
 					("total_sanctioned_amount", "total_amount_reimbursed"))
 				pending_amount = cint(sanctioned_amount) - cint(reimbursed_amount)
 				if d.debit > pending_amount:
@@ -520,7 +520,7 @@
 
 def get_against_jv(doctype, txt, searchfield, start, page_len, filters):
 	return frappe.db.sql("""select jv.name, jv.posting_date, jv.user_remark
-		from `tabJournal Voucher` jv, `tabJournal Voucher Detail` jv_detail
+		from `tabJournal Voucher` jv, `tabJournal Entry Account` jv_detail
 		where jv_detail.parent = jv.name and jv_detail.account = %s and jv_detail.party = %s
 		and (ifnull(jvd.against_invoice, '') = '' and ifnull(jvd.against_voucher, '') = '' and ifnull(jvd.against_jv, '') = '' )
 		and jv.docstatus = 1 and jv.{0} like %s order by jv.name desc limit %s, %s""".format(searchfield),
@@ -532,7 +532,7 @@
 	if args.get("doctype") == "Journal Voucher" and args.get("party"):
 		against_jv_amount = frappe.db.sql("""
 			select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
-			from `tabJournal Voucher Detail` where parent=%s and party=%s
+			from `tabJournal Entry Account` where parent=%s and party=%s
 			and ifnull(against_invoice, '')='' and ifnull(against_voucher, '')=''
 			and ifnull(against_jv, '')=''""", (args['docname'], args['party']))
 
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.html b/erpnext/accounts/doctype/journal_entry/journal_entry_list.html
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher_list.html
rename to erpnext/accounts/doctype/journal_entry/journal_entry_list.html
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.js b/erpnext/accounts/doctype/journal_entry/journal_entry_list.js
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher_list.js
rename to erpnext/accounts/doctype/journal_entry/journal_entry_list.js
diff --git a/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
similarity index 97%
rename from erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
rename to erpnext/accounts/doctype/journal_entry/test_journal_entry.py
index 3211346..410f22f 100644
--- a/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
@@ -5,7 +5,7 @@
 import unittest, frappe
 from frappe.utils import flt
 
-class TestJournalVoucher(unittest.TestCase):
+class TestJournalEntry(unittest.TestCase):
 	def test_journal_voucher_with_against_jv(self):
 
 		jv_invoice = frappe.copy_doc(test_records[2])
@@ -40,11 +40,11 @@
 		test_voucher.submit()
 
 		if test_voucher.doctype == "Journal Voucher":
-			self.assertTrue(frappe.db.sql("""select name from `tabJournal Voucher Detail`
+			self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account`
 				where account = %s and docstatus = 1 and parent = %s""",
 				("_Test Receivable - _TC", test_voucher.name)))
 
-		self.assertTrue(not frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(not frappe.db.sql("""select name from `tabJournal Entry Account`
 			where %s=%s""" % (field_dict.get(test_voucher.doctype), '%s'), (test_voucher.name)))
 
 		base_jv.get("entries")[0].is_advance = "Yes" if (test_voucher.doctype in ["Sales Order", "Purchase Order"]) else "No"
@@ -54,10 +54,10 @@
 
 		submitted_voucher = frappe.get_doc(test_voucher.doctype, test_voucher.name)
 
-		self.assertTrue(frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account`
 			where %s=%s""" % (field_dict.get(test_voucher.doctype), '%s'), (submitted_voucher.name)))
 
-		self.assertTrue(frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account`
 			where %s=%s and %s=400""" % (field_dict.get(submitted_voucher.doctype), '%s', dr_or_cr), (submitted_voucher.name)))
 
 		if base_jv.get("entries")[0].is_advance == "Yes":
@@ -76,7 +76,7 @@
 		if test_voucher.doctype == "Journal Voucher":
 			# if test_voucher is a Journal Voucher, test cancellation of test_voucher
 			test_voucher.cancel()
-			self.assertTrue(not frappe.db.sql("""select name from `tabJournal Voucher Detail`
+			self.assertTrue(not frappe.db.sql("""select name from `tabJournal Entry Account`
 				where against_jv=%s""", test_voucher.name))
 
 		elif test_voucher.doctype in ["Sales Order", "Purchase Order"]:
diff --git a/erpnext/accounts/doctype/journal_voucher/test_records.json b/erpnext/accounts/doctype/journal_entry/test_records.json
similarity index 88%
rename from erpnext/accounts/doctype/journal_voucher/test_records.json
rename to erpnext/accounts/doctype/journal_entry/test_records.json
index 285482f..bf98745 100644
--- a/erpnext/accounts/doctype/journal_voucher/test_records.json
+++ b/erpnext/accounts/doctype/journal_entry/test_records.json
@@ -11,14 +11,14 @@
 	"party": "_Test Customer",
     "credit": 400.0,
     "debit": 0.0,
-    "doctype": "Journal Voucher Detail",
+    "doctype": "Journal Entry Account",
     "parentfield": "entries"
    },
    {
     "account": "_Test Account Bank Account - _TC",
     "credit": 0.0,
     "debit": 400.0,
-    "doctype": "Journal Voucher Detail",
+    "doctype": "Journal Entry Account",
     "parentfield": "entries"
    }
   ],
@@ -40,14 +40,14 @@
 	"party": "_Test Supplier",
     "credit": 0.0,
     "debit": 400.0,
-    "doctype": "Journal Voucher Detail",
+    "doctype": "Journal Entry Account",
     "parentfield": "entries"
    },
    {
     "account": "_Test Account Bank Account - _TC",
     "credit": 400.0,
     "debit": 0.0,
-    "doctype": "Journal Voucher Detail",
+    "doctype": "Journal Entry Account",
     "parentfield": "entries"
    }
   ],
@@ -69,7 +69,7 @@
 	"party": "_Test Customer",
     "credit": 0.0,
     "debit": 400.0,
-    "doctype": "Journal Voucher Detail",
+    "doctype": "Journal Entry Account",
     "parentfield": "entries"
    },
    {
@@ -77,7 +77,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "credit": 400.0,
     "debit": 0.0,
-    "doctype": "Journal Voucher Detail",
+    "doctype": "Journal Entry Account",
     "parentfield": "entries"
    }
   ],
diff --git a/erpnext/accounts/doctype/journal_voucher_detail/README.md b/erpnext/accounts/doctype/journal_entry_account/README.md
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher_detail/README.md
rename to erpnext/accounts/doctype/journal_entry_account/README.md
diff --git a/erpnext/accounts/doctype/journal_entry_account/__init__.py b/erpnext/accounts/doctype/journal_entry_account/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/accounts/doctype/journal_entry_account/__init__.py
diff --git a/erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.json b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
similarity index 96%
rename from erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.json
rename to erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
index f896b6d..3a666d4 100644
--- a/erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.json
+++ b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
@@ -149,7 +149,7 @@
    "no_copy": 1, 
    "oldfieldname": "against_jv", 
    "oldfieldtype": "Link", 
-   "options": "Journal Voucher", 
+   "options": "Journal Entry", 
    "permlevel": 0, 
    "print_hide": 0, 
    "search_index": 1
@@ -206,10 +206,10 @@
  ], 
  "idx": 1, 
  "istable": 1, 
- "modified": "2014-12-08 19:32:47.996777", 
+ "modified": "2014-12-25 15:44:03.077639", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
- "name": "Journal Voucher Detail", 
+ "name": "Journal Entry Account", 
  "owner": "Administrator", 
  "permissions": []
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.py b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.py
new file mode 100644
index 0000000..9dc3cf7
--- /dev/null
+++ b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class JournalEntryAccount(Document):
+	pass
diff --git a/erpnext/accounts/doctype/journal_voucher/__init__.py b/erpnext/accounts/doctype/journal_voucher/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/accounts/doctype/journal_voucher/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/journal_voucher_detail/__init__.py b/erpnext/accounts/doctype/journal_voucher_detail/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/accounts/doctype/journal_voucher_detail/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.py b/erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.py
deleted file mode 100644
index 36700d2..0000000
--- a/erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.model.document import Document
-
-class JournalVoucherDetail(Document):
-	pass
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/budget_distribution/README.md b/erpnext/accounts/doctype/monthly_distribution/README.md
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution/README.md
rename to erpnext/accounts/doctype/monthly_distribution/README.md
diff --git a/erpnext/accounts/doctype/monthly_distribution/__init__.py b/erpnext/accounts/doctype/monthly_distribution/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/accounts/doctype/monthly_distribution/__init__.py
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.js b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.js
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution/budget_distribution.js
rename to erpnext/accounts/doctype/monthly_distribution/monthly_distribution.js
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.json b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.json
similarity index 88%
rename from erpnext/accounts/doctype/budget_distribution/budget_distribution.json
rename to erpnext/accounts/doctype/monthly_distribution/monthly_distribution.json
index f710249..095c64a 100644
--- a/erpnext/accounts/doctype/budget_distribution/budget_distribution.json
+++ b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.json
@@ -29,21 +29,21 @@
    "search_index": 1
   }, 
   {
-   "fieldname": "budget_distribution_details", 
+   "fieldname": "percentages", 
    "fieldtype": "Table", 
-   "label": "Budget Distribution Details", 
+   "label": "Monthly Distribution Percentages", 
    "oldfieldname": "budget_distribution_details", 
    "oldfieldtype": "Table", 
-   "options": "Budget Distribution Detail", 
+   "options": "Monthly Distribution Percentage", 
    "permlevel": 0
   }
  ], 
  "icon": "icon-bar-chart", 
  "idx": 1, 
- "modified": "2014-05-09 02:16:47.567367", 
+ "modified": "2014-12-25 15:45:04.729489", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
- "name": "Budget Distribution", 
+ "name": "Monthly Distribution", 
  "name_case": "Title Case", 
  "owner": "Administrator", 
  "permissions": [
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.py b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py
similarity index 95%
rename from erpnext/accounts/doctype/budget_distribution/budget_distribution.py
rename to erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py
index 1b1a8ec..a0646b7 100644
--- a/erpnext/accounts/doctype/budget_distribution/budget_distribution.py
+++ b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py
@@ -7,7 +7,7 @@
 from frappe import _
 from frappe.model.document import Document
 
-class BudgetDistribution(Document):
+class MonthlyDistribution(Document):
 	def get_months(self):
 		month_list = ['January','February','March','April','May','June','July','August','September',
 		'October','November','December']
diff --git a/erpnext/accounts/doctype/monthly_distribution/test_monthly_distribution.py b/erpnext/accounts/doctype/monthly_distribution/test_monthly_distribution.py
new file mode 100644
index 0000000..6d3101c
--- /dev/null
+++ b/erpnext/accounts/doctype/monthly_distribution/test_monthly_distribution.py
@@ -0,0 +1,10 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
+# See license.txt
+
+import frappe
+import unittest
+
+test_records = frappe.get_test_records('Monthly Distribution')
+
+class TestMonthlyDistribution(unittest.TestCase):
+	pass
diff --git a/erpnext/accounts/doctype/budget_distribution/test_records.json b/erpnext/accounts/doctype/monthly_distribution/test_records.json
similarity index 99%
rename from erpnext/accounts/doctype/budget_distribution/test_records.json
rename to erpnext/accounts/doctype/monthly_distribution/test_records.json
index 7e8c640..ffc6c68 100644
--- a/erpnext/accounts/doctype/budget_distribution/test_records.json
+++ b/erpnext/accounts/doctype/monthly_distribution/test_records.json
@@ -39,6 +39,6 @@
 		}, {
 			"month": "December",
 			"percentage_allocation": "10"
-		}		
+		}
 	]
 }]
diff --git a/erpnext/accounts/doctype/monthly_distribution_percentage/__init__.py b/erpnext/accounts/doctype/monthly_distribution_percentage/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/accounts/doctype/monthly_distribution_percentage/__init__.py
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.json b/erpnext/accounts/doctype/monthly_distribution_percentage/monthly_distribution_percentage.json
similarity index 77%
rename from erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.json
rename to erpnext/accounts/doctype/monthly_distribution_percentage/monthly_distribution_percentage.json
index aa4f2ae..aac6a30 100644
--- a/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.json
+++ b/erpnext/accounts/doctype/monthly_distribution_percentage/monthly_distribution_percentage.json
@@ -1,6 +1,6 @@
 {
  "autoname": "BDD/.#####", 
- "creation": "2013-02-22 01:27:38.000000", 
+ "creation": "2013-02-22 01:27:38", 
  "docstatus": 0, 
  "doctype": "DocType", 
  "fields": [
@@ -27,9 +27,10 @@
  ], 
  "idx": 1, 
  "istable": 1, 
- "modified": "2013-12-20 19:22:59.000000", 
+ "modified": "2014-12-25 15:45:11.173204", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
- "name": "Budget Distribution Detail", 
- "owner": "Administrator"
+ "name": "Monthly Distribution Percentage", 
+ "owner": "Administrator", 
+ "permissions": []
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/monthly_distribution_percentage/monthly_distribution_percentage.py b/erpnext/accounts/doctype/monthly_distribution_percentage/monthly_distribution_percentage.py
new file mode 100644
index 0000000..e0c71b8
--- /dev/null
+++ b/erpnext/accounts/doctype/monthly_distribution_percentage/monthly_distribution_percentage.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class MonthlyDistributionPercentage(Document):
+	pass
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index 0d786bf..b005137 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -72,7 +72,7 @@
 			callback: function(r, rt) {
 				var invoices = [];
 
-				$.each(me.frm.doc.payment_reconciliation_invoices || [], function(i, row) {
+				$.each(me.frm.doc.invoices || [], function(i, row) {
 						if (row.invoice_number && !inList(invoices, row.invoice_number))
 							invoices.push(row.invoice_number);
 				});
@@ -80,11 +80,11 @@
 				frappe.meta.get_docfield("Payment Reconciliation Payment", "invoice_number",
 					me.frm.doc.name).options = invoices.join("\n");
 
-				$.each(me.frm.doc.payment_reconciliation_payments || [], function(i, p) {
+				$.each(me.frm.doc.payments || [], function(i, p) {
 					if(!inList(invoices, cstr(p.invoice_number))) p.invoice_number = null;
 				});
 
-				refresh_field("payment_reconciliation_payments");
+				refresh_field("payments");
 			}
 		});
 
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index f4f1b42..8186bdf 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -29,7 +29,7 @@
 				t1.name as voucher_no, t1.posting_date, t1.remark,
 				t2.name as voucher_detail_no, {dr_or_cr} as payment_amount, t2.is_advance
 			from
-				`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
+				`tabJournal Voucher` t1, `tabJournal Entry Account` t2
 			where
 				t1.name = t2.parent and t1.docstatus = 1 and t2.docstatus = 1
 				and t2.party_type = %(party_type)s and t2.party = %(party)s
@@ -55,9 +55,9 @@
 		self.add_payment_entries(jv_entries)
 
 	def add_payment_entries(self, jv_entries):
-		self.set('payment_reconciliation_payments', [])
+		self.set('payments', [])
 		for e in jv_entries:
-			ent = self.append('payment_reconciliation_payments', {})
+			ent = self.append('payments', {})
 			ent.journal_voucher = e.get('voucher_no')
 			ent.posting_date = e.get('posting_date')
 			ent.amount = flt(e.get('payment_amount'))
@@ -66,7 +66,7 @@
 			ent.is_advance = e.get('is_advance')
 
 	def get_invoice_entries(self):
-		#Fetch JVs, Sales and Purchase Invoices for 'payment_reconciliation_invoices' to reconcile against
+		#Fetch JVs, Sales and Purchase Invoices for 'invoices' to reconcile against
 		non_reconciled_invoices = []
 		dr_or_cr = "debit" if self.party_type == "Customer" else "credit"
 		cond = self.check_condition(dr_or_cr)
@@ -123,11 +123,11 @@
 		self.add_invoice_entries(non_reconciled_invoices)
 
 	def add_invoice_entries(self, non_reconciled_invoices):
-		#Populate 'payment_reconciliation_invoices' with JVs and Invoices to reconcile against
-		self.set('payment_reconciliation_invoices', [])
+		#Populate 'invoices' with JVs and Invoices to reconcile against
+		self.set('invoices', [])
 
 		for e in non_reconciled_invoices:
-			ent = self.append('payment_reconciliation_invoices', {})
+			ent = self.append('invoices', {})
 			ent.invoice_type = e.get('voucher_type')
 			ent.invoice_number = e.get('voucher_no')
 			ent.invoice_date = e.get('posting_date')
@@ -139,7 +139,7 @@
 		self.validate_invoice()
 		dr_or_cr = "credit" if self.party_type == "Customer" else "debit"
 		lst = []
-		for e in self.get('payment_reconciliation_payments'):
+		for e in self.get('payments'):
 			if e.invoice_type and e.invoice_number and e.allocated_amount:
 				lst.append({
 					'voucher_no' : e.journal_voucher,
@@ -168,18 +168,18 @@
 
 
 	def validate_invoice(self):
-		if not self.get("payment_reconciliation_invoices"):
+		if not self.get("invoices"):
 			frappe.throw(_("No records found in the Invoice table"))
 
-		if not self.get("payment_reconciliation_payments"):
+		if not self.get("payments"):
 			frappe.throw(_("No records found in the Payment table"))
 
 		unreconciled_invoices = frappe._dict()
-		for d in self.get("payment_reconciliation_invoices"):
+		for d in self.get("invoices"):
 			unreconciled_invoices.setdefault(d.invoice_type, {}).setdefault(d.invoice_number, d.outstanding_amount)
 
 		invoices_to_reconcile = []
-		for p in self.get("payment_reconciliation_payments"):
+		for p in self.get("payments"):
 			if p.invoice_type and p.invoice_number and p.allocated_amount:
 				invoices_to_reconcile.append(p.invoice_number)
 
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.js b/erpnext/accounts/doctype/payment_tool/payment_tool.js
index 1a0b486..b51be9c 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.js
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.js
@@ -24,7 +24,7 @@
 		}
 	});
 
-	frm.set_query("against_voucher_type", "payment_tool_details", function() {
+	frm.set_query("against_voucher_type", "against_vouchers", function() {
 		return {
 			filters: {"name": ["in", ["Sales Invoice", "Purchase Invoice", "Journal Voucher", "Sales Order", "Purchase Order"]]}
 		};
@@ -75,7 +75,7 @@
 frappe.ui.form.on("Payment Tool", "get_outstanding_vouchers", function(frm) {
 	erpnext.payment_tool.check_mandatory_to_fetch(frm.doc);
 
-	frm.set_value("payment_tool_details", []);
+	frm.set_value("against_vouchers", []);
 
 	return  frappe.call({
 		method: 'erpnext.accounts.doctype.payment_tool.payment_tool.get_outstanding_vouchers',
@@ -93,16 +93,16 @@
 				frm.fields_dict.get_outstanding_vouchers.$input.removeClass("btn-primary");
 				frm.fields_dict.make_journal_voucher.$input.addClass("btn-primary");
 
-				frappe.model.clear_table(frm.doc, "payment_tool_details");
+				frappe.model.clear_table(frm.doc, "against_vouchers");
 				$.each(r.message, function(i, d) {
-					var invoice_detail = frappe.model.add_child(frm.doc, "Payment Tool Detail", "payment_tool_details");
+					var invoice_detail = frappe.model.add_child(frm.doc, "Payment Tool Detail", "against_vouchers");
 					invoice_detail.against_voucher_type = d.voucher_type;
 					invoice_detail.against_voucher_no = d.voucher_no;
 					invoice_detail.total_amount = d.invoice_amount;
 					invoice_detail.outstanding_amount = d.outstanding_amount;
 				});
 			}
-			refresh_field("payment_tool_details");
+			refresh_field("against_vouchers");
 			erpnext.payment_tool.set_total_payment_amount(frm);
 		}
 	});
@@ -114,7 +114,7 @@
 });
 
 erpnext.payment_tool.validate_against_voucher = function(frm) {
-	$.each(frm.doc.payment_tool_details || [], function(i, row) {
+	$.each(frm.doc.against_vouchers || [], function(i, row) {
 		if(frm.doc.party_type=="Customer"
 			&& !in_list(["Sales Order", "Sales Invoice", "Journal Voucher"], row.against_voucher_type)) {
 				frappe.model.set_value(row.doctype, row.name, "against_voucher_type", "");
@@ -154,13 +154,13 @@
 	erpnext.payment_tool.set_total_payment_amount(frm);
 });
 
-frappe.ui.form.on("Payment Tool Detail", "payment_tool_details_remove", function(frm) {
+frappe.ui.form.on("Payment Tool Detail", "against_vouchers_remove", function(frm) {
 	erpnext.payment_tool.set_total_payment_amount(frm);
 });
 
 erpnext.payment_tool.set_total_payment_amount = function(frm) {
 	var total_amount = 0.00;
-	$.each(frm.doc.payment_tool_details || [], function(i, row) {
+	$.each(frm.doc.against_vouchers || [], function(i, row) {
 		if (row.payment_amount && (row.payment_amount <= row.outstanding_amount)) {
 			total_amount = total_amount + row.payment_amount;
 		} else {
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.py b/erpnext/accounts/doctype/payment_tool/payment_tool.py
index 9bd5166..c57ee25 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.py
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.py
@@ -29,7 +29,7 @@
 		if not self.total_payment_amount:
 			frappe.throw(_("Please enter Payment Amount in atleast one row"))
 
-		for v in self.get("payment_tool_details"):
+		for v in self.get("against_vouchers"):
 			if not frappe.db.get_value(v.against_voucher_type, {"name": v.against_voucher_no}):
 				frappe.throw(_("Row {0}: {1} is not a valid {2}").format(v.idx, v.against_voucher_no,
 					v.against_voucher_type))
diff --git a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py b/erpnext/accounts/doctype/payment_tool/test_payment_tool.py
index 579dad3..6555e66 100644
--- a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py
+++ b/erpnext/accounts/doctype/payment_tool/test_payment_tool.py
@@ -154,7 +154,7 @@
 
 	def check_jv_entries(self, paytool, outstanding_entries, expected_outstanding):
 		for e in outstanding_entries:
-			d1 = paytool.append("payment_tool_details")
+			d1 = paytool.append("against_vouchers")
 			d1.against_voucher_type = e.get("voucher_type")
 			d1.against_voucher_no = e.get("voucher_no")
 			d1.total_amount = e.get("invoice_amount")
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index 1f4218e..6f97794 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -2,8 +2,8 @@
 // License: GNU General Public License v3. See license.txt
 
 cur_frm.cscript.tname = "Purchase Invoice Item";
-cur_frm.cscript.fname = "entries";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 
 frappe.provide("erpnext.accounts");
 {% include 'buying/doctype/purchase_common/purchase_common.js' %};
@@ -99,7 +99,7 @@
 	},
 
 	allocated_amount: function() {
-		this.calculate_total_advance("Purchase Invoice", "advance_allocation_details");
+		this.calculate_total_advance("Purchase Invoice", "advances");
 		this.frm.refresh_fields();
 	},
 
@@ -109,12 +109,12 @@
 
 	entries_add: function(doc, cdt, cdn) {
 		var row = frappe.get_doc(cdt, cdn);
-		this.frm.script_manager.copy_from_first_row("entries", row,
+		this.frm.script_manager.copy_from_first_row("items", row,
 			["expense_account", "cost_center", "project_name"]);
 	},
 
 	on_submit: function() {
-		$.each(this.frm.doc["entries"], function(i, row) {
+		$.each(this.frm.doc["items"], function(i, row) {
 			if(row.purchase_receipt) frappe.model.clear_doc("Purchase Receipt", row.purchase_receipt)
 		})
 	}
@@ -153,7 +153,7 @@
 	}
 }
 
-cur_frm.fields_dict['entries'].grid.get_field("item_code").get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field("item_code").get_query = function(doc, cdt, cdn) {
 	return {
 		query: "erpnext.controllers.queries.item_query",
 		filters:{
@@ -182,7 +182,7 @@
 	}
 }
 
-cur_frm.set_query("expense_account", "entries", function(doc) {
+cur_frm.set_query("expense_account", "items", function(doc) {
 	return{
 		query: "erpnext.accounts.doctype.purchase_invoice.purchase_invoice.get_expense_account",
 		filters: {'company': doc.company}
@@ -192,15 +192,15 @@
 cur_frm.cscript.expense_account = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
 	if(d.idx == 1 && d.expense_account){
-		var cl = doc.entries || [];
+		var cl = doc.items || [];
 		for(var i = 0; i < cl.length; i++){
 			if(!cl[i].expense_account) cl[i].expense_account = d.expense_account;
 		}
 	}
-	refresh_field('entries');
+	refresh_field('items');
 }
 
-cur_frm.fields_dict["entries"].grid.get_field("cost_center").get_query = function(doc) {
+cur_frm.fields_dict["items"].grid.get_field("cost_center").get_query = function(doc) {
 	return {
 		filters: {
 			'company': doc.company,
@@ -213,15 +213,15 @@
 cur_frm.cscript.cost_center = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
 	if(d.idx == 1 && d.cost_center){
-		var cl = doc.entries || [];
+		var cl = doc.items || [];
 		for(var i = 0; i < cl.length; i++){
 			if(!cl[i].cost_center) cl[i].cost_center = d.cost_center;
 		}
 	}
-	refresh_field('entries');
+	refresh_field('items');
 }
 
-cur_frm.fields_dict['entries'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) {
 	return{
 		filters:[
 			['Project', 'status', 'not in', 'Completed, Cancelled']
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 6a612a9..3ccace4 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -45,8 +45,8 @@
 		self.check_active_purchase_items()
 		self.check_conversion_rate()
 		self.validate_credit_to_acc()
-		self.clear_unallocated_advances("Purchase Invoice Advance", "advance_allocation_details")
-		self.validate_advance_jv("advance_allocation_details", "purchase_order")
+		self.clear_unallocated_advances("Purchase Invoice Advance", "advances")
+		self.validate_advance_jv("advances", "purchase_order")
 		self.check_for_stopped_status()
 		self.validate_with_previous_doc()
 		self.validate_uom_is_integer("uom", "qty")
@@ -55,7 +55,7 @@
 		self.validate_write_off_account()
 		self.update_valuation_rate("entries")
 		self.validate_multiple_billing("Purchase Receipt", "pr_detail", "amount",
-			"purchase_receipt_details")
+			"items")
 		self.create_remarks()
 
 	def create_remarks(self):
@@ -75,7 +75,7 @@
 
 	def get_advances(self):
 		super(PurchaseInvoice, self).get_advances(self.credit_to, "Supplier", self.supplier,
-			"Purchase Invoice Advance", "advance_allocation_details", "debit", "purchase_order")
+			"Purchase Invoice Advance", "advances", "debit", "purchase_order")
 
 	def check_active_purchase_items(self):
 		for d in self.get('entries'):
@@ -216,7 +216,7 @@
 		"""
 
 		lst = []
-		for d in self.get('advance_allocation_details'):
+		for d in self.get('advances'):
 			if flt(d.allocated_amount) > 0:
 				args = {
 					'voucher_no' : d.journal_voucher,
@@ -277,7 +277,7 @@
 
 		# tax table gl entries
 		valuation_tax = {}
-		for tax in self.get("other_charges"):
+		for tax in self.get("taxes"):
 			if tax.category in ("Total", "Valuation and Total") and flt(tax.tax_amount):
 				gl_entries.append(
 					self.get_gl_dict({
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 8e70fd6..a708873 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -109,8 +109,8 @@
 		pi = frappe.copy_doc(test_records[1])
 		pi.get("entries")[0].item_code = "_Test Non Stock Item"
 		pi.get("entries")[0].expense_account = "_Test Account Cost for Goods Sold - _TC"
-		pi.get("other_charges").pop(0)
-		pi.get("other_charges").pop(1)
+		pi.get("taxes").pop(0)
+		pi.get("taxes").pop(1)
 		pi.insert()
 		pi.submit()
 
@@ -159,7 +159,7 @@
 			["_Test Account Discount - _TC", 168.03, 1512.30],
 		]
 
-		for i, tax in enumerate(wrapper.get("other_charges")):
+		for i, tax in enumerate(wrapper.get("taxes")):
 			self.assertEqual(tax.account_head, expected_values[i][0])
 			self.assertEqual(tax.tax_amount, expected_values[i][1])
 			self.assertEqual(tax.total, expected_values[i][2])
@@ -193,7 +193,7 @@
 			["_Test Account Discount - _TC", 168.03, 1512.30],
 		]
 
-		for i, tax in enumerate(wrapper.get("other_charges")):
+		for i, tax in enumerate(wrapper.get("taxes")):
 			self.assertEqual(tax.account_head, expected_values[i][0])
 			self.assertEqual(tax.tax_amount, expected_values[i][1])
 			self.assertEqual(tax.total, expected_values[i][2])
@@ -207,7 +207,7 @@
 		jv.submit()
 
 		pi = frappe.copy_doc(test_records[0])
-		pi.append("advance_allocation_details", {
+		pi.append("advances", {
 			"journal_voucher": jv.name,
 			"jv_detail_no": jv.get("entries")[0].name,
 			"advance_amount": 400,
@@ -218,17 +218,17 @@
 		pi.submit()
 		pi.load_from_db()
 
-		self.assertTrue(frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account`
 			where against_voucher=%s""", pi.name))
 
-		self.assertTrue(frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account`
 			where against_voucher=%s and debit=300""", pi.name))
 
 		self.assertEqual(pi.outstanding_amount, 1212.30)
 
 		pi.cancel()
 
-		self.assertTrue(not frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(not frappe.db.sql("""select name from `tabJournal Entry Account`
 			where against_voucher=%s""", pi.name))
 
 	def test_recurring_invoice(self):
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_records.json b/erpnext/accounts/doctype/purchase_invoice/test_records.json
index 84a5440..dd5daea 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_records.json
+++ b/erpnext/accounts/doctype/purchase_invoice/test_records.json
@@ -7,7 +7,7 @@
   "credit_to": "_Test Payable - _TC",
   "currency": "INR",
   "doctype": "Purchase Invoice",
-  "entries": [
+  "items": [
    {
     "amount": 500,
     "base_amount": 500,
@@ -19,7 +19,7 @@
     "item_code": "_Test Item Home Desktop 100",
     "item_name": "_Test Item Home Desktop 100",
     "item_tax_rate": "{\"_Test Account Excise Duty - _TC\": 10}",
-    "parentfield": "entries",
+    "parentfield": "items",
     "qty": 10,
     "rate": 50,
     "uom": "_Test UOM"
@@ -34,7 +34,7 @@
     "expense_account": "_Test Account Cost for Goods Sold - _TC",
     "item_code": "_Test Item Home Desktop 200",
     "item_name": "_Test Item Home Desktop 200",
-    "parentfield": "entries",
+    "parentfield": "items",
     "qty": 5,
     "rate": 150,
     "uom": "_Test UOM"
@@ -43,7 +43,7 @@
   "fiscal_year": "_Test Fiscal Year 2013",
   "grand_total_import": 0,
   "naming_series": "_T-BILL",
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account Shipping Charges - _TC",
     "add_deduct_tax": "Add",
@@ -52,7 +52,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Shipping Charges",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 100
    },
    {
@@ -63,7 +63,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Customs Duty",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 10
    },
    {
@@ -74,7 +74,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Excise Duty",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 12
    },
    {
@@ -85,7 +85,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Education Cess",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 2,
     "row_id": 3
    },
@@ -97,7 +97,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "S&H Education Cess",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 1,
     "row_id": 3
    },
@@ -109,7 +109,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "CST",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 2,
     "row_id": 5
    },
@@ -121,7 +121,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "VAT",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 12.5
    },
    {
@@ -132,7 +132,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Discount",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 10,
     "row_id": 7
    }
@@ -149,7 +149,7 @@
   "credit_to": "_Test Payable - _TC",
   "currency": "INR",
   "doctype": "Purchase Invoice",
-  "entries": [
+  "items": [
    {
     "conversion_factor": 1.0,
     "cost_center": "_Test Cost Center - _TC",
@@ -157,7 +157,7 @@
     "expense_account": "_Test Account Cost for Goods Sold - _TC",
     "item_code": "_Test Item",
     "item_name": "_Test Item",
-    "parentfield": "entries",
+    "parentfield": "items",
     "qty": 10.0,
     "rate": 50.0,
     "uom": "_Test UOM"
@@ -166,7 +166,7 @@
   "fiscal_year": "_Test Fiscal Year 2013",
   "grand_total_import": 0,
   "naming_series": "_T-Purchase Invoice-",
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account Shipping Charges - _TC",
     "add_deduct_tax": "Add",
@@ -175,7 +175,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Shipping Charges",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 100.0
    },
    {
@@ -186,7 +186,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "VAT",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 120.0
    },
    {
@@ -197,7 +197,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Customs Duty",
     "doctype": "Purchase Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 150.0
    }
   ],
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
index a8c02e8..b0988b2 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
@@ -20,7 +20,7 @@
 	return '';
 }
 
-cur_frm.pformat.other_charges= function(doc) {
+cur_frm.pformat.taxes= function(doc) {
 
 	//function to make row of table
 	var make_row = function(title, val, bold) {
@@ -41,7 +41,7 @@
 		return doc_field.print_hide;
 	}
 
-	var cl = doc.other_charges || [];
+	var cl = doc.taxes || [];
 
 	// outer table
 	var out='<div><table class="noborder" style="width:100%">\
@@ -104,7 +104,7 @@
 	}
 
 	validated = false;
-	refresh_field('charge_type', d.name, 'other_charges');
+	refresh_field('charge_type', d.name, 'taxes');
 
 	cur_frm.cscript.row_id(doc, cdt, cdn);
 	cur_frm.cscript.rate(doc, cdt, cdn);
@@ -130,10 +130,10 @@
 		}
 	}
 	validated = false;
-	refresh_field('row_id', d.name, 'other_charges');
+	refresh_field('row_id', d.name, 'taxes');
 }
 
-cur_frm.set_query("account_head", "other_charges", function(doc) {
+cur_frm.set_query("account_head", "taxes", function(doc) {
 	return {
 		query: "erpnext.controllers.queries.tax_account_query",
 		filters: {
@@ -143,7 +143,7 @@
 	}
 });
 
-cur_frm.fields_dict['other_charges'].grid.get_field("cost_center").get_query = function(doc) {
+cur_frm.fields_dict['taxes'].grid.get_field("cost_center").get_query = function(doc) {
 	return {
 		filters: {
 			'company': doc.company,
@@ -160,7 +160,7 @@
 		d.rate = '';
 	}
 	validated = false;
-	refresh_field('rate', d.name, 'other_charges');
+	refresh_field('rate', d.name, 'taxes');
 }
 
 cur_frm.cscript.tax_amount = function(doc, cdt, cdn) {
@@ -176,5 +176,5 @@
 	}
 
 	validated = false;
-	refresh_field('tax_amount', d.name, 'other_charges');
+	refresh_field('tax_amount', d.name, 'taxes');
 }
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.json b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.json
index 178c077..a80978b 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.json
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.json
@@ -60,7 +60,7 @@
    "precision": ""
   }, 
   {
-   "fieldname": "other_charges", 
+   "fieldname": "taxes", 
    "fieldtype": "Table", 
    "label": "Purchase Taxes and Charges", 
    "oldfieldname": "purchase_tax_details", 
@@ -71,7 +71,7 @@
  ], 
  "icon": "icon-money", 
  "idx": 1, 
- "modified": "2014-10-07 12:40:17.165882", 
+ "modified": "2014-12-24 17:19:29.921875", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Purchase Taxes and Charges Master", 
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/test_purchase_taxes_and_charges_master.py b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/test_purchase_taxes_and_charges_master.py
new file mode 100644
index 0000000..4f600bd
--- /dev/null
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/test_purchase_taxes_and_charges_master.py
@@ -0,0 +1,10 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
+# See license.txt
+
+import frappe
+import unittest
+
+test_records = frappe.get_test_records('Purchase Taxes and Charges Master')
+
+class TestPurchaseTaxesandChargesMaster(unittest.TestCase):
+	pass
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/test_records.json b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/test_records.json
new file mode 100644
index 0000000..e230c20
--- /dev/null
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/test_records.json
@@ -0,0 +1,6 @@
+[
+	{
+		"doctype": "Purchase Taxes and Charges Master",
+		"name": "_Test Purchase Taxes and Charges Master 1"
+	}
+]
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 03d9d03..82cbb2a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -2,8 +2,8 @@
 // License: GNU General Public License v3. See license.txt
 
 cur_frm.cscript.tname = "Sales Invoice Item";
-cur_frm.cscript.fname = "entries";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 cur_frm.cscript.sales_team_fname = "sales_team";
 
 // print heading
@@ -68,7 +68,7 @@
 			if(cint(doc.update_stock)!=1) {
 				// show Make Delivery Note button only if Sales Invoice is not created from Delivery Note
 				var from_delivery_note = false;
-				from_delivery_note = cur_frm.doc.entries
+				from_delivery_note = cur_frm.doc.items
 					.some(function(item) {
 						return item.delivery_note ? true : false;
 					});
@@ -173,7 +173,7 @@
 	},
 
 	allocated_amount: function() {
-		this.calculate_total_advance("Sales Invoice", "advance_adjustment_details");
+		this.calculate_total_advance("Sales Invoice", "advances");
 		this.frm.refresh_fields();
 	},
 
@@ -201,7 +201,7 @@
 
 	entries_add: function(doc, cdt, cdn) {
 		var row = frappe.get_doc(cdt, cdn);
-		this.frm.script_manager.copy_from_first_row("entries", row, ["income_account", "cost_center"]);
+		this.frm.script_manager.copy_from_first_row("items", row, ["income_account", "cost_center"]);
 	},
 
 	set_dynamic_labels: function() {
@@ -223,7 +223,7 @@
 cur_frm.cscript.hide_fields = function(doc) {
 	par_flds = ['project_name', 'due_date', 'is_opening', 'source', 'total_advance', 'gross_profit',
 	'gross_profit_percent', 'get_advances_received',
-	'advance_adjustment_details', 'sales_partner', 'commission_rate',
+	'advances', 'sales_partner', 'commission_rate',
 	'total_commission', 'advances', 'from_date', 'to_date'];
 
 	item_flds_normal = ['sales_order', 'delivery_note']
@@ -231,18 +231,18 @@
 	if(cint(doc.is_pos) == 1) {
 		hide_field(par_flds);
 		unhide_field('payments_section');
-		cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_normal, false);
+		cur_frm.fields_dict['items'].grid.set_column_disp(item_flds_normal, false);
 	} else {
 		hide_field('payments_section');
 		for (i in par_flds) {
 			var docfield = frappe.meta.docfield_map[doc.doctype][par_flds[i]];
 			if(!docfield.hidden) unhide_field(par_flds[i]);
 		}
-		cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_normal, true);
+		cur_frm.fields_dict['items'].grid.set_column_disp(item_flds_normal, true);
 	}
 
 	item_flds_stock = ['serial_no', 'batch_no', 'actual_qty', 'expense_account', 'warehouse']
-	cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_stock,
+	cur_frm.fields_dict['items'].grid.set_column_disp(item_flds_stock,
 		(cint(doc.update_stock)==1 ? true : false));
 
 	// India related fields
@@ -342,7 +342,7 @@
 
 // Income Account in Details Table
 // --------------------------------
-cur_frm.set_query("income_account", "entries", function(doc) {
+cur_frm.set_query("income_account", "items", function(doc) {
 	return{
 		query: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_income_account",
 		filters: {'company': doc.company}
@@ -351,7 +351,7 @@
 
 // expense account
 if (sys_defaults.auto_accounting_for_stock) {
-	cur_frm.fields_dict['entries'].grid.get_field('expense_account').get_query = function(doc) {
+	cur_frm.fields_dict['items'].grid.get_field('expense_account').get_query = function(doc) {
 		return {
 			filters: {
 				'report_type': 'Profit and Loss',
@@ -365,7 +365,7 @@
 
 // Cost Center in Details Table
 // -----------------------------
-cur_frm.fields_dict["entries"].grid.get_field("cost_center").get_query = function(doc) {
+cur_frm.fields_dict["items"].grid.get_field("cost_center").get_query = function(doc) {
 	return {
 		filters: {
 			'company': doc.company,
@@ -387,7 +387,7 @@
 }
 
 cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
-	$.each(doc["entries"], function(i, row) {
+	$.each(doc["items"], function(i, row) {
 		if(row.delivery_note) frappe.model.clear_doc("Delivery Note", row.delivery_note)
 	})
 
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 5201e5e..0dbf345 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -48,8 +48,8 @@
 		self.check_stop_sales_order("sales_order")
 		self.validate_debit_to_acc()
 		self.validate_fixed_asset_account()
-		self.clear_unallocated_advances("Sales Invoice Advance", "advance_adjustment_details")
-		self.validate_advance_jv("advance_adjustment_details", "sales_order")
+		self.clear_unallocated_advances("Sales Invoice Advance", "advances")
+		self.validate_advance_jv("advances", "sales_order")
 		self.add_remarks()
 
 		if cint(self.is_pos):
@@ -69,7 +69,7 @@
 		self.validate_c_form()
 		self.validate_time_logs_are_submitted()
 		self.validate_multiple_billing("Delivery Note", "dn_detail", "amount",
-			"delivery_note_details")
+			"items")
 
 	def on_submit(self):
 		super(SalesInvoice, self).on_submit()
@@ -200,12 +200,12 @@
 				self.terms = frappe.db.get_value("Terms and Conditions", self.tc_name, "terms")
 
 			# fetch charges
-			if self.taxes_and_charges and not len(self.get("other_charges")):
-				self.set_taxes("other_charges", "taxes_and_charges")
+			if self.taxes_and_charges and not len(self.get("taxes")):
+				self.set_taxes("taxes", "taxes_and_charges")
 
 	def get_advances(self):
 		super(SalesInvoice, self).get_advances(self.debit_to, "Customer", self.customer,
-			"Sales Invoice Advance", "advance_adjustment_details", "credit", "sales_order")
+			"Sales Invoice Advance", "advances", "credit", "sales_order")
 
 	def get_company_abbr(self):
 		return frappe.db.sql("select abbr from tabCompany where name=%s", self.company)[0][0]
@@ -219,7 +219,7 @@
 		"""
 
 		lst = []
-		for d in self.get('advance_adjustment_details'):
+		for d in self.get('advances'):
 			if flt(d.allocated_amount) > 0:
 				args = {
 					'voucher_no' : d.journal_voucher,
@@ -371,7 +371,7 @@
 				bin = frappe.db.sql("select actual_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
 				d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
 
-		for d in self.get('packing_details'):
+		for d in self.get('packed_items'):
 			bin = frappe.db.sql("select actual_qty, projected_qty from `tabBin` where item_code =	%s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
 			d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
 			d.projected_qty = bin and flt(bin[0]['projected_qty']) or 0
@@ -406,7 +406,7 @@
 			from erpnext.stock.doctype.packed_item.packed_item import make_packing_list
 			make_packing_list(self, 'entries')
 		else:
-			self.set('packing_details', [])
+			self.set('packed_items', [])
 
 		if cint(self.is_pos) == 1:
 			if flt(self.paid_amount) == 0:
@@ -500,7 +500,7 @@
 			)
 
 	def make_tax_gl_entries(self, gl_entries):
-		for tax in self.get("other_charges"):
+		for tax in self.get("taxes"):
 			if flt(tax.tax_amount_after_discount_amount):
 				gl_entries.append(
 					self.get_gl_dict({
diff --git a/erpnext/accounts/doctype/sales_invoice/test_records.json b/erpnext/accounts/doctype/sales_invoice/test_records.json
index ec1a774..abc360b 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_records.json
+++ b/erpnext/accounts/doctype/sales_invoice/test_records.json
@@ -8,7 +8,7 @@
   "debit_to": "_Test Receivable - _TC",
   "doctype": "Sales Invoice",
   "due_date": "2013-01-23",
-  "entries": [
+  "items": [
    {
     "amount": 500.0,
     "base_amount": 500.0,
@@ -19,7 +19,7 @@
     "income_account": "Sales - _TC",
 	"expense_account": "_Test Account Cost for Goods Sold - _TC",
     "item_name": "138-CMS Shoe",
-    "parentfield": "entries",
+    "parentfield": "items",
     "qty": 1.0,
     "rate": 500.0
    }
@@ -30,13 +30,13 @@
   "is_pos": 0,
   "naming_series": "_T-Sales Invoice-",
   "net_total": 500.0,
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account VAT - _TC",
     "charge_type": "On Net Total",
     "description": "VAT",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 6
    },
    {
@@ -44,7 +44,7 @@
     "charge_type": "On Net Total",
     "description": "Service Tax",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 6.36
    }
   ],
@@ -77,7 +77,7 @@
   "debit_to": "_Test Receivable - _TC",
   "doctype": "Sales Invoice",
   "due_date": "2013-03-07",
-  "entries": [
+  "items": [
    {
     "amount": 500.0,
     "base_amount": 500.0,
@@ -89,7 +89,7 @@
     "income_account": "Sales - _TC",
     "item_code": "_Test Item",
     "item_name": "_Test Item",
-    "parentfield": "entries",
+    "parentfield": "items",
     "price_list_rate": 500.0,
     "qty": 1.0
    }
@@ -100,13 +100,13 @@
   "is_pos": 0,
   "naming_series": "_T-Sales Invoice-",
   "net_total": 500.0,
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account VAT - _TC",
     "charge_type": "On Net Total",
     "description": "VAT",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 16
    },
    {
@@ -114,7 +114,7 @@
     "charge_type": "On Net Total",
     "description": "Service Tax",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 10
    }
   ],
@@ -133,7 +133,7 @@
   "debit_to": "_Test Receivable - _TC",
   "doctype": "Sales Invoice",
   "due_date": "2013-01-23",
-  "entries": [
+  "items": [
    {
     "cost_center": "_Test Cost Center - _TC",
     "doctype": "Sales Invoice Item",
@@ -142,7 +142,7 @@
     "item_code": "_Test Item Home Desktop 100",
     "item_name": "_Test Item Home Desktop 100",
     "item_tax_rate": "{\"_Test Account Excise Duty - _TC\": 10}",
-    "parentfield": "entries",
+    "parentfield": "items",
     "price_list_rate": 50,
     "qty": 10,
     "rate": 50,
@@ -155,7 +155,7 @@
 	"expense_account": "_Test Account Cost for Goods Sold - _TC",
     "item_code": "_Test Item Home Desktop 200",
     "item_name": "_Test Item Home Desktop 200",
-    "parentfield": "entries",
+    "parentfield": "items",
     "price_list_rate": 150,
     "qty": 5,
     "rate": 150,
@@ -166,14 +166,14 @@
   "grand_total_export": 0,
   "is_pos": 0,
   "naming_series": "_T-Sales Invoice-",
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account Shipping Charges - _TC",
     "charge_type": "Actual",
     "cost_center": "_Test Cost Center - _TC",
     "description": "Shipping Charges",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 100
    },
    {
@@ -182,7 +182,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Customs Duty",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 10
    },
    {
@@ -191,7 +191,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Excise Duty",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 12
    },
    {
@@ -200,7 +200,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Education Cess",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 2,
     "row_id": 3
    },
@@ -210,7 +210,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "S&H Education Cess",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 1,
     "row_id": 3
    },
@@ -220,7 +220,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "CST",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 2,
     "row_id": 5
    },
@@ -230,7 +230,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "VAT",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 12.5
    },
    {
@@ -239,7 +239,7 @@
     "cost_center": "_Test Cost Center - _TC",
     "description": "Discount",
     "doctype": "Sales Taxes and Charges",
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": -10,
     "row_id": 7
    }
@@ -259,7 +259,7 @@
   "debit_to": "_Test Receivable - _TC",
   "doctype": "Sales Invoice",
   "due_date": "2013-01-23",
-  "entries": [
+  "items": [
    {
     "cost_center": "_Test Cost Center - _TC",
     "doctype": "Sales Invoice Item",
@@ -268,7 +268,7 @@
     "item_code": "_Test Item Home Desktop 100",
     "item_name": "_Test Item Home Desktop 100",
     "item_tax_rate": "{\"_Test Account Excise Duty - _TC\": 10}",
-    "parentfield": "entries",
+    "parentfield": "items",
     "price_list_rate": 62.5,
     "qty": 10,
     "stock_uom": "_Test UOM"
@@ -280,7 +280,7 @@
 	"expense_account": "_Test Account Cost for Goods Sold - _TC",
     "item_code": "_Test Item Home Desktop 200",
     "item_name": "_Test Item Home Desktop 200",
-    "parentfield": "entries",
+    "parentfield": "items",
     "price_list_rate": 190.66,
     "qty": 5,
     "stock_uom": "_Test UOM"
@@ -290,7 +290,7 @@
   "grand_total_export": 0,
   "is_pos": 0,
   "naming_series": "_T-Sales Invoice-",
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account Excise Duty - _TC",
     "charge_type": "On Net Total",
@@ -299,7 +299,7 @@
     "doctype": "Sales Taxes and Charges",
     "idx": 1,
     "included_in_print_rate": 1,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 12
    },
    {
@@ -310,7 +310,7 @@
     "doctype": "Sales Taxes and Charges",
     "idx": 2,
     "included_in_print_rate": 1,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 2,
     "row_id": 1
    },
@@ -322,7 +322,7 @@
     "doctype": "Sales Taxes and Charges",
     "idx": 3,
     "included_in_print_rate": 1,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 1,
     "row_id": 1
    },
@@ -334,7 +334,7 @@
     "doctype": "Sales Taxes and Charges",
     "idx": 4,
     "included_in_print_rate": 1,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 2,
     "row_id": 3
    },
@@ -346,7 +346,7 @@
     "doctype": "Sales Taxes and Charges",
     "idx": 5,
     "included_in_print_rate": 1,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 12.5
    },
    {
@@ -356,7 +356,7 @@
     "description": "Customs Duty",
     "doctype": "Sales Taxes and Charges",
     "idx": 6,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 10
    },
    {
@@ -366,7 +366,7 @@
     "description": "Shipping Charges",
     "doctype": "Sales Taxes and Charges",
     "idx": 7,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": 100
    },
    {
@@ -376,7 +376,7 @@
     "description": "Discount",
     "doctype": "Sales Taxes and Charges",
     "idx": 8,
-    "parentfield": "other_charges",
+    "parentfield": "taxes",
     "rate": -10,
     "row_id": 7
    }
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index fa8dbe9..cafdd3a 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -69,7 +69,7 @@
 			"_Test Account Discount - _TC": [-180.78, 1627.05]
 		}
 
-		for d in si.get("other_charges"):
+		for d in si.get("taxes"):
 			for i, k in enumerate(expected_values["keys"]):
 				self.assertEquals(d.get(k), expected_values[d.account_head][i])
 
@@ -119,7 +119,7 @@
 			"_Test Account Discount - _TC": [-180.78, 1627.05]
 		}
 
-		for d in si.get("other_charges"):
+		for d in si.get("taxes"):
 			for i, k in enumerate(expected_values["keys"]):
 				self.assertEquals(d.get(k), expected_values[d.account_head][i])
 
@@ -129,7 +129,7 @@
 	def test_sales_invoice_discount_amount(self):
 		si = frappe.copy_doc(test_records[3])
 		si.discount_amount = 104.95
-		si.append("other_charges", {
+		si.append("taxes", {
 			"doctype": "Sales Taxes and Charges",
 			"charge_type": "On Previous Row Amount",
 			"account_head": "_Test Account Service Tax - _TC",
@@ -174,7 +174,7 @@
 			"_Test Account Service Tax - _TC": [-18.03, -16.88, 1500]
 		}
 
-		for d in si.get("other_charges"):
+		for d in si.get("taxes"):
 			for i, k in enumerate(expected_values["keys"]):
 				self.assertEquals(d.get(k), expected_values[d.account_head][i])
 
@@ -184,7 +184,7 @@
 	def test_discount_amount_gl_entry(self):
 		si = frappe.copy_doc(test_records[3])
 		si.discount_amount = 104.95
-		si.append("other_charges", {
+		si.append("taxes", {
 			"doctype": "Sales Taxes and Charges",
 			"charge_type": "On Previous Row Amount",
 			"account_head": "_Test Account Service Tax - _TC",
@@ -205,14 +205,14 @@
 		expected_values = sorted([
 			[si.debit_to, 1500, 0.0],
 			[test_records[3]["entries"][0]["income_account"], 0.0, 1163.45],
-			[test_records[3]["other_charges"][0]["account_head"], 0.0, 130.31],
-			[test_records[3]["other_charges"][1]["account_head"], 0.0, 2.61],
-			[test_records[3]["other_charges"][2]["account_head"], 0.0, 1.31],
-			[test_records[3]["other_charges"][3]["account_head"], 0.0, 25.96],
-			[test_records[3]["other_charges"][4]["account_head"], 0.0, 145.43],
-			[test_records[3]["other_charges"][5]["account_head"], 0.0, 116.35],
-			[test_records[3]["other_charges"][6]["account_head"], 0.0, 100],
-			[test_records[3]["other_charges"][7]["account_head"], 168.54, 0.0],
+			[test_records[3]["taxes"][0]["account_head"], 0.0, 130.31],
+			[test_records[3]["taxes"][1]["account_head"], 0.0, 2.61],
+			[test_records[3]["taxes"][2]["account_head"], 0.0, 1.31],
+			[test_records[3]["taxes"][3]["account_head"], 0.0, 25.96],
+			[test_records[3]["taxes"][4]["account_head"], 0.0, 145.43],
+			[test_records[3]["taxes"][5]["account_head"], 0.0, 116.35],
+			[test_records[3]["taxes"][6]["account_head"], 0.0, 100],
+			[test_records[3]["taxes"][7]["account_head"], 168.54, 0.0],
 			["_Test Account Service Tax - _TC", 16.88, 0.0],
 		])
 
@@ -231,19 +231,19 @@
 
 	def test_inclusive_rate_validations(self):
 		si = frappe.copy_doc(test_records[2])
-		for i, tax in enumerate(si.get("other_charges")):
+		for i, tax in enumerate(si.get("taxes")):
 			tax.idx = i+1
 
 		si.get("entries")[0].price_list_rate = 62.5
 		si.get("entries")[0].price_list_rate = 191
 		for i in xrange(6):
-			si.get("other_charges")[i].included_in_print_rate = 1
+			si.get("taxes")[i].included_in_print_rate = 1
 
 		# tax type "Actual" cannot be inclusive
 		self.assertRaises(frappe.ValidationError, si.insert)
 
 		# taxes above included type 'On Previous Row Total' should also be included
-		si.get("other_charges")[0].included_in_print_rate = 0
+		si.get("taxes")[0].included_in_print_rate = 0
 		self.assertRaises(frappe.ValidationError, si.insert)
 
 	def test_sales_invoice_calculation_base_currency_with_tax_inclusive_price(self):
@@ -284,7 +284,7 @@
 			"_Test Account Discount - _TC": [-180.33, 1622.98]
 		}
 
-		for d in si.get("other_charges"):
+		for d in si.get("taxes"):
 			for i, k in enumerate(expected_values["keys"]):
 				self.assertEquals(d.get(k), expected_values[d.account_head][i])
 
@@ -300,7 +300,7 @@
 		si.get("entries")[0].discount_percentage = 10
 		si.get("entries")[1].price_list_rate = 187.5
 		si.get("entries")[1].discount_percentage = 20
-		si.get("other_charges")[6].rate = 5000
+		si.get("taxes")[6].rate = 5000
 
 		si.insert()
 
@@ -336,7 +336,7 @@
 			"_Test Account Discount - _TC": [-7245.01, 65205.16]
 		}
 
-		for d in si.get("other_charges"):
+		for d in si.get("taxes"):
 			for i, k in enumerate(expected_values["keys"]):
 				self.assertEquals(d.get(k), expected_values[d.account_head][i])
 
@@ -408,8 +408,8 @@
 		expected_values = sorted([
 			[si.debit_to, 630.0, 0.0],
 			[test_records[1]["entries"][0]["income_account"], 0.0, 500.0],
-			[test_records[1]["other_charges"][0]["account_head"], 0.0, 80.0],
-			[test_records[1]["other_charges"][1]["account_head"], 0.0, 50.0],
+			[test_records[1]["taxes"][0]["account_head"], 0.0, 80.0],
+			[test_records[1]["taxes"][1]["account_head"], 0.0, 50.0],
 		])
 
 		for i, gle in enumerate(gl_entries):
@@ -462,8 +462,8 @@
 		expected_gl_entries = sorted([
 			[si.debit_to, 630.0, 0.0],
 			[pos["entries"][0]["income_account"], 0.0, 500.0],
-			[pos["other_charges"][0]["account_head"], 0.0, 80.0],
-			[pos["other_charges"][1]["account_head"], 0.0, 50.0],
+			[pos["taxes"][0]["account_head"], 0.0, 80.0],
+			[pos["taxes"][1]["account_head"], 0.0, 50.0],
 			[stock_in_hand, 0.0, 75.0],
 			[pos["entries"][0]["expense_account"], 75.0, 0.0],
 			[si.debit_to, 0.0, 600.0],
@@ -515,7 +515,7 @@
 			as pr_test_records
 		pr = frappe.copy_doc(pr_test_records[0])
 		pr.naming_series = "_T-Purchase Receipt-"
-		pr.get("purchase_receipt_details")[0].warehouse = "_Test Warehouse No Account - _TC"
+		pr.get("items")[0].warehouse = "_Test Warehouse No Account - _TC"
 		pr.insert()
 		pr.submit()
 
@@ -545,8 +545,8 @@
 		expected_gl_entries = sorted([
 			[si.debit_to, 630.0, 0.0],
 			[si_doc.get("entries")[0]["income_account"], 0.0, 500.0],
-			[si_doc.get("other_charges")[0]["account_head"], 0.0, 80.0],
-			[si_doc.get("other_charges")[1]["account_head"], 0.0, 50.0],
+			[si_doc.get("taxes")[0]["account_head"], 0.0, 80.0],
+			[si_doc.get("taxes")[1]["account_head"], 0.0, 50.0],
 		])
 		for i, gle in enumerate(gl_entries):
 			self.assertEquals(expected_gl_entries[i][0], gle.account)
@@ -577,8 +577,8 @@
 		expected_values = sorted([
 			[si.debit_to, 630.0, 0.0],
 			[test_records[1]["entries"][0]["income_account"], 0.0, 500.0],
-			[test_records[1]["other_charges"][0]["account_head"], 0.0, 80.0],
-			[test_records[1]["other_charges"][1]["account_head"], 0.0, 50.0],
+			[test_records[1]["taxes"][0]["account_head"], 0.0, 80.0],
+			[test_records[1]["taxes"][1]["account_head"], 0.0, 50.0],
 		])
 		for i, gle in enumerate(gl_entries):
 			self.assertEquals(expected_values[i][0], gle.account)
@@ -603,8 +603,8 @@
 		expected_values = sorted([
 			[si.debit_to, 630.0, 0.0],
 			[test_records[1]["entries"][0]["income_account"], 0.0, 500.0],
-			[test_records[1]["other_charges"][0]["account_head"], 0.0, 80.0],
-			[test_records[1]["other_charges"][1]["account_head"], 0.0, 50.0],
+			[test_records[1]["taxes"][0]["account_head"], 0.0, 80.0],
+			[test_records[1]["taxes"][1]["account_head"], 0.0, 50.0],
 		])
 		for i, gle in enumerate(gl_entries):
 			self.assertEquals(expected_values[i][0], gle.account)
@@ -639,7 +639,7 @@
 		jv.submit()
 
 		si = frappe.copy_doc(test_records[0])
-		si.append("advance_adjustment_details", {
+		si.append("advances", {
 			"doctype": "Sales Invoice Advance",
 			"journal_voucher": jv.name,
 			"jv_detail_no": jv.get("entries")[0].name,
@@ -651,17 +651,17 @@
 		si.submit()
 		si.load_from_db()
 
-		self.assertTrue(frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account`
 			where against_invoice=%s""", si.name))
 
-		self.assertTrue(frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account`
 			where against_invoice=%s and credit=300""", si.name))
 
 		self.assertEqual(si.outstanding_amount, 261.8)
 
 		si.cancel()
 
-		self.assertTrue(not frappe.db.sql("""select name from `tabJournal Voucher Detail`
+		self.assertTrue(not frappe.db.sql("""select name from `tabJournal Entry Account`
 			where against_invoice=%s""", si.name))
 
 	def test_recurring_invoice(self):
@@ -679,7 +679,7 @@
 		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 
 		se = make_serialized_item()
-		serial_nos = get_serial_nos(se.get("mtn_details")[0].serial_no)
+		serial_nos = get_serial_nos(se.get("items")[0].serial_no)
 
 		si = frappe.copy_doc(test_records[0])
 		si.update_stock = 1
@@ -713,7 +713,7 @@
 		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
 
 		se = make_serialized_item()
-		serial_nos = get_serial_nos(se.get("mtn_details")[0].serial_no)
+		serial_nos = get_serial_nos(se.get("items")[0].serial_no)
 
 		sr = frappe.get_doc("Serial No", serial_nos[0])
 		sr.status = "Not Available"
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
index d11bf29..c373796 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
@@ -33,7 +33,7 @@
 	return '';
 }
 
-cur_frm.pformat.other_charges= function(doc){
+cur_frm.pformat.taxes= function(doc){
 	//function to make row of table
 	var make_row = function(title, val, bold){
 		var bstart = '<b>'; var bend = '</b>';
@@ -54,7 +54,7 @@
 	
 	out ='';
 	if (!doc.print_without_amount) {
-		var cl = doc.other_charges || [];
+		var cl = doc.taxes || [];
 
 		// outer table	
 		var out='<div><table class="noborder" style="width:100%"><tr><td style="width: 60%"></td><td>';
@@ -104,7 +104,7 @@
 		d.charge_type = '';
 	}
 	validated = false;
-	refresh_field('charge_type', d.name, 'other_charges');
+	refresh_field('charge_type', d.name, 'taxes');
 	cur_frm.cscript.row_id(doc, cdt, cdn);
 	cur_frm.cscript.rate(doc, cdt, cdn);
 	cur_frm.cscript.tax_amount(doc, cdt, cdn);
@@ -127,12 +127,12 @@
 		}
 	}
 	validated = false;
-	refresh_field('row_id', d.name, 'other_charges');
+	refresh_field('row_id', d.name, 'taxes');
 }
 
 /*---------------------- Get rate if account_head has account_type as TAX or CHARGEABLE-------------------------------------*/
 
-cur_frm.fields_dict['other_charges'].grid.get_field("account_head").get_query = function(doc,cdt,cdn) {
+cur_frm.fields_dict['taxes'].grid.get_field("account_head").get_query = function(doc,cdt,cdn) {
 	return{
 		query: "erpnext.controllers.queries.tax_account_query",
     	filters: {
@@ -142,7 +142,7 @@
 	}	
 }
 
-cur_frm.fields_dict['other_charges'].grid.get_field("cost_center").get_query = function(doc) {
+cur_frm.fields_dict['taxes'].grid.get_field("cost_center").get_query = function(doc) {
 	return{
 		'company': doc.company,
 		'group_or_ledger': "Ledger"
@@ -156,7 +156,7 @@
 		d.rate = '';
 	}
 	validated = false;
-	refresh_field('rate', d.name, 'other_charges');
+	refresh_field('rate', d.name, 'taxes');
 }
 
 cur_frm.cscript.tax_amount = function(doc, cdt, cdn) {
@@ -170,5 +170,5 @@
 		d.tax_amount = '';
 	}
 	validated = false;
-	refresh_field('tax_amount', d.name, 'other_charges');
+	refresh_field('tax_amount', d.name, 'taxes');
 };
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
index 8dd2759..6ab5ab2 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
@@ -14,4 +14,4 @@
 				(self.name, self.company))
 
 		# at least one territory
-		self.validate_table_has_rows("valid_for_territories")
+		self.validate_table_has_rows("territories")
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/test_records.json b/erpnext/accounts/doctype/sales_taxes_and_charges_master/test_records.json
index dda8a4a..dd9c595 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/test_records.json
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/test_records.json
@@ -2,13 +2,13 @@
  {
   "company": "_Test Company", 
   "doctype": "Sales Taxes and Charges Master", 
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account VAT - _TC", 
     "charge_type": "On Net Total", 
     "description": "VAT", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 6
    }, 
    {
@@ -16,20 +16,20 @@
     "charge_type": "On Net Total", 
     "description": "Service Tax", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 6.36
    }
   ], 
   "title": "_Test Sales Taxes and Charges Master", 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "All Territories"
    }, 
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory Rest Of The World"
    }
   ]
@@ -37,14 +37,14 @@
  {
   "company": "_Test Company", 
   "doctype": "Sales Taxes and Charges Master", 
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account Shipping Charges - _TC", 
     "charge_type": "Actual", 
     "cost_center": "_Test Cost Center - _TC", 
     "description": "Shipping Charges", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 100
    }, 
    {
@@ -53,7 +53,7 @@
     "cost_center": "_Test Cost Center - _TC", 
     "description": "Customs Duty", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 10
    }, 
    {
@@ -62,7 +62,7 @@
     "cost_center": "_Test Cost Center - _TC", 
     "description": "Excise Duty", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 12
    }, 
    {
@@ -71,7 +71,7 @@
     "cost_center": "_Test Cost Center - _TC", 
     "description": "Education Cess", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 2, 
     "row_id": 3
    }, 
@@ -81,7 +81,7 @@
     "cost_center": "_Test Cost Center - _TC", 
     "description": "S&H Education Cess", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 1, 
     "row_id": 3
    }, 
@@ -91,7 +91,7 @@
     "cost_center": "_Test Cost Center - _TC", 
     "description": "CST", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 2, 
     "row_id": 5
    }, 
@@ -101,7 +101,7 @@
     "cost_center": "_Test Cost Center - _TC", 
     "description": "VAT", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 12.5
    }, 
    {
@@ -110,16 +110,16 @@
     "cost_center": "_Test Cost Center - _TC", 
     "description": "Discount", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": -10, 
     "row_id": 7
    }
   ], 
   "title": "_Test India Tax Master", 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory India"
    }
   ]
@@ -127,13 +127,13 @@
  {
   "company": "_Test Company", 
   "doctype": "Sales Taxes and Charges Master", 
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account VAT - _TC", 
     "charge_type": "On Net Total", 
     "description": "VAT", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 12
    }, 
    {
@@ -141,15 +141,15 @@
     "charge_type": "On Net Total", 
     "description": "Service Tax", 
     "doctype": "Sales Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 4
    }
   ], 
   "title": "_Test Sales Taxes and Charges Master - Rest of the World", 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory Rest Of The World"
    }
   ]
diff --git a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
index f9f64e4..27f49da 100644
--- a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
+++ b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
@@ -17,7 +17,7 @@
 class ShippingRule(Document):
 	def validate(self):
 		self.validate_value("calculate_based_on", "in", ["Net Total", "Net Weight"])
-		self.shipping_rule_conditions = self.get("shipping_rule_conditions")
+		self.conditions = self.get("conditions")
 		self.validate_from_to_values()
 		self.sort_shipping_rule_conditions()
 		self.validate_overlapping_shipping_rule_conditions()
@@ -25,7 +25,7 @@
 	def validate_from_to_values(self):
 		zero_to_values = []
 
-		for d in self.get("shipping_rule_conditions"):
+		for d in self.get("conditions"):
 			self.round_floats_in(d)
 
 			# values cannot be negative
@@ -44,8 +44,8 @@
 
 	def sort_shipping_rule_conditions(self):
 		"""Sort Shipping Rule Conditions based on increasing From Value"""
-		self.shipping_rules_conditions = sorted(self.shipping_rule_conditions, key=lambda d: flt(d.from_value))
-		for i, d in enumerate(self.shipping_rule_conditions):
+		self.shipping_rules_conditions = sorted(self.conditions, key=lambda d: flt(d.from_value))
+		for i, d in enumerate(self.conditions):
 			d.idx = i + 1
 
 	def validate_overlapping_shipping_rule_conditions(self):
@@ -60,9 +60,9 @@
 			return (not separate)
 
 		overlaps = []
-		for i in xrange(0, len(self.shipping_rule_conditions)):
-			for j in xrange(i+1, len(self.shipping_rule_conditions)):
-				d1, d2 = self.shipping_rule_conditions[i], self.shipping_rule_conditions[j]
+		for i in xrange(0, len(self.conditions)):
+			for j in xrange(i+1, len(self.conditions)):
+				d1, d2 = self.conditions[i], self.conditions[j]
 				if d1.as_dict() != d2.as_dict():
 					# in our case, to_value can be zero, hence pass the from_value if so
 					range_a = (d1.from_value, d1.to_value or d1.from_value)
diff --git a/erpnext/accounts/doctype/shipping_rule/test_records.json b/erpnext/accounts/doctype/shipping_rule/test_records.json
index 5477c8f..96e7770 100644
--- a/erpnext/accounts/doctype/shipping_rule/test_records.json
+++ b/erpnext/accounts/doctype/shipping_rule/test_records.json
@@ -7,32 +7,32 @@
   "doctype": "Shipping Rule", 
   "label": "_Test Shipping Rule", 
   "name": "_Test Shipping Rule", 
-  "shipping_rule_conditions": [
+  "conditions": [
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 0, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 50.0, 
     "to_value": 100
    }, 
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 101, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 100.0, 
     "to_value": 200
    }, 
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 201, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 0.0
    }
   ], 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory"
    }
   ]
@@ -45,32 +45,32 @@
   "doctype": "Shipping Rule", 
   "label": "_Test Shipping Rule - India", 
   "name": "_Test Shipping Rule - India", 
-  "shipping_rule_conditions": [
+  "conditions": [
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 0, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 50.0, 
     "to_value": 100
    }, 
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 101, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 100.0, 
     "to_value": 200
    }, 
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 201, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 0.0
    }
   ], 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory India"
    }
   ]
@@ -83,32 +83,32 @@
   "doctype": "Shipping Rule", 
   "label": "_Test Shipping Rule - Rest of the World", 
   "name": "_Test Shipping Rule - Rest of the World", 
-  "shipping_rule_conditions": [
+  "conditions": [
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 0, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 500.0, 
     "to_value": 1000
    }, 
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 1001, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 1000.0, 
     "to_value": 2000
    }, 
    {
     "doctype": "Shipping Rule Condition", 
     "from_value": 2001, 
-    "parentfield": "shipping_rule_conditions", 
+    "parentfield": "conditions", 
     "shipping_amount": 1500.0
    }
   ], 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory Rest Of The World"
    }
   ]
diff --git a/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
index d14bcd7..bcb9993 100644
--- a/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
+++ b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.py
@@ -11,13 +11,13 @@
 	def test_from_greater_than_to(self):
 		shipping_rule = frappe.copy_doc(test_records[0])
 		shipping_rule.name = test_records[0].get('name')
-		shipping_rule.get("shipping_rule_conditions")[0].from_value = 101
+		shipping_rule.get("conditions")[0].from_value = 101
 		self.assertRaises(FromGreaterThanToError, shipping_rule.insert)
 		
 	def test_many_zero_to_values(self):
 		shipping_rule = frappe.copy_doc(test_records[0])
 		shipping_rule.name = test_records[0].get('name')
-		shipping_rule.get("shipping_rule_conditions")[0].to_value = 0
+		shipping_rule.get("conditions")[0].to_value = 0
 		self.assertRaises(ManyBlankToValuesError, shipping_rule.insert)
 		
 	def test_overlapping_conditions(self):
@@ -30,8 +30,8 @@
 		]:
 			shipping_rule = frappe.copy_doc(test_records[0])
 			shipping_rule.name = test_records[0].get('name')
-			shipping_rule.get("shipping_rule_conditions")[0].from_value = range_a[0]
-			shipping_rule.get("shipping_rule_conditions")[0].to_value = range_a[1]
-			shipping_rule.get("shipping_rule_conditions")[1].from_value = range_b[0]
-			shipping_rule.get("shipping_rule_conditions")[1].to_value = range_b[1]
+			shipping_rule.get("conditions")[0].from_value = range_a[0]
+			shipping_rule.get("conditions")[0].to_value = range_a[1]
+			shipping_rule.get("conditions")[1].from_value = range_b[0]
+			shipping_rule.get("conditions")[1].to_value = range_b[1]
 			self.assertRaises(OverlappingConditionError, shipping_rule.insert)
diff --git a/erpnext/accounts/print_format/pos_invoice/pos_invoice.json b/erpnext/accounts/print_format/pos_invoice/pos_invoice.json
index 83174b6..51ac7cc 100644
--- a/erpnext/accounts/print_format/pos_invoice/pos_invoice.json
+++ b/erpnext/accounts/print_format/pos_invoice/pos_invoice.json
@@ -1,15 +1,15 @@
 {
- "creation": "2011-12-21 11:08:55", 
- "doc_type": "Sales Invoice", 
- "docstatus": 0, 
- "doctype": "Print Format", 
- "html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ doc.company }}<br>\n\t{{ doc.select_print_heading or _(\"Invoice\") }}<br>\n</p>\n<p>\n\t<b>{{ _(\"Receipt No\") }}:</b> {{ doc.name }}<br>\n\t<b>{{ _(\"Date\") }}:</b> {{ doc.get_formatted(\"posting_date\") }}<br>\n\t<b>{{ _(\"Customer\") }}:</b> {{ doc.customer_name }}\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"60%\">{{ _(\"Item\") }}</b></th>\n\t\t\t<th width=\"10%\" class=\"text-right\">{{ _(\"Qty\") }}</th>\n\t\t\t<th width=\"30%\" class=\"text-right\">{{ _(\"Rate\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{%- for item in doc.entries -%}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_code }}\n\t\t\t\t{%- if item.item_name != item.item_code -%}\n\t\t\t\t\t<br>{{ item.item_name }}{%- endif -%}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ item.qty }}</td>\n\t\t\t<td class=\"text-right\">{{ item.amount }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"net_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- for row in doc.other_charges -%}\n\t\t{%- if not row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t\t{%- if doc.discount_amount -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"discount_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t<b>{{ _(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"grand_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n{% if doc.get(\"other_charges\", filters={\"included_in_print_rate\": 1}) %}\n<hr>\n<p><b>Taxes Included:</b></p>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t{%- for row in doc.other_charges -%}\n\t\t{%- if row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t<tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n{%- endif -%}\n<hr>\n<p>{{ doc.terms or \"\" }}</p>\n<p class=\"text-center\">{{ _(\"Thank you, please visit again.\") }}</p>", 
- "idx": 1, 
- "modified": "2014-07-22 02:08:26.603223", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "POS Invoice", 
- "owner": "Administrator", 
- "print_format_type": "Server", 
+ "creation": "2011-12-21 11:08:55",
+ "doc_type": "Sales Invoice",
+ "docstatus": 0,
+ "doctype": "Print Format",
+ "html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ doc.company }}<br>\n\t{{ doc.select_print_heading or _(\"Invoice\") }}<br>\n</p>\n<p>\n\t<b>{{ _(\"Receipt No\") }}:</b> {{ doc.name }}<br>\n\t<b>{{ _(\"Date\") }}:</b> {{ doc.get_formatted(\"posting_date\") }}<br>\n\t<b>{{ _(\"Customer\") }}:</b> {{ doc.customer_name }}\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"60%\">{{ _(\"Item\") }}</b></th>\n\t\t\t<th width=\"10%\" class=\"text-right\">{{ _(\"Qty\") }}</th>\n\t\t\t<th width=\"30%\" class=\"text-right\">{{ _(\"Rate\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{%- for item in doc.items -%}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_code }}\n\t\t\t\t{%- if item.item_name != item.item_code -%}\n\t\t\t\t\t<br>{{ item.item_name }}{%- endif -%}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ item.qty }}</td>\n\t\t\t<td class=\"text-right\">{{ item.amount }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"net_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- for row in doc.taxes -%}\n\t\t{%- if not row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t\t{%- if doc.discount_amount -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"discount_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t<b>{{ _(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"grand_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n{% if doc.get(\"taxes\", filters={\"included_in_print_rate\": 1}) %}\n<hr>\n<p><b>Taxes Included:</b></p>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t{%- for row in doc.taxes -%}\n\t\t{%- if row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t<tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n{%- endif -%}\n<hr>\n<p>{{ doc.terms or \"\" }}</p>\n<p class=\"text-center\">{{ _(\"Thank you, please visit again.\") }}</p>",
+ "idx": 1,
+ "modified": "2014-12-25 02:08:26.603223",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "POS Invoice",
+ "owner": "Administrator",
+ "print_format_type": "Server",
  "standard": "Yes"
-}
\ No newline at end of file
+}
diff --git a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
index dbf86e3..98dfdbb 100644
--- a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
+++ b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
@@ -35,7 +35,7 @@
 	conditions = get_conditions(filters)
 	entries =  frappe.db.sql("""select jv.name, jvd.account, jv.posting_date, 
 		jv.clearance_date, jvd.against_account, jvd.debit, jvd.credit
-		from `tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv 
+		from `tabJournal Entry Account` jvd, `tabJournal Voucher` jv 
 		where jvd.parent = jv.name and jv.docstatus=1 %s
 		order by jv.name DESC""" % conditions, filters, as_list=1)
 	return entries
\ No newline at end of file
diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
index cbe5988..b55d9a4 100644
--- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
+++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
@@ -24,7 +24,7 @@
 		total_credit += flt(d[3])
 
 	amounts_not_reflected_in_system = frappe.db.sql("""select sum(ifnull(jvd.debit, 0) - ifnull(jvd.credit, 0))
-		from `tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv
+		from `tabJournal Entry Account` jvd, `tabJournal Voucher` jv
 		where jvd.parent = jv.name and jv.docstatus=1 and jvd.account=%s
 		and jv.posting_date > %s and jv.clearance_date <= %s and ifnull(jv.is_opening, 'No') = 'No'
 		""", (filters["account"], filters["report_date"], filters["report_date"]))
@@ -57,7 +57,7 @@
 			jv.posting_date, jv.name, jvd.debit, jvd.credit,
 			jvd.against_account, jv.cheque_no, jv.cheque_date, jv.clearance_date
 		from
-			`tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv
+			`tabJournal Entry Account` jvd, `tabJournal Voucher` jv
 		where jvd.parent = jv.name and jv.docstatus=1
 			and jvd.account = %(account)s and jv.posting_date <= %(report_date)s
 			and ifnull(jv.clearance_date, '4000-01-01') > %(report_date)s
diff --git a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py
index b1d7437..434cb86 100644
--- a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py
+++ b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py
@@ -77,7 +77,7 @@
 	entries =  frappe.db.sql("""select jv.name, jvd.account, jv.posting_date,
 		jvd.against_voucher, jvd.against_invoice, jvd.debit, jvd.credit,
 		jv.cheque_no, jv.cheque_date, jv.remark
-		from `tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv
+		from `tabJournal Entry Account` jvd, `tabJournal Voucher` jv
 		where jvd.parent = jv.name and jv.docstatus=1 %s order by jv.name DESC""" %
 		(conditions), tuple(party_accounts), as_dict=1)
 
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 2abc187..eb0c86d 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -163,7 +163,7 @@
 		check if jv is submitted
 	"""
 	ret = frappe.db.sql("""
-		select t2.{dr_or_cr} from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
+		select t2.{dr_or_cr} from `tabJournal Voucher` t1, `tabJournal Entry Account` t2
 		where t1.name = t2.parent and t2.account = %(account)s
 		and t2.party_type = %(party_type)s and t2.party = %(party)s
 		and ifnull(t2.against_voucher, '')=''
@@ -190,7 +190,7 @@
 
 	if d['allocated_amt'] < d['unadjusted_amt']:
 		jvd = frappe.db.sql("""select cost_center, balance, against_account, is_advance
-			from `tabJournal Voucher Detail` where name = %s""", d['voucher_detail_no'])
+			from `tabJournal Entry Account` where name = %s""", d['voucher_detail_no'])
 		# new entry with balance amount
 		ch = jv_obj.append("entries")
 		ch.account = d['account']
@@ -209,11 +209,11 @@
 	jv_obj.save()
 
 def remove_against_link_from_jv(ref_type, ref_no, against_field):
-	linked_jv = frappe.db.sql_list("""select parent from `tabJournal Voucher Detail`
+	linked_jv = frappe.db.sql_list("""select parent from `tabJournal Entry Account`
 		where `%s`=%s and docstatus < 2""" % (against_field, "%s"), (ref_no))
 
 	if linked_jv:
-		frappe.db.sql("""update `tabJournal Voucher Detail` set `%s`=null,
+		frappe.db.sql("""update `tabJournal Entry Account` set `%s`=null,
 			modified=%s, modified_by=%s
 			where `%s`=%s and docstatus < 2""" % (against_field, "%s", "%s", against_field, "%s"),
 			(now(), frappe.session.user, ref_no))
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index 2f7af71..1b8c635 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -178,7 +178,7 @@
 
 	calculate_taxes_and_totals: function() {
 		this._super();
-		this.calculate_total_advance("Purchase Invoice", "advance_allocation_details");
+		this.calculate_total_advance("Purchase Invoice", "advances");
 		this.frm.refresh_fields();
 	},
 
@@ -368,9 +368,9 @@
 			setup_field_label_map(["tax_amount", "total"], company_currency, this.other_fname);
 		}
 
-		if(this.frm.fields_dict["advance_allocation_details"]) {
+		if(this.frm.fields_dict["advances"]) {
 			setup_field_label_map(["advance_amount", "allocated_amount"], company_currency,
-				"advance_allocation_details");
+				"advances");
 		}
 
 		// toggle columns
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index e712995..a8d327a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -4,8 +4,8 @@
 frappe.provide("erpnext.buying");
 
 cur_frm.cscript.tname = "Purchase Order Item";
-cur_frm.cscript.fname = "po_details";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 
 {% include 'buying/doctype/purchase_common/purchase_common.js' %};
 {% include 'accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js' %}
@@ -105,9 +105,9 @@
 		this.get_terms();
 	},
 
-	po_details_add: function(doc, cdt, cdn) {
+	items_add: function(doc, cdt, cdn) {
 		var row = frappe.get_doc(cdt, cdn);
-		this.frm.script_manager.copy_from_first_row("po_details", row, ["schedule_date"]);
+		this.frm.script_manager.copy_from_first_row("items", row, ["schedule_date"]);
 	}
 });
 
@@ -126,7 +126,7 @@
 	}
 }
 
-cur_frm.fields_dict['po_details'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) {
 	return {
 		filters:[
 			['Project', 'status', 'not in', 'Completed, Cancelled']
@@ -134,7 +134,7 @@
 	}
 }
 
-cur_frm.fields_dict['po_details'].grid.get_field('bom').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('bom').get_query = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn]
 	return {
 		filters: [
@@ -188,7 +188,7 @@
 
 	out ='';
 
-	var cl = doc.po_details || [];
+	var cl = doc.items || [];
 
 	// outer table
 	var out='<div><table class="noborder" style="width:100%"><tr><td style="width: 50%"></td><td>';
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 09f303f..245d46e 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -9,12 +9,12 @@
 from erpnext.controllers.buying_controller import BuyingController
 
 form_grid_templates = {
-	"po_details": "templates/form_grid/item_grid.html"
+	"items": "templates/form_grid/item_grid.html"
 }
 
 class PurchaseOrder(BuyingController):
 	tname = 'Purchase Order Item'
-	fname = 'po_details'
+	fname = 'items'
 
 	def __init__(self, arg1, arg2=None):
 		super(PurchaseOrder, self).__init__(arg1, arg2)
@@ -51,7 +51,7 @@
 		self.validate_with_previous_doc()
 		self.validate_for_subcontracting()
 		self.validate_minimum_order_qty()
-		self.create_raw_materials_supplied("po_raw_material_details")
+		self.create_raw_materials_supplied("supplied_items")
 
 	def validate_with_previous_doc(self):
 		super(PurchaseOrder, self).validate_with_previous_doc(self.tname, {
@@ -71,7 +71,7 @@
 		itemwise_min_order_qty = frappe._dict(frappe.db.sql("select name, min_order_qty from tabItem"))
 
 		itemwise_qty = frappe._dict()
-		for d in self.get("po_details"):
+		for d in self.get("items"):
 			itemwise_qty.setdefault(d.item_code, 0)
 			itemwise_qty[d.item_code] += flt(d.stock_qty)
 
@@ -80,7 +80,7 @@
 				frappe.throw(_("Item #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).").format(item_code))
 
 	def get_schedule_dates(self):
-		for d in self.get('po_details'):
+		for d in self.get('items'):
 			if d.prevdoc_detail_docname and not d.schedule_date:
 				d.schedule_date = frappe.db.get_value("Material Request Item",
 						d.prevdoc_detail_docname, "schedule_date")
@@ -91,14 +91,14 @@
 	# Check for Stopped status
 	def check_for_stopped_status(self, pc_obj):
 		check_list =[]
-		for d in self.get('po_details'):
+		for d in self.get('items'):
 			if d.meta.get_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
 				check_list.append(d.prevdoc_docname)
 				pc_obj.check_for_stopped_status( d.prevdoc_doctype, d.prevdoc_docname)
 
 	def update_requested_qty(self):
 		material_request_map = {}
-		for d in self.get("po_details"):
+		for d in self.get("items"):
 			if d.prevdoc_doctype and d.prevdoc_doctype == "Material Request" and d.prevdoc_detail_docname:
 				material_request_map.setdefault(d.prevdoc_docname, []).append(d.prevdoc_detail_docname)
 
@@ -128,7 +128,7 @@
 			bin_doc.save()
 
 		item_wh_list = []
-		for d in self.get("po_details"):
+		for d in self.get("items"):
 			if (not po_item_rows or d.name in po_item_rows) and [d.item_code, d.warehouse] not in item_wh_list \
 					and frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes" and d.warehouse:
 				item_wh_list.append([d.item_code, d.warehouse])
diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
index e67d320..9ff5c44 100644
--- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
@@ -23,7 +23,7 @@
 		pr.supplier_warehouse = "_Test Warehouse 1 - _TC"
 		pr.posting_date = "2013-05-12"
 		self.assertEquals(pr.doctype, "Purchase Receipt")
-		self.assertEquals(len(pr.get("purchase_receipt_details")), len(test_records[0]["po_details"]))
+		self.assertEquals(len(pr.get("items")), len(test_records[0]["items"]))
 
 		pr.naming_series = "_T-Purchase Receipt-"
 		frappe.get_doc(pr).insert()
@@ -38,7 +38,7 @@
 
 		po = frappe.get_doc("Purchase Order", po.name)
 		po.is_subcontracted = "No"
-		po.get("po_details")[0].item_code = "_Test Item"
+		po.get("items")[0].item_code = "_Test Item"
 		po.submit()
 
 		self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty + 10)
@@ -46,15 +46,15 @@
 		pr = make_purchase_receipt(po.name)
 
 		self.assertEquals(pr.doctype, "Purchase Receipt")
-		self.assertEquals(len(pr.get("purchase_receipt_details", [])), len(test_records[0]["po_details"]))
+		self.assertEquals(len(pr.get("items", [])), len(test_records[0]["items"]))
 		pr.posting_date = "2013-05-12"
 		pr.naming_series = "_T-Purchase Receipt-"
-		pr.purchase_receipt_details[0].qty = 4.0
+		pr.items[0].qty = 4.0
 		pr.insert()
 		pr.submit()
 
 		po.load_from_db()
-		self.assertEquals(po.get("po_details")[0].received_qty, 4)
+		self.assertEquals(po.get("items")[0].received_qty, 4)
 		self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty + 6)
 
 		frappe.db.set_value('Item', '_Test Item', 'tolerance', 50)
@@ -62,19 +62,19 @@
 		pr1 = make_purchase_receipt(po.name)
 		pr1.naming_series = "_T-Purchase Receipt-"
 		pr1.posting_date = "2013-05-12"
-		pr1.get("purchase_receipt_details")[0].qty = 8
+		pr1.get("items")[0].qty = 8
 		pr1.insert()
 		pr1.submit()
 
 		po.load_from_db()
-		self.assertEquals(po.get("po_details")[0].received_qty, 12)
+		self.assertEquals(po.get("items")[0].received_qty, 12)
 		self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty)
 
 		pr1.load_from_db()
 		pr1.cancel()
 
 		po.load_from_db()
-		self.assertEquals(po.get("po_details")[0].received_qty, 4)
+		self.assertEquals(po.get("items")[0].received_qty, 4)
 		self.assertEquals(self._get_ordered_qty("_Test Item", "_Test Warehouse - _TC"), existing_ordered_qty + 6)
 
 	def test_make_purchase_invoice(self):
@@ -90,7 +90,7 @@
 		pi = make_purchase_invoice(po.name)
 
 		self.assertEquals(pi.doctype, "Purchase Invoice")
-		self.assertEquals(len(pi.get("entries", [])), len(test_records[0]["po_details"]))
+		self.assertEquals(len(pi.get("entries", [])), len(test_records[0]["items"]))
 
 		pi.credit_to = "_Test Payable - _TC"
 		pi.posting_date = "2013-05-12"
@@ -100,7 +100,7 @@
 	def test_subcontracting(self):
 		po = frappe.copy_doc(test_records[0])
 		po.insert()
-		self.assertEquals(len(po.get("po_raw_material_details")), 2)
+		self.assertEquals(len(po.get("supplied_items")), 2)
 
 	def test_warehouse_company_validation(self):
 		from erpnext.stock.utils import InvalidWarehouseCompany
@@ -112,7 +112,7 @@
 	def test_uom_integer_validation(self):
 		from erpnext.utilities.transaction_base import UOMMustBeIntegerError
 		po = frappe.copy_doc(test_records[0])
-		po.get("po_details")[0].qty = 3.4
+		po.get("items")[0].qty = 3.4
 		self.assertRaises(UOMMustBeIntegerError, po.insert)
 
 	def test_recurring_order(self):
diff --git a/erpnext/buying/doctype/purchase_order/test_records.json b/erpnext/buying/doctype/purchase_order/test_records.json
index 6b89bdc..2b329af 100644
--- a/erpnext/buying/doctype/purchase_order/test_records.json
+++ b/erpnext/buying/doctype/purchase_order/test_records.json
@@ -12,7 +12,7 @@
   "is_subcontracted": "Yes", 
   "naming_series": "_T-Purchase Order-", 
   "net_total": 5000.0, 
-  "po_details": [
+  "items": [
    {
     "base_amount": 5000.0, 
     "conversion_factor": 1.0, 
@@ -20,7 +20,7 @@
     "doctype": "Purchase Order Item", 
     "item_code": "_Test FG Item", 
     "item_name": "_Test FG Item", 
-    "parentfield": "po_details", 
+    "parentfield": "items", 
     "qty": 10.0, 
     "rate": 500.0, 
     "schedule_date": "2013-03-01", 
@@ -46,7 +46,7 @@
   "is_subcontracted": "No", 
   "naming_series": "_T-Purchase Order-", 
   "net_total": 5000.0, 
-  "po_details": [
+  "items": [
    {
     "base_amount": 5000.0, 
     "conversion_factor": 1.0, 
@@ -54,7 +54,7 @@
     "doctype": "Purchase Order Item", 
     "item_code": "_Test Item", 
     "item_name": "_Test Item", 
-    "parentfield": "po_details", 
+    "parentfield": "items", 
     "qty": 10.0, 
     "rate": 500.0, 
     "schedule_date": "2013-03-01", 
diff --git a/erpnext/buying/doctype/quality_inspection/quality_inspection.py b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
index 216d165..a9b157c 100644
--- a/erpnext/buying/doctype/quality_inspection/quality_inspection.py
+++ b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
@@ -9,7 +9,7 @@
 
 class QualityInspection(Document):
 	def get_item_specification_details(self):
-		self.set('qa_specification_details', [])
+		self.set('readings', [])
 		variant_of = frappe.db.get_query("Item", self.item_code, "variant_of")
 		if variant_of:
 			specification = frappe.db.sql("select specification, value from `tabItem Quality Inspection Parameter` \
@@ -18,7 +18,7 @@
 			specification = frappe.db.sql("select specification, value from `tabItem Quality Inspection Parameter` \
 				where parent = %s order by idx", self.item_code)
 		for d in specification:
-			child = self.append('qa_specification_details', {})
+			child = self.append('readings', {})
 			child.specification = d[0]
 			child.value = d[1]
 			child.status = 'Accepted'
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js
index e9b5812..f233a79 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/erpnext/buying/doctype/supplier/supplier.js
@@ -59,7 +59,7 @@
 	}
 }
 
-cur_frm.fields_dict['party_accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
 	var d  = locals[cdt][cdn];
 	return {
 		filters: {
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index b9286a1..72cef3b 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -3,8 +3,8 @@
 
 // define defaults for purchase common
 cur_frm.cscript.tname = "Supplier Quotation Item";
-cur_frm.cscript.fname = "quotation_items";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 
 // attach required files
 {% include 'buying/doctype/purchase_common/purchase_common.js' %};
@@ -52,7 +52,7 @@
 	// no need to trigger updation of stock uom, as this field doesn't exist in supplier quotation
 }
 
-cur_frm.fields_dict['quotation_items'].grid.get_field('project_name').get_query =
+cur_frm.fields_dict['items'].grid.get_field('project_name').get_query =
 	function(doc, cdt, cdn) {
 		return{
 			filters:[
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index d009bac..9eb8649 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -8,12 +8,12 @@
 from erpnext.controllers.buying_controller import BuyingController
 
 form_grid_templates = {
-	"quotation_items": "templates/form_grid/item_grid.html"
+	"items": "templates/form_grid/item_grid.html"
 }
 
 class SupplierQuotation(BuyingController):
 	tname = "Supplier Quotation Item"
-	fname = "quotation_items"
+	fname = "items"
 
 	def validate(self):
 		super(SupplierQuotation, self).validate()
diff --git a/erpnext/buying/doctype/supplier_quotation/test_records.json b/erpnext/buying/doctype/supplier_quotation/test_records.json
index 90807d4..70e32fe 100644
--- a/erpnext/buying/doctype/supplier_quotation/test_records.json
+++ b/erpnext/buying/doctype/supplier_quotation/test_records.json
@@ -11,14 +11,14 @@
   "is_subcontracted": "No", 
   "naming_series": "_T-Supplier Quotation-", 
   "net_total": 5000.0, 
-  "quotation_items": [
+  "items": [
    {
     "base_amount": 5000.0, 
     "description": "_Test FG Item", 
     "doctype": "Supplier Quotation Item", 
     "item_code": "_Test FG Item", 
     "item_name": "_Test FG Item", 
-    "parentfield": "quotation_items", 
+    "parentfield": "items", 
     "qty": 10.0, 
     "rate": 500.0, 
     "uom": "_Test UOM", 
diff --git a/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
index 3f22fd5..af5db60 100644
--- a/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
@@ -21,11 +21,11 @@
 		po = make_purchase_order(sq.name)
 
 		self.assertEquals(po.doctype, "Purchase Order")
-		self.assertEquals(len(po.get("po_details")), len(sq.get("quotation_items")))
+		self.assertEquals(len(po.get("items")), len(sq.get("items")))
 
 		po.naming_series = "_T-Purchase Order-"
 
-		for doc in po.get("po_details"):
+		for doc in po.get("items"):
 			if doc.get("item_code"):
 				doc.set("schedule_date", "2013-04-12")
 
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 2cecdc0..276e36a 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -145,8 +145,8 @@
 				get_taxes_and_charges(tax_master_doctype, self.get(tax_master_field), tax_parentfield))
 
 	def set_other_charges(self):
-		self.set("other_charges", [])
-		self.set_taxes("other_charges", "taxes_and_charges")
+		self.set("taxes", [])
+		self.set_taxes("taxes", "taxes_and_charges")
 
 	def calculate_taxes_and_totals(self):
 		self.discount_amount_applied = False
@@ -394,7 +394,7 @@
 			select
 				t1.name as jv_no, t1.remark, t2.{0} as amount, t2.name as jv_detail_no, `against_{1}` as against_order
 			from
-				`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
+				`tabJournal Voucher` t1, `tabJournal Entry Account` t2
 			where
 				t1.name = t2.parent and t2.account = %s
 				and t2.party_type=%s and t2.party=%s
@@ -426,7 +426,7 @@
 			account = self.get("debit_to" if self.doctype=="Sales Invoice" else "credit_to")
 
 			jv_against_order = frappe.db.sql("""select parent, %s as against_order
-				from `tabJournal Voucher Detail`
+				from `tabJournal Entry Account`
 				where docstatus=1 and account=%s and ifnull(is_advance, 'No') = 'Yes'
 				and ifnull(against_sales_order, '') in (%s)
 				group by parent, against_sales_order""" %
@@ -501,7 +501,7 @@
 			select
 				sum(ifnull({dr_or_cr}, 0))
 			from
-				`tabJournal Voucher Detail`
+				`tabJournal Entry Account`
 			where
 				{against_field} = %s and docstatus = 1 and is_advance = "Yes" """.format(dr_or_cr=dr_or_cr, \
 					against_field=against_field), self.name)
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 0f7e2ba..af6f728 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -17,7 +17,7 @@
 		if hasattr(self, "fname"):
 			self.table_print_templates = {
 				self.fname: "templates/print_formats/includes/item_grid.html",
-				"other_charges": "templates/print_formats/includes/taxes.html",
+				"taxes": "templates/print_formats/includes/taxes.html",
 			}
 
 	def get_feed(self):
@@ -46,7 +46,7 @@
 
 		self.set_missing_item_details()
 		if self.get("__islocal"):
-			self.set_taxes("other_charges", "taxes_and_charges")
+			self.set_taxes("taxes", "taxes_and_charges")
 
 	def set_supplier_from_item_default(self):
 		if self.meta.get_field("supplier") and not self.supplier:
@@ -66,8 +66,8 @@
 			validate_warehouse_company(w, self.company)
 
 	def validate_stock_or_nonstock_items(self):
-		if self.meta.get_field("other_charges") and not self.get_stock_items():
-			tax_for_valuation = [d.account_head for d in self.get("other_charges")
+		if self.meta.get_field("taxes") and not self.get_stock_items():
+			tax_for_valuation = [d.account_head for d in self.get("taxes")
 				if d.category in ["Valuation", "Valuation and Total"]]
 			if tax_for_valuation:
 				frappe.throw(_("Tax Category can not be 'Valuation' or 'Valuation and Total' as all items are non-stock items"))
@@ -82,9 +82,9 @@
 		 		self.currency)
 
 	def calculate_taxes_and_totals(self):
-		self.other_fname = "other_charges"
+		self.other_fname = "taxes"
 		super(BuyingController, self).calculate_taxes_and_totals()
-		self.calculate_total_advance("Purchase Invoice", "advance_allocation_details")
+		self.calculate_total_advance("Purchase Invoice", "advances")
 
 	def calculate_item_values(self):
 		for item in self.item_doclist:
@@ -175,7 +175,7 @@
 				last_stock_item_idx = d.idx
 
 		total_valuation_amount = sum([flt(d.tax_amount) for d in
-			self.get("other_charges")
+			self.get("taxes")
 			if d.category in ["Valuation", "Valuation and Total"]])
 
 
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 7b4d03e..513507d 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -15,7 +15,7 @@
 		if hasattr(self, "fname"):
 			self.table_print_templates = {
 				self.fname: "templates/print_formats/includes/item_grid.html",
-				"other_charges": "templates/print_formats/includes/taxes.html",
+				"taxes": "templates/print_formats/includes/taxes.html",
 			}
 
 	def get_feed(self):
@@ -44,7 +44,7 @@
 		self.set_missing_lead_customer_details()
 		self.set_price_list_and_item_details()
 		if self.get("__islocal"):
-			self.set_taxes("other_charges", "taxes_and_charges")
+			self.set_taxes("taxes", "taxes_and_charges")
 
 	def set_missing_lead_customer_details(self):
 		if getattr(self, "customer", None):
@@ -73,7 +73,7 @@
 			# shipping rule calculation based on item's net weight
 
 			shipping_amount = 0.0
-			for condition in shipping_rule.get("shipping_rule_conditions"):
+			for condition in shipping_rule.get("conditions"):
 				if not condition.to_value or (flt(condition.from_value) <= value <= flt(condition.to_value)):
 					shipping_amount = condition.shipping_amount
 					break
@@ -85,28 +85,28 @@
 				"cost_center": shipping_rule.cost_center
 			}
 
-			existing_shipping_charge = self.get("other_charges", filters=shipping_charge)
+			existing_shipping_charge = self.get("taxes", filters=shipping_charge)
 			if existing_shipping_charge:
 				# take the last record found
 				existing_shipping_charge[-1].rate = shipping_amount
 			else:
 				shipping_charge["rate"] = shipping_amount
 				shipping_charge["description"] = shipping_rule.label
-				self.append("other_charges", shipping_charge)
+				self.append("taxes", shipping_charge)
 
 			self.calculate_taxes_and_totals()
 
 	def remove_shipping_charge(self):
 		if self.shipping_rule:
 			shipping_rule = frappe.get_doc("Shipping Rule", self.shipping_rule)
-			existing_shipping_charge = self.get("other_charges", {
+			existing_shipping_charge = self.get("taxes", {
 				"doctype": "Sales Taxes and Charges",
 				"charge_type": "Actual",
 				"account_head": shipping_rule.account,
 				"cost_center": shipping_rule.cost_center
 			})
 			if existing_shipping_charge:
-				self.get("other_charges").remove(existing_shipping_charge[-1])
+				self.get("taxes").remove(existing_shipping_charge[-1])
 				self.calculate_taxes_and_totals()
 
 	def set_total_in_words(self):
@@ -124,11 +124,11 @@
 				self.grand_total_export or self.rounded_total_export, self.currency)
 
 	def calculate_taxes_and_totals(self):
-		self.other_fname = "other_charges"
+		self.other_fname = "taxes"
 
 		super(SellingController, self).calculate_taxes_and_totals()
 
-		self.calculate_total_advance("Sales Invoice", "advance_adjustment_details")
+		self.calculate_total_advance("Sales Invoice", "advances")
 		self.calculate_commission()
 		self.calculate_contribution()
 
@@ -343,7 +343,7 @@
 					reserved_qty_for_main_item = -flt(d.qty)
 
 			if self.has_sales_bom(d.item_code):
-				for p in self.get("packing_details"):
+				for p in self.get("packed_items"):
 					if p.parent_detail_docname == d.name and p.parent_item == d.item_code:
 						# the packing details table's qty is already multiplied with parent's qty
 						il.append(frappe._dict({
diff --git a/erpnext/hr/doctype/appraisal/appraisal.js b/erpnext/hr/doctype/appraisal/appraisal.js
index 84ab964..17e2709 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.js
+++ b/erpnext/hr/doctype/appraisal/appraisal.js
@@ -33,7 +33,7 @@
 
 cur_frm.cscript.calculate_total_score = function(doc,cdt,cdn){
 	//return get_server_fields('calculate_total','','',doc,cdt,cdn,1);
-	var val = doc.appraisal_details || [];
+	var val = doc.goals || [];
 	var total =0;
 	for(var i = 0; i<val.length; i++){
 		total = flt(total)+flt(val[i].score_earned)
@@ -48,21 +48,21 @@
 		if (flt(d.score) > 5) {
 			msgprint(__("Score must be less than or equal to 5"));
 			d.score = 0;
-			refresh_field('score', d.name, 'appraisal_details');
+			refresh_field('score', d.name, 'goals');
 		}
 		total = flt(d.per_weightage*d.score)/100;
 		d.score_earned = total.toPrecision(2);
-		refresh_field('score_earned', d.name, 'appraisal_details');
+		refresh_field('score_earned', d.name, 'goals');
 	}
 	else{
 		d.score_earned = 0;
-		refresh_field('score_earned', d.name, 'appraisal_details');
+		refresh_field('score_earned', d.name, 'goals');
 	}
 	cur_frm.cscript.calculate_total(doc,cdt,cdn);
 }
 
 cur_frm.cscript.calculate_total = function(doc,cdt,cdn){
-	var val = doc.appraisal_details || [];
+	var val = doc.goals || [];
 	var total =0;
 	for(var i = 0; i<val.length; i++){
 		total = flt(total)+flt(val[i].score_earned);
diff --git a/erpnext/hr/doctype/appraisal/appraisal.py b/erpnext/hr/doctype/appraisal/appraisal.py
index 72bfc1c..99c60b7 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.py
+++ b/erpnext/hr/doctype/appraisal/appraisal.py
@@ -40,7 +40,7 @@
 
 	def calculate_total(self):
 		total, total_w  = 0, 0
-		for d in self.get('appraisal_details'):
+		for d in self.get('goals'):
 			if d.score:
 				d.score_earned = flt(d.score) * flt(d.per_weightage) / 100
 				total = total + d.score_earned
diff --git a/erpnext/hr/doctype/appraisal_template/appraisal_template.py b/erpnext/hr/doctype/appraisal_template/appraisal_template.py
index 1f753d0..573efc9 100644
--- a/erpnext/hr/doctype/appraisal_template/appraisal_template.py
+++ b/erpnext/hr/doctype/appraisal_template/appraisal_template.py
@@ -10,7 +10,7 @@
 class AppraisalTemplate(Document):
 	def validate(self):
 		self.total_points = 0
-		for d in self.get("kra_sheet"):
+		for d in self.get("goals"):
 			self.total_points += int(d.per_weightage or 0)
 
 		if int(self.total_points) != 100:
diff --git a/erpnext/hr/doctype/employee/employee.js b/erpnext/hr/doctype/employee/employee.js
index b068bde..4cce930 100644
--- a/erpnext/hr/doctype/employee/employee.js
+++ b/erpnext/hr/doctype/employee/employee.js
@@ -12,7 +12,7 @@
 
 	onload: function() {
 		if(this.frm.doc.__islocal) this.frm.set_value("employee_name", "");
-		this.frm.set_query("leave_approver", "employee_leave_approvers", function() {
+		this.frm.set_query("leave_approver", "leave_approvers", function() {
 			return {
 				filters: [["UserRole", "role", "=", "Leave Approver"]]
 			}
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 6c27b23..b5bb755 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -138,9 +138,9 @@
 	def validate_employee_leave_approver(self):
 		from erpnext.hr.doctype.leave_application.leave_application import InvalidLeaveApproverError
 
-		for l in self.get("employee_leave_approvers")[:]:
+		for l in self.get("leave_approvers")[:]:
 			if "Leave Approver" not in frappe.get_roles(l.leave_approver):
-				self.get("employee_leave_approvers").remove(l)
+				self.get("leave_approvers").remove(l)
 				msgprint(_("{0} is not a valid Leave Approver. Removing row #{1}.").format(l.leave_approver, l.idx))
 
 	def validate_reports_to(self):
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index ba45928..31d358a 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -20,12 +20,12 @@
 				jv.remark = 'Payment against Expense Claim: ' + cur_frm.doc.name;
 				jv.fiscal_year = cur_frm.doc.fiscal_year;
 
-				var d1 = frappe.model.add_child(jv, 'Journal Voucher Detail', 'entries');
+				var d1 = frappe.model.add_child(jv, 'Journal Entry Account', 'entries');
 				d1.debit = cur_frm.doc.total_sanctioned_amount;
 				d1.against_expense_claim = cur_frm.doc.name;
 
 				// credit to bank
-				var d1 = frappe.model.add_child(jv, 'Journal Voucher Detail', 'entries');
+				var d1 = frappe.model.add_child(jv, 'Journal Entry Account', 'entries');
 				d1.credit = cur_frm.doc.total_sanctioned_amount;
 				d1.against_expense_claim = cur_frm.doc.name;
 				if(r.message) {
@@ -69,7 +69,7 @@
 }
 
 cur_frm.cscript.clear_sanctioned = function(doc) {
-	var val = doc.expense_voucher_details || [];
+	var val = doc.expenses || [];
 	for(var i = 0; i<val.length; i++){
 		val[i].sanctioned_amount ='';
 	}
@@ -129,7 +129,7 @@
 cur_frm.cscript.calculate_total = function(doc,cdt,cdn){
 	doc.total_claimed_amount = 0;
 	doc.total_sanctioned_amount = 0;
-	$.each((doc.expense_voucher_details || []), function(i, d) {
+	$.each((doc.expenses || []), function(i, d) {
 		doc.total_claimed_amount += d.claim_amount;
 		if(d.sanctioned_amount==null) {
 			d.sanctioned_amount = d.claim_amount;
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 4db9cbf..b2b9b95 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -30,7 +30,7 @@
 		validate_fiscal_year(self.posting_date, self.fiscal_year, "Posting Date")
 
 	def validate_exp_details(self):
-		if not self.get('expense_voucher_details'):
+		if not self.get('expenses'):
 			frappe.throw(_("Please add expense voucher details"))
 
 	def validate_expense_approver(self):
diff --git a/erpnext/hr/doctype/holiday_list/holiday_list.py b/erpnext/hr/doctype/holiday_list/holiday_list.py
index b1dec84..d3237f0 100644
--- a/erpnext/hr/doctype/holiday_list/holiday_list.py
+++ b/erpnext/hr/doctype/holiday_list/holiday_list.py
@@ -18,9 +18,9 @@
 		self.validate_values()
 		yr_start_date, yr_end_date = self.get_fy_start_end_dates()
 		date_list = self.get_weekly_off_date_list(yr_start_date, yr_end_date)
-		last_idx = max([cint(d.idx) for d in self.get("holiday_list_details")] or [0,])
+		last_idx = max([cint(d.idx) for d in self.get("holidays")] or [0,])
 		for i, d in enumerate(date_list):
-			ch = self.append('holiday_list_details', {})
+			ch = self.append('holidays', {})
 			ch.description = self.weekly_off
 			ch.holiday_date = d
 			ch.idx = last_idx + i + 1
@@ -54,7 +54,7 @@
 		return date_list
 
 	def clear_table(self):
-		self.set('holiday_list_details', [])
+		self.set('holidays', [])
 
 	def update_default_holiday_list(self):
 		frappe.db.sql("""update `tabHoliday List` set is_default = 0
diff --git a/erpnext/hr/doctype/holiday_list/test_records.json b/erpnext/hr/doctype/holiday_list/test_records.json
index be7b178..342bacb 100644
--- a/erpnext/hr/doctype/holiday_list/test_records.json
+++ b/erpnext/hr/doctype/holiday_list/test_records.json
@@ -2,7 +2,7 @@
  {
   "doctype": "Holiday List",
   "fiscal_year": "_Test Fiscal Year 2013", 
-  "holiday_list_details": [
+  "holidays": [
    {
     "description": "New Year", 
     "holiday_date": "2013-01-01"
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index cb3e397..ac12618 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -143,7 +143,7 @@
 
 	def validate_leave_approver(self):
 		employee = frappe.get_doc("Employee", self.employee)
-		leave_approvers = [l.leave_approver for l in employee.get("employee_leave_approvers")]
+		leave_approvers = [l.leave_approver for l in employee.get("leave_approvers")]
 
 		if len(leave_approvers) and self.leave_approver not in leave_approvers:
 			frappe.throw(_("Leave approver must be one of {0}").format(comma_or(leave_approvers)), InvalidLeaveApproverError)
diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py
index 7ad28de..d9e593d 100644
--- a/erpnext/hr/doctype/leave_application/test_leave_application.py
+++ b/erpnext/hr/doctype/leave_application/test_leave_application.py
@@ -61,7 +61,7 @@
 		temp_session_user = frappe.session.user
 		frappe.set_user("Administrator")
 		employee = frappe.get_doc("Employee", employee)
-		employee.append("employee_leave_approvers", {
+		employee.append("leave_approvers", {
 			"doctype": "Employee Leave Approver",
 			"leave_approver": leave_approver
 		})
@@ -72,11 +72,11 @@
 		temp_session_user = frappe.session.user
 		frappe.set_user("Administrator")
 		employee = frappe.get_doc("Employee", employee)
-		d = employee.get("employee_leave_approvers", {
+		d = employee.get("leave_approvers", {
 			"leave_approver": leave_approver
 		})
 		if d:
-			employee.get("employee_leave_approvers").remove(d[0])
+			employee.get("leave_approvers").remove(d[0])
 			employee.save()
 		frappe.set_user(temp_session_user)
 
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.js b/erpnext/hr/doctype/salary_manager/salary_manager.js
index bbae9ac..57db375 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.js
+++ b/erpnext/hr/doctype/salary_manager/salary_manager.js
@@ -48,12 +48,12 @@
 		jv.posting_date = dateutil.obj_to_str(new Date());
 
 		// credit to bank
-		var d1 = frappe.model.add_child(jv, 'Journal Voucher Detail', 'entries');
+		var d1 = frappe.model.add_child(jv, 'Journal Entry Account', 'entries');
 		d1.account = r.message['default_bank_account'];
 		d1.credit = r.message['amount']
 
 		// debit to salary account
-		var d2 = frappe.model.add_child(jv, 'Journal Voucher Detail', 'entries');
+		var d2 = frappe.model.add_child(jv, 'Journal Entry Account', 'entries');
 		d2.debit = r.message['amount']
 
 		loaddoc('Journal Voucher', jv.name);
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index 3c11f9d..fb4f8f8 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -65,13 +65,13 @@
 // Calculate earning total
 // ------------------------------------------------------------------------
 var calculate_earning_total = function(doc, dt, dn) {
-	var tbl = doc.earning_details || [];
+	var tbl = doc.earnings || [];
 
 	var total_earn = 0;
 	for(var i = 0; i < tbl.length; i++){
 		if(cint(tbl[i].e_depends_on_lwp) == 1) {
 			tbl[i].e_modified_amount = Math.round(tbl[i].e_amount)*(flt(doc.payment_days)/cint(doc.total_days_in_month)*100)/100;			
-			refresh_field('e_modified_amount', tbl[i].name, 'earning_details');
+			refresh_field('e_modified_amount', tbl[i].name, 'earnings');
 		}
 		total_earn += flt(tbl[i].e_modified_amount);
 	}
@@ -82,13 +82,13 @@
 // Calculate deduction total
 // ------------------------------------------------------------------------
 var calculate_ded_total = function(doc, dt, dn) {
-	var tbl = doc.deduction_details || [];
+	var tbl = doc.deductions || [];
 
 	var total_ded = 0;
 	for(var i = 0; i < tbl.length; i++){
 		if(cint(tbl[i].d_depends_on_lwp) == 1) {
 			tbl[i].d_modified_amount = Math.round(tbl[i].d_amount)*(flt(doc.payment_days)/cint(doc.total_days_in_month)*100)/100;
-			refresh_field('d_modified_amount', tbl[i].name, 'deduction_details');
+			refresh_field('d_modified_amount', tbl[i].name, 'deductions');
 		}
 		total_ded += flt(tbl[i].d_modified_amount);
 	}
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 22a7975..daaba29 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -134,8 +134,8 @@
 		from frappe.utils import money_in_words
 		self.check_existing()
 
-		if not (len(self.get("earning_details")) or
-			len(self.get("deduction_details"))):
+		if not (len(self.get("earnings")) or
+			len(self.get("deductions"))):
 				self.get_emp_and_leave_details()
 		else:
 			self.get_leave_details(self.leave_without_pay)
@@ -150,7 +150,7 @@
 
 	def calculate_earning_total(self):
 		self.gross_pay = flt(self.arrear_amount) + flt(self.leave_encashment_amount)
-		for d in self.get("earning_details"):
+		for d in self.get("earnings"):
 			if cint(d.e_depends_on_lwp) == 1:
 				d.e_modified_amount = rounded(flt(d.e_amount) * flt(self.payment_days)
 					/ cint(self.total_days_in_month), 2)
@@ -162,7 +162,7 @@
 
 	def calculate_ded_total(self):
 		self.total_deduction = 0
-		for d in self.get('deduction_details'):
+		for d in self.get('deductions'):
 			if cint(d.d_depends_on_lwp) == 1:
 				d.d_modified_amount = rounded(flt(d.d_amount) * flt(self.payment_days)
 					/ cint(self.total_days_in_month), 2)
diff --git a/erpnext/hr/doctype/salary_slip/test_records.json b/erpnext/hr/doctype/salary_slip/test_records.json
index 3e750cf..da8d95d 100644
--- a/erpnext/hr/doctype/salary_slip/test_records.json
+++ b/erpnext/hr/doctype/salary_slip/test_records.json
@@ -1,37 +1,37 @@
 [
  {
   "company": "_Test Company", 
-  "deduction_details": [
+  "deductions": [
    {
     "d_amount": 100, 
     "d_depends_on_lwp": 0, 
     "d_type": "_Test Professional Tax", 
     "doctype": "Salary Slip Deduction", 
-    "parentfield": "deduction_details"
+    "parentfield": "deductions"
    }, 
    {
     "d_amount": 50, 
     "d_depends_on_lwp": 1, 
     "d_type": "_Test TDS", 
     "doctype": "Salary Slip Deduction", 
-    "parentfield": "deduction_details"
+    "parentfield": "deductions"
    }
   ], 
   "doctype": "Salary Slip", 
-  "earning_details": [
+  "earnings": [
    {
     "doctype": "Salary Slip Earning", 
     "e_amount": 15000, 
     "e_depends_on_lwp": 1, 
     "e_type": "_Test Basic Salary", 
-    "parentfield": "earning_details"
+    "parentfield": "earnings"
    }, 
    {
     "doctype": "Salary Slip Earning", 
     "e_amount": 500, 
     "e_depends_on_lwp": 0, 
     "e_type": "_Test Allowance", 
-    "parentfield": "earning_details"
+    "parentfield": "earnings"
    }
   ], 
   "employee": "_T-Employee-0001", 
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index 8aca9a6..475a02c 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -27,10 +27,10 @@
 		ss.insert()
 		self.assertEquals(ss.total_days_in_month, 31)
 		self.assertEquals(ss.payment_days, 30)
-		self.assertEquals(ss.earning_details[0].e_modified_amount, 14516.13)
-		self.assertEquals(ss.earning_details[1].e_modified_amount, 500)
-		self.assertEquals(ss.deduction_details[0].d_modified_amount, 100)
-		self.assertEquals(ss.deduction_details[1].d_modified_amount, 48.39)
+		self.assertEquals(ss.earnings[0].e_modified_amount, 14516.13)
+		self.assertEquals(ss.earnings[1].e_modified_amount, 500)
+		self.assertEquals(ss.deductions[0].d_modified_amount, 100)
+		self.assertEquals(ss.deductions[1].d_modified_amount, 48.39)
 		self.assertEquals(ss.gross_pay, 15016.13)
 		self.assertEquals(ss.net_pay, 14867.74)
 
@@ -39,10 +39,10 @@
 		ss.insert()
 		self.assertEquals(ss.total_days_in_month, 30)
 		self.assertEquals(ss.payment_days, 29)
-		self.assertEquals(ss.earning_details[0].e_modified_amount, 14500)
-		self.assertEquals(ss.earning_details[1].e_modified_amount, 500)
-		self.assertEquals(ss.deduction_details[0].d_modified_amount, 100)
-		self.assertEquals(ss.deduction_details[1].d_modified_amount, 48.33)
+		self.assertEquals(ss.earnings[0].e_modified_amount, 14500)
+		self.assertEquals(ss.earnings[1].e_modified_amount, 500)
+		self.assertEquals(ss.deductions[0].d_modified_amount, 100)
+		self.assertEquals(ss.deductions[1].d_modified_amount, 48.33)
 		self.assertEquals(ss.gross_pay, 15000)
 		self.assertEquals(ss.net_pay, 14851.67)
 
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js
index a5a3ad3..a6e9ede 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.js
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.js
@@ -4,10 +4,10 @@
 cur_frm.add_fetch('employee', 'company', 'company');
 
 cur_frm.cscript.onload = function(doc, dt, dn){
-	e_tbl = doc.earning_details || [];
-	d_tbl = doc.deduction_details || [];
+	e_tbl = doc.earnings || [];
+	d_tbl = doc.deductions || [];
 	if (e_tbl.length == 0 && d_tbl.length == 0)
-		return $c_obj(doc,'make_earn_ded_table','', function(r, rt) { refresh_many(['earning_details', 'deduction_details']);});
+		return $c_obj(doc,'make_earn_ded_table','', function(r, rt) { refresh_many(['earnings', 'deductions']);});
 }
 
 cur_frm.cscript.refresh = function(doc, dt, dn){
@@ -38,8 +38,8 @@
 }
 
 var calculate_totals = function(doc, cdt, cdn) {
-	var tbl1 = doc.earning_details || [];
-	var tbl2 = doc.deduction_details || [];
+	var tbl1 = doc.earnings || [];
+	var tbl2 = doc.deductions || [];
 
 	var total_earn = 0; var total_ded = 0;
 	for(var i = 0; i < tbl1.length; i++){
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 93b0c26..3c64f5d 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -40,16 +40,16 @@
 		list1 = frappe.db.sql("select name from `tab%s` where docstatus != 2" % doct_name)
 		for li in list1:
 			child = self.append(tab_fname, {})
-			if(tab_fname == 'earning_details'):
+			if(tab_fname == 'earnings'):
 				child.e_type = cstr(li[0])
 				child.modified_value = 0
-			elif(tab_fname == 'deduction_details'):
+			elif(tab_fname == 'deductions'):
 				child.d_type = cstr(li[0])
 				child.d_modified_amt = 0
 
 	def make_earn_ded_table(self):
-		self.make_table('Earning Type','earning_details','Salary Structure Earning')
-		self.make_table('Deduction Type','deduction_details', 'Salary Structure Deduction')
+		self.make_table('Earning Type','earnings','Salary Structure Earning')
+		self.make_table('Deduction Type','deductions', 'Salary Structure Deduction')
 
 	def check_existing(self):
 		ret = frappe.db.sql("""select name from `tabSalary Structure` where is_active = 'Yes'
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index 7a8d75a..a6c7055 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -26,12 +26,12 @@
 }
 
 cur_frm.cscript.with_operations = function(doc) {
-	cur_frm.fields_dict["bom_materials"].grid.set_column_disp("operation", doc.with_operations);
-	cur_frm.fields_dict["bom_materials"].grid.toggle_reqd("operation", doc.with_operations);
+	cur_frm.fields_dict["items"].grid.set_column_disp("operation", doc.with_operations);
+	cur_frm.fields_dict["items"].grid.toggle_reqd("operation", doc.with_operations);
 }
 
 erpnext.bom.set_operation = function(doc) {
-	var op_table = doc["bom_operations"] || [];
+	var op_table = doc["operations"] || [];
 	var operations = [];
 
 	for (var i=0, j=op_table.length; i<j; i++) {
@@ -40,10 +40,10 @@
 
 	frappe.meta.get_docfield("BOM Item", "operation", cur_frm.docname).options = operations.join("\n");
 
-	refresh_field("bom_materials");
+	refresh_field("items");
 }
 
-cur_frm.cscript.bom_operations_remove = function(){
+cur_frm.cscript.operations_remove = function(){
 	erpnext.bom.set_operation(doc);
 }
 
@@ -84,7 +84,7 @@
 			callback: function(r) {
 				d = locals[cdt][cdn];
 				$.extend(d, r.message);
-				refresh_field("bom_materials");
+				refresh_field("items");
 				doc = locals[doc.doctype][doc.name];
 				erpnext.bom.calculate_rm_cost(doc);
 				erpnext.bom.calculate_total(doc);
@@ -111,7 +111,7 @@
 }
 
 erpnext.bom.calculate_op_cost = function(doc) {
-	var op = doc.bom_operations || [];
+	var op = doc.operations || [];
 	doc.operating_cost = 0.0;
 	for(var i=0;i<op.length;i++) {
 		operating_cost = flt(flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60, 2);
@@ -123,13 +123,13 @@
 }
 
 erpnext.bom.calculate_rm_cost = function(doc) {
-	var rm = doc.bom_materials || [];
+	var rm = doc.items || [];
 	total_rm_cost = 0;
 	for(var i=0;i<rm.length;i++) {
 		amt =	flt(rm[i].rate) * flt(rm[i].qty);
-		set_multiple('BOM Item',rm[i].name, {'amount': amt}, 'bom_materials');
+		set_multiple('BOM Item',rm[i].name, {'amount': amt}, 'items');
 		set_multiple('BOM Item',rm[i].name,
-			{'qty_consumed_per_unit': flt(rm[i].qty)/flt(doc.quantity)}, 'bom_materials');
+			{'qty_consumed_per_unit': flt(rm[i].qty)/flt(doc.quantity)}, 'items');
 		total_rm_cost += amt;
 	}
 	cur_frm.set_value("raw_material_cost", total_rm_cost);
@@ -157,7 +157,7 @@
 	}
 }
 
-cur_frm.fields_dict['bom_materials'].grid.get_field('item_code').get_query = function(doc) {
+cur_frm.fields_dict['items'].grid.get_field('item_code').get_query = function(doc) {
 	return{
 		query: "erpnext.controllers.queries.item_query",
 		filters: {
@@ -166,7 +166,7 @@
 	}
 }
 
-cur_frm.fields_dict['bom_materials'].grid.get_field('bom_no').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('bom_no').get_query = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	return{
 		filters:{
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 1c1c81b..3f9d8ff 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -63,7 +63,7 @@
 			frappe.throw(_("Raw material cannot be same as main Item"))
 
 	def set_bom_material_details(self):
-		for item in self.get("bom_materials"):
+		for item in self.get("items"):
 			ret = self.get_bom_material_detail({"item_code": item.item_code, "bom_no": item.bom_no,
 				"qty": item.qty})
 
@@ -117,7 +117,7 @@
 		if self.docstatus == 2:
 			return
 
-		for d in self.get("bom_materials"):
+		for d in self.get("items"):
 			rate = self.get_bom_material_detail({'item_code': d.item_code, 'bom_no': d.bom_no,
 				'qty': d.qty})["rate"]
 			if rate:
@@ -178,8 +178,8 @@
 
 	def clear_operations(self):
 		if not self.with_operations:
-			self.set('bom_operations', [])
-			for d in self.get("bom_materials"):
+			self.set('operations', [])
+			for d in self.get("items"):
 				d.operation = None
 
 	def validate_main_item(self):
@@ -195,7 +195,7 @@
 	def validate_materials(self):
 		""" Validate raw material entries """
 		check_list = []
-		for m in self.get('bom_materials'):
+		for m in self.get('items'):
 
 			if m.bom_no:
 				validate_bom_no(m.item_code, m.bom_no)
@@ -262,7 +262,7 @@
 	def calculate_op_cost(self):
 		"""Update workstation rate and calculates totals"""
 		self.operating_cost = 0
-		for d in self.get('bom_operations'):
+		for d in self.get('operations'):
 			if d.workstation:
 				if not d.hour_rate:
 					d.hour_rate = flt(frappe.db.get_value("Workstation", d.workstation, "hour_rate"))
@@ -275,7 +275,7 @@
 	def calculate_rm_cost(self):
 		"""Fetch RM rate as per today's valuation rate and calculate totals"""
 		total_rm_cost = 0
-		for d in self.get('bom_materials'):
+		for d in self.get('items'):
 			if d.bom_no:
 				d.rate = self.get_bom_unitcost(d.bom_no)
 			d.amount = flt(d.rate, self.precision("rate", d)) * flt(d.qty, self.precision("qty", d))
@@ -292,7 +292,7 @@
 	def get_exploded_items(self):
 		""" Get all raw materials including items from child bom"""
 		self.cur_exploded_items = {}
-		for d in self.get('bom_materials'):
+		for d in self.get('items'):
 			if d.bom_no:
 				self.get_child_exploded_items(d.bom_no, d.qty)
 			else:
@@ -331,9 +331,9 @@
 	def add_exploded_items(self):
 		"Add items to Flat BOM table"
 		frappe.db.sql("""delete from `tabBOM Explosion Item` where parent=%s""", self.name)
-		self.set('flat_bom_details', [])
+		self.set('exploded_items', [])
 		for d in self.cur_exploded_items:
-			ch = self.append('flat_bom_details', {})
+			ch = self.append('exploded_items', {})
 			for i in self.cur_exploded_items[d].keys():
 				ch.set(i, self.cur_exploded_items[d][i])
 			ch.amount = flt(ch.qty) * flt(ch.rate)
diff --git a/erpnext/manufacturing/doctype/bom/test_bom.py b/erpnext/manufacturing/doctype/bom/test_bom.py
index a8e7ed2..4889638 100644
--- a/erpnext/manufacturing/doctype/bom/test_bom.py
+++ b/erpnext/manufacturing/doctype/bom/test_bom.py
@@ -13,17 +13,17 @@
 	def test_get_items(self):
 		from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict
 		items_dict = get_bom_items_as_dict(bom="BOM/_Test FG Item 2/001", qty=1, fetch_exploded=0)
-		self.assertTrue(test_records[2]["bom_materials"][0]["item_code"] in items_dict)
-		self.assertTrue(test_records[2]["bom_materials"][1]["item_code"] in items_dict)
+		self.assertTrue(test_records[2]["items"][0]["item_code"] in items_dict)
+		self.assertTrue(test_records[2]["items"][1]["item_code"] in items_dict)
 		self.assertEquals(len(items_dict.values()), 2)
 
 	def test_get_items_exploded(self):
 		from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict
 		items_dict = get_bom_items_as_dict(bom="BOM/_Test FG Item 2/001", qty=1, fetch_exploded=1)
-		self.assertTrue(test_records[2]["bom_materials"][0]["item_code"] in items_dict)
-		self.assertFalse(test_records[2]["bom_materials"][1]["item_code"] in items_dict)
-		self.assertTrue(test_records[0]["bom_materials"][0]["item_code"] in items_dict)
-		self.assertTrue(test_records[0]["bom_materials"][1]["item_code"] in items_dict)
+		self.assertTrue(test_records[2]["items"][0]["item_code"] in items_dict)
+		self.assertFalse(test_records[2]["items"][1]["item_code"] in items_dict)
+		self.assertTrue(test_records[0]["items"][0]["item_code"] in items_dict)
+		self.assertTrue(test_records[0]["items"][1]["item_code"] in items_dict)
 		self.assertEquals(len(items_dict.values()), 3)
 
 	def test_get_items_list(self):
diff --git a/erpnext/manufacturing/doctype/bom/test_records.json b/erpnext/manufacturing/doctype/bom/test_records.json
index 56e3abf..c37cef0 100644
--- a/erpnext/manufacturing/doctype/bom/test_records.json
+++ b/erpnext/manufacturing/doctype/bom/test_records.json
@@ -1,11 +1,11 @@
 [
  {
-  "bom_materials": [
+  "items": [
    {
     "amount": 5000.0,
     "doctype": "BOM Item",
     "item_code": "_Test Serialized Item With Series",
-    "parentfield": "bom_materials",
+    "parentfield": "items",
     "qty": 1.0,
     "rate": 5000.0,
     "stock_uom": "_Test UOM"
@@ -14,7 +14,7 @@
     "amount": 2000.0,
     "doctype": "BOM Item",
     "item_code": "_Test Item 2",
-    "parentfield": "bom_materials",
+    "parentfield": "items",
     "qty": 2.0,
     "rate": 1000.0,
     "stock_uom": "_Test UOM"
@@ -28,12 +28,12 @@
   "quantity": 1.0
  },
  {
-  "bom_materials": [
+  "items": [
    {
     "amount": 5000.0,
     "doctype": "BOM Item",
     "item_code": "_Test Item",
-    "parentfield": "bom_materials",
+    "parentfield": "items",
     "qty": 1.0,
     "rate": 5000.0,
     "stock_uom": "_Test UOM"
@@ -42,7 +42,7 @@
     "amount": 2000.0,
     "doctype": "BOM Item",
     "item_code": "_Test Item Home Desktop 100",
-    "parentfield": "bom_materials",
+    "parentfield": "items",
     "qty": 2.0,
     "rate": 1000.0,
     "stock_uom": "_Test UOM"
@@ -56,7 +56,7 @@
   "quantity": 1.0
  },
  {
-  "bom_operations": [
+  "operations": [
    {
     "operation": "_Test Operation 1",
     "opn_description": "_Test",
@@ -65,13 +65,13 @@
     "operating_cost": 100
    }
    ],
-  "bom_materials": [
+  "items": [
    {
     "operation": 1,
     "amount": 5000.0,
     "doctype": "BOM Item",
     "item_code": "_Test Item",
-    "parentfield": "bom_materials",
+    "parentfield": "items",
     "qty": 1.0,
     "rate": 5000.0,
     "stock_uom": "_Test UOM"
@@ -82,7 +82,7 @@
     "bom_no": "BOM/_Test Item Home Desktop Manufactured/001",
     "doctype": "BOM Item",
     "item_code": "_Test Item Home Desktop Manufactured",
-    "parentfield": "bom_materials",
+    "parentfield": "items",
     "qty": 2.0,
     "rate": 1000.0,
     "stock_uom": "_Test UOM"
@@ -97,7 +97,7 @@
   "with_operations": 1
  },
  {
-  "bom_operations": [
+  "operations": [
    {
     "operation": "_Test Operation 1",
     "opn_description": "_Test",
@@ -106,13 +106,13 @@
     "operating_cost": 140
    }
    ],
-  "bom_materials": [
+  "items": [
    {
     "operation": 1,
     "amount": 5000.0,
     "doctype": "BOM Item",
     "item_code": "_Test Item",
-    "parentfield": "bom_materials",
+    "parentfield": "items",
     "qty": 2.0,
     "rate": 3000.0,
     "stock_uom": "_Test UOM"
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index a949022..502277b 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -62,7 +62,7 @@
 			doc: this.frm.doc,
 			method: "set_production_order_operations",
 			callback: function(r) {
-				if(!r.exc) refresh_field("production_order_operations");
+				if(!r.exc) refresh_field("operations");
 			}
 		});
 	},
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 2c2c04d..9ac1c48 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -14,7 +14,7 @@
 class StockOverProductionError(frappe.ValidationError): pass
 
 form_grid_templates = {
-	"production_order_operations": "templates/form_grid/production_order_grid.html"
+	"operations": "templates/form_grid/production_order_grid.html"
 }
 
 class ProductionOrder(Document):
@@ -60,7 +60,7 @@
 
 	def calculate_operating_cost(self):
 		self.planned_operating_cost, self.actual_operating_cost = 0.0, 0.0
-		for d in self.get("production_order_operations"):
+		for d in self.get("operations"):
 			d.actual_operating_cost = flt(d.hour_rate) * flt(d.actual_operation_time) / 60
 
 			self.planned_operating_cost += flt(d.planned_operating_cost)
@@ -163,20 +163,20 @@
 	def set_production_order_operations(self):
 		"""Fetch operations from BOM and set in 'Production Order'"""
 
-		self.set('production_order_operations', [])
+		self.set('operations', [])
 
 		operations = frappe.db.sql("""select operation, opn_description, workstation,
 			hour_rate, time_in_mins, operating_cost as "planned_operating_cost", "Pending" as status
 			from `tabBOM Operation` where parent = %s""", self.bom_no, as_dict=1)
 
-		self.set('production_order_operations', operations)
+		self.set('operations', operations)
 
 		self.plan_operations()
 		self.calculate_operating_cost()
 
 	def plan_operations(self):
 		scheduled_datetime = self.planned_start_date
-		for d in self.get('production_order_operations'):
+		for d in self.get('operations'):
 			while getdate(scheduled_datetime) in self.get_holidays(d.workstation):
 				scheduled_datetime = get_datetime(scheduled_datetime) + relativedelta(days=1)
 
@@ -199,7 +199,7 @@
 		return self.holidays[holiday_list]
 
 	def update_operation_status(self):
-		for d in self.get("production_order_operations"):
+		for d in self.get("operations"):
 			if not d.completed_qty:
 				d.status = "Pending"
 			elif flt(d.completed_qty) < flt(self.qty):
@@ -294,7 +294,7 @@
 	time_logs = []
 	prod_order = frappe.get_doc("Production Order", production_order_id)
 
-	for d in prod_order.production_order_operations:
+	for d in prod_order.operations:
 		operation = cstr(d.idx) + ". " + d.operation
 		time_log = make_time_log(prod_order.name, operation, d.planned_start_time, d.planned_end_time,
 			flt(prod_order.qty) - flt(d.completed_qty), prod_order.project_name, d.workstation)
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index 49db178..58a49c1 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -28,7 +28,7 @@
 
 		# from stores to wip
 		s = frappe.get_doc(make_stock_entry(pro_doc.name, "Material Transfer", 4))
-		for d in s.get("mtn_details"):
+		for d in s.get("items"):
 			d.s_warehouse = "Stores - _TC"
 		s.insert()
 		s.submit()
@@ -71,7 +71,7 @@
 
 
 		prod_order.set_production_order_operations()
-		prod_order.production_order_operations[0].update({
+		prod_order.operations[0].update({
 			"planned_start_time": "2014-11-25 00:00:00",
 			"planned_end_time": "2014-11-25 10:00:00",
 			"hour_rate": 10
@@ -79,7 +79,7 @@
 
 		prod_order.insert()
 
-		d = prod_order.production_order_operations[0]
+		d = prod_order.operations[0]
 
 		from erpnext.manufacturing.doctype.production_order.production_order import make_time_log
 		from frappe.utils import cstr
@@ -106,23 +106,23 @@
 		manufacturing_settings.save()
 
 		prod_order.load_from_db()
-		self.assertEqual(prod_order.production_order_operations[0].status, "Completed")
-		self.assertEqual(prod_order.production_order_operations[0].qty_completed, prod_order.qty)
+		self.assertEqual(prod_order.operations[0].status, "Completed")
+		self.assertEqual(prod_order.operations[0].qty_completed, prod_order.qty)
 
-		self.assertEqual(prod_order.production_order_operations[0].actual_start_time, time_log.from_time)
-		self.assertEqual(prod_order.production_order_operations[0].actual_end_time, time_log.to_time)
+		self.assertEqual(prod_order.operations[0].actual_start_time, time_log.from_time)
+		self.assertEqual(prod_order.operations[0].actual_end_time, time_log.to_time)
 
-		self.assertEqual(prod_order.production_order_operations[0].actual_operation_time, 600)
-		self.assertEqual(prod_order.production_order_operations[0].actual_operating_cost, 6000)
+		self.assertEqual(prod_order.operations[0].actual_operation_time, 600)
+		self.assertEqual(prod_order.operations[0].actual_operating_cost, 6000)
 
 		time_log.cancel()
 
 		prod_order.load_from_db()
-		self.assertEqual(prod_order.production_order_operations[0].status, "Pending")
-		self.assertEqual(prod_order.production_order_operations[0].qty_completed, 0)
+		self.assertEqual(prod_order.operations[0].status, "Pending")
+		self.assertEqual(prod_order.operations[0].qty_completed, 0)
 
-		self.assertEqual(prod_order.production_order_operations[0].actual_operation_time, 0)
-		self.assertEqual(prod_order.production_order_operations[0].actual_operating_cost, 0)
+		self.assertEqual(prod_order.operations[0].actual_operation_time, 0)
+		self.assertEqual(prod_order.operations[0].actual_operating_cost, 0)
 
 		time_log2 = frappe.copy_doc(time_log)
 		time_log2.update({
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
index e219215..b17303d 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
@@ -13,14 +13,14 @@
 cur_frm.cscript.sales_order = function(doc,cdt,cdn) {
 	var d = locals[cdt][cdn];
 	if (d.sales_order) {
-		return get_server_fields('get_so_details', d.sales_order, 'pp_so_details', doc, cdt, cdn, 1);
+		return get_server_fields('get_so_details', d.sales_order, 'sales_orders', doc, cdt, cdn, 1);
 	}
 }
 
 cur_frm.cscript.item_code = function(doc,cdt,cdn) {
 	var d = locals[cdt][cdn];
 	if (d.item_code) {
-		return get_server_fields('get_item_details', d.item_code, 'pp_details', doc, cdt, cdn, 1);
+		return get_server_fields('get_item_details', d.item_code, 'items', doc, cdt, cdn, 1);
 	}
 }
 
@@ -32,7 +32,7 @@
 }
 
 
-cur_frm.fields_dict['pp_so_details'].grid.get_field('sales_order').get_query = function(doc) {
+cur_frm.fields_dict['sales_orders'].grid.get_field('sales_order').get_query = function(doc) {
 	var args = { "docstatus": 1 };
 	if(doc.customer) {
 		args["customer"] = doc.customer;
@@ -41,13 +41,13 @@
  	return { filters: args }
 }
 
-cur_frm.fields_dict['pp_details'].grid.get_field('item_code').get_query = function(doc) {
+cur_frm.fields_dict['items'].grid.get_field('item_code').get_query = function(doc) {
  	return erpnext.queries.item({
 		'is_pro_applicable': 'Yes'
 	});
 }
 
-cur_frm.fields_dict['pp_details'].grid.get_field('bom_no').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('bom_no').get_query = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	if (d.item_code) {
 		return {
@@ -63,5 +63,5 @@
 	}
 }
 
-cur_frm.fields_dict.pp_so_details.grid.get_field("customer").get_query =
+cur_frm.fields_dict.sales_orders.grid.get_field("customer").get_query =
 	cur_frm.fields_dict.customer.get_query;
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 f0bb937..713433e 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -38,10 +38,10 @@
 		return ret
 
 	def clear_so_table(self):
-		self.set('pp_so_details', [])
+		self.set('sales_orders', [])
 
 	def clear_item_table(self):
-		self.set('pp_details', [])
+		self.set('items', [])
 
 	def validate_company(self):
 		if not self.company:
@@ -83,10 +83,10 @@
 		""" Add sales orders in the table"""
 		self.clear_so_table()
 
-		so_list = [d.sales_order for d in self.get('pp_so_details')]
+		so_list = [d.sales_order for d in self.get('sales_orders')]
 		for r in open_so:
 			if cstr(r['name']) not in so_list:
-				pp_so = self.append('pp_so_details', {})
+				pp_so = self.append('sales_orders', {})
 				pp_so.sales_order = r['name']
 				pp_so.sales_order_date = cstr(r['transaction_date'])
 				pp_so.customer = cstr(r['customer'])
@@ -101,7 +101,7 @@
 		self.add_items(items)
 
 	def get_items(self):
-		so_list = filter(None, [d.sales_order for d in self.get('pp_so_details')])
+		so_list = filter(None, [d.sales_order for d in self.get('sales_orders')])
 		if not so_list:
 			msgprint(_("Please enter sales order in the above table"))
 			return []
@@ -143,7 +143,7 @@
 		for p in items:
 			item_details = frappe.db.sql("""select description, stock_uom, default_bom
 				from tabItem where name=%s""", p['item_code'])
-			pi = self.append('pp_details', {})
+			pi = self.append('items', {})
 			pi.sales_order				= p['parent']
 			pi.warehouse				= p['warehouse']
 			pi.item_code				= p['item_code']
@@ -155,7 +155,7 @@
 
 	def validate_data(self):
 		self.validate_company()
-		for d in self.get('pp_details'):
+		for d in self.get('items'):
 			self.validate_bom_no(d)
 			if not flt(d.planned_qty):
 				frappe.throw(_("Please enter Planned Qty for Item {0} at row {1}").format(d.item_code, d.idx))
@@ -193,7 +193,7 @@
 			}
 		"""
 		item_dict, bom_dict = {}, {}
-		for d in self.get("pp_details"):
+		for d in self.get("items"):
 			bom_dict.setdefault(d.bom_no, []).append([d.sales_order, flt(d.planned_qty)])
 			item_dict[(d.item_code, d.sales_order, d.warehouse)] = {
 				"production_item"	: d.item_code,
@@ -379,7 +379,7 @@
 					"material_request_type": "Purchase"
 				})
 				for sales_order, requested_qty in items_to_be_requested[item].items():
-					pr_doc.append("indent_details", {
+					pr_doc.append("items", {
 						"doctype": "Material Request Item",
 						"__islocal": 1,
 						"item_code": item,
diff --git a/erpnext/manufacturing/doctype/workstation/test_records.json b/erpnext/manufacturing/doctype/workstation/test_records.json
index 37fb5aa..ffc1ec8 100644
--- a/erpnext/manufacturing/doctype/workstation/test_records.json
+++ b/erpnext/manufacturing/doctype/workstation/test_records.json
@@ -6,7 +6,7 @@
 		"warehouse": "_Test warehouse - _TC",
 		"hour_rate":100,
 		"holiday_list": "_Test Holiday List",
-		"workstation_operation_hours": [
+		"working_hours": [
 			{
 				"start_time": "10:00:00",
 				"end_time": "20:00:00"
diff --git a/erpnext/manufacturing/doctype/workstation/workstation.py b/erpnext/manufacturing/doctype/workstation/workstation.py
index 6281977..d679b94 100644
--- a/erpnext/manufacturing/doctype/workstation/workstation.py
+++ b/erpnext/manufacturing/doctype/workstation/workstation.py
@@ -31,7 +31,7 @@
 		self.update_bom_operation()
 
 	def validate_overlap_for_operation_timings(self):
-		for d in self.get("workstation_operation_hours"):
+		for d in self.get("working_hours"):
 			existing = frappe.db.sql_list("""select idx from `tabWorkstation Operation Hours`
 				where parent = %s and name != %s
 					and (
diff --git a/erpnext/patches/v4_0/create_price_list_if_missing.py b/erpnext/patches/v4_0/create_price_list_if_missing.py
index f65b7cb..8d23319 100644
--- a/erpnext/patches/v4_0/create_price_list_if_missing.py
+++ b/erpnext/patches/v4_0/create_price_list_if_missing.py
@@ -28,7 +28,7 @@
 		"buying": buying,
 		"selling": selling,
 		"currency": frappe.db.get_default("currency"),
-		"valid_for_territories": [{
+		"territories": [{
 			"territory": get_root_of("Territory")
 		}]
 	})
diff --git a/erpnext/patches/v4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py b/erpnext/patches/v4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py
index 11f0090..673d306 100644
--- a/erpnext/patches/v4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py
+++ b/erpnext/patches/v4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py
@@ -5,7 +5,7 @@
 import frappe
 
 def execute():
-	frappe.reload_doc("support", "doctype", "maintenance_schedule_detail")
+	frappe.reload_doc("support", "doctype", "schedules")
 	frappe.reload_doc("support", "doctype", "maintenance_schedule_item")
 	
 	frappe.db.sql("""update `tabMaintenance Schedule Detail` set sales_person=incharge_name""")
diff --git a/erpnext/patches/v4_0/update_other_charges_in_custom_purchase_print_formats.py b/erpnext/patches/v4_0/update_other_charges_in_custom_purchase_print_formats.py
index c0f9ee0..697f05c 100644
--- a/erpnext/patches/v4_0/update_other_charges_in_custom_purchase_print_formats.py
+++ b/erpnext/patches/v4_0/update_other_charges_in_custom_purchase_print_formats.py
@@ -8,5 +8,5 @@
 def execute():
 	for name, html in frappe.db.sql("""select name, html from `tabPrint Format`
 		where standard = 'No' and html like '%%purchase\\_tax\\_details%%'"""):
-			html = re.sub(r"\bpurchase_tax_details\b", "other_charges", html)
+			html = re.sub(r"\bpurchase_tax_details\b", "taxes", html)
 			frappe.db.set_value("Print Format", name, "html", html)
diff --git a/erpnext/patches/v4_2/party_model.py b/erpnext/patches/v4_2/party_model.py
index 7bcb6ce..008dd36 100644
--- a/erpnext/patches/v4_2/party_model.py
+++ b/erpnext/patches/v4_2/party_model.py
@@ -77,7 +77,7 @@
 	if not account_map:
 		return
 
-	for dt in ["Journal Voucher Detail", "GL Entry"]:
+	for dt in ["Journal Entry Account", "GL Entry"]:
 		records = frappe.db.sql("""select name, account from `tab%s` where account in (%s)""" %
 			(dt, ", ".join(['%s']*len(account_map))), tuple(account_map.keys()), as_dict=1)
 		for d in records:
diff --git a/erpnext/patches/v5_0/rename_table_fieldnames.py b/erpnext/patches/v5_0/rename_table_fieldnames.py
index 26c1aba..9952d44 100644
--- a/erpnext/patches/v5_0/rename_table_fieldnames.py
+++ b/erpnext/patches/v5_0/rename_table_fieldnames.py
@@ -6,206 +6,225 @@
 from frappe.modules import scrub, get_doctype_module
 
 rename_map = {
-	"Opportunity": [
-		["enquiry_details", "items"]
-	],
-	"Quotation": [
-		["quotation_details", "items"],
-		["other_charges", "taxes"]
-	],
-	"Sales Order": [
-		["sales_order_details", "items"],
-		["other_charges", "taxes"],
-		["packing_details", "packed_items"]
-	],
-	"Delivery Note": [
-		["delivery_note_details", "items"],
-		["other_charges", "taxes"],
-		["packing_details", "packed_items"]
-	],
+	# "Opportunity": [
+	# 	["enquiry_details", "items"]
+	# ],
+	# "Quotation": [
+	# 	["quotation_details", "items"],
+	# 	["other_charges", "taxes"]
+	# ],
+	# "Sales Order": [
+	# 	["sales_order_details", "items"],
+	# 	["other_charges", "taxes"],
+	# 	["packing_details", "packed_items"]
+	# ],
+	# "Delivery Note": [
+	# 	["delivery_note_details", "items"],
+	# 	["other_charges", "taxes"],
+	# 	["packing_details", "packed_items"]
+	# ],
 	"Sales Invoice": [
 		["entries", "items"],
-		["other_charges", "taxes"],
-		["packing_details", "packed_items"],
-		["advance_adjustment_details", "advances"]
+		# ["other_charges", "taxes"],
+		# ["packing_details", "packed_items"],
+		# ["advance_adjustment_details", "advances"]
 	],
-	"Material Request": [
-		["indent_details", "items"]
-	],
-	"Supplier Quotation": [
-		["quotation_items", "items"],
-		["other_charges", "taxes"]
-	],
-	"Purchase Order": [
-		["po_details", "items"],
-		["other_charges", "taxes"],
-		["po_raw_material_details", "supplied_items"]
-	],
-	"Purchase Receipt": [
-		["purchase_receipt_details", "items"],
-		["other_charges", "taxes"],
-		["pr_raw_material_details", "supplied_items"]
-	],
+	# "Material Request": [
+	# 	["indent_details", "items"]
+	# ],
+	# "Supplier Quotation": [
+	# 	["quotation_items", "items"],
+	# 	["other_charges", "taxes"]
+	# ],
+	# "Purchase Order": [
+	# 	["po_details", "items"],
+	# 	["other_charges", "taxes"],
+	# 	["po_raw_material_details", "supplied_items"]
+	# ],
+	# "Purchase Receipt": [
+	# 	["purchase_receipt_details", "items"],
+	# 	["other_charges", "taxes"],
+	# 	["pr_raw_material_details", "supplied_items"]
+	# ],
 	"Purchase Invoice": [
 		["entries", "items"],
-		["other_charges", "taxes"],
-		["advance_allocation_details", "advances"]
+		# ["other_charges", "taxes"],
+		# ["advance_allocation_details", "advances"]
 	],
-	"Production Order": [
-		["production_order_operations", "operations"]
-	],
-	"BOM": [
-		["bom_operations", "operations"],
-		["bom_materials", "items"],
-		["flat_bom_details", "exploded_items"]
-	],
-	"Payment Reconciliation": [
-		["payment_reconciliation_payments", "payments"],
-		["payment_reconciliation_invoices", "invoices"]
-	],
-	"Sales Taxes and Charges Master": [
-		["other_charges", "taxes"],
-		["valid_for_territories", "territories"]
-	],
-	"Shipping Rule": [
-		["shipping_rule_conditions", "conditions"],
-		["valid_for_territories", "territories"]
-	],
-	"Price List": [
-		["valid_for_territories", "territories"]
-	],
-	"Appraisal": [
-		["appraisal_goals", "goals"]
-	],
-	"Appraisal Template": [
-		["kra_sheet", "goals"]
-	],
+	# "Production Order": [
+	# 	["production_order_operations", "operations"]
+	# ],
+	# "BOM": [
+	# 	["bom_operations", "operations"],
+	# 	["bom_materials", "items"],
+	# 	["flat_bom_details", "exploded_items"]
+	# ],
+	# "Payment Reconciliation": [
+	# 	["payment_reconciliation_payments", "payments"],
+	# 	["payment_reconciliation_invoices", "invoices"]
+	# ],
+	# "Sales Taxes and Charges Master": [
+	# 	["other_charges", "taxes"],
+	# 	["valid_for_territories", "territories"]
+	# ],
+	# "Purchase Taxes and Charges Master": [
+	# 	["other_charges", "taxes"]
+	# ],
+	# "Shipping Rule": [
+	# 	["shipping_rule_conditions", "conditions"],
+	# 	["valid_for_territories", "territories"]
+	# ],
+	# "Price List": [
+	# 	["valid_for_territories", "territories"]
+	# ],
+	# "Appraisal": [
+	# 	["appraisal_details", "goals"]
+	# ],
+	# "Appraisal Template": [
+	# 	["kra_sheet", "goals"]
+	# ],
 	"Bank Reconciliation": [
 		["entries", "journal_entries"]
 	],
-	"Cost Center": [
-		["budget_details", "budgets"]
-	],
-	"C-Form": [
-		["invoice_details", "invoices"]
-	],
-	"Customize Form": [
-		["customize_form_fields", "fields"]
-	],
-	"Email Alert": [
-		["email_alert_recipients", "recipients"]
-	],
-	"Employee": [
-		["employee_leave_approvers", "leave_approvers"],
-		["educational_qualification_details", "educational_qualifications"],
-		["previous_experience_details", "external_work_experiences"],
-		["experience_in_company_details", "internal_work_experiences"]
-	],
-	"Event": [
-		["event_individuals", "users"],
-		["event_roles", "roles"]
-	],
-	"Expense Claim": [
-		["expense_voucher_details", "expenses"]
-	],
-	"Fiscal Year": [
-		["fiscal_year_companies", "companies"]
-	],
-	"Holiday List": [
-		["holiday_list_details", "holidays"]
-	],
-	"Installation Note": [
-		["installed_item_details", "items"]
-	],
-	"Item": [
-		["item_variants", "variants"],
-		["item_reorder", "reorder_levels"],
-		["uom_conversion_details", "uoms"],
-		["item_supplier_details", "supplier_item_codes"],
-		["item_customer_details", "customer_item_codes"],
-		["item_tax", "taxes"],
-		["item_specification_details", "quality_parameters"],
-		["item_website_specifications", "website_specifications"]
-	],
-	"Landed Cost Voucher": [
-		["landed_cost_purchase_receipts", "purchase_receipts"],
-		["landed_cost_items", "items"],
-		["landed_cost_taxes_and_charges", "taxes"]
-	],
-	"Maintenance Schedule": [
-		["item_maintenance_detail", "items"],
-		["maintenance_schedule_detail", "schedules"]
-	],
-	"Maintenance Visit": [
-		["maintenance_visit_details", "purposes"]
-	],
-	"Packing Slip": [
-		["item_details", "items"]
-	],
-	"Customer": [
-		["party_accounts", "accounts"]
-	],
-	"Supplier": [
-		["party_accounts", "accounts"]
-	],
-	"Payment Tool": [
-		["payment_tool_details", "against_vouchers"]
-	],
-	"Production Planning Tool": [
-		["pp_so_details", "sales_orders"],
-		["pp_details", "items"]
-	],
-	"Project": [
-		["project_milestones", "milestones"]
-	],
-	"Quality Inspection": [
-		["qa_specification_details", "readings"]
-	],
-	"Salary Slip": [
-		["earning_details", "earnings"],
-		["deduction_details", "deductions"]
-	],
-	"Salary Structure": [
-		["earning_details", "earnings"],
-		["deduction_details", "deductions"]
-	],
-	"Sales BOM": [
-		["sales_bom_items", "items"]
-	],
-	"SMS Settings": [
-		["static_parameter_details", "static_parameters"]
-	],
-	"Stock Entry": [
-		["mtn_details", "items"]
-	],
-	"Sales Partner": [
-		["partner_target_details", "targets"]
-	],
-	"Sales Person": [
-		["target_details", "targets"]
-	],
-	"Territory": [
-		["target_details", "targets"]
-	],
-	"Time Log Batch": [
-		["time_log_batch_details", "time_logs"]
-	],
-	"Web Form": [
-		["web_form_fields", "fields"]
-	],
-	"Workflow": [
-		["workflow_document_states", "document_states"],
-		["workflow_transitions", "transitions"]
-	],
-	"Workstation": [
-		["workstation_operation_hours", "working_hours"]
-	],
+	# "Cost Center": [
+	# 	["budget_details", "budgets"]
+	# ],
+	# "C-Form": [
+	# 	["invoice_details", "invoices"]
+	# ],
+	# "Customize Form": [
+	# 	["customize_form_fields", "fields"]
+	# ],
+	# "Email Alert": [
+	# 	["email_alert_recipients", "recipients"]
+	# ],
+	# "Employee": [
+	# 	["employee_leave_approvers", "leave_approvers"],
+	# 	["educational_qualification_details", "educational_qualifications"],
+	# 	["previous_experience_details", "external_work_experiences"],
+	# 	["experience_in_company_details", "internal_work_experiences"]
+	# ],
+	# "Event": [
+	# 	["event_individuals", "users"],
+	# 	["event_roles", "roles"]
+	# ],
+	# "Expense Claim": [
+	# 	["expense_voucher_details", "expenses"]
+	# ],
+	# "Fiscal Year": [
+	# 	["fiscal_year_companies", "companies"]
+	# ],
+	# "Holiday List": [
+	# 	["holiday_list_details", "holidays"]
+	# ],
+	# "Installation Note": [
+	# 	["installed_item_details", "items"]
+	# ],
+	# "Item": [
+	# 	["item_variants", "variants"],
+	# 	["item_reorder", "reorder_levels"],
+	# 	["uom_conversion_details", "uoms"],
+	# 	["item_supplier_details", "supplier_item_codes"],
+	# 	["item_customer_details", "customer_item_codes"],
+	# 	["item_tax", "taxes"],
+	# 	["item_specification_details", "quality_parameters"],
+	# 	["item_website_specifications", "website_specifications"]
+	# ],
+	# "Item Group": [
+	# 	["item_website_specifications", "website_specifications"]
+	# ],
+	# "Landed Cost Voucher": [
+	# 	["landed_cost_purchase_receipts", "purchase_receipts"],
+	# 	["landed_cost_items", "items"],
+	# 	["landed_cost_taxes_and_charges", "taxes"]
+	# ],
+	# "Maintenance Schedule": [
+	# 	["item_maintenance_detail", "items"],
+	# 	["maintenance_schedule_detail", "schedules"]
+	# ],
+	# "Maintenance Visit": [
+	# 	["maintenance_visit_details", "purposes"]
+	# ],
+	# "Packing Slip": [
+	# 	["item_details", "items"]
+	# ],
+	# "Customer": [
+	# 	["party_accounts", "accounts"]
+	# ],
+	# "Customer Group": [
+	# 	["party_accounts", "accounts"]
+	# ],
+	# "Supplier": [
+	# 	["party_accounts", "accounts"]
+	# ],
+	# "Supplier Type": [
+	# 	["party_accounts", "accounts"]
+	# ],
+	# "Payment Tool": [
+	# 	["payment_tool_details", "against_vouchers"]
+	# ],
+	# "Production Planning Tool": [
+	# 	["pp_so_details", "sales_orders"],
+	# 	["pp_details", "items"]
+	# ],
+	# "Project": [
+	# 	["project_milestones", "milestones"]
+	# ],
+	# "Quality Inspection": [
+	# 	["qa_specification_details", "readings"]
+	# ],
+	# "Salary Slip": [
+	# 	["earning_details", "earnings"],
+	# 	["deduction_details", "deductions"]
+	# ],
+	# "Salary Structure": [
+	# 	["earning_details", "earnings"],
+	# 	["deduction_details", "deductions"]
+	# ],
+	# "Sales BOM": [
+	# 	["sales_bom_items", "items"]
+	# ],
+	# "SMS Settings": [
+	# 	["static_parameter_details", "static_parameters"]
+	# ],
+	# "Stock Entry": [
+	# 	["mtn_details", "items"]
+	# ],
+	# "Sales Partner": [
+	# 	["partner_target_details", "targets"]
+	# ],
+	# "Sales Person": [
+	# 	["target_details", "targets"]
+	# ],
+	# "Territory": [
+	# 	["target_details", "targets"]
+	# ],
+	# "Time Log Batch": [
+	# 	["time_log_batch_details", "time_logs"]
+	# ],
+	# "Workflow": [
+	# 	["workflow_document_states", "document_states"],
+	# 	["workflow_transitions", "transitions"]
+	# ],
+	# "Workstation": [
+	# 	["workstation_operation_hours", "working_hours"]
+	# ],
 }
 
 def execute():
+	#rename table fieldnames
 	for dn in rename_map:
 		frappe.reload_doc(get_doctype_module(dn), "doctype", scrub(dn))
 
 	for dt, field_list in rename_map.items():
 		for field in field_list:
 			rename_field(dt, field[0], field[1])
+
+	# rename doctypes
+	tables = frappe.db.sql_list("show tables")
+	for old_dt, new_dt in [["Journal Voucher Detail", "Journal Entry Account"],
+		["Journal Voucher", "Journal Entry"],
+		["Budget Distribution Detail", "Monthly Distribution Percentage"],
+		["Budget Distribution", "Monthly Distribution"]]:
+			if "tab"+old_dt not in tables:
+				frappe.rename_doc("DocType", old_dt, new_dt, force=True)
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index ce9b561..8cf58c8 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -31,9 +31,9 @@
 		self.update_milestones_completed()
 
 	def update_milestones_completed(self):
-		if self.project_milestones:
-			completed = filter(lambda x: x.status=="Completed", self.project_milestones)
-			self.percent_milestones_completed =  len(completed) * 100 / len(self.project_milestones)
+		if self.milestones:
+			completed = filter(lambda x: x.status=="Completed", self.milestones)
+			self.percent_milestones_completed =  len(completed) * 100 / len(self.milestones)
 
 	def on_update(self):
 		self.add_calendar_event()
@@ -53,7 +53,7 @@
 		delete_events(self.doctype, self.name)
 
 		# add events
-		for milestone in self.get("project_milestones"):
+		for milestone in self.get("milestones"):
 			if milestone.milestone_date:
 				description = (milestone.milestone or "Milestone") + " for " + self.name
 				frappe.get_doc({
diff --git a/erpnext/projects/doctype/time_log/time_log.js b/erpnext/projects/doctype/time_log/time_log.js
index b23b3ea..9a53836 100644
--- a/erpnext/projects/doctype/time_log/time_log.js
+++ b/erpnext/projects/doctype/time_log/time_log.js
@@ -52,7 +52,7 @@
 			var operations = [];
 			frappe.model.with_doc("Production Order", doc.production_order, function(pro) {
 				doc = frappe.get_doc("Production Order",pro);
-				$.each(doc.production_order_operations , function(i, row){
+				$.each(doc.operations , function(i, row){
 					operations[i] = (i+1) +". "+ row.operation;
 				});
 			frappe.meta.get_docfield("Time Log", "operation", me.frm.doc.name).options = "\n" + operations.join("\n");
diff --git a/erpnext/projects/doctype/time_log/time_log_list.js b/erpnext/projects/doctype/time_log/time_log_list.js
index 6115607..36da774 100644
--- a/erpnext/projects/doctype/time_log/time_log_list.js
+++ b/erpnext/projects/doctype/time_log/time_log_list.js
@@ -32,7 +32,7 @@
 				var tlb = frappe.model.get_new_doc("Time Log Batch");
 				$.each(selected, function(i, d) {
 					var detail = frappe.model.get_new_doc("Time Log Batch Detail", tlb,
-						"time_log_batch_details");
+						"time_logs");
 
 					$.extend(detail, {
 						"time_log": d.name,
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 de57f28..8096efd 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
@@ -43,10 +43,10 @@
 	tlb = frappe.get_doc({
 		"doctype": "Time Log Batch",
 		"rate": "500",
-		"time_log_batch_details": [
+		"time_logs": [
 			{
 			"doctype": "Time Log Batch Detail",
-			"parentfield": "time_log_batch_details",
+			"parentfield": "time_logs",
 			"parenttype": "Time Log Batch",
 			"time_log": time_log
 			}
diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch.js b/erpnext/projects/doctype/time_log_batch/time_log_batch.js
index 8fea083..61acd47 100644
--- a/erpnext/projects/doctype/time_log_batch/time_log_batch.js
+++ b/erpnext/projects/doctype/time_log_batch/time_log_batch.js
@@ -5,7 +5,7 @@
 cur_frm.add_fetch("time_log", "owner", "created_by");
 cur_frm.add_fetch("time_log", "hours", "hours");
 
-cur_frm.set_query("time_log", "time_log_batch_details", function(doc) {
+cur_frm.set_query("time_log", "time_logs", function(doc) {
 	return {
 		query: "erpnext.projects.utils.get_time_log_list",
 		filters: {
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 0724bc7..9f9af89 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 @@
 	def validate(self):
 		self.set_status()
 		self.total_hours = 0.0
-		for d in self.get("time_log_batch_details"):
+		for d in self.get("time_logs"):
 			tl = frappe.get_doc("Time Log", d.time_log)
 			self.update_time_log_values(d, tl)
 			self.validate_time_log_is_submitted(tl)
@@ -53,7 +53,7 @@
 
 	def update_status(self, time_log_batch):
 		self.set_status()
-		for d in self.get("time_log_batch_details"):
+		for d in self.get("time_logs"):
 			tl = frappe.get_doc("Time Log", d.time_log)
 			tl.time_log_batch = time_log_batch
 			tl.sales_invoice = self.sales_invoice
diff --git a/erpnext/public/js/feature_setup.js b/erpnext/public/js/feature_setup.js
index 5abf2d9..6464ef2 100644
--- a/erpnext/public/js/feature_setup.js
+++ b/erpnext/public/js/feature_setup.js
@@ -6,7 +6,7 @@
 	'projects': {
 		'Sales Order': {
 			'fields':['project_name'],
-			'sales_order_details':['projected_qty']
+			'items':['projected_qty']
 		},
 		'Purchase Order': {
 			'fields':['project_name']
@@ -17,105 +17,105 @@
 	'fs_projects': {
 		'BOM': {'fields':['project_name']},
 		'Delivery Note': {'fields':['project_name']},
-		'Purchase Invoice': {'entries':['project_name']},
+		'Purchase Invoice': {'items':['project_name']},
 		'Production Order': {'fields':['project_name']},
-		'Purchase Order': {'po_details':['project_name']},
-		'Purchase Receipt': {'purchase_receipt_details':['project_name']},
+		'Purchase Order': {'items':['project_name']},
+		'Purchase Receipt': {'items':['project_name']},
 		'Sales Invoice': {'fields':['project_name']},
 		'Sales Order': {'fields':['project_name']},
 		'Stock Entry': {'fields':['project_name']},
 		'Timesheet': {'timesheet_details':['project_name']}
 	},
 	'fs_discounts': {
-		'Delivery Note': {'delivery_note_details':['discount_percentage']},
-		'Quotation': {'quotation_details':['discount_percentage']},
-		'Sales Invoice': {'entries':['discount_percentage']},
-		'Sales Order': {'sales_order_details':['discount_percentage','price_list_rate']}
+		'Delivery Note': {'items':['discount_percentage']},
+		'Quotation': {'items':['discount_percentage']},
+		'Sales Invoice': {'items':['discount_percentage']},
+		'Sales Order': {'items':['discount_percentage','price_list_rate']}
 	},
 	'fs_purchase_discounts': {
-		'Purchase Order': {'po_details':['base_price_list_rate', 'discount_percentage', 'price_list_rate']},
-		'Purchase Receipt': {'purchase_receipt_details':['base_price_list_rate', 'discount_percentage', 'price_list_rate']},
-		'Purchase Invoice': {'entries':['base_price_list_rate', 'discount_percentage', 'price_list_rate']}
+		'Purchase Order': {'items':['base_price_list_rate', 'discount_percentage', 'price_list_rate']},
+		'Purchase Receipt': {'items':['base_price_list_rate', 'discount_percentage', 'price_list_rate']},
+		'Purchase Invoice': {'items':['base_price_list_rate', 'discount_percentage', 'price_list_rate']}
 	},
 	'fs_brands': {
-		'Delivery Note': {'delivery_note_details':['brand']},
-		'Material Request': {'indent_details':['brand']},
+		'Delivery Note': {'items':['brand']},
+		'Material Request': {'items':['brand']},
 		'Item': {'fields':['brand']},
-		'Purchase Order': {'po_details':['brand']},
-		'Purchase Invoice': {'entries':['brand']},
-		'Quotation': {'quotation_details':['brand']},
-		'Sales Invoice': {'entries':['brand']},
+		'Purchase Order': {'items':['brand']},
+		'Purchase Invoice': {'items':['brand']},
+		'Quotation': {'items':['brand']},
+		'Sales Invoice': {'items':['brand']},
 		'Sales BOM': {'fields':['new_item_brand']},
-		'Sales Order': {'sales_order_details':['brand']},
+		'Sales Order': {'items':['brand']},
 		'Serial No': {'fields':['brand']}
 	},
 	'fs_after_sales_installations': {
-		'Delivery Note': {'fields':['installation_status','per_installed'],'delivery_note_details':['installed_qty']}
+		'Delivery Note': {'fields':['installation_status','per_installed'],'items':['installed_qty']}
 	},
 	'fs_item_batch_nos': {
-		'Delivery Note': {'delivery_note_details':['batch_no']},
+		'Delivery Note': {'items':['batch_no']},
 		'Item': {'fields':['has_batch_no']},
-		'Purchase Receipt': {'purchase_receipt_details':['batch_no']},
+		'Purchase Receipt': {'items':['batch_no']},
 		'Quality Inspection': {'fields':['batch_no']},
 		'Sales and Pruchase Return Wizard': {'return_details':['batch_no']},
-		'Sales Invoice': {'entries':['batch_no']},
-		'Stock Entry': {'mtn_details':['batch_no']},
+		'Sales Invoice': {'items':['batch_no']},
+		'Stock Entry': {'items':['batch_no']},
 		'Stock Ledger Entry': {'fields':['batch_no']}
 	},
 	'fs_item_serial_nos': {
 		'Customer Issue': {'fields':['serial_no']},
-		'Delivery Note': {'delivery_note_details':['serial_no'],'packing_details':['serial_no']},
-		'Installation Note': {'installed_item_details':['serial_no']},
+		'Delivery Note': {'items':['serial_no'],'packed_items':['serial_no']},
+		'Installation Note': {'items':['serial_no']},
 		'Item': {'fields':['has_serial_no']},
-		'Maintenance Schedule': {'item_maintenance_detail':['serial_no'],'maintenance_schedule_detail':['serial_no']},
-		'Maintenance Visit': {'maintenance_visit_details':['serial_no']},
-		'Purchase Receipt': {'purchase_receipt_details':['serial_no']},
+		'Maintenance Schedule': {'items':['serial_no'],'schedules':['serial_no']},
+		'Maintenance Visit': {'purposes':['serial_no']},
+		'Purchase Receipt': {'items':['serial_no']},
 		'Quality Inspection': {'fields':['item_serial_no']},
 		'Sales and Pruchase Return Wizard': {'return_details':['serial_no']},
-		'Sales Invoice': {'entries':['serial_no']},
-		'Stock Entry': {'mtn_details':['serial_no']},
+		'Sales Invoice': {'items':['serial_no']},
+		'Stock Entry': {'items':['serial_no']},
 		'Stock Ledger Entry': {'fields':['serial_no']}
 	},
 	'fs_item_barcode': {
 		'Item': {'fields': ['barcode']},
-		'Delivery Note': {'delivery_note_details': ['barcode']},
-		'Sales Invoice': {'entries': ['barcode']}
+		'Delivery Note': {'items': ['barcode']},
+		'Sales Invoice': {'items': ['barcode']}
 	},
 	'fs_item_group_in_details': {
-		'Delivery Note': {'delivery_note_details':['item_group']},
-		'Opportunity': {'enquiry_details':['item_group']},
-		'Material Request': {'indent_details':['item_group']},
+		'Delivery Note': {'items':['item_group']},
+		'Opportunity': {'items':['item_group']},
+		'Material Request': {'items':['item_group']},
 		'Item': {'fields':['item_group']},
 		'Global Defaults': {'fields':['default_item_group']},
-		'Purchase Order': {'po_details':['item_group']},
-		'Purchase Receipt': {'purchase_receipt_details':['item_group']},
-		'Purchase Voucher': {'entries':['item_group']},
-		'Quotation': {'quotation_details':['item_group']},
-		'Sales Invoice': {'entries':['item_group']},
+		'Purchase Order': {'items':['item_group']},
+		'Purchase Receipt': {'items':['item_group']},
+		'Purchase Voucher': {'items':['item_group']},
+		'Quotation': {'items':['item_group']},
+		'Sales Invoice': {'items':['item_group']},
 		'Sales BOM': {'fields':['serial_no']},
-		'Sales Order': {'sales_order_details':['item_group']},
+		'Sales Order': {'items':['item_group']},
 		'Serial No': {'fields':['item_group']},
-		'Sales Partner': {'partner_target_details':['item_group']},
-		'Sales Person': {'target_details':['item_group']},
-		'Territory': {'target_details':['item_group']}
+		'Sales Partner': {'targets':['item_group']},
+		'Sales Person': {'targets':['item_group']},
+		'Territory': {'targets':['item_group']}
 	},
 	'fs_page_break': {
-		'Delivery Note': {'delivery_note_details':['page_break'],'packing_details':['page_break']},
-		'Material Request': {'indent_details':['page_break']},
-		'Purchase Order': {'po_details':['page_break']},
-		'Purchase Receipt': {'purchase_receipt_details':['page_break']},
-		'Purchase Voucher': {'entries':['page_break']},
-		'Quotation': {'quotation_details':['page_break']},
-		'Sales Invoice': {'entries':['page_break']},
-		'Sales Order': {'sales_order_details':['page_break']}
+		'Delivery Note': {'items':['page_break'],'packed_items':['page_break']},
+		'Material Request': {'items':['page_break']},
+		'Purchase Order': {'items':['page_break']},
+		'Purchase Receipt': {'items':['page_break']},
+		'Purchase Voucher': {'items':['page_break']},
+		'Quotation': {'items':['page_break']},
+		'Sales Invoice': {'items':['page_break']},
+		'Sales Order': {'items':['page_break']}
 	},
 	'fs_exports': {
-		'Delivery Note': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'delivery_note_details':['base_price_list_rate','base_amount','base_rate']},
+		'Delivery Note': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'items':['base_price_list_rate','base_amount','base_rate']},
 		'POS Setting': {'fields':['conversion_rate','currency']},
-		'Quotation': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'quotation_details':['base_price_list_rate','base_amount','base_rate']},
-		'Sales Invoice': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'entries':['base_price_list_rate','base_amount','base_rate']},
+		'Quotation': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'items':['base_price_list_rate','base_amount','base_rate']},
+		'Sales Invoice': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'items':['base_price_list_rate','base_amount','base_rate']},
 		'Sales BOM': {'fields':['currency']},
-		'Sales Order': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'sales_order_details':['base_price_list_rate','base_amount','base_rate']}
+		'Sales Order': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'items':['base_price_list_rate','base_amount','base_rate']}
 	},
 
 	'fs_imports': {
@@ -123,18 +123,18 @@
 			'fields': ['conversion_rate', 'currency', 'grand_total',
 		 		'in_words', 'net_total', 'other_charges_added',
 		 		'other_charges_deducted'],
-			'entries': ['base_price_list_rate', 'base_amount','base_rate']
+			'items': ['base_price_list_rate', 'base_amount','base_rate']
 		},
 		'Purchase Order': {
 			'fields': ['conversion_rate','currency', 'grand_total',
 			'in_words', 'net_total', 'other_charges_added',
 			 'other_charges_deducted'],
-			'po_details': ['base_price_list_rate', 'base_amount','base_rate']
+			'items': ['base_price_list_rate', 'base_amount','base_rate']
 		},
 		'Purchase Receipt': {
 			'fields': ['conversion_rate', 'currency','grand_total', 'in_words',
 			 	'net_total', 'other_charges_added', 'other_charges_deducted'],
-			'purchase_receipt_details': ['base_price_list_rate','base_amount','base_rate']
+			'items': ['base_price_list_rate','base_amount','base_rate']
 		},
 		'Supplier Quotation': {
 			'fields':['conversion_rate','currency']
@@ -142,14 +142,14 @@
 	},
 
 	'fs_item_advanced': {
-		'Item': {'fields':['item_customer_details']}
+		'Item': {'fields':['customer_item_codes']}
 	},
 	'fs_sales_extras': {
 		'Address': {'fields':['sales_partner']},
 		'Contact': {'fields':['sales_partner']},
 		'Customer': {'fields':['sales_team']},
 		'Delivery Note': {'fields':['sales_team']},
-		'Item': {'fields':['item_customer_details']},
+		'Item': {'fields':['customer_item_codes']},
 		'Sales Invoice': {'fields':['sales_team']},
 		'Sales Order': {'fields':['sales_team']}
 	},
@@ -169,7 +169,7 @@
 	},
 	'fs_quality': {
 		'Item': {'fields':['inspection_criteria','inspection_required']},
-		'Purchase Receipt': {'purchase_receipt_details':['qa_no']}
+		'Purchase Receipt': {'items':['qa_no']}
 	},
 	'fs_manufacturing': {
 		'Item': {'fields':['manufacturing']}
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 5528322..a4348fe 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -46,11 +46,11 @@
 	},
 
 	add_applicable_territory: function() {
-		if(cur_frm.doc.__islocal && (cur_frm.doc.valid_for_territories || []).length===0) {
+		if(cur_frm.doc.__islocal && (cur_frm.doc.territories || []).length===0) {
 				var default_territory = frappe.defaults.get_user_default("territory");
 				if(default_territory) {
 					var territory = frappe.model.add_child(cur_frm.doc, "Applicable Territory",
-						"valid_for_territories");
+						"territories");
 					territory.territory = default_territory;
 				}
 
diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js
index 54fd927..5d349f6 100644
--- a/erpnext/selling/doctype/customer/customer.js
+++ b/erpnext/selling/doctype/customer/customer.js
@@ -91,7 +91,7 @@
 	}
 }
 
-cur_frm.fields_dict['party_accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
 	var d  = locals[cdt][cdn];
 	return {
 		filters: {
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/erpnext/selling/doctype/installation_note/installation_note.js
index 60e2f72..d2b606d 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.js
+++ b/erpnext/selling/doctype/installation_note/installation_note.js
@@ -2,7 +2,7 @@
 // License: GNU General Public License v3. See license.txt
 
 cur_frm.cscript.tname = "Installation Note Item";
-cur_frm.cscript.fname = "installed_item_details";
+cur_frm.cscript.fname = "items";
 
 frappe.require("assets/erpnext/js/utils.js");
 
diff --git a/erpnext/selling/doctype/installation_note/installation_note.py b/erpnext/selling/doctype/installation_note/installation_note.py
index 0477abc..08feeb4 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.py
+++ b/erpnext/selling/doctype/installation_note/installation_note.py
@@ -13,7 +13,7 @@
 
 class InstallationNote(TransactionBase):
 	tname = 'Installation Note Item'
-	fname = 'installed_item_details'
+	fname = 'items'
 
 	def __init__(self, arg1, arg2=None):
 		super(InstallationNote, self).__init__(arg1, arg2)
@@ -76,7 +76,7 @@
 
 	def validate_serial_no(self):
 		cur_s_no, prevdoc_s_no, sr_list = [], [], []
-		for d in self.get('installed_item_details'):
+		for d in self.get('items'):
 			self.is_serial_no_added(d.item_code, d.serial_no)
 			if d.serial_no:
 				sr_list = get_valid_serial_nos(d.serial_no, d.qty, d.item_code)
@@ -89,14 +89,14 @@
 				self.is_serial_no_installed(sr_list, d.item_code)
 
 	def validate_installation_date(self):
-		for d in self.get('installed_item_details'):
+		for d in self.get('items'):
 			if d.prevdoc_docname:
 				d_date = frappe.db.get_value("Delivery Note", d.prevdoc_docname, "posting_date")
 				if d_date > getdate(self.inst_date):
 					frappe.throw(_("Installation date cannot be before delivery date for Item {0}").format(d.item_code))
 
 	def check_item_table(self):
-		if not(self.get('installed_item_details')):
+		if not(self.get('items')):
 			frappe.throw(_("Please pull items from Delivery Note"))
 
 	def on_update(self):
@@ -108,7 +108,7 @@
 		frappe.db.set(self, 'status', 'Submitted')
 
 	def on_cancel(self):
-		for d in self.get('installed_item_details'):
+		for d in self.get('items'):
 			if d.serial_no:
 				d.serial_no = d.serial_no.replace(",", "\n")
 				for sr_no in d.serial_no.split("\n"):
diff --git a/erpnext/selling/doctype/opportunity/opportunity.js b/erpnext/selling/doctype/opportunity/opportunity.js
index b29c03a..41986d5 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.js
+++ b/erpnext/selling/doctype/opportunity/opportunity.js
@@ -46,7 +46,7 @@
 			else if(me.frm.doc.customer) return {filters: { customer: me.frm.doc.customer } };
 		});
 
-		this.frm.set_query("item_code", "enquiry_details", function() {
+		this.frm.set_query("item_code", "items", function() {
 			return {
 				query: "erpnext.controllers.queries.item_query",
 				filters: me.frm.doc.enquiry_type === "Maintenance" ?
@@ -97,7 +97,7 @@
 	var d = locals[cdt][cdn];
 	if (d.item_code) {
 		return get_server_fields('get_item_details', d.item_code,
-			'enquiry_details', doc, cdt, cdn, 1);
+			'items', doc, cdt, cdn, 1);
 	}
 }
 
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index ba331f9..338d35d 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -78,7 +78,7 @@
 		super(Opportunity, self).add_calendar_event(opts, force)
 
 	def validate_item_details(self):
-		if not self.get('enquiry_details'):
+		if not self.get('items'):
 			frappe.throw(_("Items required"))
 
 	def validate_lead_cust(self):
diff --git a/erpnext/selling/doctype/opportunity/test_records.json b/erpnext/selling/doctype/opportunity/test_records.json
index 3970903..dcda5d5 100644
--- a/erpnext/selling/doctype/opportunity/test_records.json
+++ b/erpnext/selling/doctype/opportunity/test_records.json
@@ -5,7 +5,7 @@
 		"enquiry_from": "Lead",
 		"enquiry_type": "Sales",
 		"lead": "_T-Lead-00001",
-		"enquiry_details": [{
+		"items": [{
 			"item_name": "Test Item",
 			"description": "Some description"
 		}]
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 857a259..c9e7614 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -4,8 +4,8 @@
 // Module CRM
 // =====================================================================================
 cur_frm.cscript.tname = "Quotation Item";
-cur_frm.cscript.fname = "quotation_details";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 cur_frm.cscript.sales_team_fname = "sales_team";
 
 {% include 'selling/sales_common.js' %}
@@ -169,4 +169,4 @@
 cur_frm.cscript.send_sms = function() {
 	frappe.require("assets/erpnext/js/sms_manager.js");
 	var sms_man = new SMSManager(cur_frm.doc);
-}
\ No newline at end of file
+}
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index f12f396..43c31c6 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -10,12 +10,12 @@
 from erpnext.controllers.selling_controller import SellingController
 
 form_grid_templates = {
-	"quotation_details": "templates/form_grid/item_grid.html"
+	"items": "templates/form_grid/item_grid.html"
 }
 
 class Quotation(SellingController):
 	tname = 'Quotation Item'
-	fname = 'quotation_details'
+	fname = 'items'
 
 	def validate(self):
 		super(Quotation, self).validate()
@@ -30,7 +30,7 @@
 
 	def validate_for_items(self):
 		chk_dupl_itm = []
-		for d in self.get('quotation_details'):
+		for d in self.get('items'):
 			if [cstr(d.item_code),cstr(d.description)] in chk_dupl_itm:
 				frappe.throw(_("Item {0} with same description entered twice").format(d.item_code))
 			else:
@@ -40,14 +40,14 @@
 		super(Quotation, self).validate_order_type()
 
 		if self.order_type in ['Maintenance', 'Service']:
-			for d in self.get('quotation_details'):
+			for d in self.get('items'):
 				is_service_item = frappe.db.sql("select is_service_item from `tabItem` where name=%s", d.item_code)
 				is_service_item = is_service_item and is_service_item[0][0] or 'No'
 
 				if is_service_item == 'No':
 					frappe.throw(_("Item {0} must be Service Item").format(d.item_code))
 		else:
-			for d in self.get('quotation_details'):
+			for d in self.get('items'):
 				is_sales_item = frappe.db.sql("select is_sales_item from `tabItem` where name=%s", d.item_code)
 				is_sales_item = is_sales_item and is_sales_item[0][0] or 'No'
 
@@ -62,7 +62,7 @@
 			self.quotation_to = "Lead"
 
 	def update_opportunity(self):
-		for opportunity in list(set([d.prevdoc_docname for d in self.get("quotation_details")])):
+		for opportunity in list(set([d.prevdoc_docname for d in self.get("items")])):
 			if opportunity:
 				frappe.get_doc("Opportunity", opportunity).set_status(update=True)
 
@@ -75,7 +75,7 @@
 			frappe.throw(_("Cannot set as Lost as Sales Order is made."))
 
 	def check_item_table(self):
-		if not self.get('quotation_details'):
+		if not self.get('items'):
 			frappe.throw(_("Please enter item details"))
 
 	def on_submit(self):
@@ -94,7 +94,7 @@
 
 	def print_other_charges(self,docname):
 		print_lst = []
-		for d in self.get('other_charges'):
+		for d in self.get('taxes'):
 			lst1 = []
 			lst1.append(d.description)
 			lst1.append(d.total)
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index 97d4110..62ed7a8 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -21,9 +21,9 @@
 		sales_order = make_sales_order(quotation.name)
 
 		self.assertEquals(sales_order.doctype, "Sales Order")
-		self.assertEquals(len(sales_order.get("sales_order_details")), 1)
-		self.assertEquals(sales_order.get("sales_order_details")[0].doctype, "Sales Order Item")
-		self.assertEquals(sales_order.get("sales_order_details")[0].prevdoc_docname, quotation.name)
+		self.assertEquals(len(sales_order.get("items")), 1)
+		self.assertEquals(sales_order.get("items")[0].doctype, "Sales Order Item")
+		self.assertEquals(sales_order.get("items")[0].prevdoc_docname, quotation.name)
 		self.assertEquals(sales_order.customer, "_Test Customer")
 
 		sales_order.delivery_date = "2014-01-01"
diff --git a/erpnext/selling/doctype/quotation/test_records.json b/erpnext/selling/doctype/quotation/test_records.json
index 054144e..1dc4b07 100644
--- a/erpnext/selling/doctype/quotation/test_records.json
+++ b/erpnext/selling/doctype/quotation/test_records.json
@@ -13,7 +13,7 @@
   "order_type": "Sales", 
   "plc_conversion_rate": 1.0, 
   "price_list_currency": "INR", 
-  "quotation_details": [
+  "items": [
    {
     "base_amount": 1000.0, 
     "base_rate": 100.0, 
@@ -21,7 +21,7 @@
     "doctype": "Quotation Item", 
     "item_code": "_Test Item Home Desktop 100", 
     "item_name": "CPU", 
-    "parentfield": "quotation_details", 
+    "parentfield": "items", 
     "qty": 10.0, 
     "rate": 100.0
    }
diff --git a/erpnext/selling/doctype/sales_bom/sales_bom.js b/erpnext/selling/doctype/sales_bom/sales_bom.js
index 2e0e749..bbc5569 100644
--- a/erpnext/selling/doctype/sales_bom/sales_bom.js
+++ b/erpnext/selling/doctype/sales_bom/sales_bom.js
@@ -15,6 +15,6 @@
 cur_frm.cscript.item_code = function(doc, dt, dn) {
 	var d = locals[dt][dn];
 	if (d.item_code){
-		return get_server_fields('get_item_details', d.item_code, 'sales_bom_items', doc ,dt, dn, 1);
+		return get_server_fields('get_item_details', d.item_code, 'items', doc ,dt, dn, 1);
 	}
 }
diff --git a/erpnext/selling/doctype/sales_bom/test_records.json b/erpnext/selling/doctype/sales_bom/test_records.json
index beb8289..a19bc1a 100644
--- a/erpnext/selling/doctype/sales_bom/test_records.json
+++ b/erpnext/selling/doctype/sales_bom/test_records.json
@@ -2,17 +2,17 @@
  {
   "doctype": "Sales BOM", 
   "new_item_code": "_Test Sales BOM Item", 
-  "sales_bom_items": [
+  "items": [
    {
     "doctype": "Sales BOM Item", 
     "item_code": "_Test Item", 
-    "parentfield": "sales_bom_items", 
+    "parentfield": "items", 
     "qty": 5.0
    }, 
    {
     "doctype": "Sales BOM Item", 
     "item_code": "_Test Item Home Desktop 100", 
-    "parentfield": "sales_bom_items", 
+    "parentfield": "items", 
     "qty": 2.0
    }
   ]
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 65b91f4..eff37ca 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -4,8 +4,8 @@
 // Module CRM
 
 cur_frm.cscript.tname = "Sales Order Item";
-cur_frm.cscript.fname = "sales_order_details";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 cur_frm.cscript.sales_team_fname = "sales_team";
 
 {% include 'selling/sales_common.js' %}
@@ -198,4 +198,4 @@
 cur_frm.cscript.send_sms = function() {
 	frappe.require("assets/erpnext/js/sms_manager.js");
 	var sms_man = new SMSManager(cur_frm.doc);
-};
\ No newline at end of file
+};
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 3ee119d..e0254fa 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -11,12 +11,12 @@
 from erpnext.controllers.selling_controller import SellingController
 
 form_grid_templates = {
-	"sales_order_details": "templates/form_grid/item_grid.html"
+	"items": "templates/form_grid/item_grid.html"
 }
 
 class SalesOrder(SellingController):
 	tname = 'Sales Order Item'
-	fname = 'sales_order_details'
+	fname = 'items'
 	person_tname = 'Target Detail'
 	partner_tname = 'Partner Target Detail'
 	territory_tname = 'Territory Target Detail'
@@ -42,7 +42,7 @@
 	def validate_for_items(self):
 		check_list, flag = [], 0
 		chk_dupl_itm = []
-		for d in self.get('sales_order_details'):
+		for d in self.get('items'):
 			e = [d.item_code, d.description, d.warehouse, d.prevdoc_docname or '']
 			f = [d.item_code, d.description]
 
@@ -68,7 +68,7 @@
 			d.projected_qty = tot_avail_qty and flt(tot_avail_qty[0][0]) or 0
 
 	def validate_sales_mntc_quotation(self):
-		for d in self.get('sales_order_details'):
+		for d in self.get('items'):
 			if d.prevdoc_docname:
 				res = frappe.db.sql("select name from `tabQuotation` where name=%s and order_type = %s", (d.prevdoc_docname, self.order_type))
 				if not res:
@@ -104,7 +104,7 @@
 		self.validate_warehouse()
 
 		from erpnext.stock.doctype.packed_item.packed_item import make_packing_list
-		make_packing_list(self,'sales_order_details')
+		make_packing_list(self,'items')
 
 		self.validate_with_previous_doc()
 
diff --git a/erpnext/selling/doctype/sales_order/test_records.json b/erpnext/selling/doctype/sales_order/test_records.json
index 8db9915..0154d32 100644
--- a/erpnext/selling/doctype/sales_order/test_records.json
+++ b/erpnext/selling/doctype/sales_order/test_records.json
@@ -16,7 +16,7 @@
   "order_type": "Sales", 
   "plc_conversion_rate": 1.0, 
   "price_list_currency": "INR", 
-  "sales_order_details": [
+  "items": [
    {
     "base_amount": 1000.0, 
     "base_rate": 100.0, 
@@ -24,7 +24,7 @@
     "doctype": "Sales Order Item", 
     "item_code": "_Test Item Home Desktop 100", 
     "item_name": "CPU", 
-    "parentfield": "sales_order_details", 
+    "parentfield": "items", 
     "qty": 10.0, 
     "rate": 100.0, 
     "warehouse": "_Test Warehouse - _TC"
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index 775495a..11cc3af 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -24,7 +24,7 @@
 		mr = make_material_request(so.name)
 
 		self.assertEquals(mr.material_request_type, "Purchase")
-		self.assertEquals(len(mr.get("indent_details")), len(sales_order.get("sales_order_details")))
+		self.assertEquals(len(mr.get("items")), len(sales_order.get("items")))
 
 	def test_make_delivery_note(self):
 		from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
@@ -37,7 +37,7 @@
 		dn = self.make_next_doc_testcase(so, "Delivery Note")
 
 		self.assertEquals(dn.doctype, "Delivery Note")
-		self.assertEquals(len(dn.get("delivery_note_details")), len(so.get("sales_order_details")))
+		self.assertEquals(len(dn.get("items")), len(so.get("items")))
 
 	def test_make_sales_invoice(self):
 		from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
@@ -50,7 +50,7 @@
 		si = self.make_next_doc_testcase(so, "Sales Invoice")
 
 		self.assertEquals(si.doctype, "Sales Invoice")
-		self.assertEquals(len(si.get("entries")), len(so.get("sales_order_details")))
+		self.assertEquals(len(si.get("entries")), len(so.get("items")))
 		self.assertEquals(len(si.get("entries")), 1)
 
 		si.set("debit_to", "_Test Receivable - _TC")
@@ -66,7 +66,7 @@
 
 		dn = self.make_next_doc_testcase(so, "Delivery Note")
 
-		dn.get("delivery_note_details")[0].qty = 6
+		dn.get("items")[0].qty = 6
 		dn.posting_date = "2013-10-10"
 		dn.insert()
 
@@ -75,7 +75,7 @@
 
 		sales_order = frappe.get_doc("Sales Order", so.name)
 
-		self.assertEquals(sales_order.get("sales_order_details")[0].delivered_qty, 6)
+		self.assertEquals(sales_order.get("items")[0].delivered_qty, 6)
 
 		#Check delivered_qty after make_sales_invoice without update_stock checked
 		si1 = self.make_next_doc_testcase(sales_order, "Sales Invoice")
@@ -88,7 +88,7 @@
 
 		sales_order = frappe.get_doc("Sales Order", sales_order.name)
 
-		self.assertEquals(sales_order.get("sales_order_details")[0].delivered_qty, 6)
+		self.assertEquals(sales_order.get("items")[0].delivered_qty, 6)
 
 		#Check delivered_qty after make_sales_invoice with update_stock checked
 		si2 = self.make_next_doc_testcase(sales_order, "Sales Invoice")
@@ -102,7 +102,7 @@
 
 		sales_order = frappe.get_doc("Sales Order", sales_order.name)
 
-		self.assertEquals(sales_order.get("sales_order_details")[0].delivered_qty, 9)
+		self.assertEquals(sales_order.get("items")[0].delivered_qty, 9)
 
 	def make_next_doc_testcase(self, so, next_doc = None):
 
@@ -133,14 +133,14 @@
 		from erpnext.stock.doctype.delivery_note.test_delivery_note import test_records as dn_test_records
 		from erpnext.stock.doctype.delivery_note.test_delivery_note import _insert_purchase_receipt
 
-		_insert_purchase_receipt(so.get("sales_order_details")[0].item_code)
+		_insert_purchase_receipt(so.get("items")[0].item_code)
 
 		dn = frappe.get_doc(frappe.copy_doc(dn_test_records[0]))
-		dn.get("delivery_note_details")[0].item_code = so.get("sales_order_details")[0].item_code
-		dn.get("delivery_note_details")[0].against_sales_order = so.name
-		dn.get("delivery_note_details")[0].so_detail = so.get("sales_order_details")[0].name
+		dn.get("items")[0].item_code = so.get("items")[0].item_code
+		dn.get("items")[0].against_sales_order = so.name
+		dn.get("items")[0].so_detail = so.get("items")[0].name
 		if delivered_qty:
-			dn.get("delivery_note_details")[0].qty = delivered_qty
+			dn.get("items")[0].qty = delivered_qty
 		dn.insert()
 		dn.submit()
 		return dn
@@ -161,21 +161,21 @@
 
 	def test_reserved_qty_for_so(self):
 		# reset bin
-		so_item = test_records[0]["sales_order_details"][0].copy()
+		so_item = test_records[0]["items"][0].copy()
 		self.delete_bin(so_item["item_code"], so_item["warehouse"])
 
 		# submit
 		so = self.create_so()
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 10.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 10.0)
 
 		# cancel
 		so.cancel()
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 0.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 0.0)
 
 
 	def test_reserved_qty_for_partial_delivery(self):
 		# reset bin
-		so_item = test_records[0]["sales_order_details"][0].copy()
+		so_item = test_records[0]["items"][0].copy()
 		self.delete_bin(so_item["item_code"], so_item["warehouse"])
 
 		# submit so
@@ -187,25 +187,25 @@
 		# submit dn
 		dn = self.create_dn_against_so(so)
 
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 5.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 5.0)
 
 		# stop so
 		so.load_from_db()
 		so.stop_sales_order()
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 0.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 0.0)
 
 		# unstop so
 		so.load_from_db()
 		so.unstop_sales_order()
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 5.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 5.0)
 
 		# cancel dn
 		dn.cancel()
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 10.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 10.0)
 
 	def test_reserved_qty_for_over_delivery(self):
 		# reset bin
-		so_item = test_records[0]["sales_order_details"][0].copy()
+		so_item = test_records[0]["items"][0].copy()
 		self.delete_bin(so_item["item_code"], so_item["warehouse"])
 
 		# submit so
@@ -215,42 +215,42 @@
 		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		# set over-delivery tolerance
-		frappe.db.set_value('Item', so.get("sales_order_details")[0].item_code, 'tolerance', 50)
+		frappe.db.set_value('Item', so.get("items")[0].item_code, 'tolerance', 50)
 
 		# submit dn
 		dn = self.create_dn_against_so(so, 15)
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 0.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 0.0)
 
 		# cancel dn
 		dn.cancel()
-		self.check_reserved_qty(so.get("sales_order_details")[0].item_code, so.get("sales_order_details")[0].warehouse, 10.0)
+		self.check_reserved_qty(so.get("items")[0].item_code, so.get("items")[0].warehouse, 10.0)
 
 	def test_reserved_qty_for_so_with_packing_list(self):
 		from erpnext.selling.doctype.sales_bom.test_sales_bom import test_records as sbom_test_records
 
 		# change item in test so record
 		test_record = copy.deepcopy(test_records[0])
-		test_record["sales_order_details"][0]["item_code"] = "_Test Sales BOM Item"
+		test_record["items"][0]["item_code"] = "_Test Sales BOM Item"
 
 		# reset bin
-		self.delete_bin(sbom_test_records[0]["sales_bom_items"][0]["item_code"], test_record.get("sales_order_details")[0]["warehouse"])
-		self.delete_bin(sbom_test_records[0]["sales_bom_items"][1]["item_code"], test_record.get("sales_order_details")[0]["warehouse"])
+		self.delete_bin(sbom_test_records[0]["items"][0]["item_code"], test_record.get("items")[0]["warehouse"])
+		self.delete_bin(sbom_test_records[0]["items"][1]["item_code"], test_record.get("items")[0]["warehouse"])
 
 		# submit
 		so = self.create_so(test_record)
 
 
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 50.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 20.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 50.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 20.0)
 
 		# cancel
 		so.cancel()
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 0.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 0.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 0.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 0.0)
 
 	def test_reserved_qty_for_partial_delivery_with_packing_list(self):
 		from erpnext.selling.doctype.sales_bom.test_sales_bom import test_records as sbom_test_records
@@ -258,11 +258,11 @@
 		# change item in test so record
 
 		test_record = frappe.copy_doc(test_records[0])
-		test_record.get("sales_order_details")[0].item_code = "_Test Sales BOM Item"
+		test_record.get("items")[0].item_code = "_Test Sales BOM Item"
 
 		# reset bin
-		self.delete_bin(sbom_test_records[0]["sales_bom_items"][0]["item_code"], test_record.get("sales_order_details")[0].warehouse)
-		self.delete_bin(sbom_test_records[0]["sales_bom_items"][1]["item_code"], test_record.get("sales_order_details")[0].warehouse)
+		self.delete_bin(sbom_test_records[0]["items"][0]["item_code"], test_record.get("items")[0].warehouse)
+		self.delete_bin(sbom_test_records[0]["items"][1]["item_code"], test_record.get("items")[0].warehouse)
 
 		# submit
 		so = self.create_so(test_record)
@@ -273,45 +273,45 @@
 		# submit dn
 		dn = self.create_dn_against_so(so)
 
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 25.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 10.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 25.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 10.0)
 
 		# stop so
 		so.load_from_db()
 		so.stop_sales_order()
 
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 0.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 0.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 0.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 0.0)
 
 		# unstop so
 		so.load_from_db()
 		so.unstop_sales_order()
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 25.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 10.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 25.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 10.0)
 
 		# cancel dn
 		dn.cancel()
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 50.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 20.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 50.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 20.0)
 
 	def test_reserved_qty_for_over_delivery_with_packing_list(self):
 		from erpnext.selling.doctype.sales_bom.test_sales_bom import test_records as sbom_test_records
 
 		# change item in test so record
 		test_record = frappe.copy_doc(test_records[0])
-		test_record.get("sales_order_details")[0].item_code = "_Test Sales BOM Item"
+		test_record.get("items")[0].item_code = "_Test Sales BOM Item"
 
 		# reset bin
-		self.delete_bin(sbom_test_records[0]["sales_bom_items"][0]["item_code"], test_record.get("sales_order_details")[0].warehouse)
-		self.delete_bin(sbom_test_records[0]["sales_bom_items"][1]["item_code"], test_record.get("sales_order_details")[0].warehouse)
+		self.delete_bin(sbom_test_records[0]["items"][0]["item_code"], test_record.get("items")[0].warehouse)
+		self.delete_bin(sbom_test_records[0]["items"][1]["item_code"], test_record.get("items")[0].warehouse)
 
 		# submit
 		so = self.create_so(test_record)
@@ -320,22 +320,22 @@
 		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		# set over-delivery tolerance
-		frappe.db.set_value('Item', so.get("sales_order_details")[0].item_code, 'tolerance', 50)
+		frappe.db.set_value('Item', so.get("items")[0].item_code, 'tolerance', 50)
 
 		# submit dn
 		dn = self.create_dn_against_so(so, 15)
 
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 0.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 0.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 0.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 0.0)
 
 		# cancel dn
 		dn.cancel()
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][0]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 50.0)
-		self.check_reserved_qty(sbom_test_records[0]["sales_bom_items"][1]["item_code"],
-			so.get("sales_order_details")[0].warehouse, 20.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][0]["item_code"],
+			so.get("items")[0].warehouse, 50.0)
+		self.check_reserved_qty(sbom_test_records[0]["items"][1]["item_code"],
+			so.get("items")[0].warehouse, 20.0)
 
 	def test_warehouse_user(self):
 		frappe.permissions.add_user_permission("Warehouse", "_Test Warehouse 1 - _TC", "test@example.com")
@@ -356,7 +356,7 @@
 		so.company = "_Test Company 1"
 		so.conversion_rate = 0.02
 		so.plc_conversion_rate = 0.02
-		so.get("sales_order_details")[0].warehouse = "_Test Warehouse 2 - _TC1"
+		so.get("items")[0].warehouse = "_Test Warehouse 2 - _TC1"
 		self.assertRaises(frappe.PermissionError, so.insert)
 
 		frappe.set_user("test2@example.com")
@@ -371,11 +371,11 @@
 		from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
 
 		sales_order = frappe.copy_doc(test_records[0])
-		sales_order.sales_order_details[0].qty = 5
+		sales_order.items[0].qty = 5
 		sales_order.insert()
 		sales_order.submit()
 
-		_insert_purchase_receipt(sales_order.get("sales_order_details")[0].item_code)
+		_insert_purchase_receipt(sales_order.get("items")[0].item_code)
 
 		delivery_note = make_delivery_note(sales_order.name)
 		delivery_note.posting_date = sales_order.transaction_date
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 05a523c..6df14ea 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -102,8 +102,8 @@
 		this._super();
 		this.frm.toggle_display("customer_name",
 			(this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
-		if(this.frm.fields_dict.packing_details) {
-			var packing_list_exists = (this.frm.doc.packing_details || []).length;
+		if(this.frm.fields_dict.packed_items) {
+			var packing_list_exists = (this.frm.doc.packed_items || []).length;
 			this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
 		}
 	},
@@ -241,7 +241,7 @@
 
 	calculate_taxes_and_totals: function(update_paid_amount) {
 		this._super();
-		this.calculate_total_advance("Sales Invoice", "advance_adjustment_details", update_paid_amount);
+		this.calculate_total_advance("Sales Invoice", "advances", update_paid_amount);
 		this.calculate_commission();
 		this.calculate_contribution();
 
@@ -477,7 +477,7 @@
 
 	set_sales_bom_help: function(doc) {
 		if(!cur_frm.fields_dict.packing_list) return;
-		if ((doc.packing_details || []).length) {
+		if ((doc.packed_items || []).length) {
 			$(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
 
 			if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
@@ -560,17 +560,17 @@
 		setup_field_label_map(["rate", "price_list_rate", "amount"],
 			this.frm.doc.currency, this.fname);
 
-		setup_field_label_map(["tax_amount", "total"], company_currency, "other_charges");
+		setup_field_label_map(["tax_amount", "total"], company_currency, "taxes");
 
-		if(this.frm.fields_dict["advance_allocation_details"]) {
+		if(this.frm.fields_dict["advances"]) {
 			setup_field_label_map(["advance_amount", "allocated_amount"], company_currency,
-				"advance_allocation_details");
+				"advances");
 		}
 
 		// toggle columns
 		var item_grid = this.frm.fields_dict[this.fname].grid;
 		var show = (this.frm.doc.currency != company_currency) ||
-			((cur_frm.doc.other_charges || []).filter(
+			((cur_frm.doc.taxes || []).filter(
 					function(d) { return d.included_in_print_rate===1}).length);
 
 		$.each(["base_rate", "base_price_list_rate", "base_amount"], function(i, fname) {
diff --git a/erpnext/setup/doctype/customer_group/customer_group.js b/erpnext/setup/doctype/customer_group/customer_group.js
index 902f4a6..da1d1b3 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.js
+++ b/erpnext/setup/doctype/customer_group/customer_group.js
@@ -26,7 +26,7 @@
 	}
 }
 
-cur_frm.fields_dict['party_accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
 	var d  = locals[cdt][cdn];
 	return {
 		filters: {
diff --git a/erpnext/setup/doctype/customer_group/customer_group.json b/erpnext/setup/doctype/customer_group/customer_group.json
index 5e1ccab..fc3a3d4 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.json
+++ b/erpnext/setup/doctype/customer_group/customer_group.json
@@ -116,9 +116,9 @@
    "permlevel": 0
   }, 
   {
-   "fieldname": "party_accounts", 
+   "fieldname": "accounts", 
    "fieldtype": "Table", 
-   "label": "Party Accounts", 
+   "label": "Accounts", 
    "options": "Party Account", 
    "permlevel": 0
   }
@@ -126,7 +126,7 @@
  "icon": "icon-sitemap", 
  "idx": 1, 
  "in_create": 1, 
- "modified": "2014-08-29 16:37:35.877256", 
+ "modified": "2014-12-25 12:48:13.727656", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Customer Group", 
@@ -191,5 +191,5 @@
   }
  ], 
  "read_only": 1, 
- "search_fields": "name,parent_customer_group"
+ "search_fields": "parent_customer_group"
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/item_group/item_group.json b/erpnext/setup/doctype/item_group/item_group.json
index af5a5c3..8aa3aa5 100644
--- a/erpnext/setup/doctype/item_group/item_group.json
+++ b/erpnext/setup/doctype/item_group/item_group.json
@@ -1,5 +1,5 @@
 {
-  "allow_import": 1, 
+ "allow_import": 1, 
  "allow_rename": 1, 
  "autoname": "field:item_group_name", 
  "creation": "2013-03-28 10:35:29", 
@@ -134,9 +134,9 @@
   }, 
   {
    "depends_on": "show_in_website", 
-   "fieldname": "item_website_specifications", 
+   "fieldname": "website_specifications", 
    "fieldtype": "Table", 
-   "label": "Item Website Specifications", 
+   "label": "Website Specifications", 
    "options": "Item Website Specification", 
    "permlevel": 0
   }, 
@@ -190,7 +190,7 @@
  "in_create": 1, 
  "issingle": 0, 
  "max_attachments": 3, 
- "modified": "2014-08-20 17:48:34.489750", 
+ "modified": "2014-12-25 12:33:43.359081", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Item Group", 
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.js b/erpnext/setup/doctype/sales_partner/sales_partner.js
index 3a03bfe..0962660 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.js
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.js
@@ -12,7 +12,7 @@
 	}
 }
 
-cur_frm.fields_dict['partner_target_details'].grid.get_field("item_group").get_query = function(doc, dt, dn) {
+cur_frm.fields_dict['targets'].grid.get_field("item_group").get_query = function(doc, dt, dn) {
   return{
   	filters:{ 'is_group': "No" }
   }
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.json b/erpnext/setup/doctype/sales_partner/sales_partner.json
index 30ed9bc..98debb3 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.json
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.json
@@ -124,7 +124,7 @@
    "label": "Target Distribution", 
    "oldfieldname": "distribution_id", 
    "oldfieldtype": "Link", 
-   "options": "Budget Distribution", 
+   "options": "Monthly Distribution", 
    "permlevel": 0
   }, 
   {
@@ -200,7 +200,7 @@
  "icon": "icon-user", 
  "idx": 1, 
  "in_create": 0, 
- "modified": "2014-12-24 16:45:13.652374", 
+ "modified": "2014-12-25 15:37:44.884917", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Sales Partner", 
diff --git a/erpnext/setup/doctype/sales_person/sales_person.js b/erpnext/setup/doctype/sales_person/sales_person.js
index b342485..3a12c24 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.js
+++ b/erpnext/setup/doctype/sales_person/sales_person.js
@@ -27,7 +27,7 @@
 	}
 }
 
-cur_frm.fields_dict['target_details'].grid.get_field("item_group").get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['targets'].grid.get_field("item_group").get_query = function(doc, cdt, cdn) {
 	return {
 		filters: { 'is_group': "No" }
 	}
diff --git a/erpnext/setup/doctype/sales_person/sales_person.json b/erpnext/setup/doctype/sales_person/sales_person.json
index e8431d8..a284b00 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.json
+++ b/erpnext/setup/doctype/sales_person/sales_person.json
@@ -126,7 +126,7 @@
    "label": "Target Distribution", 
    "oldfieldname": "distribution_id", 
    "oldfieldtype": "Link", 
-   "options": "Budget Distribution", 
+   "options": "Monthly Distribution", 
    "permlevel": 0, 
    "search_index": 0
   }, 
@@ -143,7 +143,7 @@
  "icon": "icon-user", 
  "idx": 1, 
  "in_create": 1, 
- "modified": "2014-12-24 16:46:02.819886", 
+ "modified": "2014-12-25 15:37:37.695495", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Sales Person", 
diff --git a/erpnext/setup/doctype/sales_person/sales_person.py b/erpnext/setup/doctype/sales_person/sales_person.py
index f37b139..ce7b572 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.py
+++ b/erpnext/setup/doctype/sales_person/sales_person.py
@@ -11,7 +11,7 @@
 	nsm_parent_field = 'parent_sales_person';
 
 	def validate(self):
-		for d in self.get('target_details'):
+		for d in self.get('targets'):
 			if not flt(d.target_qty) and not flt(d.target_amount):
 				frappe.throw(_("Either target qty or target amount is mandatory."))
 
diff --git a/erpnext/setup/doctype/sms_settings/sms_settings.py b/erpnext/setup/doctype/sms_settings/sms_settings.py
index de11641..a9b0bca 100644
--- a/erpnext/setup/doctype/sms_settings/sms_settings.py
+++ b/erpnext/setup/doctype/sms_settings/sms_settings.py
@@ -71,7 +71,7 @@
 def send_via_gateway(arg):
 	ss = frappe.get_doc('SMS Settings', 'SMS Settings')
 	args = {ss.message_parameter : arg.get('message')}
-	for d in ss.get("static_parameter_details"):
+	for d in ss.get("static_parameters"):
 		args[d.parameter] = d.value
 
 	resp = []
diff --git a/erpnext/setup/doctype/supplier_type/supplier_type.js b/erpnext/setup/doctype/supplier_type/supplier_type.js
index f54edca..e78de0a 100644
--- a/erpnext/setup/doctype/supplier_type/supplier_type.js
+++ b/erpnext/setup/doctype/supplier_type/supplier_type.js
@@ -5,7 +5,7 @@
 	cur_frm.set_intro(doc.__islocal ? "" : __("There is nothing to edit."))
 }
 
-cur_frm.fields_dict['party_accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) {
 	var d  = locals[cdt][cdn];
 	return {
 		filters: {
diff --git a/erpnext/setup/doctype/supplier_type/supplier_type.json b/erpnext/setup/doctype/supplier_type/supplier_type.json
index 51ffb2a..827d9e6 100644
--- a/erpnext/setup/doctype/supplier_type/supplier_type.json
+++ b/erpnext/setup/doctype/supplier_type/supplier_type.json
@@ -30,16 +30,16 @@
    "permlevel": 0
   }, 
   {
-   "fieldname": "party_accounts", 
+   "fieldname": "accounts", 
    "fieldtype": "Table", 
-   "label": "Party Accounts", 
+   "label": "Accounts", 
    "options": "Party Account", 
    "permlevel": 0
   }
  ], 
  "icon": "icon-flag", 
  "idx": 1, 
- "modified": "2014-08-29 16:38:22.219286", 
+ "modified": "2014-12-25 12:48:28.195655", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Supplier Type", 
diff --git a/erpnext/setup/doctype/territory/territory.js b/erpnext/setup/doctype/territory/territory.js
index f870641..935845a 100644
--- a/erpnext/setup/doctype/territory/territory.js
+++ b/erpnext/setup/doctype/territory/territory.js
@@ -29,7 +29,7 @@
 
 
 // ******************** ITEM Group ********************************
-cur_frm.fields_dict['target_details'].grid.get_field("item_group").get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['targets'].grid.get_field("item_group").get_query = function(doc, cdt, cdn) {
 	return{
 		filters:{ 'is_group': "No"}
 	}
diff --git a/erpnext/setup/doctype/territory/territory.json b/erpnext/setup/doctype/territory/territory.json
index de5d4a4..6ba8fc6 100644
--- a/erpnext/setup/doctype/territory/territory.json
+++ b/erpnext/setup/doctype/territory/territory.json
@@ -129,14 +129,14 @@
    "label": "Target Distribution", 
    "oldfieldname": "distribution_id", 
    "oldfieldtype": "Link", 
-   "options": "Budget Distribution", 
+   "options": "Monthly Distribution", 
    "permlevel": 0
   }
  ], 
  "icon": "icon-map-marker", 
  "idx": 1, 
  "in_create": 1, 
- "modified": "2014-12-24 16:46:36.782166", 
+ "modified": "2014-12-25 15:37:31.563276", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Territory", 
diff --git a/erpnext/setup/doctype/territory/territory.py b/erpnext/setup/doctype/territory/territory.py
index d1b8dda..8eb4dce 100644
--- a/erpnext/setup/doctype/territory/territory.py
+++ b/erpnext/setup/doctype/territory/territory.py
@@ -14,7 +14,7 @@
 	nsm_parent_field = 'parent_territory'
 
 	def validate(self):
-		for d in self.get('target_details'):
+		for d in self.get('targets'):
 			if not flt(d.target_qty) and not flt(d.target_amount):
 				frappe.throw(_("Either target qty or target amount is mandatory"))
 
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index 52b3f4b..60c2450 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -153,7 +153,7 @@
 			"buying": 1 if pl_type == "Buying" else 0,
 			"selling": 1 if pl_type == "Selling" else 0,
 			"currency": args["currency"],
-			"valid_for_territories": [{
+			"territories": [{
 				"territory": get_root_of("Territory")
 			}]
 		}).insert()
diff --git a/erpnext/shopping_cart/__init__.py b/erpnext/shopping_cart/__init__.py
index 8660003..ddee6dc 100644
--- a/erpnext/shopping_cart/__init__.py
+++ b/erpnext/shopping_cart/__init__.py
@@ -42,18 +42,18 @@
 	validate_item(item_code)
 	quotation = get_quotation(user=user)
 	qty = flt(qty)
-	quotation_item = quotation.get("quotation_details", {"item_code": item_code})
+	quotation_item = quotation.get("items", {"item_code": item_code})
 
 	if qty==0:
 		if quotation_item:
 			# remove
-			quotation.get("quotation_details").remove(quotation_item[0])
+			quotation.get("items").remove(quotation_item[0])
 	else:
 		# add or update
 		if quotation_item:
 			quotation_item[0].qty = qty
 		else:
-			quotation.append("quotation_details", {
+			quotation.append("items", {
 				"doctype": "Quotation Item",
 				"item_code": item_code,
 				"qty": qty
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index 692f27d..3ee089c 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -14,7 +14,7 @@
 def set_cart_count(quotation=None):
 	if not quotation:
 		quotation = _get_cart_quotation()
-	cart_count = cstr(len(quotation.get("quotation_details")))
+	cart_count = cstr(len(quotation.get("items")))
 	frappe.local.cookie_manager.set_cookie("cart_count", cart_count)
 
 @frappe.whitelist()
@@ -50,7 +50,7 @@
 
 	from erpnext.selling.doctype.quotation.quotation import _make_sales_order
 	sales_order = frappe.get_doc(_make_sales_order(quotation.name, ignore_permissions=True))
-	for item in sales_order.get("sales_order_details"):
+	for item in sales_order.get("items"):
 		item.reserved_warehouse = frappe.db.get_value("Item", item.item_code, "website_warehouse") or None
 
 	sales_order.ignore_permissions = True
@@ -66,15 +66,15 @@
 
 	qty = flt(qty)
 	if qty == 0:
-		quotation.set("quotation_details", quotation.get("quotation_details", {"item_code": ["!=", item_code]}))
-		if not quotation.get("quotation_details") and \
+		quotation.set("items", quotation.get("items", {"item_code": ["!=", item_code]}))
+		if not quotation.get("items") and \
 			not quotation.get("__islocal"):
 				quotation.__delete = True
 
 	else:
-		quotation_items = quotation.get("quotation_details", {"item_code": item_code})
+		quotation_items = quotation.get("items", {"item_code": item_code})
 		if not quotation_items:
-			quotation.append("quotation_details", {
+			quotation.append("items", {
 				"doctype": "Quotation Item",
 				"item_code": item_code,
 				"qty": qty
@@ -134,13 +134,13 @@
 
 def decorate_quotation_doc(quotation_doc):
 	doc = frappe._dict(quotation_doc.as_dict())
-	for d in doc.get("quotation_details", []):
+	for d in doc.get("items", []):
 		d.update(frappe.db.get_value("Item", d["item_code"],
 			["website_image", "description", "page_name"], as_dict=True))
 		d["formatted_rate"] = fmt_money(d.get("rate"), currency=doc.currency)
 		d["formatted_amount"] = fmt_money(d.get("amount"), currency=doc.currency)
 
-	for d in doc.get("other_charges", []):
+	for d in doc.get("taxes", []):
 		d["formatted_tax_amount"] = fmt_money(flt(d.get("tax_amount")) / doc.conversion_rate,
 			currency=doc.currency)
 
@@ -239,7 +239,7 @@
 	# reset values
 	quotation.price_list_currency = quotation.currency = \
 		quotation.plc_conversion_rate = quotation.conversion_rate = None
-	for item in quotation.get("quotation_details"):
+	for item in quotation.get("items"):
 		item.price_list_rate = item.discount_percentage = item.rate = item.amount = None
 
 	# refetch values
@@ -253,10 +253,10 @@
 	quotation.taxes_and_charges = cart_settings.get_tax_master(billing_territory)
 
 	# clear table
-	quotation.set("other_charges", [])
+	quotation.set("taxes", [])
 
 	# append taxes
-	quotation.append_taxes_from_master("other_charges", "taxes_and_charges")
+	quotation.append_taxes_from_master("taxes", "taxes_and_charges")
 
 def get_lead_or_customer():
 	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user}, "customer")
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
index 48e31f6..cdbe6c2 100644
--- a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
@@ -190,7 +190,7 @@
 
 	if previous_selling_price_list != quotation.selling_price_list:
 		quotation.price_list_currency = quotation.currency = quotation.plc_conversion_rate = quotation.conversion_rate = None
-		for d in quotation.get("quotation_details"):
+		for d in quotation.get("items"):
 			d.price_list_rate = d.discount_percentage = d.rate = d.amount = None
 
 	quotation.set_price_list_and_item_details()
diff --git a/erpnext/shopping_cart/test_shopping_cart.py b/erpnext/shopping_cart/test_shopping_cart.py
index bbab3fd..9d124b7 100644
--- a/erpnext/shopping_cart/test_shopping_cart.py
+++ b/erpnext/shopping_cart/test_shopping_cart.py
@@ -61,18 +61,18 @@
 		# add first item
 		set_item_in_cart("_Test Item", 1)
 		quotation = self.test_get_cart_lead()
-		self.assertEquals(quotation.get("quotation_details")[0].item_code, "_Test Item")
-		self.assertEquals(quotation.get("quotation_details")[0].qty, 1)
-		self.assertEquals(quotation.get("quotation_details")[0].amount, 10)
+		self.assertEquals(quotation.get("items")[0].item_code, "_Test Item")
+		self.assertEquals(quotation.get("items")[0].qty, 1)
+		self.assertEquals(quotation.get("items")[0].amount, 10)
 
 		# add second item
 		set_item_in_cart("_Test Item 2", 1)
 		quotation = self.test_get_cart_lead()
-		self.assertEquals(quotation.get("quotation_details")[1].item_code, "_Test Item 2")
-		self.assertEquals(quotation.get("quotation_details")[1].qty, 1)
-		self.assertEquals(quotation.get("quotation_details")[1].amount, 20)
+		self.assertEquals(quotation.get("items")[1].item_code, "_Test Item 2")
+		self.assertEquals(quotation.get("items")[1].qty, 1)
+		self.assertEquals(quotation.get("items")[1].amount, 20)
 
-		self.assertEquals(len(quotation.get("quotation_details")), 2)
+		self.assertEquals(len(quotation.get("items")), 2)
 
 	def test_update_cart(self):
 		# first, add to cart
@@ -81,11 +81,11 @@
 		# update first item
 		set_item_in_cart("_Test Item", 5)
 		quotation = self.test_get_cart_lead()
-		self.assertEquals(quotation.get("quotation_details")[0].item_code, "_Test Item")
-		self.assertEquals(quotation.get("quotation_details")[0].qty, 5)
-		self.assertEquals(quotation.get("quotation_details")[0].amount, 50)
+		self.assertEquals(quotation.get("items")[0].item_code, "_Test Item")
+		self.assertEquals(quotation.get("items")[0].qty, 5)
+		self.assertEquals(quotation.get("items")[0].amount, 50)
 		self.assertEquals(quotation.net_total, 70)
-		self.assertEquals(len(quotation.get("quotation_details")), 2)
+		self.assertEquals(len(quotation.get("items")), 2)
 
 	def test_remove_from_cart(self):
 		# first, add to cart
@@ -94,17 +94,17 @@
 		# remove first item
 		set_item_in_cart("_Test Item", 0)
 		quotation = self.test_get_cart_lead()
-		self.assertEquals(quotation.get("quotation_details")[0].item_code, "_Test Item 2")
-		self.assertEquals(quotation.get("quotation_details")[0].qty, 1)
-		self.assertEquals(quotation.get("quotation_details")[0].amount, 20)
+		self.assertEquals(quotation.get("items")[0].item_code, "_Test Item 2")
+		self.assertEquals(quotation.get("items")[0].qty, 1)
+		self.assertEquals(quotation.get("items")[0].amount, 20)
 		self.assertEquals(quotation.net_total, 20)
-		self.assertEquals(len(quotation.get("quotation_details")), 1)
+		self.assertEquals(len(quotation.get("items")), 1)
 
 		# remove second item
 		set_item_in_cart("_Test Item 2", 0)
 		quotation = self.test_get_cart_lead()
 		self.assertEquals(quotation.net_total, 0)
-		self.assertEquals(len(quotation.get("quotation_details")), 0)
+		self.assertEquals(len(quotation.get("items")), 0)
 
 	def test_set_billing_address(self):
 		return
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 009ac4c..bc34bb0 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -3,8 +3,8 @@
 
 // Module Material Management
 cur_frm.cscript.tname = "Delivery Note Item";
-cur_frm.cscript.fname = "delivery_note_details";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 cur_frm.cscript.sales_team_fname = "sales_team";
 
 {% include 'selling/sales_common.js' %};
@@ -20,7 +20,7 @@
 		if(doc.__onload && !doc.__onload.billing_complete && doc.docstatus==1) {
 			// show Make Invoice button only if Delivery Note is not created from Sales Invoice
 			var from_sales_invoice = false;
-			from_sales_invoice = cur_frm.doc.delivery_note_details.some(function(item) {
+			from_sales_invoice = cur_frm.doc.items.some(function(item) {
 					return item.against_sales_invoice ? true : false;
 				});
 
@@ -86,7 +86,7 @@
 		this.get_terms();
 	},
 
-	delivery_note_details_on_form_rendered: function(doc, grid_row) {
+	items_on_form_rendered: function(doc, grid_row) {
 		erpnext.setup_serial_no(grid_row)
 	}
 
@@ -167,7 +167,7 @@
 
 	out ='';
 
-	var cl = doc.delivery_note_details || [];
+	var cl = doc.items || [];
 
 	// outer table
 	var out='<div><table class="noborder" style="width:100%"><tr><td style="width: 50%"></td><td>';
@@ -214,7 +214,7 @@
 	}
 
 	// expense account
-	cur_frm.fields_dict['delivery_note_details'].grid.get_field('expense_account').get_query = function(doc) {
+	cur_frm.fields_dict['items'].grid.get_field('expense_account').get_query = function(doc) {
 		return {
 			filters: {
 				"report_type": "Profit and Loss",
@@ -236,7 +236,7 @@
 		refresh_field(cur_frm.cscript.fname);
 	}
 
-	cur_frm.fields_dict.delivery_note_details.grid.get_field("cost_center").get_query = function(doc) {
+	cur_frm.fields_dict.items.grid.get_field("cost_center").get_query = function(doc) {
 		return {
 
 			filters: {
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 5d868d0..100a866 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -13,12 +13,12 @@
 from erpnext.controllers.selling_controller import SellingController
 
 form_grid_templates = {
-	"delivery_note_details": "templates/form_grid/item_grid.html"
+	"items": "templates/form_grid/item_grid.html"
 }
 
 class DeliveryNote(SellingController):
 	tname = 'Delivery Note Item'
-	fname = 'delivery_note_details'
+	fname = 'items'
 
 	def __init__(self, arg1, arg2=None):
 		super(DeliveryNote, self).__init__(arg1, arg2)
@@ -57,7 +57,7 @@
 		billed_qty = frappe.db.sql("""select sum(ifnull(qty, 0)) from `tabSales Invoice Item`
 			where docstatus=1 and delivery_note=%s""", self.name)
 		if billed_qty:
-			total_qty = sum((item.qty for item in self.get("delivery_note_details")))
+			total_qty = sum((item.qty for item in self.get("items")))
 			self.get("__onload").billing_complete = (billed_qty[0][0] == total_qty)
 
 	def before_print(self):
@@ -82,7 +82,7 @@
 		return "shipment" if self.docstatus==1 else None
 
 	def set_actual_qty(self):
-		for d in self.get('delivery_note_details'):
+		for d in self.get('items'):
 			if d.item_code and d.warehouse:
 				actual_qty = frappe.db.sql("""select actual_qty from `tabBin`
 					where item_code = %s and warehouse = %s""", (d.item_code, d.warehouse))
@@ -91,7 +91,7 @@
 	def so_required(self):
 		"""check in manage account if sales order required or not"""
 		if frappe.db.get_value("Selling Settings", None, 'so_required') == 'Yes':
-			 for d in self.get('delivery_note_details'):
+			 for d in self.get('items'):
 				 if not d.against_sales_order:
 					 frappe.throw(_("Sales Order required for Item {0}").format(d.item_code))
 
@@ -110,7 +110,7 @@
 		self.validate_with_previous_doc()
 
 		from erpnext.stock.doctype.packed_item.packed_item import make_packing_list
-		make_packing_list(self, 'delivery_note_details')
+		make_packing_list(self, 'items')
 
 		self.update_current_stock()
 
@@ -118,7 +118,7 @@
 		if not self.installation_status: self.installation_status = 'Not Installed'
 
 	def validate_with_previous_doc(self):
-		items = self.get("delivery_note_details")
+		items = self.get("items")
 
 		for fn in (("Sales Order", "against_sales_order"), ("Sales Invoice", "against_sales_invoice")):
 			if filter(None, [getattr(d, fn[1], None) for d in items]):
@@ -150,7 +150,7 @@
 
 	def validate_for_items(self):
 		check_list, chk_dupl_itm = [], []
-		for d in self.get('delivery_note_details'):
+		for d in self.get('items'):
 			e = [d.item_code, d.description, d.warehouse, d.against_sales_order or d.against_sales_invoice, d.batch_no or '']
 			f = [d.item_code, d.description, d.against_sales_order or d.against_sales_invoice]
 
@@ -174,11 +174,11 @@
 
 	def update_current_stock(self):
 		if self.get("_action") and self._action != "update_after_submit":
-			for d in self.get('delivery_note_details'):
+			for d in self.get('items'):
 				d.actual_qty = frappe.db.get_value("Bin", {"item_code": d.item_code,
 					"warehouse": d.warehouse}, "actual_qty")
 
-			for d in self.get('packing_details'):
+			for d in self.get('packed_items'):
 				bin_qty = frappe.db.get_value("Bin", {"item_code": d.item_code,
 					"warehouse": d.warehouse}, ["actual_qty", "projected_qty"], as_dict=True)
 				if bin_qty:
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index d9ade7a..8459e1e 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -11,10 +11,10 @@
 
 def _insert_purchase_receipt(item_code=None):
 	if not item_code:
-		item_code = pr_test_records[0]["purchase_receipt_details"][0]["item_code"]
+		item_code = pr_test_records[0]["items"][0]["item_code"]
 
 	pr = frappe.copy_doc(pr_test_records[0])
-	pr.get("purchase_receipt_details")[0].item_code = item_code
+	pr.get("items")[0].item_code = item_code
 	pr.insert()
 	pr.submit()
 
@@ -34,7 +34,7 @@
 		dn.submit()
 		si = make_sales_invoice(dn.name)
 
-		self.assertEquals(len(si.get("entries")), len(dn.get("delivery_note_details")))
+		self.assertEquals(len(si.get("entries")), len(dn.get("items")))
 
 		# modify amount
 		si.get("entries")[0].rate = 200
@@ -69,11 +69,11 @@
 		_insert_purchase_receipt()
 
 		dn = frappe.copy_doc(test_records[0])
-		dn.get("delivery_note_details")[0].expense_account = "Cost of Goods Sold - _TC"
-		dn.get("delivery_note_details")[0].cost_center = "Main - _TC"
+		dn.get("items")[0].expense_account = "Cost of Goods Sold - _TC"
+		dn.get("items")[0].cost_center = "Main - _TC"
 
 		stock_in_hand_account = frappe.db.get_value("Account",
-			{"warehouse": dn.get("delivery_note_details")[0].warehouse})
+			{"warehouse": dn.get("items")[0].warehouse})
 
 		from erpnext.accounts.utils import get_balance_on
 		prev_bal = get_balance_on(stock_in_hand_account, dn.posting_date)
@@ -97,8 +97,8 @@
 		# back dated purchase receipt
 		pr = frappe.copy_doc(pr_test_records[0])
 		pr.posting_date = "2013-01-01"
-		pr.get("purchase_receipt_details")[0].rate = 100
-		pr.get("purchase_receipt_details")[0].base_amount = 100
+		pr.get("items")[0].rate = 100
+		pr.get("items")[0].base_amount = 100
 
 		pr.insert()
 		pr.submit()
@@ -124,11 +124,11 @@
 		_insert_purchase_receipt("_Test Item Home Desktop 100")
 
 		dn = frappe.copy_doc(test_records[0])
-		dn.get("delivery_note_details")[0].item_code = "_Test Sales BOM Item"
-		dn.get("delivery_note_details")[0].qty = 1
+		dn.get("items")[0].item_code = "_Test Sales BOM Item"
+		dn.get("items")[0].qty = 1
 
 		stock_in_hand_account = frappe.db.get_value("Account",
-			{"warehouse": dn.get("delivery_note_details")[0].warehouse})
+			{"warehouse": dn.get("items")[0].warehouse})
 
 		from erpnext.accounts.utils import get_balance_on
 		prev_bal = get_balance_on(stock_in_hand_account, dn.posting_date)
@@ -160,12 +160,12 @@
 		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 
 		se = make_serialized_item()
-		serial_nos = get_serial_nos(se.get("mtn_details")[0].serial_no)
+		serial_nos = get_serial_nos(se.get("items")[0].serial_no)
 
 		dn = frappe.copy_doc(test_records[0])
-		dn.get("delivery_note_details")[0].item_code = "_Test Serialized Item With Series"
-		dn.get("delivery_note_details")[0].qty = 1
-		dn.get("delivery_note_details")[0].serial_no = serial_nos[0]
+		dn.get("items")[0].item_code = "_Test Serialized Item With Series"
+		dn.get("items")[0].qty = 1
+		dn.get("items")[0].serial_no = serial_nos[0]
 		dn.insert()
 		dn.submit()
 
@@ -181,7 +181,7 @@
 		dn = self.test_serialized()
 		dn.cancel()
 
-		serial_nos = get_serial_nos(dn.get("delivery_note_details")[0].serial_no)
+		serial_nos = get_serial_nos(dn.get("items")[0].serial_no)
 
 		self.assertEquals(frappe.db.get_value("Serial No", serial_nos[0], "status"), "Available")
 		self.assertEquals(frappe.db.get_value("Serial No", serial_nos[0], "warehouse"), "_Test Warehouse - _TC")
@@ -193,16 +193,16 @@
 		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
 
 		se = make_serialized_item()
-		serial_nos = get_serial_nos(se.get("mtn_details")[0].serial_no)
+		serial_nos = get_serial_nos(se.get("items")[0].serial_no)
 
 		sr = frappe.get_doc("Serial No", serial_nos[0])
 		sr.status = "Not Available"
 		sr.save()
 
 		dn = frappe.copy_doc(test_records[0])
-		dn.get("delivery_note_details")[0].item_code = "_Test Serialized Item With Series"
-		dn.get("delivery_note_details")[0].qty = 1
-		dn.get("delivery_note_details")[0].serial_no = serial_nos[0]
+		dn.get("items")[0].item_code = "_Test Serialized Item With Series"
+		dn.get("items")[0].qty = 1
+		dn.get("items")[0].serial_no = serial_nos[0]
 		dn.insert()
 
 		self.assertRaises(SerialNoStatusError, dn.submit)
diff --git a/erpnext/stock/doctype/delivery_note/test_records.json b/erpnext/stock/doctype/delivery_note/test_records.json
index 3127a08..803e864 100644
--- a/erpnext/stock/doctype/delivery_note/test_records.json
+++ b/erpnext/stock/doctype/delivery_note/test_records.json
@@ -5,7 +5,7 @@
   "currency": "INR", 
   "customer": "_Test Customer", 
   "customer_name": "_Test Customer", 
-  "delivery_note_details": [
+  "items": [
    {
     "base_amount": 500.0, 
     "base_rate": 100.0, 
@@ -15,7 +15,7 @@
     "expense_account": "Cost of Goods Sold - _TC", 
     "item_code": "_Test Item", 
     "item_name": "_Test Item", 
-    "parentfield": "delivery_note_details", 
+    "parentfield": "items", 
     "qty": 5.0, 
     "rate": 100.0, 
     "stock_uom": "_Test UOM", 
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 096c1e8..9c2f9f5 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -127,7 +127,7 @@
 }
 
 
-cur_frm.fields_dict['item_tax'].grid.get_field("tax_type").get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['taxes'].grid.get_field("tax_type").get_query = function(doc, cdt, cdn) {
 	return {
 		filters: [
 			['Account', 'account_type', 'in',
@@ -139,7 +139,7 @@
 
 cur_frm.cscript.tax_type = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
-	return get_server_fields('get_tax_rate', d.tax_type, 'item_tax', doc, cdt, cdn, 1);
+	return get_server_fields('get_tax_rate', d.tax_type, 'taxes', doc, cdt, cdn, 1);
 }
 
 cur_frm.fields_dict['item_group'].get_query = function(doc,cdt,cdn) {
@@ -178,11 +178,11 @@
 	cur_frm.cscript.weight_to_validate(doc, cdt, cdn);
 }
 
-cur_frm.fields_dict.item_customer_details.grid.get_field("customer_name").get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict.customer_item_codes.grid.get_field("customer_name").get_query = function(doc, cdt, cdn) {
 	return { query: "erpnext.controllers.queries.customer_query" }
 }
 
-cur_frm.fields_dict.item_supplier_details.grid.get_field("supplier").get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict.supplier_item_codes.grid.get_field("supplier").get_query = function(doc, cdt, cdn) {
 	return { query: "erpnext.controllers.queries.supplier_query" }
 }
 
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 34d5428..531ec56 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -84,14 +84,14 @@
 				raise_exception=WarehouseNotSet)
 
 	def add_default_uom_in_conversion_factor_table(self):
-		uom_conv_list = [d.uom for d in self.get("uom_conversion_details")]
+		uom_conv_list = [d.uom for d in self.get("uoms")]
 		if self.stock_uom not in uom_conv_list:
-			ch = self.append('uom_conversion_details', {})
+			ch = self.append('uoms', {})
 			ch.uom = self.stock_uom
 			ch.conversion_factor = 1
 
 		to_remove = []
-		for d in self.get("uom_conversion_details"):
+		for d in self.get("uoms"):
 			if d.conversion_factor == 1 and d.uom != self.stock_uom:
 				to_remove.append(d)
 
@@ -136,13 +136,13 @@
 
 	def validate_variants_are_unique(self):
 		if not self.has_variants:
-			self.item_variants = []
+			self.variants = []
 
-		if self.item_variants and self.variant_of:
+		if self.variants and self.variant_of:
 			frappe.throw(_("Item cannot be a variant of a variant"))
 
 		variants = []
-		for d in self.item_variants:
+		for d in self.variants:
 			key = (d.item_attribute, d.item_attribute_value)
 			if key in variants:
 				frappe.throw(_("{0} {1} is entered more than once in Item Variants table").format(d.item_attribute,
@@ -181,14 +181,14 @@
 			frappe.msgprint(_("Item Variants {0} deleted").format(", ".join(deleted)))
 
 	def get_variant_item_codes(self):
-		if not self.item_variants:
+		if not self.variants:
 			return []
 
 		self.variant_attributes = {}
 		variant_dict = {}
 		variant_item_codes = []
 
-		for d in self.item_variants:
+		for d in self.variants:
 			variant_dict.setdefault(d.item_attribute, []).append(d.item_attribute_value)
 
 		all_attributes = [d.name for d in frappe.get_all("Item Attribute", order_by = "priority asc")]
@@ -250,21 +250,21 @@
 		template = frappe.get_doc("Item", self.variant_of)
 
 		# add item taxes from template
-		for d in template.get("item_tax"):
-			self.append("item_tax", {"tax_type": d.tax_type, "tax_rate": d.tax_rate})
+		for d in template.get("taxes"):
+			self.append("taxes", {"tax_type": d.tax_type, "tax_rate": d.tax_rate})
 
 		# copy re-order table if empty
-		if not self.get("item_reorder"):
-			for d in template.get("item_reorder"):
+		if not self.get("reorder_levels"):
+			for d in template.get("reorder_levels"):
 				n = {}
 				for k in ("warehouse", "warehouse_reorder_level",
 					"warehouse_reorder_qty", "material_request_type"):
 					n[k] = d.get(k)
-				self.append("item_reorder", n)
+				self.append("reorder_levels", n)
 
 	def validate_conversion_factor(self):
 		check_list = []
-		for d in self.get('uom_conversion_details'):
+		for d in self.get('uoms'):
 			if cstr(d.uom) in check_list:
 				frappe.throw(_("Unit of Measure {0} has been entered more than once in Conversion Factor Table").format(d.uom))
 			else:
@@ -302,14 +302,14 @@
 	def fill_customer_code(self):
 		""" Append all the customer codes and insert into "customer_code" field of item table """
 		cust_code=[]
-		for d in self.get('item_customer_details'):
+		for d in self.get('customer_item_codes'):
 			cust_code.append(d.ref_code)
 		self.customer_code=','.join(cust_code)
 
 	def check_item_tax(self):
 		"""Check whether Tax Rate is not entered twice for same Tax Type"""
 		check_list=[]
-		for d in self.get('item_tax'):
+		for d in self.get('taxes'):
 			if d.tax_type:
 				account_type = frappe.db.get_value("Account", d.tax_type, "account_type")
 
@@ -344,15 +344,15 @@
 		if cint(self.apply_warehouse_wise_reorder_level):
 			self.re_order_level, self.re_order_qty = 0, 0
 		else:
-			self.set("item_reorder", [])
+			self.set("reorder_levels", [])
 
-		if self.re_order_level or len(self.get("item_reorder", {"material_request_type": "Purchase"})):
+		if self.re_order_level or len(self.get("reorder_levels", {"material_request_type": "Purchase"})):
 			if not self.is_purchase_item:
 				frappe.throw(_("""To set reorder level, item must be a Purchase Item"""))
 
 	def validate_warehouse_for_reorder(self):
 		warehouse = []
-		for i in self.get("item_reorder"):
+		for i in self.get("reorder_levels"):
 			if i.get("warehouse") and i.get("warehouse") not in warehouse:
 				warehouse += [i.get("warehouse")]
 			else:
@@ -426,11 +426,11 @@
 		frappe.db.auto_commit_on_many_writes = 0
 
 	def copy_specification_from_item_group(self):
-		self.set("item_website_specifications", [])
+		self.set("website_specifications", [])
 		if self.item_group:
 			for label, desc in frappe.db.get_values("Item Website Specification",
 				{"parent": self.item_group}, ["label", "description"]):
-					row = self.append("item_website_specifications")
+					row = self.append("website_specifications")
 					row.label = label
 					row.description = desc
 
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 55cd12f..2d8bdd4 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -24,7 +24,7 @@
 
 	def test_duplicate_variant(self):
 		item = frappe.copy_doc(test_records[11])
-		item.append("item_variants", {"item_attribute": "Test Size", "item_attribute_value": "Small"})
+		item.append("variants", {"item_attribute": "Test Size", "item_attribute_value": "Small"})
 		self.assertRaises(DuplicateVariant, item.insert)
 
 	def test_template_cannot_have_stock(self):
@@ -32,7 +32,7 @@
 
 		se = frappe.new_doc("Stock Entry")
 		se.purpose = "Material Receipt"
-		se.append("mtn_details", {
+		se.append("items", {
 			"item_code": item.name,
 			"t_warehouse": "Stores - _TC",
 			"qty": 1,
@@ -52,9 +52,9 @@
 		for v in variants:
 			self.assertTrue(frappe.db.get_value("Item", {"variant_of": item.name, "name": v}))
 
-		item.append("item_variants", {"item_attribute": "Test Colour", "item_attribute_value": "Red"})
-		item.append("item_variants", {"item_attribute": "Test Colour", "item_attribute_value": "Blue"})
-		item.append("item_variants", {"item_attribute": "Test Colour", "item_attribute_value": "Green"})
+		item.append("variants", {"item_attribute": "Test Colour", "item_attribute_value": "Red"})
+		item.append("variants", {"item_attribute": "Test Colour", "item_attribute_value": "Blue"})
+		item.append("variants", {"item_attribute": "Test Colour", "item_attribute_value": "Green"})
 
 		self.assertEqual(item.get_variant_item_codes(), ['_Test Variant Item-S-R',
 			'_Test Variant Item-S-G', '_Test Variant Item-S-B',
@@ -71,7 +71,7 @@
 
 		se = frappe.new_doc("Stock Entry")
 		se.purpose = "Material Receipt"
-		se.append("mtn_details", {
+		se.append("items", {
 			"item_code": item.name,
 			"t_warehouse": "Stores - _TC",
 			"qty": 1,
diff --git a/erpnext/stock/doctype/item/test_records.json b/erpnext/stock/doctype/item/test_records.json
index 7b6130c..7d0f4b0 100644
--- a/erpnext/stock/doctype/item/test_records.json
+++ b/erpnext/stock/doctype/item/test_records.json
@@ -19,7 +19,7 @@
   "item_group": "_Test Item Group",
   "item_name": "_Test Item",
   "apply_warehouse_wise_reorder_level": 1,
-  "item_reorder": [
+  "reorder_levels": [
    {
     "material_request_type": "Purchase",
     "warehouse": "_Test Warehouse - _TC",
@@ -74,10 +74,10 @@
   "item_code": "_Test Item Home Desktop 100",
   "item_group": "_Test Item Group Desktops",
   "item_name": "_Test Item Home Desktop 100",
-  "item_tax": [
+  "taxes": [
    {
     "doctype": "Item Tax",
-    "parentfield": "item_tax",
+    "parentfield": "taxes",
     "tax_rate": 10,
     "tax_type": "_Test Account Excise Duty - _TC"
    }
@@ -270,13 +270,13 @@
   "item_name": "_Test Variant Item",
   "stock_uom": "_Test UOM",
   "has_variants": 1,
-  "item_variants": [
+  "variants": [
 	  {"item_attribute": "Test Size", "item_attribute_value": "Small"},
 	  {"item_attribute": "Test Size", "item_attribute_value": "Medium"},
 	  {"item_attribute": "Test Size", "item_attribute_value": "Large"}
   ],
   "apply_warehouse_wise_reorder_level": 1,
-  "item_reorder": [
+  "reorder_levels": [
       {
        "material_request_type": "Purchase",
        "warehouse": "_Test Warehouse - _TC",
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
index 042011a..c1847c5 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
@@ -8,7 +8,7 @@
 erpnext.stock.LandedCostVoucher = erpnext.stock.StockController.extend({		
 	setup: function() {
 		var me = this;
-		this.frm.fields_dict.landed_cost_purchase_receipts.grid.get_field('purchase_receipt').get_query = 
+		this.frm.fields_dict.purchase_receipts.grid.get_field('purchase_receipt').get_query = 
 			function() {
 				if(!me.frm.doc.company) msgprint(__("Please enter company first"));
 				return {
@@ -19,7 +19,7 @@
 				}
 		};
 	
-		this.frm.fields_dict.landed_cost_taxes_and_charges.grid.get_field('account').get_query = function() {
+		this.frm.fields_dict.taxes.grid.get_field('account').get_query = function() {
 				if(!me.frm.doc.company) msgprint(__("Please enter company first"));
 				return {
 					filters:[
@@ -67,7 +67,7 @@
 	
 	get_items_from_purchase_receipts: function() {
 		var me = this;
-		if(!this.frm.doc.landed_cost_purchase_receipts.length) {
+		if(!this.frm.doc.purchase_receipts.length) {
 			msgprint(__("Please enter Purchase Receipt first"));
 		} else {
 			return this.frm.call({
@@ -84,7 +84,7 @@
 	
 	set_total_taxes_and_charges: function() {
 		total_taxes_and_charges = 0.0;
-		$.each(this.frm.doc.landed_cost_taxes_and_charges, function(i, d) {
+		$.each(this.frm.doc.taxes, function(i, d) {
 			total_taxes_and_charges += flt(d.amount)
 		});
 		cur_frm.set_value("total_taxes_and_charges", total_taxes_and_charges);
@@ -92,16 +92,16 @@
 	
 	set_applicable_charges_for_item: function() {
 		var me = this;
-		if(this.frm.doc.landed_cost_taxes_and_charges.length) {
+		if(this.frm.doc.taxes.length) {
 			var total_item_cost = 0.0;
-			$.each(this.frm.doc.landed_cost_items, function(i, d) {
+			$.each(this.frm.doc.items, function(i, d) {
 				total_item_cost += flt(d.amount)
 			});
 			
-			$.each(this.frm.doc.landed_cost_items, function(i, item) {
+			$.each(this.frm.doc.items, function(i, item) {
 				item.applicable_charges = flt(item.amount) *  flt(me.frm.doc.total_taxes_and_charges) / flt(total_item_cost)
 			});
-			refresh_field("landed_cost_items");
+			refresh_field("items");
 		}
 	}
 	
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
index 682a16b..aafc0df 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
@@ -16,7 +16,7 @@
    "reqd": 1
   }, 
   {
-   "fieldname": "landed_cost_purchase_receipts", 
+   "fieldname": "purchase_receipts", 
    "fieldtype": "Table", 
    "label": "Purchase Receipts", 
    "options": "Landed Cost Purchase Receipt", 
@@ -29,7 +29,7 @@
    "permlevel": 0
   }, 
   {
-   "fieldname": "landed_cost_items", 
+   "fieldname": "items", 
    "fieldtype": "Table", 
    "label": "Purchase Receipt Items", 
    "no_copy": 1, 
@@ -38,7 +38,7 @@
    "read_only": 0
   }, 
   {
-   "fieldname": "landed_cost_taxes_and_charges", 
+   "fieldname": "taxes", 
    "fieldtype": "Table", 
    "label": "Taxes and Charges", 
    "options": "Landed Cost Taxes and Charges", 
@@ -73,7 +73,7 @@
  ], 
  "icon": "icon-usd", 
  "is_submittable": 1, 
- "modified": "2014-09-01 12:05:46.834513", 
+ "modified": "2014-12-25 12:36:24.982094", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Landed Cost Voucher", 
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
index 3046c5e..f5b8b5f 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -12,8 +12,8 @@
 
 class LandedCostVoucher(Document):
 	def get_items_from_purchase_receipts(self):
-		self.set("landed_cost_items", [])
-		for pr in self.get("landed_cost_purchase_receipts"):
+		self.set("items", [])
+		for pr in self.get("purchase_receipts"):
 			pr_items = frappe.db.sql("""select pr_item.item_code, pr_item.description,
 				pr_item.qty, pr_item.base_rate, pr_item.base_amount, pr_item.name
 				from `tabPurchase Receipt Item` pr_item where parent = %s
@@ -21,7 +21,7 @@
 				pr.purchase_receipt, as_dict=True)
 
 			for d in pr_items:
-				item = self.append("landed_cost_items")
+				item = self.append("items")
 				item.item_code = d.item_code
 				item.description = d.description
 				item.qty = d.qty
@@ -30,7 +30,7 @@
 				item.purchase_receipt = pr.purchase_receipt
 				item.purchase_receipt_item = d.name
 
-		if self.get("landed_cost_taxes_and_charges"):
+		if self.get("taxes"):
 			self.set_applicable_charges_for_item()
 
 
@@ -38,27 +38,27 @@
 		self.check_mandatory()
 		self.validate_purchase_receipts()
 		self.set_total_taxes_and_charges()
-		if not self.get("landed_cost_items"):
+		if not self.get("items"):
 			self.get_items_from_purchase_receipts()
 		else:
 			self.set_applicable_charges_for_item()
 
 	def check_mandatory(self):
-		if not self.get("landed_cost_purchase_receipts"):
+		if not self.get("purchase_receipts"):
 			frappe.throw(_("Please enter Purchase Receipts"))
 
-		if not self.get("landed_cost_taxes_and_charges"):
+		if not self.get("taxes"):
 			frappe.throw(_("Please enter Taxes and Charges"))
 
 	def validate_purchase_receipts(self):
 		purchase_receipts = []
-		for d in self.get("landed_cost_purchase_receipts"):
+		for d in self.get("purchase_receipts"):
 			if frappe.db.get_value("Purchase Receipt", d.purchase_receipt, "docstatus") != 1:
 				frappe.throw(_("Purchase Receipt must be submitted"))
 			else:
 				purchase_receipts.append(d.purchase_receipt)
 
-		for item in self.get("landed_cost_items"):
+		for item in self.get("items"):
 			if not item.purchase_receipt:
 				frappe.throw(_("Item must be added using 'Get Items from Purchase Receipts' button"))
 			elif item.purchase_receipt not in purchase_receipts:
@@ -66,12 +66,12 @@
 					.format(item.idx, item.purchase_receipt))
 
 	def set_total_taxes_and_charges(self):
-		self.total_taxes_and_charges = sum([flt(d.amount) for d in self.get("landed_cost_taxes_and_charges")])
+		self.total_taxes_and_charges = sum([flt(d.amount) for d in self.get("taxes")])
 
 	def set_applicable_charges_for_item(self):
-		total_item_cost = sum([flt(d.amount) for d in self.get("landed_cost_items")])
+		total_item_cost = sum([flt(d.amount) for d in self.get("items")])
 
-		for item in self.get("landed_cost_items"):
+		for item in self.get("items"):
 			item.applicable_charges = flt(item.amount) *  flt(self.total_taxes_and_charges) / flt(total_item_cost)
 
 	def on_submit(self):
@@ -81,7 +81,7 @@
 		self.update_landed_cost()
 
 	def update_landed_cost(self):
-		purchase_receipts = list(set([d.purchase_receipt for d in self.get("landed_cost_items")]))
+		purchase_receipts = list(set([d.purchase_receipt for d in self.get("items")]))
 		for purchase_receipt in purchase_receipts:
 			pr = frappe.get_doc("Purchase Receipt", purchase_receipt)
 
@@ -89,7 +89,7 @@
 			pr.set_landed_cost_voucher_amount()
 
 			# set valuation amount in pr item
-			pr.update_valuation_rate("purchase_receipt_details")
+			pr.update_valuation_rate("items")
 
 			# save will update landed_cost_voucher_amount and voucher_amount in PR,
 			# as those fields are ellowed to edit after submit
diff --git a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
index d84d63c..4b0e23c 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
@@ -34,8 +34,8 @@
 
 		self.assertTrue(gl_entries)
 
-		stock_in_hand_account = pr.get("purchase_receipt_details")[0].warehouse
-		fixed_asset_account = pr.get("purchase_receipt_details")[1].warehouse
+		stock_in_hand_account = pr.get("items")[0].warehouse
+		fixed_asset_account = pr.get("items")[1].warehouse
 
 
 		expected_values = {
@@ -56,8 +56,8 @@
 		frappe.db.sql("delete from `tabSerial No` where name in ('SN001', 'SN002', 'SN003', 'SN004', 'SN005')")
 
 		pr = frappe.copy_doc(pr_test_records[0])
-		pr.purchase_receipt_details[0].item_code = "_Test Serialized Item"
-		pr.purchase_receipt_details[0].serial_no = "SN001\nSN002\nSN003\nSN004\nSN005"
+		pr.items[0].item_code = "_Test Serialized Item"
+		pr.items[0].serial_no = "SN001\nSN002\nSN003\nSN004\nSN005"
 		pr.submit()
 
 		serial_no_rate = frappe.db.get_value("Serial No", "SN001", "purchase_rate")
@@ -76,13 +76,13 @@
 	def submit_landed_cost_voucher(self, pr):
 		lcv = frappe.new_doc("Landed Cost Voucher")
 		lcv.company = "_Test Company"
-		lcv.set("landed_cost_purchase_receipts", [{
+		lcv.set("purchase_receipts", [{
 			"purchase_receipt": pr.name,
 			"supplier": pr.supplier,
 			"posting_date": pr.posting_date,
 			"grand_total": pr.grand_total
 		}])
-		lcv.set("landed_cost_taxes_and_charges", [{
+		lcv.set("taxes", [{
 			"description": "Insurance Charges",
 			"account": "_Test Account Insurance Charges - _TC",
 			"amount": 50.0
diff --git a/erpnext/stock/doctype/landed_cost_voucher/test_records.json b/erpnext/stock/doctype/landed_cost_voucher/test_records.json
new file mode 100644
index 0000000..4fc0017
--- /dev/null
+++ b/erpnext/stock/doctype/landed_cost_voucher/test_records.json
@@ -0,0 +1,6 @@
+[
+	{
+		"doctype": "Landed Cost Voucher",
+		"name": "_Test Landed Cost Voucher 1"
+	}
+]
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index 54c1d8f..13df2e4 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -2,7 +2,7 @@
 // License: GNU General Public License v3. See license.txt
 
 cur_frm.cscript.tname = "Material Request Item";
-cur_frm.cscript.fname = "indent_details";
+cur_frm.cscript.fname = "items";
 
 {% include 'buying/doctype/purchase_common/purchase_common.js' %};
 
@@ -88,12 +88,12 @@
 	schedule_date: function(doc, cdt, cdn) {
 		var val = locals[cdt][cdn].schedule_date;
 		if(val) {
-			$.each((doc.indent_details || []), function(i, d) {
+			$.each((doc.items || []), function(i, d) {
 				if(!d.schedule_date) {
 					d.schedule_date = val;
 				}
 			});
-			refresh_field("indent_details");
+			refresh_field("items");
 		}
 	},
 
@@ -117,7 +117,7 @@
 				args: values,
 				callback: function(r) {
 					$.each(r.message, function(i, item) {
-						var d = frappe.model.add_child(cur_frm.doc, "Material Request Item", "indent_details");
+						var d = frappe.model.add_child(cur_frm.doc, "Material Request Item", "items");
 						d.item_code = item.item_code;
 						d.description = item.description;
 						d.warehouse = item.default_warehouse;
@@ -125,7 +125,7 @@
 						d.qty = item.qty;
 					});
 					d.hide();
-					refresh_field("indent_details");
+					refresh_field("items");
 				}
 			});
 		});
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index d43d027..d5e6c8f 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -14,22 +14,22 @@
 from erpnext.controllers.buying_controller import BuyingController
 
 form_grid_templates = {
-	"indent_details": "templates/form_grid/material_request_grid.html"
+	"items": "templates/form_grid/material_request_grid.html"
 }
 
 class MaterialRequest(BuyingController):
 	tname = 'Material Request Item'
-	fname = 'indent_details'
+	fname = 'items'
 
 	def get_feed(self):
 		return _("{0}: {1}").format(self.status, self.material_request_type)
 
 	def check_if_already_pulled(self):
-		pass#if self.[d.sales_order_no for d in self.get('indent_details')]
+		pass#if self.[d.sales_order_no for d in self.get('items')]
 
 	def validate_qty_against_so(self):
 		so_items = {} # Format --> {'SO/00001': {'Item/001': 120, 'Item/002': 24}}
-		for d in self.get('indent_details'):
+		for d in self.get('items'):
 			if d.sales_order_no:
 				if not so_items.has_key(d.sales_order_no):
 					so_items[d.sales_order_no] = {d.item_code: flt(d.qty)}
@@ -55,7 +55,7 @@
 					frappe.throw(_("Material Request of maximum {0} can be made for Item {1} against Sales Order {2}").format(actual_so_qty - already_indented, item, so_no))
 
 	def validate_schedule_date(self):
-		for d in self.get('indent_details'):
+		for d in self.get('items'):
 			if d.schedule_date and d.schedule_date < self.transaction_date:
 				frappe.throw(_("Expected Date cannot be before Material Request Date"))
 
@@ -115,7 +115,7 @@
 		if self.material_request_type == "Purchase":
 			return
 
-		item_doclist = self.get("indent_details")
+		item_doclist = self.get("items")
 
 		if not mr_items:
 			mr_items = [d.name for d in item_doclist]
@@ -155,7 +155,7 @@
 			bin_doc.save()
 
 		item_wh_list = []
-		for d in self.get("indent_details"):
+		for d in self.get("items"):
 			if (not mr_item_rows or d.name in mr_item_rows) and [d.item_code, d.warehouse] not in item_wh_list \
 					and frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes" and d.warehouse:
 				item_wh_list.append([d.item_code, d.warehouse])
@@ -167,7 +167,7 @@
 	if stock_entry.doctype == "Stock Entry":
 		material_request_map = {}
 
-		for d in stock_entry.get("mtn_details"):
+		for d in stock_entry.get("items"):
 			if d.material_request:
 				material_request_map.setdefault(d.material_request, []).append(d.material_request_item)
 
@@ -221,14 +221,14 @@
 		if isinstance(target_doc, basestring):
 			import json
 			target_doc = frappe.get_doc(json.loads(target_doc))
-		target_doc.set("po_details", [])
+		target_doc.set("items", [])
 
 	material_requests, supplier_items = get_material_requests_based_on_supplier(source_name)
 
 	def postprocess(source, target_doc):
 		target_doc.supplier = source_name
 		set_missing_values(source, target_doc)
-		target_doc.set("po_details", [d for d in target_doc.get("po_details")
+		target_doc.set("items", [d for d in target_doc.get("items")
 			if d.get("item_code") in supplier_items and d.get("qty") > 0])
 
 		return target_doc
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 48eed27..6fe73fc 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -25,7 +25,7 @@
 		po = make_purchase_order(mr.name)
 
 		self.assertEquals(po.doctype, "Purchase Order")
-		self.assertEquals(len(po.get("po_details")), len(mr.get("indent_details")))
+		self.assertEquals(len(po.get("items")), len(mr.get("items")))
 
 	def test_make_supplier_quotation(self):
 		from erpnext.stock.doctype.material_request.material_request import make_supplier_quotation
@@ -39,7 +39,7 @@
 		sq = make_supplier_quotation(mr.name)
 
 		self.assertEquals(sq.doctype, "Supplier Quotation")
-		self.assertEquals(len(sq.get("quotation_items")), len(mr.get("indent_details")))
+		self.assertEquals(len(sq.get("items")), len(mr.get("items")))
 
 
 	def test_make_stock_entry(self):
@@ -56,7 +56,7 @@
 		se = make_stock_entry(mr.name)
 
 		self.assertEquals(se.doctype, "Stock Entry")
-		self.assertEquals(len(se.get("mtn_details")), len(mr.get("indent_details")))
+		self.assertEquals(len(se.get("items")), len(mr.get("items")))
 
 	def _insert_stock_entry(self, qty1, qty2, warehouse = None ):
 		se = frappe.get_doc({
@@ -66,12 +66,12 @@
 				"posting_time": "00:00:00",
 				"purpose": "Material Receipt",
 				"fiscal_year": "_Test Fiscal Year 2013",
-				"mtn_details": [
+				"items": [
 					{
 						"conversion_factor": 1.0,
 						"doctype": "Stock Entry Detail",
 						"item_code": "_Test Item Home Desktop 100",
-						"parentfield": "mtn_details",
+						"parentfield": "items",
 						"incoming_rate": 100,
 						"qty": qty1,
 						"stock_uom": "_Test UOM 1",
@@ -83,7 +83,7 @@
 						"conversion_factor": 1.0,
 						"doctype": "Stock Entry Detail",
 						"item_code": "_Test Item Home Desktop 200",
-						"parentfield": "mtn_details",
+						"parentfield": "items",
 						"incoming_rate": 100,
 						"qty": qty2,
 						"stock_uom": "_Test UOM 1",
@@ -107,18 +107,18 @@
 
 		# check if per complete is None
 		self.assertEquals(mr.per_ordered, None)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 0)
 
 		# map a purchase order
 		from erpnext.stock.doctype.material_request.material_request import make_purchase_order
 		po_doc = make_purchase_order(mr.name)
 		po_doc.supplier = "_Test Supplier"
 		po_doc.transaction_date = "2013-07-07"
-		po_doc.get("po_details")[0].qty = 27.0
-		po_doc.get("po_details")[1].qty = 1.5
-		po_doc.get("po_details")[0].schedule_date = "2013-07-09"
-		po_doc.get("po_details")[1].schedule_date = "2013-07-09"
+		po_doc.get("items")[0].qty = 27.0
+		po_doc.get("items")[1].qty = 1.5
+		po_doc.get("items")[0].schedule_date = "2013-07-09"
+		po_doc.get("items")[1].schedule_date = "2013-07-09"
 
 
 		# check for stopped status of Material Request
@@ -140,8 +140,8 @@
 		# check if per complete is as expected
 		mr.load_from_db()
 		self.assertEquals(mr.per_ordered, 50)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 27.0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 1.5)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 27.0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 1.5)
 
 		current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
 		current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
@@ -153,8 +153,8 @@
 		# check if per complete is as expected
 		mr.load_from_db()
 		self.assertEquals(mr.per_ordered, None)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, None)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, None)
+		self.assertEquals(mr.get("items")[0].ordered_qty, None)
+		self.assertEquals(mr.get("items")[1].ordered_qty, None)
 
 		current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
 		current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
@@ -174,8 +174,8 @@
 
 		# check if per complete is None
 		self.assertEquals(mr.per_ordered, None)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 0)
 
 		current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
 		current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
@@ -192,13 +192,13 @@
 			"posting_time": "01:00",
 			"fiscal_year": "_Test Fiscal Year 2013",
 		})
-		se_doc.get("mtn_details")[0].update({
+		se_doc.get("items")[0].update({
 			"qty": 27.0,
 			"transfer_qty": 27.0,
 			"s_warehouse": "_Test Warehouse 1 - _TC",
 			"incoming_rate": 1.0
 		})
-		se_doc.get("mtn_details")[1].update({
+		se_doc.get("items")[1].update({
 			"qty": 1.5,
 			"transfer_qty": 1.5,
 			"s_warehouse": "_Test Warehouse 1 - _TC",
@@ -229,8 +229,8 @@
 		# check if per complete is as expected
 		mr.load_from_db()
 		self.assertEquals(mr.per_ordered, 50)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 27.0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 1.5)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 27.0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 1.5)
 
 		current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
 		current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
@@ -242,8 +242,8 @@
 		se.cancel()
 		mr.load_from_db()
 		self.assertEquals(mr.per_ordered, 0)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 0)
 
 		current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
 		current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
@@ -263,8 +263,8 @@
 
 		# check if per complete is None
 		self.assertEquals(mr.per_ordered, None)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 0)
 
 		# map a stock entry
 		from erpnext.stock.doctype.material_request.material_request import make_stock_entry
@@ -275,13 +275,13 @@
 			"posting_time": "00:00",
 			"fiscal_year": "_Test Fiscal Year 2013",
 		})
-		se_doc.get("mtn_details")[0].update({
+		se_doc.get("items")[0].update({
 			"qty": 60.0,
 			"transfer_qty": 60.0,
 			"s_warehouse": "_Test Warehouse 1 - _TC",
 			"incoming_rate": 1.0
 		})
-		se_doc.get("mtn_details")[1].update({
+		se_doc.get("items")[1].update({
 			"qty": 3.0,
 			"transfer_qty": 3.0,
 			"s_warehouse": "_Test Warehouse 1 - _TC",
@@ -307,8 +307,8 @@
 		mr.load_from_db()
 
 		self.assertEquals(mr.per_ordered, 100)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 60.0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 3.0)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 60.0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 3.0)
 
 		current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
 		current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
@@ -320,8 +320,8 @@
 		se.cancel()
 		mr.load_from_db()
 		self.assertEquals(mr.per_ordered, 0)
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 0)
 
 		current_requested_qty_item1 = self._get_requested_qty("_Test Item Home Desktop 100", "_Test Warehouse - _TC")
 		current_requested_qty_item2 = self._get_requested_qty("_Test Item Home Desktop 200", "_Test Warehouse - _TC")
@@ -345,14 +345,14 @@
 			"posting_time": "00:00",
 			"fiscal_year": "_Test Fiscal Year 2013",
 		})
-		se_doc.get("mtn_details")[0].update({
+		se_doc.get("items")[0].update({
 			"qty": 60.0,
 			"transfer_qty": 60.0,
 			"s_warehouse": "_Test Warehouse - _TC",
 			"t_warehouse": "_Test Warehouse 1 - _TC",
 			"incoming_rate": 1.0
 		})
-		se_doc.get("mtn_details")[1].update({
+		se_doc.get("items")[1].update({
 			"qty": 3.0,
 			"transfer_qty": 3.0,
 			"s_warehouse": "_Test Warehouse 1 - _TC",
@@ -372,7 +372,7 @@
 		# map a stock entry
 		from erpnext.stock.doctype.material_request.material_request import make_stock_entry
 		se_doc = make_stock_entry(mr.name)
-		self.assertEquals(se_doc.get("mtn_details")[0].s_warehouse, "_Test Warehouse - _TC")
+		self.assertEquals(se_doc.get("items")[0].s_warehouse, "_Test Warehouse - _TC")
 
 	def test_warehouse_company_validation(self):
 		from erpnext.stock.utils import InvalidWarehouseCompany
@@ -397,7 +397,7 @@
 		se = make_stock_entry(mr.name)
 
 		self.assertEquals(se.doctype, "Stock Entry")
-		self.assertEquals(len(se.get("mtn_details")), len(mr.get("indent_details")))
+		self.assertEquals(len(se.get("items")), len(mr.get("items")))
 
 	def test_completed_qty_for_issue(self):
 		def _get_requested_qty():
@@ -422,14 +422,14 @@
 
 		se_doc = make_stock_entry(mr.name)
 		se_doc.fiscal_year = "_Test Fiscal Year 2014"
-		se_doc.get("mtn_details")[0].qty = 60.0
+		se_doc.get("items")[0].qty = 60.0
 		se_doc.insert()
 		se_doc.submit()
 
 		# check if per complete is as expected
 		mr.load_from_db()
-		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 60.0)
-		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 3.0)
+		self.assertEquals(mr.get("items")[0].ordered_qty, 60.0)
+		self.assertEquals(mr.get("items")[1].ordered_qty, 3.0)
 
 		#testing bin requested qty after issuing stock against material request
 		self.assertEquals(_get_requested_qty(), existing_requested_qty)
diff --git a/erpnext/stock/doctype/material_request/test_records.json b/erpnext/stock/doctype/material_request/test_records.json
index 0337ac2..152d144 100644
--- a/erpnext/stock/doctype/material_request/test_records.json
+++ b/erpnext/stock/doctype/material_request/test_records.json
@@ -3,13 +3,13 @@
   "company": "_Test Company", 
   "doctype": "Material Request", 
   "fiscal_year": "_Test Fiscal Year 2013", 
-  "indent_details": [
+  "items": [
    {
     "description": "_Test Item Home Desktop 100", 
     "doctype": "Material Request Item", 
     "item_code": "_Test Item Home Desktop 100", 
     "item_name": "_Test Item Home Desktop 100", 
-    "parentfield": "indent_details", 
+    "parentfield": "items", 
     "qty": 54.0, 
     "schedule_date": "2013-02-18", 
     "uom": "_Test UOM 1", 
@@ -20,7 +20,7 @@
     "doctype": "Material Request Item", 
     "item_code": "_Test Item Home Desktop 200", 
     "item_name": "_Test Item Home Desktop 200", 
-    "parentfield": "indent_details", 
+    "parentfield": "items", 
     "qty": 3.0, 
     "schedule_date": "2013-02-19", 
     "uom": "_Test UOM 1", 
diff --git a/erpnext/stock/doctype/packed_item/packed_item.py b/erpnext/stock/doctype/packed_item/packed_item.py
index 9263907..4db77e0 100644
--- a/erpnext/stock/doctype/packed_item/packed_item.py
+++ b/erpnext/stock/doctype/packed_item/packed_item.py
@@ -33,13 +33,13 @@
 
 	# check if exists
 	exists = 0
-	for d in obj.get("packing_details"):
+	for d in obj.get("packed_items"):
 		if d.parent_item == line.item_code and d.item_code == packing_item_code and d.parent_detail_docname == line.name:
 			pi, exists = d, 1
 			break
 
 	if not exists:
-		pi = obj.append('packing_details', {})
+		pi = obj.append('packed_items', {})
 
 	pi.parent_item = line.item_code
 	pi.item_code = packing_item_code
@@ -80,7 +80,7 @@
 def cleanup_packing_list(obj, parent_items):
 	"""Remove all those child items which are no longer present in main item table"""
 	delete_list = []
-	for d in obj.get("packing_details"):
+	for d in obj.get("packed_items"):
 		if [d.parent_item, d.parent_detail_docname] not in parent_items:
 			# mark for deletion from doclist
 			delete_list.append(d)
@@ -88,8 +88,8 @@
 	if not delete_list:
 		return obj
 
-	packing_details = obj.get("packing_details")
-	obj.set("packing_details", [])
-	for d in packing_details:
+	packed_items = obj.get("packed_items")
+	obj.set("packed_items", [])
+	for d in packed_items:
 		if d not in delete_list:
-			obj.append("packing_details", d)
+			obj.append("packed_items", d)
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.js b/erpnext/stock/doctype/packing_slip/packing_slip.js
index 9788290..ff02e84 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.js
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.js
@@ -8,7 +8,7 @@
 }
 
 
-cur_frm.fields_dict['item_details'].grid.get_field('item_code').get_query =
+cur_frm.fields_dict['items'].grid.get_field('item_code').get_query =
 		function(doc, cdt, cdn) {
 			return {
 				query: "erpnext.stock.doctype.packing_slip.packing_slip.item_details",
@@ -59,7 +59,7 @@
 
 cur_frm.cscript.validate_calculate_item_details = function(doc) {
 	doc = locals[doc.doctype][doc.name];
-	var ps_detail = doc.item_details || [];
+	var ps_detail = doc.items || [];
 
 	cur_frm.cscript.validate_duplicate_items(doc, ps_detail);
 	cur_frm.cscript.calc_net_total_pkg(doc, ps_detail);
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/erpnext/stock/doctype/packing_slip/packing_slip.py
index bd79835..7385aae 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.py
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+items# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
@@ -35,7 +35,7 @@
 			frappe.throw(_("Delivery Note {0} must not be submitted").format(self.delivery_note))
 
 	def validate_items_mandatory(self):
-		rows = [d.item_code for d in self.get("item_details")]
+		rows = [d.item_code for d in self.get("items")]
 		if not rows:
 			frappe.msgprint(_("No Items to pack"), raise_exception=1)
 
@@ -86,7 +86,7 @@
 			* No. of Cases of this packing slip
 		"""
 
-		rows = [d.item_code for d in self.get("item_details")]
+		rows = [d.item_code for d in self.get("items")]
 
 		condition = ""
 		if rows:
@@ -104,7 +104,7 @@
 			group by item_code""" % ("%s", condition),
 			tuple([self.delivery_note] + rows), as_dict=1)
 
-		ps_item_qty = dict([[d.item_code, d.qty] for d in self.get("item_details")])
+		ps_item_qty = dict([[d.item_code, d.qty] for d in self.get("items")])
 		no_of_cases = cint(self.to_case_no) - cint(self.from_case_no) + 1
 
 		return res, ps_item_qty, no_of_cases
@@ -127,7 +127,7 @@
 		if not self.from_case_no:
 			self.from_case_no = self.get_recommended_case_no()
 
-		for d in self.get("item_details"):
+		for d in self.get("items"):
 			res = frappe.db.get_value("Item", d.item_code,
 				["net_weight", "weight_uom"], as_dict=True)
 
@@ -146,12 +146,12 @@
 		return cint(recommended_case_no[0][0]) + 1
 
 	def get_items(self):
-		self.set("item_details", [])
+		self.set("items", [])
 
 		dn_details = self.get_details_for_packing()[0]
 		for item in dn_details:
 			if flt(item.qty) > flt(item.packed_qty):
-				ch = self.append('item_details', {})
+				ch = self.append('items', {})
 				ch.item_code = item.item_code
 				ch.item_name = item.item_name
 				ch.stock_uom = item.stock_uom
diff --git a/erpnext/stock/doctype/price_list/price_list.py b/erpnext/stock/doctype/price_list/price_list.py
index a4ff250..5f46869 100644
--- a/erpnext/stock/doctype/price_list/price_list.py
+++ b/erpnext/stock/doctype/price_list/price_list.py
@@ -15,11 +15,11 @@
 
 		try:
 			# at least one territory
-			self.validate_table_has_rows("valid_for_territories")
+			self.validate_table_has_rows("territories")
 		except frappe.EmptyTableError:
 			# if no territory, set default territory
 			if frappe.defaults.get_user_default("territory"):
-				self.append("valid_for_territories", {
+				self.append("territories", {
 					"doctype": "Applicable Territory",
 					"territory": frappe.defaults.get_user_default("territory")
 				})
diff --git a/erpnext/stock/doctype/price_list/test_records.json b/erpnext/stock/doctype/price_list/test_records.json
index 86d650c..d91f887 100644
--- a/erpnext/stock/doctype/price_list/test_records.json
+++ b/erpnext/stock/doctype/price_list/test_records.json
@@ -6,10 +6,10 @@
   "enabled": 1, 
   "price_list_name": "_Test Price List", 
   "selling": 1, 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "All Territories"
    }
   ]
@@ -21,10 +21,10 @@
   "enabled": 1, 
   "price_list_name": "_Test Price List 2", 
   "selling": 1, 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory Rest Of The World"
    }
   ]
@@ -36,10 +36,10 @@
   "enabled": 1, 
   "price_list_name": "_Test Price List India", 
   "selling": 1, 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory India"
    }
   ]
@@ -51,15 +51,15 @@
   "enabled": 1, 
   "price_list_name": "_Test Price List Rest of the World", 
   "selling": 1, 
-  "valid_for_territories": [
+  "territories": [
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory Rest Of The World"
    }, 
    {
     "doctype": "Applicable Territory", 
-    "parentfield": "valid_for_territories", 
+    "parentfield": "territories", 
     "territory": "_Test Territory United States"
    }
   ]
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index fc2d1b3..616f66a 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -2,8 +2,8 @@
 // License: GNU General Public License v3. See license.txt
 
 cur_frm.cscript.tname = "Purchase Receipt Item";
-cur_frm.cscript.fname = "purchase_receipt_details";
-cur_frm.cscript.other_fname = "other_charges";
+cur_frm.cscript.fname = "items";
+cur_frm.cscript.other_fname = "taxes";
 
 {% include 'buying/doctype/purchase_common/purchase_common.js' %};
 {% include 'accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js' %}
@@ -119,7 +119,7 @@
 	loaddoc('Contact', tn);
 }
 
-cur_frm.fields_dict['purchase_receipt_details'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) {
 	return {
 		filters: [
 			['Project', 'status', 'not in', 'Completed, Cancelled']
@@ -127,7 +127,7 @@
 	}
 }
 
-cur_frm.fields_dict['purchase_receipt_details'].grid.get_field('batch_no').get_query= function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('batch_no').get_query= function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	if(d.item_code) {
 		return {
@@ -153,7 +153,7 @@
 	}
 }
 
-cur_frm.fields_dict.purchase_receipt_details.grid.get_field("qa_no").get_query = function(doc) {
+cur_frm.fields_dict.items.grid.get_field("qa_no").get_query = function(doc) {
 	return {
 		filters: {
 			'docstatus': 1
@@ -161,7 +161,7 @@
 	}
 }
 
-cur_frm.fields_dict['purchase_receipt_details'].grid.get_field('bom').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('bom').get_query = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn]
 	return {
 		filters: [
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index f38ee5d..7013cee 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -12,12 +12,12 @@
 from erpnext.controllers.buying_controller import BuyingController
 
 form_grid_templates = {
-	"purchase_receipt_details": "templates/form_grid/item_grid.html"
+	"items": "templates/form_grid/item_grid.html"
 }
 
 class PurchaseReceipt(BuyingController):
 	tname = 'Purchase Receipt Item'
-	fname = 'purchase_receipt_details'
+	fname = 'items'
 
 	def __init__(self, arg1, arg2=None):
 		super(PurchaseReceipt, self).__init__(arg1, arg2)
@@ -38,7 +38,7 @@
 		billed_qty = frappe.db.sql("""select sum(ifnull(qty, 0)) from `tabPurchase Invoice Item`
 			where purchase_receipt=%s and docstatus=1""", self.name)
 		if billed_qty:
-			total_qty = sum((item.qty for item in self.get("purchase_receipt_details")))
+			total_qty = sum((item.qty for item in self.get("items")))
 			self.get("__onload").billing_complete = (billed_qty[0][0] == total_qty)
 
 	def validate(self):
@@ -65,19 +65,19 @@
 
 		# sub-contracting
 		self.validate_for_subcontracting()
-		self.create_raw_materials_supplied("pr_raw_material_details")
+		self.create_raw_materials_supplied("supplied_items")
 		self.set_landed_cost_voucher_amount()
-		self.update_valuation_rate("purchase_receipt_details")
+		self.update_valuation_rate("items")
 
 	def set_landed_cost_voucher_amount(self):
-		for d in self.get("purchase_receipt_details"):
+		for d in self.get("items"):
 			lc_voucher_amount = frappe.db.sql("""select sum(ifnull(applicable_charges, 0))
 				from `tabLanded Cost Item`
 				where docstatus = 1 and purchase_receipt_item = %s""", d.name)
 			d.landed_cost_voucher_amount = lc_voucher_amount[0][0] if lc_voucher_amount else 0.0
 
 	def validate_rejected_warehouse(self):
-		for d in self.get("purchase_receipt_details"):
+		for d in self.get("items"):
 			if flt(d.rejected_qty) and not d.rejected_warehouse:
 				d.rejected_warehouse = self.rejected_warehouse
 				if not d.rejected_warehouse:
@@ -85,7 +85,7 @@
 
 	# validate accepted and rejected qty
 	def validate_accepted_rejected_qty(self):
-		for d in self.get("purchase_receipt_details"):
+		for d in self.get("items"):
 			if not flt(d.received_qty) and flt(d.qty):
 				d.received_qty = flt(d.qty) - flt(d.rejected_qty)
 
@@ -125,7 +125,7 @@
 
 	def po_required(self):
 		if frappe.db.get_value("Buying Settings", None, "po_required") == 'Yes':
-			 for d in self.get('purchase_receipt_details'):
+			 for d in self.get('items'):
 				 if not d.prevdoc_docname:
 					 frappe.throw(_("Purchase Order number required for Item {0}").format(d.item_code))
 
@@ -133,7 +133,7 @@
 		sl_entries = []
 		stock_items = self.get_stock_items()
 
-		for d in self.get('purchase_receipt_details'):
+		for d in self.get('items'):
 			if d.item_code in stock_items and d.warehouse:
 				pr_qty = flt(d.qty) * flt(d.conversion_factor)
 
@@ -157,7 +157,7 @@
 
 	def update_ordered_qty(self):
 		po_map = {}
-		for d in self.get("purchase_receipt_details"):
+		for d in self.get("items"):
 			if d.prevdoc_doctype and d.prevdoc_doctype == "Purchase Order" and d.prevdoc_detail_docname:
 				po_map.setdefault(d.prevdoc_docname, []).append(d.prevdoc_detail_docname)
 
@@ -183,7 +183,7 @@
 		return po_qty, po_warehouse
 
 	def bk_flush_supp_wh(self, sl_entries):
-		for d in self.get('pr_raw_material_details'):
+		for d in self.get('supplied_items'):
 			# negative quantity is passed as raw material qty has to be decreased
 			# when PR is submitted and it has to be increased when PR is cancelled
 			sl_entries.append(self.get_sl_entries(d, {
@@ -194,7 +194,7 @@
 			}))
 
 	def validate_inspection(self):
-		for d in self.get('purchase_receipt_details'):		 #Enter inspection date for all items that require inspection
+		for d in self.get('items'):		 #Enter inspection date for all items that require inspection
 			ins_reqd = frappe.db.sql("select inspection_required from `tabItem` where name = %s",
 				(d.item_code,), as_dict = 1)
 			ins_reqd = ins_reqd and ins_reqd[0]['inspection_required'] or 'No'
@@ -204,7 +204,7 @@
 	# Check for Stopped status
 	def check_for_stopped_status(self, pc_obj):
 		check_list =[]
-		for d in self.get('purchase_receipt_details'):
+		for d in self.get('items'):
 			if d.meta.get_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
 				check_list.append(d.prevdoc_docname)
 				pc_obj.check_for_stopped_status( d.prevdoc_doctype, d.prevdoc_docname)
@@ -226,7 +226,7 @@
 		self.update_stock_ledger()
 
 		from erpnext.stock.doctype.serial_no.serial_no import update_serial_nos_after_submit
-		update_serial_nos_after_submit(self, "purchase_receipt_details")
+		update_serial_nos_after_submit(self, "items")
 
 		purchase_controller.update_last_purchase_rate(self, 1)
 
@@ -266,7 +266,7 @@
 		self.make_gl_entries_on_cancel()
 
 	def get_current_stock(self):
-		for d in self.get('pr_raw_material_details'):
+		for d in self.get('supplied_items'):
 			if self.supplier_warehouse:
 				bin = frappe.db.sql("select actual_qty from `tabBin` where item_code = %s and warehouse = %s", (d.rm_item_code, self.supplier_warehouse), as_dict = 1)
 				d.current_stock = bin and flt(bin[0]['actual_qty']) or 0
@@ -284,7 +284,7 @@
 		warehouse_with_no_account = []
 		negative_expense_to_be_booked = 0.0
 		stock_items = self.get_stock_items()
-		for d in self.get("purchase_receipt_details"):
+		for d in self.get("items"):
 			if d.item_code in stock_items and flt(d.valuation_rate) and flt(d.qty):
 				if warehouse_account.get(d.warehouse):
 
@@ -335,7 +335,7 @@
 
 		# Cost center-wise amount breakup for other charges included for valuation
 		valuation_tax = {}
-		for tax in self.get("other_charges"):
+		for tax in self.get("taxes"):
 			if tax.category in ("Valuation", "Valuation and Total") and flt(tax.tax_amount):
 				if not tax.cost_center:
 					frappe.throw(_("Cost Center is required in row {0} in Taxes table for type {1}").format(tax.idx, _(tax.category)))
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 1a6a375..fc40299 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -24,7 +24,7 @@
 		pi = make_purchase_invoice(pr.name)
 
 		self.assertEquals(pi.doctype, "Purchase Invoice")
-		self.assertEquals(len(pi.get("entries")), len(pr.get("purchase_receipt_details")))
+		self.assertEquals(len(pi.get("entries")), len(pr.get("items")))
 
 		# modify rate
 		pi.get("entries")[0].rate = 200
@@ -64,9 +64,9 @@
 		self.assertTrue(gl_entries)
 
 		stock_in_hand_account = frappe.db.get_value("Account",
-			{"warehouse": pr.get("purchase_receipt_details")[0].warehouse})
+			{"warehouse": pr.get("items")[0].warehouse})
 		fixed_asset_account = frappe.db.get_value("Account",
-			{"warehouse": pr.get("purchase_receipt_details")[1].warehouse})
+			{"warehouse": pr.get("items")[1].warehouse})
 
 		expected_values = {
 			stock_in_hand_account: [375.0, 0.0],
@@ -94,19 +94,19 @@
 		pr.run_method("calculate_taxes_and_totals")
 		pr.insert()
 
-		self.assertEquals(len(pr.get("pr_raw_material_details")), 2)
-		self.assertEquals(pr.get("purchase_receipt_details")[0].rm_supp_cost, 20750.0)
+		self.assertEquals(len(pr.get("supplied_items")), 2)
+		self.assertEquals(pr.get("items")[0].rm_supp_cost, 20750.0)
 
 
 	def test_serial_no_supplier(self):
 		pr = frappe.copy_doc(test_records[0])
-		pr.get("purchase_receipt_details")[0].item_code = "_Test Serialized Item With Series"
-		pr.get("purchase_receipt_details")[0].qty = 1
-		pr.get("purchase_receipt_details")[0].received_qty = 1
+		pr.get("items")[0].item_code = "_Test Serialized Item With Series"
+		pr.get("items")[0].qty = 1
+		pr.get("items")[0].received_qty = 1
 		pr.insert()
 		pr.submit()
 
-		self.assertEquals(frappe.db.get_value("Serial No", pr.get("purchase_receipt_details")[0].serial_no,
+		self.assertEquals(frappe.db.get_value("Serial No", pr.get("items")[0].serial_no,
 			"supplier"), pr.supplier)
 
 		return pr
@@ -115,30 +115,30 @@
 		pr = self.test_serial_no_supplier()
 		pr.cancel()
 
-		self.assertFalse(frappe.db.get_value("Serial No", pr.get("purchase_receipt_details")[0].serial_no,
+		self.assertFalse(frappe.db.get_value("Serial No", pr.get("items")[0].serial_no,
 			"warehouse"))
 
 	def test_rejected_serial_no(self):
 		pr = frappe.copy_doc(test_records[0])
-		pr.get("purchase_receipt_details")[0].item_code = "_Test Serialized Item With Series"
-		pr.get("purchase_receipt_details")[0].qty = 3
-		pr.get("purchase_receipt_details")[0].rejected_qty = 2
-		pr.get("purchase_receipt_details")[0].received_qty = 5
-		pr.get("purchase_receipt_details")[0].rejected_warehouse = "_Test Rejected Warehouse - _TC"
+		pr.get("items")[0].item_code = "_Test Serialized Item With Series"
+		pr.get("items")[0].qty = 3
+		pr.get("items")[0].rejected_qty = 2
+		pr.get("items")[0].received_qty = 5
+		pr.get("items")[0].rejected_warehouse = "_Test Rejected Warehouse - _TC"
 		pr.insert()
 		pr.submit()
 
-		accepted_serial_nos = pr.get("purchase_receipt_details")[0].serial_no.split("\n")
+		accepted_serial_nos = pr.get("items")[0].serial_no.split("\n")
 		self.assertEquals(len(accepted_serial_nos), 3)
 		for serial_no in accepted_serial_nos:
 			self.assertEquals(frappe.db.get_value("Serial No", serial_no, "warehouse"),
-				pr.get("purchase_receipt_details")[0].warehouse)
+				pr.get("items")[0].warehouse)
 
-		rejected_serial_nos = pr.get("purchase_receipt_details")[0].rejected_serial_no.split("\n")
+		rejected_serial_nos = pr.get("items")[0].rejected_serial_no.split("\n")
 		self.assertEquals(len(rejected_serial_nos), 2)
 		for serial_no in rejected_serial_nos:
 			self.assertEquals(frappe.db.get_value("Serial No", serial_no, "warehouse"),
-				pr.get("purchase_receipt_details")[0].rejected_warehouse)
+				pr.get("items")[0].rejected_warehouse)
 
 def get_gl_entries(voucher_type, voucher_no):
 	return frappe.db.sql("""select account, debit, credit
diff --git a/erpnext/stock/doctype/purchase_receipt/test_records.json b/erpnext/stock/doctype/purchase_receipt/test_records.json
index 4b9b3ae..47253ad 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_records.json
+++ b/erpnext/stock/doctype/purchase_receipt/test_records.json
@@ -9,7 +9,7 @@
   "grand_total": 720.0, 
   "naming_series": "_T-Purchase Receipt-", 
   "net_total": 500.0, 
-  "other_charges": [
+  "taxes": [
    {
     "account_head": "_Test Account Shipping Charges - _TC", 
     "add_deduct_tax": "Add", 
@@ -17,7 +17,7 @@
     "charge_type": "Actual", 
     "description": "Shipping Charges", 
     "doctype": "Purchase Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 100.0, 
     "tax_amount": 100.0,
 	"cost_center": "Main - _TC"
@@ -29,7 +29,7 @@
     "charge_type": "Actual", 
     "description": "VAT", 
     "doctype": "Purchase Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 120.0, 
     "tax_amount": 120.0,
 	"cost_center": "Main - _TC"
@@ -41,7 +41,7 @@
     "charge_type": "Actual", 
     "description": "Customs Duty", 
     "doctype": "Purchase Taxes and Charges", 
-    "parentfield": "other_charges", 
+    "parentfield": "taxes", 
     "rate": 150.0, 
     "tax_amount": 150.0,
 	"cost_center": "Main - _TC"
@@ -49,7 +49,7 @@
   ], 
   "posting_date": "2013-02-12", 
   "posting_time": "15:33:30", 
-  "purchase_receipt_details": [
+  "items": [
    {
     "base_amount": 250.0, 
     "conversion_factor": 1.0, 
@@ -57,7 +57,7 @@
     "doctype": "Purchase Receipt Item", 
     "item_code": "_Test Item", 
     "item_name": "_Test Item", 
-    "parentfield": "purchase_receipt_details", 
+    "parentfield": "items", 
     "qty": 5.0, 
     "rate": 50.0, 
     "received_qty": 5.0, 
@@ -74,7 +74,7 @@
     "doctype": "Purchase Receipt Item", 
     "item_code": "_Test Item", 
     "item_name": "_Test Item", 
-    "parentfield": "purchase_receipt_details", 
+    "parentfield": "items", 
     "qty": 5.0, 
     "rate": 50.0, 
     "received_qty": 5.0, 
@@ -99,7 +99,7 @@
   "net_total": 5000.0, 
   "posting_date": "2013-02-12", 
   "posting_time": "15:33:30", 
-  "purchase_receipt_details": [
+  "items": [
    {
     "base_amount": 5000.0, 
     "conversion_factor": 1.0, 
@@ -107,7 +107,7 @@
     "doctype": "Purchase Receipt Item", 
     "item_code": "_Test FG Item", 
     "item_name": "_Test FG Item", 
-    "parentfield": "purchase_receipt_details", 
+    "parentfield": "items", 
     "qty": 10.0, 
     "rate": 500.0, 
     "received_qty": 10.0, 
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index b5bd455..b513442 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -1,7 +1,7 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt
 
 cur_frm.cscript.tname = "Stock Entry Detail";
-cur_frm.cscript.fname = "mtn_details";
+cur_frm.cscript.fname = "items";
 
 frappe.require("assets/erpnext/js/controllers/stock_controller.js");
 frappe.require("assets/erpnext/js/utils.js");
@@ -24,7 +24,7 @@
 			};
 		};
 
-		this.frm.fields_dict.mtn_details.grid.get_field('item_code').get_query = function() {
+		this.frm.fields_dict.items.grid.get_field('item_code').get_query = function() {
 			if(in_list(["Sales Return", "Purchase Return"], me.frm.doc.purpose) &&
 				me.get_doctype_docname()) {
 					return {
@@ -43,7 +43,7 @@
 
 		if(cint(frappe.defaults.get_default("auto_accounting_for_stock"))) {
 			this.frm.add_fetch("company", "stock_adjustment_account", "expense_account");
-			this.frm.fields_dict.mtn_details.grid.get_field('expense_account').get_query =
+			this.frm.fields_dict.items.grid.get_field('expense_account').get_query =
 					function() {
 				return {
 					filters: {
@@ -108,7 +108,7 @@
 				},
 				callback: function(r) {
 					if (!r.exc) {
-						$.each(me.frm.doc.mtn_details || [], function(i, d) {
+						$.each(me.frm.doc.items || [], function(i, d) {
 							if(!d.expense_account) d.expense_account = r.message;
 						});
 					}
@@ -133,7 +133,7 @@
 				doc: this.frm.doc,
 				method: "get_items",
 				callback: function(r) {
-					if(!r.exc) refresh_field("mtn_details");
+					if(!r.exc) refresh_field("items");
 				}
 			});
 		}
@@ -142,7 +142,7 @@
 	qty: function(doc, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		d.transfer_qty = flt(d.qty) * flt(d.conversion_factor);
-		refresh_field('mtn_details');
+		refresh_field('items');
 	},
 
 	production_order: function() {
@@ -222,9 +222,9 @@
 		}
 	},
 
-	mtn_details_add: function(doc, cdt, cdn) {
+	items_add: function(doc, cdt, cdn) {
 		var row = frappe.get_doc(cdt, cdn);
-		this.frm.script_manager.copy_from_first_row("mtn_details", row,
+		this.frm.script_manager.copy_from_first_row("items", row,
 			["expense_account", "cost_center"]);
 
 		if(!row.s_warehouse) row.s_warehouse = this.frm.doc.from_warehouse;
@@ -249,8 +249,8 @@
 	},
 
 	set_warehouse_if_missing: function(fieldname, value, condition) {
-		for (var i=0, l=(this.frm.doc.mtn_details || []).length; i<l; i++) {
-			var row = this.frm.doc.mtn_details[i];
+		for (var i=0, l=(this.frm.doc.items || []).length; i<l; i++) {
+			var row = this.frm.doc.items[i];
 			if (!row[fieldname]) {
 				if (condition && !condition(row)) {
 					continue;
@@ -261,7 +261,7 @@
 		}
 	},
 
-	mtn_details_on_form_rendered: function(doc, grid_row) {
+	items_on_form_rendered: function(doc, grid_row) {
 		erpnext.setup_serial_no(grid_row)
 	},
 
@@ -336,8 +336,8 @@
 	cur_frm.toggle_enable("from_warehouse", !disable_from_warehouse);
 	cur_frm.toggle_enable("to_warehouse", !disable_to_warehouse);
 
-	cur_frm.fields_dict["mtn_details"].grid.set_column_disp("s_warehouse", !disable_from_warehouse);
-	cur_frm.fields_dict["mtn_details"].grid.set_column_disp("t_warehouse", !disable_to_warehouse);
+	cur_frm.fields_dict["items"].grid.set_column_disp("s_warehouse", !disable_from_warehouse);
+	cur_frm.fields_dict["items"].grid.set_column_disp("t_warehouse", !disable_to_warehouse);
 
 	cur_frm.cscript.toggle_enable_bom();
 
@@ -371,7 +371,7 @@
 }
 
 // Overloaded query for link batch_no
-cur_frm.fields_dict['mtn_details'].grid.get_field('batch_no').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('batch_no').get_query = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	if(d.item_code) {
 		return{
@@ -401,7 +401,7 @@
 			'company'		: cur_frm.doc.company
 		};
 		return get_server_fields('get_item_details', JSON.stringify(args),
-			'mtn_details', doc, cdt, cdn, 1);
+			'items', doc, cdt, cdn, 1);
 	}
 
 }
@@ -417,7 +417,7 @@
 			'qty'			: d.s_warehouse ? -1* d.qty : d.qty
 		}
 		return get_server_fields('get_warehouse_details', JSON.stringify(args),
-			'mtn_details', doc, cdt, cdn, 1);
+			'items', doc, cdt, cdn, 1);
 	}
 }
 
@@ -428,7 +428,7 @@
 	if(d.uom && d.item_code){
 		var arg = {'item_code':d.item_code, 'uom':d.uom, 'qty':d.qty}
 		return get_server_fields('get_uom_details', JSON.stringify(arg),
-			'mtn_details', doc, cdt, cdn, 1);
+			'items', doc, cdt, cdn, 1);
 	}
 }
 
@@ -439,7 +439,7 @@
 }
 
 cur_frm.cscript.validate_items = function(doc) {
-	cl = doc.mtn_details || [];
+	cl = doc.items || [];
 	if (!cl.length) {
 		msgprint(__("Item table can not be blank"));
 		validated = false;
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index cb21867..41c6f92 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -22,11 +22,11 @@
 from erpnext.controllers.stock_controller import StockController
 
 form_grid_templates = {
-	"mtn_details": "templates/form_grid/stock_entry_grid.html"
+	"items": "templates/form_grid/stock_entry_grid.html"
 }
 
 class StockEntry(StockController):
-	fname = 'mtn_details'
+	fname = 'items'
 
 	def get_feed(self):
 		return _("From {0} to {1}").format(self.from_warehouse, self.to_warehouse)
@@ -64,7 +64,7 @@
 		self.update_stock_ledger()
 
 		from erpnext.stock.doctype.serial_no.serial_no import update_serial_nos_after_submit
-		update_serial_nos_after_submit(self, "mtn_details")
+		update_serial_nos_after_submit(self, "items")
 		self.update_production_order()
 		self.make_gl_entries()
 
@@ -85,7 +85,7 @@
 			frappe.throw(_("Purpose must be one of {0}").format(comma_or(valid_purposes)))
 
 	def set_transfer_qty(self):
-		for item in self.get("mtn_details"):
+		for item in self.get("items"):
 			if not flt(item.qty):
 				frappe.throw(_("Row {0}: Qty is mandatory").format(item.idx))
 
@@ -94,7 +94,7 @@
 	def validate_item(self):
 		stock_items = self.get_stock_items()
 		serialized_items = self.get_serialized_items()
-		for item in self.get("mtn_details"):
+		for item in self.get("items"):
 			if item.item_code not in stock_items:
 				frappe.throw(_("{0} is not a stock Item").format(item.item_code))
 
@@ -121,18 +121,18 @@
 		source_mandatory = ["Material Issue", "Material Transfer", "Purchase Return"]
 		target_mandatory = ["Material Receipt", "Material Transfer", "Sales Return"]
 
-		validate_for_manufacture_repack = any([d.bom_no for d in self.get("mtn_details")])
+		validate_for_manufacture_repack = any([d.bom_no for d in self.get("items")])
 
 		if self.purpose in source_mandatory and self.purpose not in target_mandatory:
 			self.to_warehouse = None
-			for d in self.get('mtn_details'):
+			for d in self.get('items'):
 				d.t_warehouse = None
 		elif self.purpose in target_mandatory and self.purpose not in source_mandatory:
 			self.from_warehouse = None
-			for d in self.get('mtn_details'):
+			for d in self.get('items'):
 				d.s_warehouse = None
 
-		for d in self.get('mtn_details'):
+		for d in self.get('items'):
 			if not d.s_warehouse and not d.t_warehouse:
 				d.s_warehouse = self.from_warehouse
 				d.t_warehouse = self.to_warehouse
@@ -179,7 +179,7 @@
 	def check_if_operations_completed(self):
 		prod_order = frappe.get_doc("Production Order", self.production_order)
 		if prod_order.actual_operating_cost:
-			for d in prod_order.get("production_order_operations"):
+			for d in prod_order.get("operations"):
 				total_completed_qty = flt(self.fg_completed_qty) + flt(prod_order.produced_qty)
 				if total_completed_qty > flt(d.completed_qty):
 					frappe.throw(_("Row #{0}: Operation {1} is not completed for {2} qty of finished goods in Production Order # {3}. Please update operation status via Time Logs")
@@ -210,7 +210,7 @@
 	def validate_valuation_rate(self):
 		if self.purpose in ["Manufacture", "Repack"]:
 			valuation_at_source, valuation_at_target = 0, 0
-			for d in self.get("mtn_details"):
+			for d in self.get("items"):
 				if d.s_warehouse and not d.t_warehouse:
 					valuation_at_source += flt(d.amount)
 				if d.t_warehouse and not d.s_warehouse:
@@ -220,7 +220,7 @@
 				frappe.throw(_("Total valuation for manufactured or repacked item(s) can not be less than total valuation of raw materials"))
 
 	def set_total_amount(self):
-		self.total_amount = sum([flt(item.amount) for item in self.get("mtn_details")])
+		self.total_amount = sum([flt(item.amount) for item in self.get("items")])
 
 	def get_stock_and_rate(self, force=False):
 		"""get stock and incoming rate on posting date"""
@@ -232,7 +232,7 @@
 
 		allow_negative_stock = cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock"))
 
-		for d in self.get('mtn_details'):
+		for d in self.get('items'):
 			d.transfer_qty = flt(d.transfer_qty)
 
 			args = frappe._dict({
@@ -264,8 +264,8 @@
 
 		# set incoming rate for fg item
 		if self.purpose in ("Manufacture", "Repack"):
-			number_of_fg_items = len([t.t_warehouse for t in self.get("mtn_details") if t.t_warehouse])
-			for d in self.get("mtn_details"):
+			number_of_fg_items = len([t.t_warehouse for t in self.get("items") if t.t_warehouse])
+			for d in self.get("items"):
 				if d.bom_no or (d.t_warehouse and number_of_fg_items == 1):
 					if not flt(d.incoming_rate) or force:
 						operation_cost_per_unit = self.get_operation_cost_per_unit(d.bom_no, d.qty)
@@ -278,7 +278,7 @@
 
 		if self.production_order:
 			pro_order = frappe.get_doc("Production Order", self.production_order)
-			for d in pro_order.get("production_order_operations"):
+			for d in pro_order.get("operations"):
 				if flt(d.completed_qty):
 					operation_cost_per_unit += flt(d.actual_operating_cost) / flt(d.completed_qty)
 				else:
@@ -312,18 +312,18 @@
 		return incoming_rate
 
 	def validate_incoming_rate(self):
-		for d in self.get('mtn_details'):
+		for d in self.get('items'):
 			if d.t_warehouse:
 				self.validate_value("incoming_rate", ">", 0, d, raise_exception=IncorrectValuationRateError)
 
 	def validate_bom(self):
-		for d in self.get('mtn_details'):
+		for d in self.get('items'):
 			if d.bom_no:
 				validate_bom_no(d.item_code, d.bom_no)
 
 	def validate_finished_goods(self):
 		"""validation: finished good quantity should be same as manufacturing quantity"""
-		for d in self.get('mtn_details'):
+		for d in self.get('items'):
 			if d.bom_no and flt(d.transfer_qty) != flt(self.fg_completed_qty):
 				frappe.throw(_("Quantity in row {0} ({1}) must be same as manufactured quantity {2}").format(d.idx, d.transfer_qty, self.fg_completed_qty))
 
@@ -353,7 +353,7 @@
 			stock_items = get_stock_items_for_return(ref.doc, ref.parentfields)
 			already_returned_item_qty = self.get_already_returned_item_qty(ref.fieldname)
 
-			for item in self.get("mtn_details"):
+			for item in self.get("items"):
 				# validate if item exists in the ref doc and that it is a stock item
 				if item.item_code not in stock_items:
 					frappe.throw(_("Item {0} does not exist in {1} {2}").format(item.item_code, ref.doc.doctype, ref.doc.name),
@@ -379,7 +379,7 @@
 
 	def update_stock_ledger(self):
 		sl_entries = []
-		for d in self.get('mtn_details'):
+		for d in self.get('items'):
 			if cstr(d.s_warehouse) and self.docstatus == 1:
 				sl_entries.append(self.get_sl_entries(d, {
 					"warehouse": cstr(d.s_warehouse),
@@ -489,7 +489,7 @@
 		return ret
 
 	def get_items(self):
-		self.set('mtn_details', [])
+		self.set('items', [])
 		self.validate_production_order()
 
 		pro_obj = None
@@ -620,7 +620,7 @@
 			["default_expense_account", "cost_center"])[0]
 
 		for d in item_dict:
-			se_child = self.append('mtn_details')
+			se_child = self.append('items')
 			se_child.s_warehouse = item_dict[d].get("from_warehouse")
 			se_child.t_warehouse = item_dict[d].get("to_warehouse")
 			se_child.item_code = cstr(d)
@@ -645,7 +645,7 @@
 			se_child.bom_no = bom_no
 
 	def validate_with_material_request(self):
-		for item in self.get("mtn_details"):
+		for item in self.get("items"):
 			if item.material_request:
 				mreq_item = frappe.db.get_value("Material Request Item",
 					{"name": item.material_request_item, "parent": item.material_request},
@@ -798,11 +798,11 @@
 return_map = {
 	"Sales Return": {
 		# [Ref DocType, [Item tables' parentfields]]
-		"delivery_note_no": ["Delivery Note", ["delivery_note_details", "packing_details"]],
-		"sales_invoice_no": ["Sales Invoice", ["entries", "packing_details"]]
+		"delivery_note_no": ["Delivery Note", ["items", "packed_items"]],
+		"sales_invoice_no": ["Sales Invoice", ["entries", "packed_items"]]
 	},
 	"Purchase Return": {
-		"purchase_receipt_no": ["Purchase Receipt", ["purchase_receipt_details"]]
+		"purchase_receipt_no": ["Purchase Receipt", ["items"]]
 	}
 }
 
@@ -854,7 +854,7 @@
 
 	# income account entries
 	children = []
-	for se_item in se.get("mtn_details"):
+	for se_item in se.get("items"):
 		# find item in ref.doc
 		ref_item = ref.doc.get({"item_code": se_item.item_code})[0]
 
@@ -895,7 +895,7 @@
 	parent = {}
 	children = []
 
-	for se_item in se.get("mtn_details"):
+	for se_item in se.get("items"):
 		for sales_invoice in invoices_against_delivery:
 			si = frappe.get_doc("Sales Invoice", sales_invoice)
 
@@ -957,7 +957,7 @@
 	parent = {}
 	children = []
 
-	for se_item in se.get("mtn_details"):
+	for se_item in se.get("items"):
 		for purchase_invoice in invoice_against_receipt:
 			pi = frappe.get_doc("Purchase Invoice", purchase_invoice)
 			ref_item = pi.get({"item_code": se_item.item_code})
diff --git a/erpnext/stock/doctype/stock_entry/test_records.json b/erpnext/stock/doctype/stock_entry/test_records.json
index f743991..10df737 100644
--- a/erpnext/stock/doctype/stock_entry/test_records.json
+++ b/erpnext/stock/doctype/stock_entry/test_records.json
@@ -3,7 +3,7 @@
   "company": "_Test Company", 
   "doctype": "Stock Entry", 
   "fiscal_year": "_Test Fiscal Year 2013", 
-  "mtn_details": [
+  "items": [
    {
     "conversion_factor": 1.0, 
     "cost_center": "_Test Cost Center - _TC", 
@@ -11,7 +11,7 @@
     "expense_account": "Stock Adjustment - _TC", 
     "incoming_rate": 100,
     "item_code": "_Test Item", 
-    "parentfield": "mtn_details", 
+    "parentfield": "items", 
     "qty": 50.0, 
     "stock_uom": "_Test UOM", 
     "t_warehouse": "_Test Warehouse - _TC", 
@@ -27,7 +27,7 @@
   "company": "_Test Company", 
   "doctype": "Stock Entry", 
   "fiscal_year": "_Test Fiscal Year 2013", 
-  "mtn_details": [
+  "items": [
    {
     "conversion_factor": 1.0, 
     "cost_center": "_Test Cost Center - _TC", 
@@ -35,7 +35,7 @@
     "expense_account": "Stock Adjustment - _TC", 
     "incoming_rate": 100, 
     "item_code": "_Test Item", 
-    "parentfield": "mtn_details", 
+    "parentfield": "items", 
     "qty": 40.0, 
     "s_warehouse": "_Test Warehouse - _TC", 
     "stock_uom": "_Test UOM", 
@@ -51,7 +51,7 @@
   "company": "_Test Company", 
   "doctype": "Stock Entry", 
   "fiscal_year": "_Test Fiscal Year 2013", 
-  "mtn_details": [
+  "items": [
    {
     "conversion_factor": 1.0, 
     "cost_center": "_Test Cost Center - _TC", 
@@ -59,7 +59,7 @@
     "expense_account": "Stock Adjustment - _TC", 
     "incoming_rate": 100, 
     "item_code": "_Test Item", 
-    "parentfield": "mtn_details", 
+    "parentfield": "items", 
     "qty": 45.0, 
     "s_warehouse": "_Test Warehouse - _TC", 
     "stock_uom": "_Test UOM", 
@@ -76,7 +76,7 @@
   "company": "_Test Company", 
   "doctype": "Stock Entry", 
   "fiscal_year": "_Test Fiscal Year 2013", 
-  "mtn_details": [
+  "items": [
    {
     "conversion_factor": 1.0, 
     "cost_center": "_Test Cost Center - _TC", 
@@ -84,7 +84,7 @@
     "expense_account": "Stock Adjustment - _TC", 
     "incoming_rate": 100, 
     "item_code": "_Test Item", 
-    "parentfield": "mtn_details", 
+    "parentfield": "items", 
     "qty": 50.0, 
     "s_warehouse": "_Test Warehouse - _TC", 
     "stock_uom": "_Test UOM", 
@@ -98,7 +98,7 @@
     "expense_account": "Stock Adjustment - _TC", 
     "incoming_rate": 5000, 
     "item_code": "_Test Item Home Desktop 100", 
-    "parentfield": "mtn_details", 
+    "parentfield": "items", 
     "qty": 1, 
     "stock_uom": "_Test UOM", 
     "t_warehouse": "_Test Warehouse - _TC", 
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index cc539f6..f6125f5 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -91,8 +91,8 @@
 			"warehouse": warehouse}, "projected_qty") or 0
 
 		# update re-level qty so that it is more than projected_qty
-		if projected_qty > template.item_reorder[0].warehouse_reorder_level:
-			template.item_reorder[0].warehouse_reorder_level += projected_qty
+		if projected_qty > template.reorder_levels[0].warehouse_reorder_level:
+			template.reorder_levels[0].warehouse_reorder_level += projected_qty
 			template.save()
 
 		from erpnext.stock.reorder_item import reorder_item
@@ -102,7 +102,7 @@
 
 		items = []
 		for mr in mr_list:
-			for d in mr.indent_details:
+			for d in mr.items:
 				items.append(d.item_code)
 
 		self.assertTrue(item_code in items)
@@ -116,7 +116,7 @@
 		mr.submit()
 
 		stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
-			"warehouse": mr.get("mtn_details")[0].t_warehouse})
+			"warehouse": mr.get("items")[0].t_warehouse})
 
 		self.check_stock_ledger_entries("Stock Entry", mr.name,
 			[["_Test Item", "_Test Warehouse - _TC", 50.0]])
@@ -151,7 +151,7 @@
 			[["_Test Item", "_Test Warehouse - _TC", -40.0]])
 
 		stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
-			"warehouse": mi.get("mtn_details")[0].s_warehouse})
+			"warehouse": mi.get("items")[0].s_warehouse})
 
 		self.check_gl_entries("Stock Entry", mi.name,
 			sorted([
@@ -167,11 +167,11 @@
 		self.assertFalse(frappe.db.sql("""select * from `tabGL Entry`
 			where voucher_type='Stock Entry' and voucher_no=%s""", mi.name))
 
-		self.assertEquals(frappe.db.get_value("Bin", {"warehouse": mi.get("mtn_details")[0].s_warehouse,
-			"item_code": mi.get("mtn_details")[0].item_code}, "actual_qty"), 50)
+		self.assertEquals(frappe.db.get_value("Bin", {"warehouse": mi.get("items")[0].s_warehouse,
+			"item_code": mi.get("items")[0].item_code}, "actual_qty"), 50)
 
-		self.assertEquals(frappe.db.get_value("Bin", {"warehouse": mi.get("mtn_details")[0].s_warehouse,
-			"item_code": mi.get("mtn_details")[0].item_code}, "stock_value"), 5000)
+		self.assertEquals(frappe.db.get_value("Bin", {"warehouse": mi.get("items")[0].s_warehouse,
+			"item_code": mi.get("items")[0].item_code}, "stock_value"), 5000)
 
 	def test_material_transfer_gl_entry(self):
 		self._clear_stock_account_balance()
@@ -187,10 +187,10 @@
 			[["_Test Item", "_Test Warehouse - _TC", -45.0], ["_Test Item", "_Test Warehouse 1 - _TC", 45.0]])
 
 		stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
-			"warehouse": mtn.get("mtn_details")[0].s_warehouse})
+			"warehouse": mtn.get("items")[0].s_warehouse})
 
 		fixed_asset_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
-			"warehouse": mtn.get("mtn_details")[0].t_warehouse})
+			"warehouse": mtn.get("items")[0].t_warehouse})
 
 
 		self.check_gl_entries("Stock Entry", mtn.name,
@@ -237,12 +237,12 @@
 		self._insert_material_receipt()
 
 		repack = frappe.copy_doc(test_records[3])
-		repack.get("mtn_details")[1].incoming_rate = 6000
+		repack.get("items")[1].incoming_rate = 6000
 		repack.insert()
 		repack.submit()
 
 		stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
-			"warehouse": repack.get("mtn_details")[1].t_warehouse})
+			"warehouse": repack.get("items")[1].t_warehouse})
 
 		self.check_gl_entries("Stock Entry", repack.name,
 			sorted([
@@ -289,7 +289,7 @@
 		se1.submit()
 
 		se2 = frappe.copy_doc(test_records[0])
-		se2.get("mtn_details")[0].item_code = "_Test Item Home Desktop 100"
+		se2.get("items")[0].item_code = "_Test Item Home Desktop 100"
 		se2.insert()
 		se2.submit()
 
@@ -313,8 +313,8 @@
 		se = frappe.copy_doc(test_records[0])
 		se.purpose = "Sales Return"
 		se.sales_invoice_no = si.name
-		se.get("mtn_details")[0].qty = returned_qty
-		se.get("mtn_details")[0].transfer_qty = returned_qty
+		se.get("items")[0].qty = returned_qty
+		se.get("items")[0].transfer_qty = returned_qty
 		self.assertRaises(NotUpdateStockError, se.insert)
 
 		self._insert_material_receipt()
@@ -342,9 +342,9 @@
 		se.sales_invoice_no = si.name
 		se.posting_date = "2013-03-10"
 		se.fiscal_year = "_Test Fiscal Year 2013"
-		se.get("mtn_details")[0].item_code = "_Test Item Home Desktop 200"
-		se.get("mtn_details")[0].qty = returned_qty
-		se.get("mtn_details")[0].transfer_qty = returned_qty
+		se.get("items")[0].item_code = "_Test Item Home Desktop 200"
+		se.get("items")[0].qty = returned_qty
+		se.get("items")[0].transfer_qty = returned_qty
 
 		# check if stock entry gets submitted
 		self.assertRaises(frappe.DoesNotExistError, se.insert)
@@ -355,8 +355,8 @@
 		se.posting_date = "2013-03-10"
 		se.fiscal_year = "_Test Fiscal Year 2013"
 		se.sales_invoice_no = si.name
-		se.get("mtn_details")[0].qty = returned_qty
-		se.get("mtn_details")[0].transfer_qty = returned_qty
+		se.get("items")[0].qty = returned_qty
+		se.get("items")[0].transfer_qty = returned_qty
 		# in both cases item code remains _Test Item when returning
 		se.insert()
 
@@ -388,7 +388,7 @@
 		actual_qty_0 = self._get_actual_qty()
 		# make a delivery note based on this invoice
 		dn = frappe.copy_doc(delivery_note_test_records[0])
-		dn.get("delivery_note_details")[0].item_code = item_code
+		dn.get("items")[0].item_code = item_code
 		dn.insert()
 		dn.submit()
 
@@ -413,7 +413,7 @@
 		se.delivery_note_no = dn.name
 		se.posting_date = "2013-03-10"
 		se.fiscal_year = "_Test Fiscal Year 2013"
-		se.get("mtn_details")[0].qty = se.get("mtn_details")[0].transfer_qty = returned_qty
+		se.get("items")[0].qty = se.get("items")[0].transfer_qty = returned_qty
 
 		se.insert()
 		se.submit()
@@ -479,8 +479,8 @@
 		actual_qty_0 = self._get_actual_qty()
 
 		so = frappe.copy_doc(sales_order_test_records[0])
-		so.get("sales_order_details")[0].item_code = item_code
-		so.get("sales_order_details")[0].qty = 5.0
+		so.get("items")[0].item_code = item_code
+		so.get("items")[0].qty = 5.0
 		so.insert()
 		so.submit()
 
@@ -508,7 +508,7 @@
 		se.delivery_note_no = dn.name
 		se.posting_date = "2013-03-10"
 		se.fiscal_year = "_Test Fiscal Year 2013"
-		se.get("mtn_details")[0].qty = se.get("mtn_details")[0].transfer_qty = returned_qty
+		se.get("items")[0].qty = se.get("items")[0].transfer_qty = returned_qty
 
 		se.insert()
 		se.submit()
@@ -546,7 +546,7 @@
 			d.expense_account = "_Test Account Cost for Goods Sold - _TC"
 			d.cost_center = "_Test Cost Center - _TC"
 
-		for d in pi.get("other_charges"):
+		for d in pi.get("taxes"):
 			d.cost_center = "_Test Cost Center - _TC"
 
 		pi.run_method("calculate_taxes_and_totals")
@@ -560,8 +560,8 @@
 		se.purchase_receipt_no = pr.name
 		se.posting_date = "2013-03-01"
 		se.fiscal_year = "_Test Fiscal Year 2013"
-		se.get("mtn_details")[0].qty = se.get("mtn_details")[0].transfer_qty = 5
-		se.get("mtn_details")[0].s_warehouse = "_Test Warehouse - _TC"
+		se.get("items")[0].qty = se.get("items")[0].transfer_qty = 5
+		se.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
 		se.insert()
 		se.submit()
 
@@ -586,8 +586,8 @@
 		se.purchase_receipt_no = pr_docname
 		se.posting_date = "2013-03-01"
 		se.fiscal_year = "_Test Fiscal Year 2013"
-		se.get("mtn_details")[0].qty = se.get("mtn_details")[0].transfer_qty = 6
-		se.get("mtn_details")[0].s_warehouse = "_Test Warehouse - _TC"
+		se.get("items")[0].qty = se.get("items")[0].transfer_qty = 6
+		se.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
 
 		self.assertRaises(StockOverReturnError, se.insert)
 
@@ -625,8 +625,8 @@
 		# submit purchase receipt
 		po = frappe.copy_doc(purchase_order_test_records[0])
 		po.is_subcontracted = None
-		po.get("po_details")[0].item_code = "_Test Item"
-		po.get("po_details")[0].rate = 50
+		po.get("items")[0].item_code = "_Test Item"
+		po.get("items")[0].rate = 50
 		po.insert()
 		po.submit()
 
@@ -649,7 +649,7 @@
 		for d in pi.get("entries"):
 			d.expense_account = "_Test Account Cost for Goods Sold - _TC"
 			d.cost_center = "_Test Cost Center - _TC"
-		for d in pi.get("other_charges"):
+		for d in pi.get("taxes"):
 			d.cost_center = "_Test Cost Center - _TC"
 
 		pi.run_method("calculate_taxes_and_totals")
@@ -663,8 +663,8 @@
 		se.purchase_receipt_no = pr.name
 		se.posting_date = "2013-03-01"
 		se.fiscal_year = "_Test Fiscal Year 2013"
-		se.get("mtn_details")[0].qty = se.get("mtn_details")[0].transfer_qty = 5
-		se.get("mtn_details")[0].s_warehouse = "_Test Warehouse - _TC"
+		se.get("items")[0].qty = se.get("items")[0].transfer_qty = 5
+		se.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
 		se.insert()
 		se.submit()
 
@@ -686,43 +686,43 @@
 
 	def test_serial_no_not_reqd(self):
 		se = frappe.copy_doc(test_records[0])
-		se.get("mtn_details")[0].serial_no = "ABCD"
+		se.get("items")[0].serial_no = "ABCD"
 		se.insert()
 		self.assertRaises(SerialNoNotRequiredError, se.submit)
 
 	def test_serial_no_reqd(self):
 		se = frappe.copy_doc(test_records[0])
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item"
-		se.get("mtn_details")[0].qty = 2
-		se.get("mtn_details")[0].transfer_qty = 2
+		se.get("items")[0].item_code = "_Test Serialized Item"
+		se.get("items")[0].qty = 2
+		se.get("items")[0].transfer_qty = 2
 		se.insert()
 		self.assertRaises(SerialNoRequiredError, se.submit)
 
 	def test_serial_no_qty_more(self):
 		se = frappe.copy_doc(test_records[0])
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item"
-		se.get("mtn_details")[0].qty = 2
-		se.get("mtn_details")[0].serial_no = "ABCD\nEFGH\nXYZ"
-		se.get("mtn_details")[0].transfer_qty = 2
+		se.get("items")[0].item_code = "_Test Serialized Item"
+		se.get("items")[0].qty = 2
+		se.get("items")[0].serial_no = "ABCD\nEFGH\nXYZ"
+		se.get("items")[0].transfer_qty = 2
 		se.insert()
 		self.assertRaises(SerialNoQtyError, se.submit)
 
 	def test_serial_no_qty_less(self):
 		se = frappe.copy_doc(test_records[0])
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item"
-		se.get("mtn_details")[0].qty = 2
-		se.get("mtn_details")[0].serial_no = "ABCD"
-		se.get("mtn_details")[0].transfer_qty = 2
+		se.get("items")[0].item_code = "_Test Serialized Item"
+		se.get("items")[0].qty = 2
+		se.get("items")[0].serial_no = "ABCD"
+		se.get("items")[0].transfer_qty = 2
 		se.insert()
 		self.assertRaises(SerialNoQtyError, se.submit)
 
 	def test_serial_no_transfer_in(self):
 		self._clear_stock_account_balance()
 		se = frappe.copy_doc(test_records[0])
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item"
-		se.get("mtn_details")[0].qty = 2
-		se.get("mtn_details")[0].serial_no = "ABCD\nEFGH"
-		se.get("mtn_details")[0].transfer_qty = 2
+		se.get("items")[0].item_code = "_Test Serialized Item"
+		se.get("items")[0].qty = 2
+		se.get("items")[0].serial_no = "ABCD\nEFGH"
+		se.get("items")[0].transfer_qty = 2
 		se.insert()
 		se.submit()
 
@@ -738,12 +738,12 @@
 		make_serialized_item(target_warehouse="_Test Warehouse 1 - _TC")
 		se = frappe.copy_doc(test_records[0])
 		se.purpose = "Material Issue"
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item With Series"
-		se.get("mtn_details")[0].qty = 2
-		se.get("mtn_details")[0].s_warehouse = "_Test Warehouse 1 - _TC"
-		se.get("mtn_details")[0].t_warehouse = None
-		se.get("mtn_details")[0].serial_no = "ABCD\nEFGH"
-		se.get("mtn_details")[0].transfer_qty = 2
+		se.get("items")[0].item_code = "_Test Serialized Item With Series"
+		se.get("items")[0].qty = 2
+		se.get("items")[0].s_warehouse = "_Test Warehouse 1 - _TC"
+		se.get("items")[0].t_warehouse = None
+		se.get("items")[0].serial_no = "ABCD\nEFGH"
+		se.get("items")[0].transfer_qty = 2
 		se.insert()
 
 		self.assertRaises(SerialNoNotExistsError, se.submit)
@@ -753,10 +753,10 @@
 		se, serial_nos = self.test_serial_by_series()
 
 		se = frappe.copy_doc(test_records[0])
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item With Series"
-		se.get("mtn_details")[0].qty = 1
-		se.get("mtn_details")[0].serial_no = serial_nos[0]
-		se.get("mtn_details")[0].transfer_qty = 1
+		se.get("items")[0].item_code = "_Test Serialized Item With Series"
+		se.get("items")[0].qty = 1
+		se.get("items")[0].serial_no = serial_nos[0]
+		se.get("items")[0].transfer_qty = 1
 		se.insert()
 		self.assertRaises(SerialNoDuplicateError, se.submit)
 
@@ -764,7 +764,7 @@
 		self._clear_stock_account_balance()
 		se = make_serialized_item()
 
-		serial_nos = get_serial_nos(se.get("mtn_details")[0].serial_no)
+		serial_nos = get_serial_nos(se.get("items")[0].serial_no)
 
 		self.assertTrue(frappe.db.exists("Serial No", serial_nos[0]))
 		self.assertTrue(frappe.db.exists("Serial No", serial_nos[1]))
@@ -777,28 +777,28 @@
 
 		se = frappe.copy_doc(test_records[0])
 		se.purpose = "Material Transfer"
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item"
-		se.get("mtn_details")[0].qty = 1
-		se.get("mtn_details")[0].transfer_qty = 1
-		se.get("mtn_details")[0].serial_no = serial_nos[0]
-		se.get("mtn_details")[0].s_warehouse = "_Test Warehouse - _TC"
-		se.get("mtn_details")[0].t_warehouse = "_Test Warehouse 1 - _TC"
+		se.get("items")[0].item_code = "_Test Serialized Item"
+		se.get("items")[0].qty = 1
+		se.get("items")[0].transfer_qty = 1
+		se.get("items")[0].serial_no = serial_nos[0]
+		se.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
+		se.get("items")[0].t_warehouse = "_Test Warehouse 1 - _TC"
 		se.insert()
 		self.assertRaises(SerialNoItemError, se.submit)
 
 	def test_serial_move(self):
 		self._clear_stock_account_balance()
 		se = make_serialized_item()
-		serial_no = get_serial_nos(se.get("mtn_details")[0].serial_no)[0]
+		serial_no = get_serial_nos(se.get("items")[0].serial_no)[0]
 
 		se = frappe.copy_doc(test_records[0])
 		se.purpose = "Material Transfer"
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item With Series"
-		se.get("mtn_details")[0].qty = 1
-		se.get("mtn_details")[0].transfer_qty = 1
-		se.get("mtn_details")[0].serial_no = serial_no
-		se.get("mtn_details")[0].s_warehouse = "_Test Warehouse - _TC"
-		se.get("mtn_details")[0].t_warehouse = "_Test Warehouse 1 - _TC"
+		se.get("items")[0].item_code = "_Test Serialized Item With Series"
+		se.get("items")[0].qty = 1
+		se.get("items")[0].transfer_qty = 1
+		se.get("items")[0].serial_no = serial_no
+		se.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
+		se.get("items")[0].t_warehouse = "_Test Warehouse 1 - _TC"
 		se.insert()
 		se.submit()
 		self.assertTrue(frappe.db.get_value("Serial No", serial_no, "warehouse"), "_Test Warehouse 1 - _TC")
@@ -811,16 +811,16 @@
 		make_serialized_item(target_warehouse="_Test Warehouse 1 - _TC")
 
 		t = make_serialized_item()
-		serial_nos = get_serial_nos(t.get("mtn_details")[0].serial_no)
+		serial_nos = get_serial_nos(t.get("items")[0].serial_no)
 
 		se = frappe.copy_doc(test_records[0])
 		se.purpose = "Material Transfer"
-		se.get("mtn_details")[0].item_code = "_Test Serialized Item With Series"
-		se.get("mtn_details")[0].qty = 1
-		se.get("mtn_details")[0].transfer_qty = 1
-		se.get("mtn_details")[0].serial_no = serial_nos[0]
-		se.get("mtn_details")[0].s_warehouse = "_Test Warehouse 1 - _TC"
-		se.get("mtn_details")[0].t_warehouse = "_Test Warehouse - _TC"
+		se.get("items")[0].item_code = "_Test Serialized Item With Series"
+		se.get("items")[0].qty = 1
+		se.get("items")[0].transfer_qty = 1
+		se.get("items")[0].serial_no = serial_nos[0]
+		se.get("items")[0].s_warehouse = "_Test Warehouse 1 - _TC"
+		se.get("items")[0].t_warehouse = "_Test Warehouse - _TC"
 		se.insert()
 		self.assertRaises(SerialNoWarehouseError, se.submit)
 
@@ -829,7 +829,7 @@
 		se, serial_nos = self.test_serial_by_series()
 		se.cancel()
 
-		serial_no = get_serial_nos(se.get("mtn_details")[0].serial_no)[0]
+		serial_no = get_serial_nos(se.get("items")[0].serial_no)[0]
 		self.assertFalse(frappe.db.get_value("Serial No", serial_no, "warehouse"))
 
 	def test_warehouse_company_validation(self):
@@ -841,7 +841,7 @@
 
 		from erpnext.stock.utils import InvalidWarehouseCompany
 		st1 = frappe.copy_doc(test_records[0])
-		st1.get("mtn_details")[0].t_warehouse="_Test Warehouse 2 - _TC1"
+		st1.get("items")[0].t_warehouse="_Test Warehouse 2 - _TC1"
 		st1.insert()
 		self.assertRaises(InvalidWarehouseCompany, st1.submit)
 
@@ -861,13 +861,13 @@
 		frappe.set_user("test@example.com")
 		st1 = frappe.copy_doc(test_records[0])
 		st1.company = "_Test Company 1"
-		st1.get("mtn_details")[0].t_warehouse="_Test Warehouse 2 - _TC1"
+		st1.get("items")[0].t_warehouse="_Test Warehouse 2 - _TC1"
 		self.assertRaises(frappe.PermissionError, st1.insert)
 
 		frappe.set_user("test2@example.com")
 		st1 = frappe.copy_doc(test_records[0])
 		st1.company = "_Test Company 1"
-		st1.get("mtn_details")[0].t_warehouse="_Test Warehouse 2 - _TC1"
+		st1.get("items")[0].t_warehouse="_Test Warehouse 2 - _TC1"
 		st1.insert()
 		st1.submit()
 
@@ -922,9 +922,9 @@
 		})
 		stock_entry.get_items()
 
-		fg_rate = [d.amount for d in stock_entry.get("mtn_details") if d.item_code=="_Test FG Item 2"][0]
+		fg_rate = [d.amount for d in stock_entry.get("items") if d.item_code=="_Test FG Item 2"][0]
 		self.assertEqual(fg_rate, 1200.00)
-		fg_rate = [d.amount for d in stock_entry.get("mtn_details") if d.item_code=="_Test Item"][0]
+		fg_rate = [d.amount for d in stock_entry.get("items") if d.item_code=="_Test Item"][0]
 		self.assertEqual(fg_rate, 100.00)
 
 	def test_variant_production_order(self):
@@ -948,17 +948,17 @@
 
 		stock_entry = frappe.get_doc(make_stock_entry(production_order.name, "Manufacture", 1))
 		stock_entry.insert()
-		self.assertTrue("_Test Variant Item-S" in [d.item_code for d in stock_entry.mtn_details])
+		self.assertTrue("_Test Variant Item-S" in [d.item_code for d in stock_entry.items])
 
 def make_serialized_item(item_code=None, serial_no=None, target_warehouse=None):
 	se = frappe.copy_doc(test_records[0])
-	se.get("mtn_details")[0].item_code = item_code or "_Test Serialized Item With Series"
-	se.get("mtn_details")[0].serial_no = serial_no
-	se.get("mtn_details")[0].qty = 2
-	se.get("mtn_details")[0].transfer_qty = 2
+	se.get("items")[0].item_code = item_code or "_Test Serialized Item With Series"
+	se.get("items")[0].serial_no = serial_no
+	se.get("items")[0].qty = 2
+	se.get("items")[0].transfer_qty = 2
 
 	if target_warehouse:
-		se.get("mtn_details")[0].t_warehouse = target_warehouse
+		se.get("items")[0].t_warehouse = target_warehouse
 
 	se.insert()
 	se.submit()
@@ -979,7 +979,7 @@
 		else:
 			s.purpose = "Material Receipt"
 	s.company = args.company or "_Test Company"
-	s.append("mtn_details", {
+	s.append("items", {
 		"item_code": args.item or args.item_code,
 		"s_warehouse": args.from_warehouse or args.source,
 		"t_warehouse": args.to_warehouse or args.target,
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index ed62d2f..d36d756 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -204,12 +204,12 @@
 			"posting_time": "01:00",
 			"purpose": "Material Receipt",
 			"fiscal_year": "_Test Fiscal Year 2012",
-			"mtn_details": [
+			"items": [
 				{
 					"conversion_factor": 1.0,
 					"doctype": "Stock Entry Detail",
 					"item_code": "_Test Item",
-					"parentfield": "mtn_details",
+					"parentfield": "items",
 					"incoming_rate": 1000,
 					"qty": 20.0,
 					"stock_uom": "_Test UOM",
@@ -229,9 +229,9 @@
 		pr1 = frappe.copy_doc(stock_entry)
 		pr1.posting_date = "2012-12-15"
 		pr1.posting_time = "02:00"
-		pr1.get("mtn_details")[0].qty = 10
-		pr1.get("mtn_details")[0].transfer_qty = 10
-		pr1.get("mtn_details")[0].incoming_rate = 700
+		pr1.get("items")[0].qty = 10
+		pr1.get("items")[0].transfer_qty = 10
+		pr1.get("items")[0].incoming_rate = 700
 		pr1.insert()
 		pr1.submit()
 
@@ -239,11 +239,11 @@
 		pr2.posting_date = "2012-12-25"
 		pr2.posting_time = "03:00"
 		pr2.purpose = "Material Issue"
-		pr2.get("mtn_details")[0].s_warehouse = "_Test Warehouse - _TC"
-		pr2.get("mtn_details")[0].t_warehouse = None
-		pr2.get("mtn_details")[0].qty = 15
-		pr2.get("mtn_details")[0].transfer_qty = 15
-		pr2.get("mtn_details")[0].incoming_rate = 0
+		pr2.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
+		pr2.get("items")[0].t_warehouse = None
+		pr2.get("items")[0].qty = 15
+		pr2.get("items")[0].transfer_qty = 15
+		pr2.get("items")[0].incoming_rate = 0
 		pr2.insert()
 		pr2.submit()
 
@@ -251,11 +251,11 @@
 		pr3.posting_date = "2012-12-31"
 		pr3.posting_time = "08:00"
 		pr3.purpose = "Material Issue"
-		pr3.get("mtn_details")[0].s_warehouse = "_Test Warehouse - _TC"
-		pr3.get("mtn_details")[0].t_warehouse = None
-		pr3.get("mtn_details")[0].qty = 20
-		pr3.get("mtn_details")[0].transfer_qty = 20
-		pr3.get("mtn_details")[0].incoming_rate = 0
+		pr3.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
+		pr3.get("items")[0].t_warehouse = None
+		pr3.get("items")[0].qty = 20
+		pr3.get("items")[0].transfer_qty = 20
+		pr3.get("items")[0].incoming_rate = 0
 		pr3.insert()
 		pr3.submit()
 
@@ -264,9 +264,9 @@
 		pr4.posting_date = "2013-01-05"
 		pr4.fiscal_year = "_Test Fiscal Year 2013"
 		pr4.posting_time = "07:00"
-		pr4.get("mtn_details")[0].qty = 15
-		pr4.get("mtn_details")[0].transfer_qty = 15
-		pr4.get("mtn_details")[0].incoming_rate = 1200
+		pr4.get("items")[0].qty = 15
+		pr4.get("items")[0].transfer_qty = 15
+		pr4.get("items")[0].incoming_rate = 1200
 		pr4.insert()
 		pr4.submit()
 
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 5fe8b14..31860e0 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -154,7 +154,7 @@
 		"cost_center": get_default_cost_center(args, item),
 		"batch_no": None,
 		"item_tax_rate": json.dumps(dict(([d.tax_type, d.tax_rate] for d in
-			item.get("item_tax")))),
+			item.get("taxes")))),
 		"uom": item.stock_uom,
 		"min_order_qty": flt(item.min_order_qty) if args.parenttype == "Material Request" else "",
 		"conversion_factor": 1.0,
@@ -251,10 +251,10 @@
 
 def get_party_item_code(args, item_doc, out):
 	if args.transaction_type == "selling":
-		customer_item_code = item_doc.get("item_customer_details", {"customer_name": args.customer})
+		customer_item_code = item_doc.get("customer_item_codes", {"customer_name": args.customer})
 		out.customer_item_code = customer_item_code[0].ref_code if customer_item_code else None
 	else:
-		item_supplier = item_doc.get("item_supplier_details", {"supplier": args.supplier})
+		item_supplier = item_doc.get("supplier_item_codes", {"supplier": args.supplier})
 		out.supplier_part_no = item_supplier[0].supplier_part_no if item_supplier else None
 
 def get_pos_settings_item_details(company, args, pos_settings=None):
diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py
index e9294f8..9f29f1f 100644
--- a/erpnext/stock/reorder_item.py
+++ b/erpnext/stock/reorder_item.py
@@ -51,11 +51,11 @@
 	for item_code in item_warehouse_projected_qty:
 		item = frappe.get_doc("Item", item_code)
 
-		if item.variant_of and not item.get("item_reorder"):
+		if item.variant_of and not item.get("reorder_levels"):
 			item.update_template_tables()
 
-		if item.get("item_reorder"):
-			for d in item.get("item_reorder"):
+		if item.get("reorder_levels"):
+			for d in item.get("reorder_levels"):
 				add_to_material_request(item_code, d.warehouse, d.warehouse_reorder_level,
 					d.warehouse_reorder_qty, d.material_request_type)
 
@@ -122,7 +122,7 @@
 				for d in items:
 					d = frappe._dict(d)
 					item = frappe.get_doc("Item", d.item_code)
-					mr.append("indent_details", {
+					mr.append("items", {
 						"doctype": "Material Request Item",
 						"item_code": d.item_code,
 						"schedule_date": add_days(nowdate(),cint(item.lead_time_days)),
@@ -169,7 +169,7 @@
 	for mr in mr_list:
 		msg += "<p><b><u>" + mr.name + """</u></b></p><table class='table table-bordered'><tr>
 			<th>Item Code</th><th>Warehouse</th><th>Qty</th><th>UOM</th></tr>"""
-		for item in mr.get("indent_details"):
+		for item in mr.get("items"):
 			msg += "<tr><td>" + item.item_code + "</td><td>" + item.warehouse + "</td><td>" + \
 				cstr(item.qty) + "</td><td>" + cstr(item.uom) + "</td></tr>"
 		msg += "</table>"
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js
index a31dfa6..cf5d171 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js
@@ -100,7 +100,7 @@
 }
 
 
-cur_frm.fields_dict['item_maintenance_detail'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['items'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
 	return {
 		filters:{ 'is_service_item': "Yes" }
 	}
@@ -110,7 +110,7 @@
 	var fname = cur_frm.cscript.fname;
 	var d = locals[cdt][cdn];
 	if (d.item_code) {
-		return get_server_fields('get_item_details', d.item_code, 'item_maintenance_detail',
+		return get_server_fields('get_item_details', d.item_code, 'items',
 			doc, cdt, cdn, 1);
 	}
 }
@@ -119,7 +119,7 @@
 	if (!doc.__islocal) {
 		return $c('runserverobj', args={'method':'generate_schedule', 'docs':doc},
 			function(r, rt) {
-				refresh_field('maintenance_schedule_detail');
+				refresh_field('schedules');
 			});
 	} else {
 		msgprint(__("Please save the document before generating maintenance schedule"));
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.json b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.json
index a80c497..870912b 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.json
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.json
@@ -94,7 +94,7 @@
    "fieldname": "schedules", 
    "fieldtype": "Table", 
    "label": "Schedules", 
-   "oldfieldname": "maintenance_schedule_detail", 
+   "oldfieldname": "schedules", 
    "oldfieldtype": "Table", 
    "options": "Maintenance Schedule Detail", 
    "permlevel": 0, 
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
index a739651..349ff4b 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -22,16 +22,16 @@
 		return ret
 
 	def generate_schedule(self):
-		self.set('maintenance_schedule_detail', [])
+		self.set('schedules', [])
 		frappe.db.sql("""delete from `tabMaintenance Schedule Detail`
 			where parent=%s""", (self.name))
 		count = 1
-		for d in self.get('item_maintenance_detail'):
+		for d in self.get('items'):
 			self.validate_maintenance_detail()
 			s_list = []
 			s_list = self.create_schedule_list(d.start_date, d.end_date, d.no_of_visits, d.sales_person)
 			for i in range(d.no_of_visits):
-				child = self.append('maintenance_schedule_detail')
+				child = self.append('schedules')
 				child.item_code = d.item_code
 				child.item_name = d.item_name
 				child.scheduled_date = s_list[i].strftime('%Y-%m-%d')
@@ -44,13 +44,13 @@
 		self.save()
 
 	def on_submit(self):
-		if not self.get('maintenance_schedule_detail'):
+		if not self.get('schedules'):
 			throw(_("Please click on 'Generate Schedule' to get schedule"))
 		self.check_serial_no_added()
 		self.validate_schedule()
 
 		email_map = {}
-		for d in self.get('item_maintenance_detail'):
+		for d in self.get('items'):
 			if d.serial_no:
 				serial_nos = get_valid_serial_nos(d.serial_no)
 				self.validate_serial_no(serial_nos, d.start_date)
@@ -133,7 +133,7 @@
 		return schedule_date
 
 	def validate_dates_with_periodicity(self):
-		for d in self.get("item_maintenance_detail"):
+		for d in self.get("items"):
 			if d.start_date and d.end_date and d.periodicity and d.periodicity!="Random":
 				date_diff = (getdate(d.end_date) - getdate(d.start_date)).days + 1
 				days_in_period = {
@@ -150,10 +150,10 @@
 						.format(d.idx, d.periodicity, days_in_period[d.periodicity]))
 
 	def validate_maintenance_detail(self):
-		if not self.get('item_maintenance_detail'):
+		if not self.get('items'):
 			throw(_("Please enter Maintaince Details first"))
 
-		for d in self.get('item_maintenance_detail'):
+		for d in self.get('items'):
 			if not d.item_code:
 				throw(_("Please select item code"))
 			elif not d.start_date or not d.end_date:
@@ -167,7 +167,7 @@
 				throw(_("Start date should be less than end date for Item {0}").format(d.item_code))
 
 	def validate_sales_order(self):
-		for d in self.get('item_maintenance_detail'):
+		for d in self.get('items'):
 			if d.prevdoc_docname:
 				chk = frappe.db.sql("""select ms.name from `tabMaintenance Schedule` ms,
 					`tabMaintenance Schedule Item` msi where msi.parent=ms.name and
@@ -210,11 +210,11 @@
 	def validate_schedule(self):
 		item_lst1 =[]
 		item_lst2 =[]
-		for d in self.get('item_maintenance_detail'):
+		for d in self.get('items'):
 			if d.item_code not in item_lst1:
 				item_lst1.append(d.item_code)
 
-		for m in self.get('maintenance_schedule_detail'):
+		for m in self.get('schedules'):
 			if m.item_code not in item_lst2:
 				item_lst2.append(m.item_code)
 
@@ -227,17 +227,17 @@
 
 	def check_serial_no_added(self):
 		serial_present =[]
-		for d in self.get('item_maintenance_detail'):
+		for d in self.get('items'):
 			if d.serial_no:
 				serial_present.append(d.item_code)
 
-		for m in self.get('maintenance_schedule_detail'):
+		for m in self.get('schedules'):
 			if serial_present:
 				if m.item_code in serial_present and not m.serial_no:
 					throw(_("Please click on 'Generate Schedule' to fetch Serial No added for Item {0}").format(m.item_code))
 
 	def on_cancel(self):
-		for d in self.get('item_maintenance_detail'):
+		for d in self.get('items'):
 			if d.serial_no:
 				serial_nos = get_valid_serial_nos(d.serial_no)
 				self.update_amc_date(serial_nos)
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.js b/erpnext/support/doctype/maintenance_visit/maintenance_visit.js
index ffdcb3e..675ecd3 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.js
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.js
@@ -75,7 +75,7 @@
   	}
 }
 
-cur_frm.fields_dict['maintenance_visit_details'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
+cur_frm.fields_dict['purposes'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
 	return{
     	filters:{ 'is_service_item': "Yes"}
   	}
@@ -85,7 +85,7 @@
 	var fname = cur_frm.cscript.fname;
 	var d = locals[cdt][cdn];
 	if (d.item_code) {
-		return get_server_fields('get_item_details',d.item_code, 'maintenance_visit_details',doc,cdt,cdn,1);
+		return get_server_fields('get_item_details',d.item_code, 'purposes',doc,cdt,cdn,1);
 	}
 }
 
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
index ef2fb41..fb42548 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
@@ -15,7 +15,7 @@
 		return frappe.db.get_value("Item", item_code, ["item_name", "description"], as_dict=1)
 
 	def validate_serial_no(self):
-		for d in self.get('maintenance_visit_details'):
+		for d in self.get('purposes'):
 			if d.serial_no and not frappe.db.exists("Serial No", d.serial_no):
 				frappe.throw(_("Serial No {0} does not exist").format(d.serial_no))
 
@@ -23,7 +23,7 @@
 		self.validate_serial_no()
 
 	def update_customer_issue(self, flag):
-		for d in self.get('maintenance_visit_details'):
+		for d in self.get('purposes'):
 			if d.prevdoc_docname and d.prevdoc_doctype == 'Customer Issue' :
 				if flag==1:
 					mntc_date = self.mntc_date
@@ -53,7 +53,7 @@
 	def check_if_last_visit(self):
 		"""check if last maintenance visit against same sales order/ customer issue"""
 		check_for_docname = None
-		for d in self.get('maintenance_visit_details'):
+		for d in self.get('purposes'):
 			if d.prevdoc_docname:
 				check_for_docname = d.prevdoc_docname
 				#check_for_doctype = d.prevdoc_doctype
diff --git a/erpnext/templates/includes/cart.js b/erpnext/templates/includes/cart.js
index 90cfea5..fff0a32 100644
--- a/erpnext/templates/includes/cart.js
+++ b/erpnext/templates/includes/cart.js
@@ -53,7 +53,7 @@
 		var $cart_billing_address = $("#cart-billing-address").empty();
 		var $cart_shipping_address = $("#cart-shipping-address").empty();
 
-		var no_items = $.map(doc.quotation_details || [],
+		var no_items = $.map(doc.items || [],
 			function(d) { return d.item_code || null;}).length===0;
 		if(no_items) {
 			shopping_cart.show_error("Empty :-(", frappe._("Go ahead and add something to your cart."));
@@ -65,11 +65,11 @@
 		var taxes_exist = false;
 		var shipping_rule_labels = $.map(out.shipping_rules || [], function(rule) { return rule[1]; });
 
-		$.each(doc.quotation_details || [], function(i, d) {
+		$.each(doc.items || [], function(i, d) {
 			shopping_cart.render_item_row($cart_items, d);
 		});
 
-		$.each(doc.other_charges || [], function(i, d) {
+		$.each(doc.taxes || [], function(i, d) {
 			if(out.shipping_rules && out.shipping_rules.length &&
 				shipping_rule_labels.indexOf(d.description)!==-1) {
 					shipping_rule_added = true;
diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv
index 0090f9f..429c02e 100644
--- a/erpnext/translations/ar.csv
+++ b/erpnext/translations/ar.csv
@@ -1457,8 +1457,8 @@
 Journal Entries,مجلة مقالات
 Journal Entry,إدخال دفتر اليومية
 Journal Voucher,مجلة قسيمة
-Journal Voucher Detail,مجلة قسيمة التفاصيل
-Journal Voucher Detail No,مجلة التفاصيل قسيمة لا
+Journal Entry Account,مجلة قسيمة التفاصيل
+Journal Entry Account No,مجلة التفاصيل قسيمة لا
 Journal Voucher {0} does not have account {1} or already matched,مجلة قسيمة {0} لا يملك حساب {1} أو بالفعل المتطابقة
 Journal Vouchers {0} are un-linked,مجلة قسائم {0} ترتبط الامم المتحدة و
 Keep a track of communication related to this enquiry which will help for future reference.,الحفاظ على مسار الاتصالات المتعلقة بهذا التحقيق والتي سوف تساعد للرجوع إليها مستقبلا.
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 3cf0a6a..9c38ba0 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -1513,8 +1513,8 @@
 Journal Entries,Journaleinträge
 Journal Entry,Journaleintrag
 Journal Voucher,Journal
-Journal Voucher Detail,Detailansicht Beleg
-Journal Voucher Detail No,Journalnummer
+Journal Entry Account,Detailansicht Beleg
+Journal Entry Account No,Journalnummer
 Journal Voucher {0} does not have account {1} or already matched,Blatt Gutschein {0} ist nicht Konto haben {1} oder bereits abgestimmt
 Journal Vouchers {0} are un-linked,Blatt Gutscheine {0} sind un -linked
 "Keep Track of Sales Campaigns. Keep track of Leads, Quotations, Sales Order etc from Campaigns to gauge Return on Investment. ","Keep Track of Sales Campaigns. Keep track of Leads, Quotations, Sales Order etc from Campaigns to gauge Return on Investment. "
diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv
index 1fa2d15..d43706c 100644
--- a/erpnext/translations/el.csv
+++ b/erpnext/translations/el.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Εφημερίδα Καταχωρήσεις
 Journal Entry,Journal Entry
 Journal Voucher,Εφημερίδα Voucher
-Journal Voucher Detail,Εφημερίδα Λεπτομέρεια Voucher
-Journal Voucher Detail No,Εφημερίδα Λεπτομέρεια φύλλου αριθ.
+Journal Entry Account,Εφημερίδα Λεπτομέρεια Voucher
+Journal Entry Account No,Εφημερίδα Λεπτομέρεια φύλλου αριθ.
 Journal Voucher {0} does not have account {1} or already matched,Εφημερίδα Voucher {0} δεν έχει λογαριασμό {1} ή έχουν ήδη συμφωνημένα
 Journal Vouchers {0} are un-linked,Εφημερίδα Κουπόνια {0} είναι μη συνδεδεμένο
 Keep a track of communication related to this enquiry which will help for future reference.,Κρατήστε ένα κομμάτι της επικοινωνίας που σχετίζονται με την έρευνα αυτή που θα βοηθήσει για μελλοντική αναφορά.
diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv
index 452a643..3086b29 100644
--- a/erpnext/translations/es.csv
+++ b/erpnext/translations/es.csv
@@ -1461,8 +1461,8 @@
 Journal Entries,entradas de diario
 Journal Entry,Entrada de diario
 Journal Voucher,Comprobante de Diario
-Journal Voucher Detail,Detalle del Asiento de Diario
-Journal Voucher Detail No,Detalle del Asiento de Diario No
+Journal Entry Account,Detalle del Asiento de Diario
+Journal Entry Account No,Detalle del Asiento de Diario No
 Journal Voucher {0} does not have account {1} or already matched,Comprobante de Diario {0} no tiene cuenta {1} o ya emparejado
 Journal Vouchers {0} are un-linked,Asientos de Diario {0} no están vinculados.
 Keep a track of communication related to this enquiry which will help for future reference.,Mantenga un registro de la comunicación en relación con esta consulta que ayudará para futuras consultas.
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index 6ec6513..804e5ce 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -1459,8 +1459,8 @@
 Journal Entries,Journal Entries
 Journal Entry,Journal Entry
 Journal Voucher,Bon Journal
-Journal Voucher Detail,Détail pièce de journal
-Journal Voucher Detail No,Détail Bon Journal No
+Journal Entry Account,Détail pièce de journal
+Journal Entry Account No,Détail Bon Journal No
 Journal Voucher {0} does not have account {1} or already matched,Journal Bon {0} n'a pas encore compte {1} ou déjà identifié
 Journal Vouchers {0} are un-linked,Date de livraison prévue ne peut pas être avant ventes Date de commande
 Keep a track of communication related to this enquiry which will help for future reference.,Gardez une trace de la communication liée à cette enquête qui aidera pour référence future.
diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv
index 68be3cd..df43d85 100644
--- a/erpnext/translations/hi.csv
+++ b/erpnext/translations/hi.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,जर्नल प्रविष्टियां
 Journal Entry,जर्नल प्रविष्टि
 Journal Voucher,जर्नल वाउचर
-Journal Voucher Detail,जर्नल वाउचर विस्तार
-Journal Voucher Detail No,जर्नल वाउचर विस्तार नहीं
+Journal Entry Account,जर्नल वाउचर विस्तार
+Journal Entry Account No,जर्नल वाउचर विस्तार नहीं
 Journal Voucher {0} does not have account {1} or already matched,जर्नल वाउचर {0} खाता नहीं है {1} या पहले से ही मेल नहीं खाते
 Journal Vouchers {0} are un-linked,जर्नल वाउचर {0} संयुक्त राष्ट्र से जुड़े हुए हैं
 Keep a track of communication related to this enquiry which will help for future reference.,जांच है जो भविष्य में संदर्भ के लिए मदद करने के लिए संबंधित संचार का ट्रैक रखें.
diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv
index a52d4f9..550eb0d 100644
--- a/erpnext/translations/hr.csv
+++ b/erpnext/translations/hr.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Časopis upisi
 Journal Entry,Časopis Stupanje
 Journal Voucher,Časopis bon
-Journal Voucher Detail,Časopis bon Detalj
-Journal Voucher Detail No,Časopis bon Detalj Ne
+Journal Entry Account,Časopis bon Detalj
+Journal Entry Account No,Časopis bon Detalj Ne
 Journal Voucher {0} does not have account {1} or already matched,Časopis bon {0} nema račun {1} ili već usklađeni
 Journal Vouchers {0} are un-linked,Časopis bon {0} su UN -linked
 Keep a track of communication related to this enquiry which will help for future reference.,Držite pratiti komunikacije vezane uz ovaj upit koji će vam pomoći za buduću referencu.
diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv
index eaf6e19..658fa42 100644
--- a/erpnext/translations/id.csv
+++ b/erpnext/translations/id.csv
@@ -1327,7 +1327,7 @@
 Invoice Period From and Invoice Period To dates mandatory for recurring invoice,Faktur Periode Dari dan Faktur Period Untuk tanggal wajib untuk berulang faktur
 Invoice Period To,Periode Faktur Untuk
 Invoice Type,Invoice Type
-Invoice/Journal Voucher Details,Invoice / Journal Voucher Detail
+Invoice/Journal Voucher Details,Invoice / Journal Entry Account
 Invoiced Amount (Exculsive Tax),Faktur Jumlah (Pajak exculsive)
 Is Active,Aktif
 Is Advance,Apakah Muka
@@ -1458,8 +1458,8 @@
 Journal Entries,Entries Journal
 Journal Entry,Jurnal Entri
 Journal Voucher,Journal Voucher
-Journal Voucher Detail,Journal Voucher Detil
-Journal Voucher Detail No,Journal Voucher Detil ada
+Journal Entry Account,Journal Voucher Detil
+Journal Entry Account No,Journal Voucher Detil ada
 Journal Voucher {0} does not have account {1} or already matched,Journal Voucher {0} tidak memiliki akun {1} atau sudah cocok
 Journal Vouchers {0} are un-linked,Journal Voucher {0} yang un-linked
 Keep a track of communication related to this enquiry which will help for future reference.,Menyimpan melacak komunikasi yang berkaitan dengan penyelidikan ini yang akan membantu untuk referensi di masa mendatang.
diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv
index 0e02b04..488423a 100644
--- a/erpnext/translations/it.csv
+++ b/erpnext/translations/it.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Prime note
 Journal Entry,Journal Entry
 Journal Voucher,Journal Voucher
-Journal Voucher Detail,Journal Voucher Detail
-Journal Voucher Detail No,Journal Voucher Detail No
+Journal Entry Account,Journal Entry Account
+Journal Entry Account No,Journal Entry Account No
 Journal Voucher {0} does not have account {1} or already matched,Journal Voucher {0} non ha conto {1} o già abbinate
 Journal Vouchers {0} are un-linked,Diario Buoni {0} sono non- linked
 Keep a track of communication related to this enquiry which will help for future reference.,Tenere una traccia delle comunicazioni relative a questa indagine che contribuirà per riferimento futuro.
diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv
index 3349c80..6585666 100644
--- a/erpnext/translations/ja.csv
+++ b/erpnext/translations/ja.csv
@@ -1460,8 +1460,8 @@
 Journal Entries,仕訳
 Journal Entry,仕訳
 Journal Voucher,伝票
-Journal Voucher Detail,伝票の詳細
-Journal Voucher Detail No,伝票の詳細番号
+Journal Entry Account,伝票の詳細
+Journal Entry Account No,伝票の詳細番号
 Journal Voucher {0} does not have account {1} or already matched,伝票は{0}アカウントを持っていない{1}、またはすでに一致
 Journal Vouchers {0} are un-linked,ジャーナルバウチャー{0}アンリンクされている
 Keep a track of communication related to this enquiry which will help for future reference.,今後の参考のために役立ちます。この照会に関連した通信を追跡する。
diff --git a/erpnext/translations/kn.csv b/erpnext/translations/kn.csv
index 3da26a1..b987788 100644
--- a/erpnext/translations/kn.csv
+++ b/erpnext/translations/kn.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,ಜರ್ನಲ್ ನಮೂದುಗಳು
 Journal Entry,ಜರ್ನಲ್ ಎಂಟ್ರಿ
 Journal Voucher,ಜರ್ನಲ್ ಚೀಟಿ
-Journal Voucher Detail,ಜರ್ನಲ್ ಚೀಟಿ ವಿವರ
-Journal Voucher Detail No,ಜರ್ನಲ್ ಚೀಟಿ ವಿವರ ನಂ
+Journal Entry Account,ಜರ್ನಲ್ ಚೀಟಿ ವಿವರ
+Journal Entry Account No,ಜರ್ನಲ್ ಚೀಟಿ ವಿವರ ನಂ
 Journal Voucher {0} does not have account {1} or already matched,ಜರ್ನಲ್ ಚೀಟಿ {0} {1} ಖಾತೆಯನ್ನು ಅಥವಾ ಈಗಾಗಲೇ ದಾಖಲೆಗಳುಸರಿಹೊಂದಿವೆ ಇಲ್ಲ
 Journal Vouchers {0} are un-linked,ಜರ್ನಲ್ ರಶೀದಿ {0} UN- ಲಿಂಕ್
 Keep a track of communication related to this enquiry which will help for future reference.,ಭವಿಷ್ಯದ ಉಲ್ಲೇಖಕ್ಕಾಗಿ ಸಹಾಯ whichwill ಈ ವಿಚಾರಣೆ ಸಂಬಂಧಿಸಿದ ಸಂವಹನದ ಒಂದು ಜಾಡನ್ನು ಇರಿಸಿ.
diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv
index c0c201d..9a6dc52 100644
--- a/erpnext/translations/ko.csv
+++ b/erpnext/translations/ko.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,저널 항목
 Journal Entry,분개
 Journal Voucher,분개장
-Journal Voucher Detail,분개장 세부 정보
-Journal Voucher Detail No,분개장 세부 사항 없음
+Journal Entry Account,분개장 세부 정보
+Journal Entry Account No,분개장 세부 사항 없음
 Journal Voucher {0} does not have account {1} or already matched,분개장 {0} 계정이없는 {1} 또는 이미 일치
 Journal Vouchers {0} are un-linked,분개장 {0} 않은 연결되어
 Keep a track of communication related to this enquiry which will help for future reference.,향후 참조를 위해 도움이 될 것입니다이 문의와 관련된 통신을 확인합니다.
diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv
index e5a9e10..aed452e 100644
--- a/erpnext/translations/nl.csv
+++ b/erpnext/translations/nl.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Journaalposten
 Journal Entry,Journal Entry
 Journal Voucher,Journal Voucher
-Journal Voucher Detail,Journal Voucher Detail
-Journal Voucher Detail No,Journal Voucher Detail Geen
+Journal Entry Account,Journal Entry Account
+Journal Entry Account No,Journal Entry Account Geen
 Journal Voucher {0} does not have account {1} or already matched,Journal Voucher {0} heeft geen rekening {1} of al geëvenaard
 Journal Vouchers {0} are un-linked,Dagboek Vouchers {0} zijn niet- verbonden
 Keep a track of communication related to this enquiry which will help for future reference.,Houd een spoor van communicatie met betrekking tot dit onderzoek dat zal helpen voor toekomstig gebruik.
diff --git a/erpnext/translations/pl.csv b/erpnext/translations/pl.csv
index bf0c0d3..0e95610 100644
--- a/erpnext/translations/pl.csv
+++ b/erpnext/translations/pl.csv
@@ -1402,8 +1402,8 @@
 Journal Entries,Journal Entries
 Journal Entry,Journal Entry
 Journal Voucher,Journal Voucher
-Journal Voucher Detail,Journal Voucher Detail
-Journal Voucher Detail No,Journal Voucher Detail No
+Journal Entry Account,Journal Entry Account
+Journal Entry Account No,Journal Entry Account No
 Journal Voucher {0} does not have account {1} or already matched,Journal Voucher {0} does not have account {1} or already matched
 Journal Vouchers {0} are un-linked,Journal Vouchers {0} are un-linked
 Keep a track of communication related to this enquiry which will help for future reference.,Keep a track of communication related to this enquiry which will help for future reference.
diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv
index 7796842..b6c64db 100644
--- a/erpnext/translations/pt-BR.csv
+++ b/erpnext/translations/pt-BR.csv
@@ -1490,8 +1490,8 @@
 Journal Entries,Lançamentos do livro Diário
 Journal Entry,Lançamento do livro Diário
 Journal Voucher,Comprovante do livro Diário
-Journal Voucher Detail,Detalhe do Comprovante do livro Diário
-Journal Voucher Detail No,Nº do Detalhe do Comprovante do livro Diário
+Journal Entry Account,Detalhe do Comprovante do livro Diário
+Journal Entry Account No,Nº do Detalhe do Comprovante do livro Diário
 Journal Voucher {0} does not have account {1} or already matched,Jornal Vale {0} não tem conta {1} ou já combinava
 Journal Vouchers {0} are un-linked,Jornal Vouchers {0} são não- ligado
 Keep a track of communication related to this enquiry which will help for future reference.,"Mantenha o controle de comunicações relacionadas a esta consulta, o que irá ajudar para futuras referências."
diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv
index 3b2ae59..501d476 100644
--- a/erpnext/translations/pt.csv
+++ b/erpnext/translations/pt.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Jornal entradas
 Journal Entry,Journal Entry
 Journal Voucher,Vale Jornal
-Journal Voucher Detail,Jornal Detalhe Vale
-Journal Voucher Detail No,Jornal Detalhe folha no
+Journal Entry Account,Jornal Detalhe Vale
+Journal Entry Account No,Jornal Detalhe folha no
 Journal Voucher {0} does not have account {1} or already matched,Jornal Vale {0} não tem conta {1} ou já combinava
 Journal Vouchers {0} are un-linked,Jornal Vouchers {0} são não- ligado
 Keep a track of communication related to this enquiry which will help for future reference.,Mantenha uma faixa de comunicação relacionada a este inquérito que irá ajudar para referência futura.
diff --git a/erpnext/translations/ro.csv b/erpnext/translations/ro.csv
index 5bd319d..d3e2b7b 100644
--- a/erpnext/translations/ro.csv
+++ b/erpnext/translations/ro.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Intrari in jurnal
 Journal Entry,Jurnal de intrare
 Journal Voucher,Jurnalul Voucher
-Journal Voucher Detail,Jurnalul Voucher Detaliu
-Journal Voucher Detail No,Jurnalul Voucher Detaliu Nu
+Journal Entry Account,Jurnalul Voucher Detaliu
+Journal Entry Account No,Jurnalul Voucher Detaliu Nu
 Journal Voucher {0} does not have account {1} or already matched,Jurnalul Voucher {0} nu are cont {1} sau deja potrivire
 Journal Vouchers {0} are un-linked,Jurnalul Tichete {0} sunt ne-legate de
 Keep a track of communication related to this enquiry which will help for future reference.,"Păstra o pistă de comunicare legate de această anchetă, care va ajuta de referință pentru viitor."
diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv
index e2b6fe7..91102d2 100644
--- a/erpnext/translations/ru.csv
+++ b/erpnext/translations/ru.csv
@@ -1459,8 +1459,8 @@
 Journal Entries,Записи в журнале
 Journal Entry,Запись в дневнике
 Journal Voucher,Журнал Ваучер
-Journal Voucher Detail,Журнал Ваучер Подробно
-Journal Voucher Detail No,Журнал Ваучер Подробно Нет
+Journal Entry Account,Журнал Ваучер Подробно
+Journal Entry Account No,Журнал Ваучер Подробно Нет
 Journal Voucher {0} does not have account {1} or already matched,Журнал Ваучер {0} не имеет учетной записи {1} или уже согласованы
 Journal Vouchers {0} are un-linked,Журнал Ваучеры {0} являются не-связаны
 Keep a track of communication related to this enquiry which will help for future reference.,"Постоянно отслеживать коммуникации, связанные на этот запрос, который поможет в будущем."
diff --git a/erpnext/translations/sr.csv b/erpnext/translations/sr.csv
index fd0e50a..f39e98c 100644
--- a/erpnext/translations/sr.csv
+++ b/erpnext/translations/sr.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Часопис Ентриес
 Journal Entry,Јоурнал Ентри
 Journal Voucher,Часопис ваучера
-Journal Voucher Detail,Часопис Ваучер Детаљ
-Journal Voucher Detail No,Часопис Ваучер Детаљ Нема
+Journal Entry Account,Часопис Ваучер Детаљ
+Journal Entry Account No,Часопис Ваучер Детаљ Нема
 Journal Voucher {0} does not have account {1} or already matched,Часопис Ваучер {0} нема рачун {1} или већ упарен
 Journal Vouchers {0} are un-linked,Журнал Ваучеры {0} являются не- связаны
 Keep a track of communication related to this enquiry which will help for future reference.,Водите евиденцију о комуникацији у вези са овом истрагу која ће помоћи за будућу референцу.
diff --git a/erpnext/translations/ta.csv b/erpnext/translations/ta.csv
index d87d64a..931353d 100644
--- a/erpnext/translations/ta.csv
+++ b/erpnext/translations/ta.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,ஜர்னல் பதிவுகள்
 Journal Entry,பத்திரிகை நுழைவு
 Journal Voucher,பத்திரிகை வவுச்சர்
-Journal Voucher Detail,பத்திரிகை வவுச்சர் விரிவாக
-Journal Voucher Detail No,பத்திரிகை வவுச்சர் விரிவாக இல்லை
+Journal Entry Account,பத்திரிகை வவுச்சர் விரிவாக
+Journal Entry Account No,பத்திரிகை வவுச்சர் விரிவாக இல்லை
 Journal Voucher {0} does not have account {1} or already matched,ஜர்னல் வவுச்சர் {0} கணக்கு இல்லை {1} அல்லது ஏற்கனவே பொருந்தியது
 Journal Vouchers {0} are un-linked,ஜர்னல் கே {0} ஐ.நா. இணைக்கப்பட்ட
 Keep a track of communication related to this enquiry which will help for future reference.,எதிர்கால உதவும் இந்த விசாரணை தொடர்பான தகவல் ஒரு கண்காணிக்க.
diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv
index 4e1a185..b1b0ebd 100644
--- a/erpnext/translations/th.csv
+++ b/erpnext/translations/th.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,บันทึกรายการแบบรวม
 Journal Entry,บันทึกรายการค้า
 Journal Voucher,บัตรกำนัลวารสาร
-Journal Voucher Detail,รายละเอียดใบสำคัญรายวันทั่วไป
-Journal Voucher Detail No,รายละเอียดใบสำคัญรายวันทั่วไปไม่มี
+Journal Entry Account,รายละเอียดใบสำคัญรายวันทั่วไป
+Journal Entry Account No,รายละเอียดใบสำคัญรายวันทั่วไปไม่มี
 Journal Voucher {0} does not have account {1} or already matched,ใบสำคัญรายวันทั่วไป {0} ไม่ได้มี บัญชี {1} หรือ การจับคู่ แล้ว
 Journal Vouchers {0} are un-linked,ใบสำคัญรายวันทั่วไป {0} จะ ยกเลิกการ เชื่อมโยง
 Keep a track of communication related to this enquiry which will help for future reference.,ติดตามของการสื่อสารที่เกี่ยวข้องกับการสืบสวนเรื่องนี้ซึ่งจะช่วยให้สำหรับการอ้างอิงในอนาคต
diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv
index e3ed446..a2d4443 100644
--- a/erpnext/translations/tr.csv
+++ b/erpnext/translations/tr.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Alacak/Borç Girişleri
 Journal Entry,Alacak/Borç Girişleri
 Journal Voucher,Alacak/Borç Çeki
-Journal Voucher Detail,Alacak/Borç Fiş Detay
-Journal Voucher Detail No,Alacak/Borç Fiş Detay No
+Journal Entry Account,Alacak/Borç Fiş Detay
+Journal Entry Account No,Alacak/Borç Fiş Detay No
 Journal Voucher {0} does not have account {1} or already matched,Dergi Çeki {0} hesabı yok {1} ya da zaten eşleşti
 Journal Vouchers {0} are un-linked,Dergi Fişler {0} un-bağlantılı
 Keep a track of communication related to this enquiry which will help for future reference.,Gelecekte başvurulara yardımcı olmak için bu soruşturma ile ilgili bir iletişim takip edin.
diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv
index 8a6de8c..0fb6f52 100644
--- a/erpnext/translations/vi.csv
+++ b/erpnext/translations/vi.csv
@@ -1458,8 +1458,8 @@
 Journal Entries,Tạp chí Entries
 Journal Entry,Tạp chí nhập
 Journal Voucher,Tạp chí Voucher
-Journal Voucher Detail,Tạp chí Chứng từ chi tiết
-Journal Voucher Detail No,Tạp chí Chứng từ chi tiết Không
+Journal Entry Account,Tạp chí Chứng từ chi tiết
+Journal Entry Account No,Tạp chí Chứng từ chi tiết Không
 Journal Voucher {0} does not have account {1} or already matched,Tạp chí Chứng từ {0} không có tài khoản {1} hoặc đã khớp
 Journal Vouchers {0} are un-linked,Tạp chí Chứng từ {0} được bỏ liên kết
 Keep a track of communication related to this enquiry which will help for future reference.,Giữ một ca khúc của truyền thông liên quan đến cuộc điều tra này sẽ giúp cho tài liệu tham khảo trong tương lai.
diff --git a/erpnext/translations/zh-cn.csv b/erpnext/translations/zh-cn.csv
index 36a4473..de66f90 100644
--- a/erpnext/translations/zh-cn.csv
+++ b/erpnext/translations/zh-cn.csv
@@ -1490,8 +1490,8 @@
 Journal Entries,日记帐分录
 Journal Entry,日记帐分录
 Journal Voucher,期刊券
-Journal Voucher Detail,日记帐凭证详细信息
-Journal Voucher Detail No,日记帐凭证详细说明暂无
+Journal Entry Account,日记帐凭证详细信息
+Journal Entry Account No,日记帐凭证详细说明暂无
 Journal Voucher {0} does not have account {1} or already matched,记账凭单{0}没有帐号{1}或已经匹配
 Journal Vouchers {0} are un-linked,日记帐凭单{0}被取消链接
 Keep a track of communication related to this enquiry which will help for future reference.,保持跟踪的沟通与此相关的调查，这将有助于以供将来参考。
diff --git a/erpnext/translations/zh-tw.csv b/erpnext/translations/zh-tw.csv
index 609806b..92936a4 100644
--- a/erpnext/translations/zh-tw.csv
+++ b/erpnext/translations/zh-tw.csv
@@ -1490,8 +1490,8 @@
 Journal Entries,日記帳分錄
 Journal Entry,日記帳分錄
 Journal Voucher,期刊券
-Journal Voucher Detail,日記帳憑證詳細信息
-Journal Voucher Detail No,日記帳憑證詳細說明暫無
+Journal Entry Account,日記帳憑證詳細信息
+Journal Entry Account No,日記帳憑證詳細說明暫無
 Journal Voucher {0} does not have account {1} or already matched,記賬憑單{0}沒有帳號{1}或已經匹配
 Journal Vouchers {0} are un-linked,日記帳憑單{0}被取消鏈接
 Keep a track of communication related to this enquiry which will help for future reference.,保持跟踪的溝通與此相關的調查，這將有助於以供將來參考。
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 4ba1627..8306eac 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -48,7 +48,7 @@
 			})
 
 			if frappe.db.exists("User", self.contact_by):
-				event_doclist.append("event_individuals", {
+				event_doclist.append("users", {
 					"doctype": "Event User",
 					"person": self.contact_by
 				})
