Merge branch 'master' into develop
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 7ec8430..6a7922a 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -24,3 +24,18 @@
 	company = get_default_company()
 	if company:
 		return frappe.db.get_value('Company', company, 'default_currency')
+
+def set_perpetual_inventory(enable=1):
+	accounts_settings = frappe.get_doc("Accounts Settings")
+	accounts_settings.auto_accounting_for_stock = enable
+	accounts_settings.save()
+
+def encode_company_abbr(name, company):
+	'''Returns name encoded with company abbreviation'''
+	company_abbr = frappe.db.get_value("Company", company, "abbr")
+	parts = name.rsplit(" - ", 1)
+
+	if parts[-1].lower() != company_abbr.lower():
+		parts.append(company_abbr)
+
+	return " - ".join([parts[0], company_abbr])
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index cedaf60..11f376d 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -3,11 +3,12 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.utils import cstr, cint
+from frappe.utils import cint, fmt_money
 from frappe import throw, _
 from frappe.model.document import Document
 
 class RootNotEditable(frappe.ValidationError): pass
+class BalanceMismatchError(frappe.ValidationError): pass
 
 class Account(Document):
 	nsm_parent_field = 'parent_account'
@@ -162,23 +163,38 @@
 			throw(_("Report Type is mandatory"))
 
 	def validate_warehouse_account(self):
+		'''If perpetual inventory is set, and warehouse is linked,
+		the account balance and stock balance as of now must always match.
+		'''
+		from erpnext.accounts.utils import get_balance_on
+		from erpnext.stock.utils import get_stock_value_on
 		if not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")):
 			return
-			
-		if self.account_type == "Stock" and not cint(self.is_group):
-			if not self.warehouse:
-				throw(_("Warehouse is mandatory"))
-				
-			old_warehouse = cstr(frappe.db.get_value("Account", self.name, "warehouse"))
-			if old_warehouse != cstr(self.warehouse):
-				if old_warehouse and frappe.db.exists("Warehouse", old_warehouse):
-					self.validate_warehouse(old_warehouse)
-				if self.warehouse:
-					self.validate_warehouse(self.warehouse)
-					
+
+		if self.account_type == "Stock":
+			if self.is_group == 0 and not self.warehouse:
+				frappe.throw(_("Warehouse is mandatory for non group Accounts of type Stock"))
+
+			if self.warehouse:
+				# company must be same
+				if frappe.get_value('Warehouse', self.warehouse, 'company') != self.company:
+					frappe.throw(_("Warehouse company must be same as Account company"))
+
+				# balance must be same
+				stock_balance = get_stock_value_on(self.warehouse)
+				if self.is_new():
+					account_balance = 0.0
+				else:
+					account_balance = get_balance_on(self.name)
+
+				if account_balance != stock_balance:
+					frappe.throw(_('Account balance ({0}) and stock value ({1}) must be same')\
+						.format(fmt_money(account_balance, self.account_currency),
+							fmt_money(stock_balance, self.account_currency)))
+
 		elif self.warehouse:
 			self.warehouse = None
-	
+
 	def validate_warehouse(self, warehouse):
 		lft, rgt = frappe.db.get_value("Warehouse", warehouse, ["lft", "rgt"])
 
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
index 2ff98da..517a2a3 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
@@ -43,11 +43,13 @@
 
 	def on_update(self):
 		check_duplicate_fiscal_year(self)
+		frappe.cache().delete_value("fiscal_years")
 	
 	def on_trash(self):
 		global_defaults = frappe.get_doc("Global Defaults")
 		if global_defaults.current_fiscal_year == self.name:
 			frappe.throw(_("You cannot delete Fiscal Year {0}. Fiscal Year {0} is set as default in Global Settings").format(self.name))
+		frappe.cache().delete_value("fiscal_years")
 
 	def validate_overlap(self):
 		existing_fiscal_years = frappe.db.sql("""select name from `tabFiscal Year`
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 5773813..ce60298 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -18,22 +18,27 @@
 	def validate(self):
 		self.flags.ignore_submit_comment = True
 		self.check_mandatory()
-		self.pl_must_have_cost_center()
-		self.check_pl_account()
-		self.validate_cost_center()
-		self.validate_party()
-		self.validate_currency()
 		self.validate_and_set_fiscal_year()
+		
+		if not self.flags.from_repost:
+			self.pl_must_have_cost_center()
+			self.check_pl_account()
+			self.validate_cost_center()
+			self.validate_party()
+			self.validate_currency()
 
-	def on_update_with_args(self, adv_adj, update_outstanding = 'Yes'):
-		self.validate_account_details(adv_adj)
+
+	def on_update_with_args(self, adv_adj, update_outstanding = 'Yes', from_repost=False):
+		if not from_repost:
+			self.validate_account_details(adv_adj)
+			check_freezing_date(self.posting_date, adv_adj)
+			
 		validate_frozen_account(self.account, adv_adj)
-		check_freezing_date(self.posting_date, adv_adj)
 		validate_balance_type(self.account, adv_adj)
 
 		# Update outstanding amt on against voucher
 		if self.against_voucher_type in ['Journal Entry', 'Sales Invoice', 'Purchase Invoice'] \
-			and self.against_voucher and update_outstanding == 'Yes':
+			and self.against_voucher and update_outstanding == 'Yes' and not from_repost:
 				update_outstanding_amt(self.account, self.party_type, self.party, self.against_voucher_type,
 					self.against_voucher)
 
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index c98e77f..fc261a5 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -86,9 +86,9 @@
 			};
 		});
 
-		me.frm.set_query("party_type", "accounts", function(doc, cdt, cdn) {
-			return {
-				filters: {"name": ["in", ["Customer", "Supplier"]]}
+		me.frm.set_query("party_type", "accounts", function() {
+			return{
+				query: "erpnext.setup.doctype.party_type.party_type.get_party_type"
 			}
 		});
 
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 5cf2d92..0cf34dd 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -9,6 +9,7 @@
 from erpnext.accounts.utils import get_balance_on, get_account_currency
 from erpnext.setup.utils import get_company_currency
 from erpnext.accounts.party import get_party_account
+from erpnext.hr.doctype.expense_claim.expense_claim import update_reimbursed_amount
 
 class JournalEntry(AccountsController):
 	def __init__(self, arg1, arg2=None):
@@ -40,9 +41,9 @@
 		self.clear_zero_debit_credit_row()
 		if not self.title:
 			self.title = self.get_title()
-			
+
 	def clear_zero_debit_credit_row(self):
-		self.accounts = [account for account in self.accounts 
+		self.accounts = [account for account in self.accounts
 			if not (account.debit_in_account_currency==0.0 and account.credit_in_account_currency==0.0)]
 
 		if not self.accounts:
@@ -378,7 +379,7 @@
 		bank_amount = party_amount = total_amount = 0.0
 		currency = bank_account_currency = party_account_currency = pay_to_recd_from= None
 		for d in self.get('accounts'):
-			if d.party_type and d.party:
+			if d.party_type in ['Customer', 'Supplier'] and d.party:
 				if not pay_to_recd_from:
 					pay_to_recd_from = frappe.db.get_value(d.party_type, d.party,
 						"customer_name" if d.party_type=="Customer" else "supplier_name")
@@ -439,7 +440,7 @@
 		if not self.get('accounts'):
 			msgprint(_("'Entries' cannot be empty"), raise_exception=True)
 		else:
-			flag, self.total_debit, self.total_credit = 0, 0, 0
+			self.total_debit, self.total_credit = 0, 0
 			diff = flt(self.difference, self.precision("difference"))
 
 			# If any row without amount, set the diff on that row
@@ -506,11 +507,9 @@
 
 	def update_expense_claim(self):
 		for d in self.accounts:
-			if d.reference_type=="Expense Claim":
-				amt = frappe.db.sql("""select sum(debit) as amt from `tabJournal Entry Account`
-					where reference_type = "Expense Claim" and
-					reference_name = %s and docstatus = 1""", d.reference_name ,as_dict=1)[0].amt
-				frappe.db.set_value("Expense Claim", d.reference_name , "total_amount_reimbursed", amt)
+			if d.reference_type=="Expense Claim" and d.party:
+				doc = frappe.get_doc("Expense Claim", d.reference_name)
+				update_reimbursed_amount(doc)
 
 	def validate_expense_claim(self):
 		for d in self.accounts:
@@ -569,7 +568,7 @@
 	if account:
 		account_details = frappe.db.get_value("Account", account,
 			["account_currency", "account_type"], as_dict=1)
-			
+
 		return frappe._dict({
 			"account": account,
 			"balance": get_balance_on(account),
@@ -654,7 +653,7 @@
 	cost_center = frappe.db.get_value("Company", ref_doc.company, "cost_center")
 	exchange_rate = 1
 	if args.get("party_account"):
-		# Modified to include the posting date for which the exchange rate is required. 
+		# Modified to include the posting date for which the exchange rate is required.
 		# Assumed to be the posting date in the reference document
 		exchange_rate = get_exchange_rate(ref_doc.get("posting_date") or ref_doc.get("transaction_date"), 
 			args.get("party_account"), args.get("party_account_currency"),
@@ -690,7 +689,7 @@
 	bank_account = get_default_bank_cash_account(ref_doc.company, "Bank", account=args.get("bank_account"))
 	if bank_account:
 		bank_row.update(bank_account)
-		# Modified to include the posting date for which the exchange rate is required. 
+		# Modified to include the posting date for which the exchange rate is required.
 		# Assumed to be the posting date of the reference date
 		bank_row.exchange_rate = get_exchange_rate(ref_doc.get("posting_date") 
 			or ref_doc.get("transaction_date"), bank_account["account"], 
@@ -718,8 +717,14 @@
 @frappe.whitelist()
 def get_opening_accounts(company):
 	"""get all balance sheet accounts for opening entry"""
-	accounts = frappe.db.sql_list("""select name from tabAccount
-		where is_group=0 and report_type='Balance Sheet' and company=%s""", company)
+	accounts = frappe.db.sql_list("""select
+			name from tabAccount
+		where
+			is_group=0 and
+			report_type='Balance Sheet' and
+			ifnull(warehouse, '') = '' and
+			company=%s
+		order by name asc""", company)
 
 	return [{"account": a, "balance": get_balance_on(a)} for a in accounts]
 
@@ -817,8 +822,8 @@
 		"party_type": party_type,
 		"account_type": account_details.account_type,
 		"account_currency": account_details.account_currency or company_currency,
-		
-		# The date used to retreive the exchange rate here is the date passed in 
+
+		# The date used to retreive the exchange rate here is the date passed in
 		# as an argument to this function. It is assumed to be the date on which the balance is sought
 		"exchange_rate": get_exchange_rate(date, account, account_details.account_currency,
 			company, debit=debit, credit=credit, exchange_rate=exchange_rate)
@@ -858,7 +863,7 @@
 				(account_details.root_type == "Liability" and debit)):
 			exchange_rate = get_average_exchange_rate(account)
 
-		# The date used to retreive the exchange rate here is the date passed 
+		# The date used to retreive the exchange rate here is the date passed
 		# in as an argument to this function.
 		if not exchange_rate and account_currency and posting_date:
 			exchange_rate = get_exchange_rate(account_currency, company_currency, posting_date)
diff --git a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
index b4bb542..8756ca4 100644
--- a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
@@ -171,7 +171,7 @@
 		})
 
 		jv.submit()
-		
+
 	def test_clear_blank_rows(self):
 		je = make_journal_entry("_Test Bank - _TC", "_Test Account Stock Expenses - _TC", 100, save=False)
 		je.append("accounts", {
@@ -180,11 +180,11 @@
 			"credit_in_account_currency": 0,
 			"exchange_rate": 1
 		})
-		
+
 		self.assertEqual(len(je.get("accounts")), 3)
 		je.save()
-		self.assertEqual(len(je.get("accounts")), 2)		
-		
+		self.assertEqual(len(je.get("accounts")), 2)
+
 
 def make_journal_entry(account1, account2, amount, cost_center=None, posting_date=None, exchange_rate=1, save=True, submit=False, project=None):
 	if not cost_center:
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index 1bbe200..0130366 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -26,6 +26,12 @@
 			}
 		});
 
+		frm.set_query("party_type", function() {
+			return{
+				query: "erpnext.setup.doctype.party_type.party_type.get_party_type"
+			}
+		});
+
 		frm.set_query("paid_to", function() {
 			var account_types = in_list(["Receive", "Internal Transfer"], frm.doc.payment_type) ?
 	 			["Bank", "Cash"] : party_account_type;
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index c56a83d..98fa445 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -102,95 +102,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type)", 
-   "fieldname": "party_type", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Party Type", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Customer\nSupplier", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type) && doc.party_type", 
-   "fieldname": "party", 
-   "fieldtype": "Dynamic Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Party", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "party_type", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 1, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "description": "", 
-   "fieldname": "party_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Party Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "column_break_5", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -212,7 +123,7 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
-  }, 
+  },    
   {
    "allow_on_submit": 0, 
    "bold": 1, 
@@ -303,6 +214,152 @@
   {
    "allow_on_submit": 0, 
    "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type) && doc.party_type", 
+   "fieldname": "party_section", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Payment From / To", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type)", 
+   "fieldname": "party_type", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 1, 
+   "label": "Party Type", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "DocType", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 1, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type) && doc.party_type", 
+   "fieldname": "party", 
+   "fieldtype": "Dynamic Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 1, 
+   "label": "Party", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "party_type", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_11", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 1, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type) && doc.party_type", 
+   "description": "", 
+   "fieldname": "party_name", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Party Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
    "collapsible": 1, 
    "columns": 0, 
    "fieldname": "payment_accounts_section", 
@@ -1561,7 +1618,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:33:40.371480", 
+ "modified": "2017-01-30 00:41:51.348616", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Entry", 
@@ -1578,7 +1635,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 1, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1599,7 +1655,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 1, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1617,5 +1672,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "title", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index 6a951a0..272e474 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -6,12 +6,10 @@
 erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.extend({
 	onload: function() {
 		var me = this
-		this.frm.set_query('party_type', function() {
-			return {
-				filters: {
-					"name": ["in", ["Customer", "Supplier"]]
-				}
-			};
+		this.frm.set_query("party_type", function() {
+			return{
+				query: "erpnext.setup.doctype.party_type.party_type.get_party_type"
+			}
 		});
 
 		this.frm.set_query('receivable_payable_account', function() {
diff --git a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json
index f77560c..57fce65 100644
--- a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json
+++ b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json
@@ -22,6 +22,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Reference Type", 
    "length": 0, 
    "no_copy": 0, 
@@ -30,6 +31,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -48,7 +50,8 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Reference_name", 
+   "in_standard_filter": 0, 
+   "label": "Reference Name", 
    "length": 0, 
    "no_copy": 0, 
    "options": "reference_type", 
@@ -57,6 +60,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -75,6 +79,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Posting Date", 
    "length": 0, 
    "no_copy": 0, 
@@ -82,6 +87,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -100,6 +106,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Is Advance", 
    "length": 0, 
    "no_copy": 0, 
@@ -107,6 +114,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -125,6 +133,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Reference Row", 
    "length": 0, 
    "no_copy": 0, 
@@ -132,6 +141,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -150,6 +160,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "", 
    "length": 0, 
    "no_copy": 0, 
@@ -157,6 +168,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -175,6 +187,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Invoice Number", 
    "length": 0, 
    "no_copy": 0, 
@@ -183,6 +196,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -201,6 +215,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Amount", 
    "length": 0, 
    "no_copy": 0, 
@@ -208,6 +223,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -226,6 +242,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Allocated amount", 
    "length": 0, 
    "no_copy": 0, 
@@ -234,6 +251,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -252,6 +270,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "", 
    "length": 0, 
    "no_copy": 0, 
@@ -259,6 +278,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -277,6 +297,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Remark", 
    "length": 0, 
    "no_copy": 0, 
@@ -284,6 +305,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -302,7 +324,7 @@
  "istable": 1, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-08-26 02:08:35.879133", 
+ "modified": "2017-01-30 01:04:22.557237", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Reconciliation Payment", 
@@ -314,5 +336,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
index 04d4ed7..03d0918 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -35,9 +35,9 @@
 	def validate_posting_date(self):
 		from erpnext.accounts.utils import get_fiscal_year, validate_fiscal_year
 
-		validate_fiscal_year(self.posting_date, self.fiscal_year, label=_("Posting Date"), doc=self)
+		validate_fiscal_year(self.posting_date, self.fiscal_year, self.company, label=_("Posting Date"), doc=self)
 
-		self.year_start_date = get_fiscal_year(self.posting_date, self.fiscal_year)[1]
+		self.year_start_date = get_fiscal_year(self.posting_date, self.fiscal_year, company=self.company)[1]
 
 		pce = frappe.db.sql("""select name from `tabPeriod Closing Voucher`
 			where posting_date > %s and fiscal_year = %s and docstatus = 1""",
diff --git a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
index d68e291..9ef66ed 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
@@ -11,7 +11,7 @@
 
 class TestPeriodClosingVoucher(unittest.TestCase):
 	def test_closing_entry(self):
-		year_start_date = get_fiscal_year(today())[1]
+		year_start_date = get_fiscal_year(today(), company="_Test Company")[1]
 
 		make_journal_entry("_Test Bank - _TC", "Sales - _TC", 400,
 			"_Test Cost Center - _TC", posting_date=now(), submit=True)
@@ -70,7 +70,7 @@
 			"doctype": "Period Closing Voucher",
 			"closing_account_head": "_Test Account Reserves and Surplus - _TC",
 			"company": "_Test Company",
-			"fiscal_year": get_fiscal_year(today())[0],
+			"fiscal_year": get_fiscal_year(today(), company="_Test Company")[0],
 			"posting_date": today(),
 			"remarks": "test"
 		})
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
index 5a3e651..03bb7ae 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
@@ -91,8 +91,8 @@
 }
 
 //Dynamically change the description based on type of margin
-cur_frm.cscript.type = function(doc){
-	cur_frm.set_df_property('rate', 'description', doc.type=='Percentage'?'In Percentage %':'In Amount')
+cur_frm.cscript.margin_type = function(doc){
+	cur_frm.set_df_property('margin_rate_or_amount', 'description', doc.margin_type=='Percentage'?'In Percentage %':'In Amount')
 }
 
 frappe.ui.form.on('Pricing Rule', 'price_or_discount', function(frm){
@@ -112,4 +112,4 @@
 			}
 		}
 	}
-})
\ No newline at end of file
+})
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index 3c62297..c5d2b31 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -123,12 +123,13 @@
 	
 def get_serial_no_for_item(args):
 	from erpnext.stock.get_item_details import get_serial_no
+
 	item_details = frappe._dict({
 		"doctype": args.doctype,
 		"name": args.name,
 		"serial_no": args.serial_no
 	})
-	if args.get("parenttype") in ("Sales Invoice", "Delivery Note"):
+	if args.get("parenttype") in ("Sales Invoice", "Delivery Note") and args.qty > 0:
 		item_details.serial_no = get_serial_no(args)
 	return item_details
 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index b6378f1..c322370 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -8,7 +8,7 @@
 erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({
 	onload: function() {
 		this._super();
-		
+
 		if(!this.frm.doc.__islocal) {
 			// show credit_to in print format
 			if(!this.frm.doc.supplier && this.frm.doc.credit_to) {
@@ -32,7 +32,7 @@
 		if(doc.update_stock==1 && doc.docstatus==1) {
 			this.show_stock_ledger();
 		}
-		
+
 		if(!doc.is_return && doc.docstatus==1) {
 			if(doc.outstanding_amount != 0) {
 				this.frm.add_custom_button(__('Payment'), this.make_payment_entry, __("Make"));
@@ -218,18 +218,6 @@
 	}
 }
 
-cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) {
-	return{
-		filters:{'supplier':  doc.supplier}
-	}
-}
-
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-	return{
-		filters:{'supplier':  doc.supplier}
-	}
-}
-
 cur_frm.fields_dict['items'].grid.get_field("item_code").get_query = function(doc, cdt, cdn) {
 	return {
 		query: "erpnext.controllers.queries.item_query",
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 2791d6f..dfc3118 100755
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -3343,7 +3343,7 @@
    "collapsible": 0, 
    "columns": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
-   "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", 
+   "description": "Enter Email Address separated by commas, invoice will be mailed automatically on particular date", 
    "fieldname": "notification_email_address", 
    "fieldtype": "Small Text", 
    "hidden": 0, 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 14459fa..c0693d1 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -302,11 +302,11 @@
 				asset.flags.ignore_validate_update_after_submit = True
 				asset.save()
 
-	def make_gl_entries(self, repost_future_gle=True):
+	def make_gl_entries(self, gl_entries=None, repost_future_gle=True, from_repost=False):
 		if not self.grand_total:
 			return
-		
-		gl_entries = self.get_gl_entries()
+		if not gl_entries:
+			gl_entries = self.get_gl_entries()
 		
 		if gl_entries:
 			update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes"
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index bd54776..070dbeb 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -30,6 +30,7 @@
 		'doc': doc,
 		'default_customer': pos_profile.get('customer'),
 		'items': get_items_list(pos_profile),
+		'item_groups': get_item_group(pos_profile),
 		'customers': get_customers_list(pos_profile),
 		'serial_no_data': get_serial_no_data(pos_profile, doc.company),
 		'batch_no_data': get_batch_no_data(),
@@ -140,6 +141,15 @@
 			disabled = 0 and has_variants = 0 and is_sales_item = 1 and {cond}
 		""".format(cond=cond), tuple(item_groups), as_dict=1)
 
+def get_item_group(pos_profile):
+	if pos_profile.get('item_groups'):
+		item_groups = []
+		for d in pos_profile.get('item_groups'):
+			item_groups.extend(get_child_nodes('Item Group', d.item_group))
+		return item_groups
+	else:
+		return frappe.db.sql_list("""Select name from `tabItem Group` order by name""")
+
 def get_customers_list(pos_profile):
 	cond = "1=1"
 	customer_groups = []
@@ -276,11 +286,33 @@
 		customer_doc = frappe.new_doc('Customer')
 		customer_doc.customer_name = doc.get('customer')
 		customer_doc.customer_type = 'Company'
-		customer_doc.customer_group = doc.get('customer_group')
-		customer_doc.territory = doc.get('territory')
+		customer_doc.customer_group = frappe.db.get_single_value('Selling Settings', 'customer_group')
+		customer_doc.territory = frappe.db.get_single_value('Selling Settings', 'territory')
+		customer_doc.flags.ignore_mandatory = True
 		customer_doc.save(ignore_permissions = True)
 		frappe.db.commit()
 		doc['customer'] = customer_doc.name
+		if doc.get('contact_details'):
+			args = json.loads(doc.get("contact_details"))
+			make_address(doc, args, customer_doc.name)
+
+def make_address(doc, args, customer):
+	if args.get("address_line1"):
+		address = frappe.new_doc('Address')
+		address.address_line1 = args.get('address_line1')
+		address.address_line2 = args.get('address_line2')
+		address.city = args.get('city')
+		address.state = args.get('state')
+		address.zip_code = args.get('zip_code')
+		address.email_id = args.get('email_id')
+		address.flags.ignore_mandatory = True
+		address.country = frappe.db.get_value('Company', doc.get('company'), 'country')
+		address.append('links',{
+			'link_doctype': 'Customer',
+			'link_name': customer
+		})
+		address.save(ignore_permissions = True)
+		frappe.db.commit()
 
 def validate_item(doc):
 	for item in doc.get('items'):
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index 7ade318..4fb3dba 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -6,7 +6,7 @@
  "beta": 0, 
  "creation": "2013-05-24 19:29:05", 
  "custom": 0, 
- "default_print_format": "Standard", 
+ "default_print_format": "Sample Print", 
  "docstatus": 0, 
  "doctype": "DocType", 
  "document_type": "", 
@@ -22,7 +22,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -51,7 +50,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Title", 
@@ -79,7 +77,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Series", 
@@ -109,7 +106,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Customer", 
@@ -140,7 +136,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Customer Name", 
@@ -169,7 +164,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is POS", 
@@ -199,7 +193,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Return", 
@@ -227,7 +220,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Offline POS Name", 
@@ -255,7 +247,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -283,7 +274,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Date", 
@@ -312,7 +302,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Payment Due Date", 
@@ -341,7 +330,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Company", 
@@ -371,7 +359,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Project", 
@@ -401,7 +388,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Amended From", 
@@ -432,7 +418,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Return Against Sales Invoice", 
@@ -462,7 +447,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Address and Contact", 
@@ -490,7 +474,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Customer Address", 
@@ -518,7 +501,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Address", 
@@ -545,7 +527,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Contact Person", 
@@ -573,7 +554,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Contact", 
@@ -600,7 +580,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Mobile No", 
@@ -627,7 +606,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Contact Email", 
@@ -655,7 +633,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -682,7 +659,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Shipping Address Name", 
@@ -711,7 +687,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Shipping Address", 
@@ -740,7 +715,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Customer Group", 
@@ -768,7 +742,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Territory", 
@@ -777,7 +750,7 @@
    "options": "Territory", 
    "permlevel": 0, 
    "precision": "", 
-   "print_hide": 0, 
+   "print_hide": 1, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "remember_last_selected_value": 0, 
@@ -798,7 +771,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Currency and Price List", 
@@ -826,7 +798,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Currency", 
@@ -857,7 +828,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Exchange Rate", 
@@ -887,7 +857,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -914,7 +883,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Price List", 
@@ -944,7 +912,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Price List Currency", 
@@ -973,7 +940,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Price List Exchange Rate", 
@@ -1001,7 +967,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Ignore Pricing Rule", 
@@ -1028,7 +993,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -1057,7 +1021,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Update Stock", 
@@ -1086,7 +1049,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Items", 
@@ -1116,7 +1078,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Packing List", 
@@ -1144,7 +1105,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Packed Items", 
@@ -1172,7 +1132,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Product Bundle Help", 
@@ -1201,7 +1160,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Time Sheet List", 
@@ -1229,7 +1187,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Time Sheets", 
@@ -1259,7 +1216,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Billing Amount", 
@@ -1287,7 +1243,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1313,7 +1268,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total (Company Currency)", 
@@ -1342,7 +1296,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Net Total (Company Currency)", 
@@ -1372,7 +1325,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1398,7 +1350,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Net Total", 
@@ -1426,7 +1377,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total", 
@@ -1455,7 +1405,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -1484,7 +1433,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Taxes and Charges", 
@@ -1514,7 +1462,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1540,7 +1487,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Shipping Rule", 
@@ -1569,7 +1515,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1595,7 +1540,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Taxes and Charges", 
@@ -1625,7 +1569,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Taxes and Charges Calculation", 
@@ -1653,7 +1596,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1679,7 +1621,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Taxes and Charges (Company Currency)", 
@@ -1709,7 +1650,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1736,7 +1676,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Taxes and Charges", 
@@ -1765,7 +1704,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Additional Discount", 
@@ -1794,7 +1732,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Apply Additional Discount On", 
@@ -1823,7 +1760,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Additional Discount Amount (Company Currency)", 
@@ -1852,7 +1788,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1878,7 +1813,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Additional Discount Percentage", 
@@ -1906,7 +1840,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Additional Discount Amount", 
@@ -1934,7 +1867,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -1963,7 +1895,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Grand Total (Company Currency)", 
@@ -1993,7 +1924,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Rounded Total (Company Currency)", 
@@ -2024,7 +1954,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "In Words (Company Currency)", 
@@ -2053,7 +1982,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2081,7 +2009,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Grand Total", 
@@ -2111,7 +2038,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Rounded Total", 
@@ -2141,7 +2067,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "In Words", 
@@ -2170,7 +2095,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Advance", 
@@ -2200,7 +2124,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Outstanding Amount", 
@@ -2231,7 +2154,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Advance Payments", 
@@ -2260,7 +2182,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Get Advances Received", 
@@ -2289,7 +2210,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Advances", 
@@ -2321,7 +2241,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Payments", 
@@ -2350,7 +2269,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Cash/Bank Account", 
@@ -2380,7 +2298,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Invoice Payment", 
@@ -2409,7 +2326,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2436,7 +2352,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Paid Amount (Company Currency)", 
@@ -2465,7 +2380,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2493,7 +2407,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Paid Amount", 
@@ -2523,7 +2436,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2550,7 +2462,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Base Change Amount (Company Currency)", 
@@ -2579,7 +2490,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2606,7 +2516,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Change Amount", 
@@ -2635,7 +2544,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Account for Change Amount", 
@@ -2666,7 +2574,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Write Off", 
@@ -2695,7 +2602,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Write Off Amount", 
@@ -2723,7 +2629,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Write Off Amount (Company Currency)", 
@@ -2753,7 +2658,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Write Off Outstanding Amount", 
@@ -2781,7 +2685,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2809,7 +2712,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Write Off Account", 
@@ -2838,7 +2740,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Write Off Cost Center", 
@@ -2867,7 +2768,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Terms", 
@@ -2896,7 +2796,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Terms", 
@@ -2926,7 +2825,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Terms and Conditions Details", 
@@ -2955,7 +2853,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Printing Settings", 
@@ -2983,7 +2880,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Letter Head", 
@@ -3013,7 +2909,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Print Language", 
@@ -3041,7 +2936,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -3068,7 +2962,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Print Heading", 
@@ -3099,7 +2992,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "More Information", 
@@ -3128,7 +3020,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Campaign", 
@@ -3158,7 +3049,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -3186,7 +3076,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Status", 
@@ -3215,7 +3104,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Source", 
@@ -3245,7 +3133,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Accounting Details", 
@@ -3275,7 +3162,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Debit To", 
@@ -3305,7 +3191,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Party Account Currency", 
@@ -3336,7 +3221,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Opening Entry", 
@@ -3366,7 +3250,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "C-Form Applicable", 
@@ -3394,7 +3277,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "C-Form No", 
@@ -3422,7 +3304,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -3449,7 +3330,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Posting Time", 
@@ -3478,7 +3358,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Remarks", 
@@ -3508,7 +3387,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Commission", 
@@ -3537,7 +3415,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Partner", 
@@ -3567,7 +3444,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -3595,7 +3471,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Commission Rate (%)", 
@@ -3624,7 +3499,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Commission", 
@@ -3655,7 +3529,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Team", 
@@ -3682,7 +3555,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Team1", 
@@ -3714,7 +3586,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Recurring", 
@@ -3742,7 +3613,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Settings", 
@@ -3772,7 +3642,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Recurring", 
@@ -3801,7 +3670,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Reference Document", 
@@ -3831,7 +3699,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Frequency", 
@@ -3861,7 +3728,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Repeat on Day of Month", 
@@ -3890,7 +3756,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "End Date", 
@@ -3918,7 +3783,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Submit on creation", 
@@ -3948,7 +3812,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Notify by email", 
@@ -3978,7 +3841,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Notification Email Address", 
@@ -4007,7 +3869,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Recurring Print Format", 
@@ -4036,7 +3897,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "This Document", 
@@ -4066,7 +3926,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "From Date", 
@@ -4095,7 +3954,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "To Date", 
@@ -4124,7 +3982,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Next Date", 
@@ -4151,7 +4008,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Against Income Account", 
@@ -4183,7 +4039,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2017-01-18 13:21:13.226318", 
+ "modified": "2017-02-02 17:03:01.892758", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Sales Invoice", 
@@ -4199,7 +4055,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -4220,7 +4075,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -4241,7 +4095,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 1, 
    "print": 0, 
    "read": 1, 
@@ -4262,7 +4115,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 1, 
    "print": 0, 
    "read": 1, 
@@ -4282,5 +4134,6 @@
  "sort_order": "DESC", 
  "timeline_field": "customer", 
  "title_field": "title", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index c5aa7ea..890641b 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -532,10 +532,12 @@
 			if d.delivery_note and frappe.db.get_value("Delivery Note", d.delivery_note, "docstatus") != 1:
 				throw(_("Delivery Note {0} is not submitted").format(d.delivery_note))
 
-	def make_gl_entries(self, repost_future_gle=True):
+	def make_gl_entries(self, gl_entries=None, repost_future_gle=True, from_repost=False):
 		if not self.grand_total:
 			return
-		gl_entries = self.get_gl_entries()
+			
+		if not gl_entries:
+			gl_entries = self.get_gl_entries()
 
 		if gl_entries:
 			from erpnext.accounts.general_ledger import make_gl_entries
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index c4f275a..3dfe680 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -4,7 +4,7 @@
 
 import frappe
 import unittest, copy
-from frappe.utils import nowdate, add_days, flt, nowdate
+from frappe.utils import nowdate, add_days, flt
 from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry, get_qty_after_transaction
 from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import unlink_payment_on_cancel_of_invoice
 from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
@@ -162,11 +162,50 @@
 		self.assertEquals(si.base_grand_total, 1628)
 		self.assertEquals(si.grand_total, 32.56)
 
+	def test_sales_invoice_with_discount_and_inclusive_tax(self):
+		si = create_sales_invoice(qty=100, rate=50, do_not_save=True)
+		si.append("taxes", {
+			"charge_type": "On Net Total",
+			"account_head": "_Test Account Service Tax - _TC",
+			"cost_center": "_Test Cost Center - _TC",
+			"description": "Service Tax",
+			"rate": 14,
+			'included_in_print_rate': 1
+		})
+		si.insert()
+
+		# with inclusive tax
+		self.assertEquals(si.net_total, 4385.96)
+		self.assertEquals(si.grand_total, 5000)
+
+		si.reload()
+
+		# additional discount
+		si.discount_amount = 100
+		si.apply_discount_on = 'Net Total'
+
+		si.save()
+
+		# with inclusive tax and additional discount
+		self.assertEquals(si.net_total, 4285.96)
+		self.assertEquals(si.grand_total, 4885.99)
+
+		si.reload()
+
+		# additional discount on grand total
+		si.discount_amount = 100
+		si.apply_discount_on = 'Grand Total'
+
+		si.save()
+
+		# with inclusive tax and additional discount
+		self.assertEquals(si.net_total, 4298.24)
+		self.assertEquals(si.grand_total, 4900.00)
+
 	def test_sales_invoice_discount_amount(self):
 		si = frappe.copy_doc(test_records[3])
 		si.discount_amount = 104.95
 		si.append("taxes", {
-			"doctype": "Sales Taxes and Charges",
 			"charge_type": "On Previous Row Amount",
 			"account_head": "_Test Account Service Tax - _TC",
 			"cost_center": "_Test Cost Center - _TC",
@@ -917,51 +956,13 @@
 
 	def test_create_so_with_margin(self):
 		si = create_sales_invoice(item_code="_Test Item", qty=1, do_not_submit=True)
-		price_list_rate = si.items[0].price_list_rate
+		price_list_rate = 100
+		si.items[0].price_list_rate = price_list_rate
 		si.items[0].margin_type = 'Percentage'
 		si.items[0].margin_rate_or_amount = 25
 		si.insert()
+		self.assertEqual(si.get("items")[0].rate, flt((price_list_rate*25)/100 + price_list_rate))
 
-		self.assertNotEquals(si.get("items")[0].rate, flt((price_list_rate*25)/100 + price_list_rate))
-		si.items[0].margin_rate_or_amount = 25
-		si.submit()
-
-		self.assertNotEquals(si.get("items")[0].rate, flt((price_list_rate*25)/100 + price_list_rate))
-
-	def test_party_status(self):
-		from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
-		from frappe.utils import random_string
-
-		customer_name = 'test customer for status'
-
-		if frappe.db.exists('Customer', customer_name):
-			customer = frappe.get_doc('Customer', customer_name)
-			customer.db_set('status', 'Active')
-		else:
-			customer = frappe.get_doc({
-				'doctype': 'Customer',
-				'customer_name': customer_name,
-				'customer_group': 'Commercial',
-				'customer_type': 'Individual',
-				'territory': 'Rest of the World'
-			}).insert()
-
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active')
-
-		invoice = create_sales_invoice(customer="test customer for status",
-			debit_to="_Test Receivable - _TC",
-			currency="USD", conversion_rate=50)
-
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Open')
-
-		pe = get_payment_entry(invoice.doctype, invoice.name)
-		pe.reference_no = random_string(10)
-		pe.reference_date = invoice.posting_date
-		pe.insert()
-		pe.submit()
-
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active')
-	
 	def test_outstanding_amount_after_advance_jv_cancelation(self):
 		from erpnext.accounts.doctype.journal_entry.test_journal_entry \
 			import test_records as jv_test_records
@@ -986,15 +987,15 @@
 
 		#check outstanding after advance allocation
 		self.assertEqual(flt(si.outstanding_amount), flt(si.grand_total - si.total_advance, si.precision("outstanding_amount")))
-		
+
 		#added to avoid Document has been modified exception
 		jv = frappe.get_doc("Journal Entry", jv.name)
 		jv.cancel()
-		
+
 		si.load_from_db()
 		#check outstanding after advance cancellation
 		self.assertEqual(flt(si.outstanding_amount), flt(si.grand_total + si.total_advance, si.precision("outstanding_amount")))
-	
+
 	def test_outstanding_amount_after_advance_payment_entry_cancelation(self):
 		pe = frappe.get_doc({
 			"doctype": "Payment Entry",
@@ -1015,7 +1016,7 @@
 		})
 		pe.insert()
 		pe.submit()
-		
+
 		si = frappe.copy_doc(test_records[0])
 		si.is_pos = 0
 		si.append("advances", {
@@ -1028,16 +1029,16 @@
 		})
 		si.insert()
 		si.submit()
-		
+
 		si.load_from_db()
 
 		#check outstanding after advance allocation
 		self.assertEqual(flt(si.outstanding_amount), flt(si.grand_total - si.total_advance, si.precision("outstanding_amount")))
-		
+
 		#added to avoid Document has been modified exception
 		pe = frappe.get_doc("Payment Entry", pe.name)
 		pe.cancel()
-		
+
 		si.load_from_db()
 		#check outstanding after advance cancellation
 		self.assertEqual(flt(si.outstanding_amount), flt(si.grand_total + si.total_advance, si.precision("outstanding_amount")))
diff --git a/erpnext/accounts/doctype/tax_rule/tax_rule.py b/erpnext/accounts/doctype/tax_rule/tax_rule.py
index 7ec833e..606d067 100644
--- a/erpnext/accounts/doctype/tax_rule/tax_rule.py
+++ b/erpnext/accounts/doctype/tax_rule/tax_rule.py
@@ -7,6 +7,7 @@
 from frappe import _
 from frappe.model.document import Document
 from frappe.utils import cstr, cint
+from frappe.geo.doctype.address.address import get_default_address
 
 class IncorrectCustomerGroup(frappe.ValidationError): pass
 class IncorrectSupplierType(frappe.ValidationError): pass
@@ -96,27 +97,31 @@
 @frappe.whitelist()
 def get_party_details(party, party_type, args=None):
 	out = {}
+	billing_address, shipping_address = None, None
 	if args:
-		billing_filters=	{"name": args.get("billing_address")}
-		shipping_filters=	{"name": args.get("shipping_address")}
+		if args.get('billing_address'):
+			billing_address = frappe.get_doc('Address', args.get('billing_address'))
+		if args.get('shipping_address'):
+			shipping_address = frappe.get_doc('Address', args.get('shipping_address'))
 	else:
-		billing_filters=	{party_type: party, "is_primary_address": 1}
-		shipping_filters=	{party_type:party, "is_shipping_address": 1}
-
-	billing_address=	frappe.get_all("Address", fields=["city", "county", "state", "country"], filters= billing_filters)
-	shipping_address=	frappe.get_all("Address", fields=["city", "county", "state", "country"], filters= shipping_filters)
+		billing_address_name = get_default_address(party_type, party)
+		shipping_address_name = get_default_address(party_type, party, 'is_shipping_address')
+		if billing_address_name:
+			billing_address = frappe.get_doc('Address', billing_address_name)
+		if shipping_address_name:
+			shipping_address = frappe.get_doc('Address', shipping_address_name)
 
 	if billing_address:
-		out["billing_city"]= billing_address[0].city
-		out["billing_county"]= billing_address[0].county
-		out["billing_state"]= billing_address[0].state
-		out["billing_country"]= billing_address[0].country
+		out["billing_city"]= billing_address.city
+		out["billing_county"]= billing_address.county
+		out["billing_state"]= billing_address.state
+		out["billing_country"]= billing_address.country
 
 	if shipping_address:
-		out["shipping_city"]= shipping_address[0].city
-		out["shipping_county"]= shipping_address[0].county
-		out["shipping_state"]= shipping_address[0].state
-		out["shipping_country"]= shipping_address[0].country
+		out["shipping_city"]= shipping_address.city
+		out["shipping_county"]= shipping_address.county
+		out["shipping_state"]= shipping_address.state
+		out["shipping_country"]= shipping_address.country
 
 	return out
 
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 392902c..4c5535d 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -11,12 +11,12 @@
 
 class StockAccountInvalidTransaction(frappe.ValidationError): pass
 
-def make_gl_entries(gl_map, cancel=False, adv_adj=False, merge_entries=True, update_outstanding='Yes'):
+def make_gl_entries(gl_map, cancel=False, adv_adj=False, merge_entries=True, update_outstanding='Yes', from_repost=False):
 	if gl_map:
 		if not cancel:
 			gl_map = process_gl_map(gl_map, merge_entries)
 			if gl_map and len(gl_map) > 1:
-				save_entries(gl_map, adv_adj, update_outstanding)
+				save_entries(gl_map, adv_adj, update_outstanding, from_repost)
 			else:
 				frappe.throw(_("Incorrect number of General Ledger Entries found. You might have selected a wrong Account in the transaction."))
 		else:
@@ -78,21 +78,26 @@
 			and cstr(e.get('project')) == cstr(gle.get('project')):
 				return e
 
-def save_entries(gl_map, adv_adj, update_outstanding):
-	validate_account_for_auto_accounting_for_stock(gl_map)
+def save_entries(gl_map, adv_adj, update_outstanding, from_repost=False):
+	if not from_repost:
+		validate_account_for_auto_accounting_for_stock(gl_map)
+		
 	round_off_debit_credit(gl_map)
 
 	for entry in gl_map:
-		make_entry(entry, adv_adj, update_outstanding)
+		make_entry(entry, adv_adj, update_outstanding, from_repost)
+		
 		# check against budget
-		validate_expense_against_budget(entry)
+		if not from_repost:
+			validate_expense_against_budget(entry)
 
-def make_entry(args, adv_adj, update_outstanding):
+def make_entry(args, adv_adj, update_outstanding, from_repost=False):
 	args.update({"doctype": "GL Entry"})
 	gle = frappe.get_doc(args)
 	gle.flags.ignore_permissions = 1
+	gle.flags.from_repost = from_repost
 	gle.insert()
-	gle.run_method("on_update_with_args", adv_adj, update_outstanding)
+	gle.run_method("on_update_with_args", adv_adj, update_outstanding, from_repost)
 	gle.submit()
 
 def validate_account_for_auto_accounting_for_stock(gl_map):
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index 55f6653..ed54ab4 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -1,7 +1,7 @@
 frappe.provide("erpnext.pos");
 {% include "erpnext/public/js/controllers/taxes_and_totals.js" %}
 
-frappe.pages['pos'].on_page_load = function(wrapper) {
+frappe.pages['pos'].on_page_load = function (wrapper) {
 	var page = frappe.ui.make_app_page({
 		parent: wrapper,
 		title: __('Point of Sale'),
@@ -11,15 +11,15 @@
 	wrapper.pos = new erpnext.pos.PointOfSale(wrapper)
 }
 
-frappe.pages['pos'].refresh = function(wrapper) {
+frappe.pages['pos'].refresh = function (wrapper) {
 	window.onbeforeunload = function () {
 		return wrapper.pos.beforeunload()
 	}
 }
 
-
 erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
-	init: function(wrapper){
+	init: function (wrapper) {
+		this.page_len = 20;
 		this.page = wrapper.page;
 		this.wrapper = $(wrapper).find('.page-content');
 		this.set_indicator();
@@ -28,13 +28,13 @@
 		this.si_docs = this.get_doc_from_localstorage();
 	},
 
-	beforeunload: function(e){
-		if(this.connection_status == false && frappe.get_route()[0] == "pos"){
+	beforeunload: function (e) {
+		if (this.connection_status == false && frappe.get_route()[0] == "pos") {
 			e = e || window.event;
 
 			// For IE and Firefox prior to version 4
 			if (e) {
-			    e.returnValue = __("You are in offline mode. You will not be able to reload until you have network.");
+				e.returnValue = __("You are in offline mode. You will not be able to reload until you have network.");
 				return
 			}
 
@@ -43,23 +43,23 @@
 		}
 	},
 
-	check_internet_connection: function(){
+	check_internet_connection: function () {
 		var me = this;
 		//Check Internet connection after every 30 seconds
-		setInterval(function(){
+		setInterval(function () {
 			me.set_indicator();
 		}, 5000)
 	},
 
-	set_indicator: function(){
+	set_indicator: function () {
 		var me = this;
 		// navigator.onLine
 		this.connection_status = false;
 		this.page.set_indicator(__("Offline"), "grey")
 		frappe.call({
-			method:"frappe.handler.ping",
-			callback: function(r){
-				if(r.message){
+			method: "frappe.handler.ping",
+			callback: function (r) {
+				if (r.message) {
 					me.connection_status = true;
 					me.page.set_indicator(__("Online"), "green")
 				}
@@ -67,27 +67,23 @@
 		})
 	},
 
-	onload: function(){
+	onload: function () {
 		var me = this;
-		this.get_data_from_server(function(){
+		this.get_data_from_server(function () {
 			me.create_new();
 		});
 	},
 
-	make_menu_list: function(){
+	make_menu_list: function () {
 		var me = this;
 
-		this.page.add_menu_item(__("New Sales Invoice"), function() {
+		this.page.add_menu_item(__("New Sales Invoice"), function () {
 			me.save_previous_entry();
 			me.create_new();
 		})
 
-		this.page.add_menu_item(__("View Offline Records"), function(){
-			me.show_unsync_invoice_list();
-		});
-
-		this.page.add_menu_item(__("Sync Master Data"), function(){
-			me.get_data_from_server(function(){
+		this.page.add_menu_item(__("Sync Master Data"), function () {
+			me.get_data_from_server(function () {
 				me.load_data(false);
 				me.make_customer();
 				me.make_item_list();
@@ -95,83 +91,29 @@
 			})
 		});
 
-		this.page.add_menu_item(__("Sync Offline Invoices"), function(){
+		this.page.add_menu_item(__("Sync Offline Invoices"), function () {
 			me.sync_sales_invoice()
 		});
 
-		this.page.add_menu_item(__("POS Profile"), function() {
+		this.page.add_menu_item(__("POS Profile"), function () {
 			frappe.set_route('List', 'POS Profile');
 		});
 	},
 
-	show_unsync_invoice_list: function(){
-		var me = this;
-		this.si_docs = this.get_doc_from_localstorage();
-		this.list_dialog = new frappe.ui.Dialog({
-			title: 'Invoice List'
-		});
-
-		this.list_dialog.show();
-		this.list_body = this.list_dialog.body;
-		if(me.pos_profile_data["allow_delete"]) {
-			this.list_dialog.set_primary_action(__("Delete"), function() {
-				frappe.confirm(__("Delete permanently?"), function () {
-					me.delete_records();
-				})
-			}).addClass("btn-danger");
-			this.toggle_primary_action();
-		}
-
-		if(this.si_docs.length > 0){
-			me.render_offline_data();
-			me.dialog_actions()
-		}else{
-			$(this.list_body).append(repl('<div class="media-heading">%(message)s</div>', {'message': __("All records are synced.")}))
-		}
-	},
-
-	render_offline_data: function() {
+	dialog_actions: function () {
 		var me = this;
 
-		this.removed_items = [];
-		$(this.list_body).empty();
-
-		$(this.list_body).append('<div class="row list-row list-row-head pos-invoice-list">\
-				<div class="col-xs-1"><input class="list-select-all" type="checkbox"></div>\
-				<div class="col-xs-3">Customer</div>\
-				<div class="col-xs-2 text-left">Status</div>\
-				<div class="col-xs-3 text-right">Paid Amount</div>\
-				<div class="col-xs-3 text-right">Grand Total</div>\
-		</div>')
-
-		$.each(this.si_docs, function(index, data){
-			for(key in data) {
-				$(frappe.render_template("pos_invoice_list", {
-					sr: index + 1,
-					name: key,
-					customer: data[key].customer,
-					paid_amount: format_currency(data[key].paid_amount, me.frm.doc.currency),
-					grand_total: format_currency(data[key].grand_total, me.frm.doc.currency),
-					data: me.get_doctype_status(data[key])
-				})).appendTo($(me.list_body));
-			}
-		})
-	},
-
-	dialog_actions: function() {
-		var me = this;
-
-		$(this.list_body).find('.list-column').click(function() {
+		$(this.list_body).find('.list-column').click(function () {
 			me.name = $(this).parents().attr('invoice-name')
 			me.edit_record();
 		})
 
-		$(this.list_body).find('.list-select-all').click(function() {
+		$(this.list_body).find('.list-select-all').click(function () {
 			me.removed_items = [];
 			$(me.list_body).find('.list-delete').prop("checked", $(this).is(":checked"))
-			if($(this).is(":checked")) {
-				$.each(me.si_docs, function(index, data){
-					for(key in data) {
+			if ($(this).is(":checked")) {
+				$.each(me.si_docs, function (index, data) {
+					for (key in data) {
 						me.removed_items.push(key)
 					}
 				})
@@ -180,9 +122,9 @@
 			me.toggle_primary_action();
 		})
 
-		$(this.list_body).find('.list-delete').click(function() {
+		$(this.list_body).find('.list-delete').click(function () {
 			me.name = $(this).parent().parent().attr('invoice-name');
-			if($(this).is(":checked")) {
+			if ($(this).is(":checked")) {
 				me.removed_items.push(me.name);
 			} else {
 				me.removed_items.pop(me.name)
@@ -192,101 +134,103 @@
 		})
 	},
 
-	edit_record: function() {
+	edit_record: function () {
 		var me = this;
 
 		doc_data = this.get_invoice_doc(this.si_docs);
-		if(doc_data){
+		if (doc_data) {
 			this.frm.doc = doc_data[0][this.name];
 			this.set_missing_values();
 			this.refresh(false);
 			this.disable_input_field();
-			this.list_dialog.hide();
+			this.list_dialog && this.list_dialog.hide();
 		}
 	},
 
-	delete_records: function() {
+	delete_records: function () {
 		var me = this;
 		this.remove_doc_from_localstorage()
 		this.update_localstorage();
-		this.render_offline_data();
 		this.dialog_actions();
 		this.toggle_primary_action();
 	},
 
-	toggle_primary_action: function() {
+	toggle_primary_action: function () {
 		var me = this;
-		if(this.removed_items && this.removed_items.length > 0) {
-			$(this.list_dialog.wrapper).find('.btn-danger').show();
+		if(this.frm.doc.allow_delete) {
+			if (this.removed_items && this.removed_items.length > 0) {
+				$(this.wrapper).find('.btn-danger').show();
+			} else {
+				$(this.wrapper).find('.btn-danger').hide();
+			}
+		}
+	},
+
+	get_doctype_status: function (doc) {
+		if (doc.docstatus == 0) {
+			return { status: "Draft", indicator: "red" }
+		} else if (doc.outstanding_amount == 0) {
+			return { status: "Paid", indicator: "green" }
 		} else {
-			$(this.list_dialog.wrapper).find('.btn-danger').hide();
+			return { status: "Submitted", indicator: "blue" }
 		}
 	},
 
-	get_doctype_status: function(doc){
-		if(doc.docstatus == 0) {
-			return {status: "Draft", indicator: "red"}
-		}else if(doc.outstanding_amount == 0) {
-			return {status: "Paid", indicator: "green"}
-		}else {
-			return {status: "Submitted", indicator: "blue"}
-		}
-	},
-
-	set_missing_values: function(){
+	set_missing_values: function () {
 		var me = this;
 		doc = JSON.parse(localStorage.getItem('doc'))
-		if(this.frm.doc.payments.length == 0){
+		if (this.frm.doc.payments.length == 0) {
 			this.frm.doc.payments = doc.payments;
 			this.calculate_outstanding_amount();
 		}
 
-		if(this.frm.doc.customer){
+		if (this.frm.doc.customer) {
 			this.party_field.$input.val(this.frm.doc.customer);
 		}
 
-		if(!this.frm.doc.write_off_account){
+		if (!this.frm.doc.write_off_account) {
 			this.frm.doc.write_off_account = doc.write_off_account
 		}
 
-		if(!this.frm.doc.account_for_change_amount){
+		if (!this.frm.doc.account_for_change_amount) {
 			this.frm.doc.account_for_change_amount = doc.account_for_change_amount
 		}
 	},
 
-	get_invoice_doc: function(si_docs){
+	get_invoice_doc: function (si_docs) {
 		var me = this;
 		this.si_docs = this.get_doc_from_localstorage();
 
-		return $.grep(this.si_docs, function(data){
-			for(key in data){
+		return $.grep(this.si_docs, function (data) {
+			for (key in data) {
 				return key == me.name
 			}
 		})
 	},
 
-	get_data_from_server: function(callback){
+	get_data_from_server: function (callback) {
 		var me = this;
 		frappe.call({
 			method: "erpnext.accounts.doctype.sales_invoice.pos.get_pos_data",
 			freeze: true,
 			freeze_message: __("Master data syncing, it might take some time"),
-			callback: function(r){
+			callback: function (r) {
 				me.init_master_data(r)
 				localStorage.setItem('doc', JSON.stringify(r.message.doc));
 				me.set_interval_for_si_sync();
 				me.check_internet_connection();
-				if(callback){
+				if (callback) {
 					callback();
 				}
 			}
 		})
 	},
 
-	init_master_data: function(r){
+	init_master_data: function (r) {
 		var me = this;
 		this.meta = r.message.meta;
 		this.item_data = r.message.items;
+		this.item_groups = r.message.item_groups;
 		this.customers = r.message.customers;
 		this.serial_no_data = r.message.serial_no_data;
 		this.batch_no_data = r.message.batch_no_data;
@@ -297,50 +241,55 @@
 		this.print_template = r.message.print_template;
 		this.pos_profile_data = r.message.pos_profile;
 		this.default_customer = r.message.default_customer || null;
+		this.print_settings = locals[":Print Settings"]["Print Settings"];
+		this.letter_head = (this.pos_profile_data.length > 0) ? frappe.boot.letter_heads[this.pos_profile_data[letter_head]] : {};
 	},
 
-	save_previous_entry : function(){
-		if(this.frm.doc.docstatus < 1 && this.frm.doc.items.length > 0){
-			this.create_invoice()
+	save_previous_entry: function () {
+		if (this.frm.doc.docstatus < 1 && this.frm.doc.items.length > 0) {
+			this.create_invoice();
 		}
 	},
 
-	create_new: function(){
+	create_new: function () {
 		var me = this;
 		this.frm = {}
-		this.name = '';
+		this.name = null;
 		this.load_data(true);
 		this.setup();
 	},
 
-	load_data: function(load_doc){
+	load_data: function (load_doc) {
 		var me = this;
 
 		this.items = this.item_data;
 		this.actual_qty_dict = {};
 
-		if(load_doc) {
-			this.frm.doc =  JSON.parse(localStorage.getItem('doc'));
+		if (load_doc) {
+			this.frm.doc = JSON.parse(localStorage.getItem('doc'));
 		}
 
-		$.each(this.meta, function(i, data){
+		$.each(this.meta, function (i, data) {
 			frappe.meta.sync(data)
 			locals["DocType"][data.name] = data;
 		})
 
-		this.print_template_data = frappe.render_template("print_template",
-			{content: this.print_template, title:"POS",
-			base_url: frappe.urllib.get_base_url(), print_css: frappe.boot.print_css})
+		this.print_template_data = frappe.render_template("print_template", {
+			content: this.print_template,
+			title: "POS", base_url: frappe.urllib.get_base_url(), print_css: frappe.boot.print_css,
+			print_settings: this.print_settings, header: this.letter_head.header, footer: this.letter_head.footer
+		})
 	},
 
-	setup: function(){
+	setup: function () {
+		this.frm.doc.allow_delete = this.pos_profile_data["allow_delete"];
 		this.wrapper.html(frappe.render_template("pos", this.frm.doc));
 		this.set_transaction_defaults("Customer");
 		this.make();
 		this.set_primary_action();
 	},
 
-	set_transaction_defaults: function(party) {
+	set_transaction_defaults: function (party) {
 		var me = this;
 		this.party = party;
 		this.price_list = (party == "Customer" ?
@@ -349,34 +298,54 @@
 		this.sales_or_purchase = (party == "Customer" ? "Sales" : "Purchase");
 	},
 
-	make: function() {
+	make: function () {
 		this.make_search();
+		this.make_list_customers();
 		this.make_customer();
 		this.make_item_list();
 		this.make_discount_field()
 	},
 
-	make_search: function() {
+	make_search: function () {
 		var me = this;
-		this.search = frappe.ui.form.make_control({
+		this.serach_item = frappe.ui.form.make_control({
 			df: {
 				"fieldtype": "Data",
 				"label": "Item",
 				"fieldname": "pos_item",
 				"placeholder": __("Search Item")
 			},
-			parent: this.wrapper.find(".search-area"),
+			parent: this.wrapper.find(".search-item"),
 			only_input: true,
 		});
 
-		this.search.make_input();
-		this.search.$input.on("keyup", function() {
-			setTimeout(function() {
+		this.serach_item.make_input();
+		this.serach_item.$input.on("keyup", function () {
+			setTimeout(function () {
 				me.items = me.get_items();
 				me.make_item_list();
 			}, 1000);
 		});
 
+		this.search_item_group = frappe.ui.form.make_control({
+			df: {
+				"fieldtype": "Select",
+				"options": me.item_groups,
+				"label": __("Item Group"),
+				"fieldname": "item_group",
+				"placeholder": __("Item Group")
+			},
+			parent: this.wrapper.find(".search-item-group"),
+			only_input: true,
+		});
+
+		this.search_item_group.make_input();
+		this.search_item_group.$input.on("change", function () {
+			me.page_len = 20;
+			me.items = me.get_items();
+			me.make_item_list();
+		});
+
 		this.party_field = frappe.ui.form.make_control({
 			df: {
 				"fieldtype": "Data",
@@ -390,118 +359,334 @@
 		});
 
 		this.party_field.make_input();
-		this.set_focus()
+		setTimeout(this.set_focus.bind(this), 500);
+
+		this.wrapper.find(".btn-more").on("click", function() {
+			me.page_len += 20;
+			me.items = me.get_items();
+			me.make_item_list();
+		})
 	},
 
-	set_focus: function(){
-		if(this.default_customer){
-			this.search.$input.focus();
-		}else{
+	make_list_customers: function () {
+		var me = this;
+		this.list_customers_btn = this.wrapper.find('.list-customers-btn');
+		this.add_customer_btn = this.wrapper.find('.add-customer-btn');
+		this.pos_bill = this.wrapper.find('.pos-bill').hide();
+		this.list_customers = this.wrapper.find('.list-customers');
+
+		this.list_customers_btn.on('click', function () {
+			$(this).toggleClass("view_customer");
+			if($(this).hasClass("view_customer")) {
+				me.render_list_customers();
+				me.bind_delete_event()
+				me.party_field.$input.attr('disabled', true);
+				me.list_customers.show();
+				me.pos_bill.hide();
+			} else {
+				if(me.frm.doc.docstatus == 0) {
+					me.party_field.$input.attr('disabled', false);
+				}
+				me.pos_bill.show();
+				me.list_customers.hide()
+			}
+		});
+		this.add_customer_btn.on('click', function() {
+			me.save_previous_entry();
+			me.create_new();
+			me.refresh();
+			me.set_focus();
+		});
+	},
+
+	render_list_customers: function () {
+		var me = this;
+
+		this.removed_items = [];
+		this.list_customers.empty();
+		this.si_docs = this.get_doc_from_localstorage();
+
+		if (!this.si_docs.length) {
+			this.list_customers.append(
+				'<div style="padding: 12px; margin-left:-12px;">' + __("No offline records.") + '</div>'
+			)
+			return;
+		}
+		var html = '<div class="row list-row list-row-head pos-invoice-list">\
+			<div class="col-xs-1"><input class="list-select-all" type="checkbox"></div>\
+			<div class="col-xs-3">Customer</div>\
+			<div class="col-xs-2 text-left">Status</div>\
+			<div class="col-xs-3 text-right">Paid Amount</div>\
+			<div class="col-xs-3 text-right">Grand Total</div>\
+		</div>';
+		this.si_docs.forEach(function (data, i) {
+			for (key in data) {
+				html += frappe.render_template("pos_invoice_list", {
+					sr: i + 1,
+					name: key,
+					customer: data[key].customer,
+					paid_amount: format_currency(data[key].paid_amount, me.frm.doc.currency),
+					grand_total: format_currency(data[key].grand_total, me.frm.doc.currency),
+					data: me.get_doctype_status(data[key])
+				});
+			}
+		});
+		this.list_customers.append(html);
+
+		this.list_customers.find('.list-column').click(function () {
+			me.list_customers.hide();
+			me.list_customers_btn.toggleClass("view_customer");
+			me.pos_bill.show();
+			me.list_customers_btn.show();
+			me.name = $(this).parents().attr('invoice-name')
+			me.edit_record();
+		})
+
+		//actions
+		$(this.wrapper).find('.list-select-all').click(function () {
+			me.list_customers.find('.list-delete').prop("checked", $(this).is(":checked"))
+			me.removed_items = [];
+			if ($(this).is(":checked")) {
+				$.each(me.si_docs, function (index, data) {
+					for (key in data) {
+						me.removed_items.push(key)
+					}
+				});
+			}
+
+			me.toggle_primary_action();
+		});
+
+		$(this.wrapper).find('.list-delete').click(function () {
+			me.name = $(this).parent().parent().attr('invoice-name');
+			if ($(this).is(":checked")) {
+				me.removed_items.push(me.name);
+			} else {
+				me.removed_items.pop(me.name)
+			}
+
+			me.toggle_primary_action();
+		});
+	},
+
+	bind_delete_event: function() {
+		var me = this;
+
+		$(this.wrapper).find('.btn-danger').click(function(){
+			frappe.confirm(__("Delete permanently?"), function () {
+				me.delete_records();
+				me.render_list_customers();
+			})
+		})
+	},
+
+	set_focus: function () {
+		if (this.default_customer || this.frm.doc.customer) {
+			this.serach_item.$input.focus();
+		} else {
 			this.party_field.$input.focus();
 		}
 	},
 
-	make_customer: function() {
+	make_customer: function () {
 		var me = this;
 
-		if(this.default_customer && !this.frm.doc.customer){
+		if (this.default_customer && !this.frm.doc.customer) {
 			this.party_field.$input.val(this.default_customer);
 			this.frm.doc.customer = this.default_customer;
 		}
 
-		this.party_field.$input.autocomplete({
-			autoFocus: true,
-			source: function (request, response) {
-				me.customer_data = me.get_customers(request.term)
-				me.add_customer();
-
-				response($.map(me.customer_data, function(data){
-					return {label: data.name, customer_name: data.name, customer_group: data.customer_group,
-						territory: data.territory, onclick: data.onclick}
-				}))
-			},
-			select: function(event, ui){
-				if(ui.item.onclick) {
-					ui.item.value = ""
-					ui.item.onclick(me);
-				}else if(ui.item) {
-					me.update_customer_data(ui.item)
+		this.party_field.awesomeplete =
+			new Awesomplete(this.party_field.$input.get(0), {
+				minChars: 0,
+				maxItems: 99,
+				autoFirst: true,
+				list: [],
+				filter: function (item, input) {
+					var value = item.value.toLowerCase();
+					if (value.indexOf('is_action') !== -1 ||
+						value.indexOf(input) !== -1) {
+						return true;
+					}
+				},
+				item: function (item, input) {
+					var d = item;
+					var html = "<span>" + __(d.label || d.value) + "</span>";
+					return $('<li></li>')
+						.data('item.autocomplete', d)
+						.html('<a><p>' + html + '</p></a>')
+						.get(0);
 				}
+			});
+		var customers = this.customers.map(function (c) {
+			return {
+				label: c.name,
+				value: c.name,
+				customer_group: c.customer_group,
+				territory: c.territory
+			}
+		});
+
+		customers.push({
+			label: "<span class='text-primary link-option'>"
+			+ "<i class='fa fa-plus' style='margin-right: 5px;'></i> "
+			+ __("Create a new Customer")
+			+ "</span>",
+			value: 'is_action',
+			action: me.new_customer
+		});
+		this.party_field.awesomeplete.list = customers;
+
+		this.party_field.$input
+			.on('input', function (e) {
+				me.party_field.awesomeplete.list = customers;
+			})
+			.on('awesomplete-select', function (e) {
+				var customer = me.party_field.awesomeplete
+					.get_item(e.originalEvent.text.value);
+				if (!customer) return;
+				// create customer link
+				if (customer.action) {
+					customer.action.apply(me);
+					return;
+				}
+				me.update_customer_data(customer);
 				me.refresh();
-			},
-			change: function(event, ui) {
-				if(!ui.item) {
+				me.set_focus();
+			})
+			.on('change', function (e) {
+				if (!e.originalEvent.text) {
 					me.frm.doc.customer = $(this).val();
 				}
-			}
-		}).on("focus", function(){
-			setTimeout(function() {
-				if(!me.party_field.$input.val()) {
-					me.party_field.$input.autocomplete( "search", " " );
+			})
+			.on('focus', function (e) {
+				$(e.target).val('').trigger('input');
+			})
+			.on("awesomplete-selectcomplete", function (e) {
+				var item = me.party_field.awesomeplete
+					.get_item(e.originalEvent.text.value);
+				// clear text input if item is action
+				if (item.action) {
+					$(this).val("");
 				}
-			}, 500);
-		}).autocomplete(this.party_field).data('ui-autocomplete')._renderItem = function(ul, d){
-			var html = "<span>" + __(d.label) + "</span>";
-			return $('<li></li>')
-				.data('item.autocomplete', d)
-				.html('<a><p>' + html + '</p></a>')
-				.appendTo(ul);
-		}
-	},
-
-	add_customer: function() {
-		var me = this;
-		if(this.connection_status) {
-			this.customer_data.push({
-				name: "<span class='text-primary link-option'>"
-					+ "<i class='fa fa-plus' style='margin-right: 5px;'></i> "
-					+ __("Create a new Customer")
-					+ "</span>",
-				onclick: me.new_customer
 			});
-		}
 	},
 
-	new_customer: function(obj) {
-		var me = obj;
-		frappe.ui.form.quick_entry('Customer', function(doc){
-			me.customers.push(doc)
-			me.party_field.$input.val(doc.name);
-			me.update_customer_data(doc)
+	new_customer: function () {
+		var me = this;
+		if (!this.connection_status) return;
+
+		this.customer_doc = new frappe.ui.Dialog({
+			'title': 'Customer',
+			fields: [
+				{
+					"label": __("Full Name"),
+					"fieldname": "full_name",
+					"fieldtype": "Data",
+					"reqd": 1
+				},
+				{
+					"fieldtype": "Section Break"
+				},
+				{
+					"label": __("Email Id"),
+					"fieldname": "email_id",
+					"fieldtype": "Data"
+				},
+				{
+					"fieldtype": "Column Break"
+				},
+				{
+					"label": __("Contact Number"),
+					"fieldname": "contact_no",
+					"fieldtype": "Data"
+				},
+				{
+					"fieldtype": "Section Break"
+				},
+				{
+					"label": __("Address Line 1"),
+					"fieldname": "address_line1",
+					"fieldtype": "Data"
+				},
+				{
+					"label": __("Address Line 2"),
+					"fieldname": "address_line2",
+					"fieldtype": "Data"
+				},
+				{
+					"fieldtype": "Column Break"
+				},
+				{
+					"label": __("City"),
+					"fieldname": "city",
+					"fieldtype": "Data"
+				},
+				{
+					"label": __("State"),
+					"fieldname": "state",
+					"fieldtype": "Data"
+				},
+				{
+					"label": __("ZIP Code"),
+					"fieldname": "zip_code",
+					"fieldtype": "Data"
+				}
+			]
 		})
+
+		this.customer_doc.show()
+
+		this.customer_doc.set_primary_action(__("Save"), function () {
+			me.make_offline_customer();
+			me.pos_bill.show();
+		});
 	},
 
-	update_customer_data: function(doc) {
+	make_offline_customer: function() {
+		this.frm.doc.customer = this.customer_doc.get_values().full_name;
+		this.frm.doc.contact_details = JSON.stringify(this.customer_doc.get_values());
+		this.party_field.$input.val(this.frm.doc.customer);
+		this.customers.push({
+			name: this.frm.doc.customer,
+			customer_name: this.frm.doc.customer
+		});
+
+		this.customer_doc.hide()
+	},
+
+	update_customer_data: function (doc) {
 		var me = this;
 		this.frm.doc.customer = doc.label || doc.name;
 		this.frm.doc.customer_name = doc.customer_name;
 		this.frm.doc.customer_group = doc.customer_group;
 		this.frm.doc.territory = doc.territory;
+		this.pos_bill.show();
 	},
 
-	get_customers: function(key){
+	get_customers: function (key) {
 		var me = this;
 		key = key.toLowerCase().trim()
 		var re = new RegExp('%', 'g');
 		var reg = new RegExp(key.replace(re, '\\w*\\s*[a-zA-Z0-9]*'))
 
-		if(key){
-			return $.grep(this.customers, function(data) {
-				if(reg.test(data.name.toLowerCase())
+		if (key) {
+			return $.grep(this.customers, function (data) {
+				if (reg.test(data.name.toLowerCase())
 					|| reg.test(data.customer_name.toLowerCase())
-					|| (data.customer_group && reg.test(data.customer_group.toLowerCase()))){
+					|| (data.customer_group && reg.test(data.customer_group.toLowerCase()))) {
 					return data
 				}
 			})
-		}else{
-			customers = this.customers.sort(function(a,b){ return a.idx < b.idx })
+		} else {
+			customers = this.customers.sort(function (a, b) { return a.idx < b.idx })
 			return customers.slice(0, 20)
 		}
 	},
 
-	make_item_list: function() {
+	make_item_list: function () {
 		var me = this;
-		if(!this.price_list) {
+		if (!this.price_list) {
 			msgprint(__("Price List not found or disabled"));
 			return;
 		}
@@ -513,11 +698,11 @@
 
 		if (this.items.length > 0) {
 			$.each(this.items, function(index, obj) {
-				if(index < 30){
+				if(index < me.page_len){
 					$(frappe.render_template("pos_item", {
 						item_code: obj.name,
 						item_price: format_currency(me.price_list_data[obj.name], me.frm.doc.currency),
-						item_name: obj.name===obj.item_name ? "" : obj.item_name,
+						item_name: obj.name === obj.item_name ? "" : obj.item_name,
 						item_image: obj.image ? "url('" + obj.image + "')" : null,
 						color: frappe.get_palette(obj.item_name),
 						abbr: frappe.get_abbr(obj.item_name)
@@ -525,143 +710,173 @@
 				}
 			});
 		} else {
-			$("<h4>Searching record not found.</h4>").appendTo($wrap)
+			$("<p class='text-muted small' style='padding-left: 10px'>"
+				+__("Not items found")+"</p>").appendTo($wrap)
 		}
 
-		if(this.items.length == 1
-			&& this.search.$input.val()) {
-			this.search.$input.val("");
+		if (this.items.length == 1
+			&& this.serach_item.$input.val()) {
+			this.serach_item.$input.val("");
 			this.add_to_cart();
 		}
 
 		// if form is local then allow this function
-		$(me.wrapper).find("div.pos-item").on("click", function() {
+		$(me.wrapper).find("div.pos-item").on("click", function () {
+			if(me.list_customers_btn.hasClass("view_customer")) return;
+
 			me.customer_validate();
-			if(me.frm.doc.docstatus==0) {
+			if (me.frm.doc.docstatus == 0) {
 				me.items = me.get_items($(this).attr("data-item-code"))
 				me.add_to_cart();
 			}
 		});
 	},
 
-	get_items: function(item_code){
+	get_items: function (item_code) {
 		// To search item as per the key enter
 
 		var me = this;
 		this.item_serial_no = {};
 		this.item_batch_no = {};
 
-		if(item_code){
-			return $.grep(this.item_data, function(item){
-				if(item.item_code == item_code ){
+		if (item_code) {
+			return $.grep(this.item_data, function (item) {
+				if (item.item_code == item_code) {
 					return true
 				}
 			})
 		}
 
-		key =  this.search.$input.val().toLowerCase().replace(/[&\/\\#,+()\[\]$~.'":*?<>{}]/g,'\\$&');
+		this.items_list = this.apply_category();
+
+		key = this.serach_item.$input.val().toLowerCase().replace(/[&\/\\#,+()\[\]$~.'":*?<>{}]/g, '\\$&');
 		var re = new RegExp('%', 'g');
 		var reg = new RegExp(key.replace(re, '[\\w*\\s*[a-zA-Z0-9]*]*'))
 		search_status = true
 
-		if(key){
-			return $.grep(this.item_data, function(item){
-				if(search_status){
-					if(in_list(me.batch_no_data[item.item_code], me.search.$input.val())){
+		if (key) {
+			return $.grep(this.items_list, function (item) {
+				if (search_status) {
+					if (in_list(me.batch_no_data[item.item_code], me.serach_item.$input.val())) {
 						search_status = false;
-						return me.item_batch_no[item.item_code] = me.search.$input.val()
-					} else if( me.serial_no_data[item.item_code]
-						&& in_list(Object.keys(me.serial_no_data[item.item_code]), me.search.$input.val())) {
+						return me.item_batch_no[item.item_code] = me.serach_item.$input.val()
+					} else if (me.serial_no_data[item.item_code]
+						&& in_list(Object.keys(me.serial_no_data[item.item_code]), me.serach_item.$input.val())) {
 						search_status = false;
-						me.item_serial_no[item.item_code] = [me.search.$input.val(), me.serial_no_data[item.item_code][me.search.$input.val()]]
+						me.item_serial_no[item.item_code] = [me.serach_item.$input.val(), me.serial_no_data[item.item_code][me.serach_item.$input.val()]]
 						return true
-					} else if(item.barcode == me.search.$input.val()) {
+					} else if (item.barcode == me.serach_item.$input.val()) {
 						search_status = false;
-						return item.barcode == me.search.$input.val();
-					} else if(reg.test(item.item_code.toLowerCase()) || reg.test(item.description.toLowerCase()) ||
-					reg.test(item.item_name.toLowerCase()) || reg.test(item.item_group.toLowerCase()) ){
+						return item.barcode == me.serach_item.$input.val();
+					} else if (reg.test(item.item_code.toLowerCase()) || reg.test(item.description.toLowerCase()) ||
+						reg.test(item.item_name.toLowerCase()) || reg.test(item.item_group.toLowerCase())) {
 						return true
 					}
 				}
 			})
-		}else{
-			return this.item_data;
+		} else {
+			return this.items_list;
 		}
 	},
 
-	bind_qty_event: function() {
+	apply_category: function() {
+		var me = this;
+		category = this.search_item_group.$input.val();
+
+		if(category == 'All Item Groups') {
+			return this.item_data
+		} else {
+			return this.item_data.filter(function(element, index, array){
+				return element.item_group == category;
+			});
+		}
+	},
+
+	bind_qty_event: function () {
 		var me = this;
 
-		$(this.wrapper).find(".pos-item-qty").on("change", function(){
+		$(this.wrapper).find(".pos-item-qty").on("change", function () {
 			var item_code = $(this).parents(".pos-bill-item").attr("data-item-code");
 			var qty = $(this).val();
 			me.update_qty(item_code, qty)
 		})
 
-		$(this.wrapper).find("[data-action='increase-qty']").on("click", function(){
+		$(this.wrapper).find("[data-action='increase-qty']").on("click", function () {
 			var item_code = $(this).parents(".pos-bill-item").attr("data-item-code");
 			var qty = flt($(this).parents(".pos-bill-item").find('.pos-item-qty').val()) + 1;
 			me.update_qty(item_code, qty)
 		})
 
-		$(this.wrapper).find("[data-action='decrease-qty']").on("click", function(){
+		$(this.wrapper).find("[data-action='decrease-qty']").on("click", function () {
 			var item_code = $(this).parents(".pos-bill-item").attr("data-item-code");
 			var qty = flt($(this).parents(".pos-bill-item").find('.pos-item-qty').val()) - 1;
 			me.update_qty(item_code, qty)
 		})
-	},
-	
-	update_qty: function(item_code, qty) {
-		var me = this;
-		this.items = this.get_items(item_code);
-		this.validate_serial_no()
-		this.update_qty_rate_against_item_code(item_code, "qty", qty);
-	},
 
-	update_rate: function() {
-		var me = this;
-
-		$(this.wrapper).find(".pos-item-rate").on("change", function(){
+		$(this.wrapper).find(".pos-item-discount").on("change", function () {
 			var item_code = $(this).parents(".pos-bill-item").attr("data-item-code");
-			me.update_qty_rate_against_item_code(item_code, "rate", $(this).val());
+			var discount = $(this).val();
+			me.update_discount(item_code, discount)
 		})
 	},
 
-	update_qty_rate_against_item_code: function(item_code, field, value){
+	update_qty: function (item_code, qty) {
 		var me = this;
-		if(value < 0){
+		this.items = this.get_items(item_code);
+		this.validate_serial_no()
+		this.set_item_details(item_code, "qty", qty);
+	},
+
+	update_discount: function(item_code, discount) {
+		var me = this;
+		this.items = this.get_items(item_code);
+		this.set_item_details(item_code, "discount_percentage", discount);
+	},
+
+	update_rate: function () {
+		var me = this;
+
+		$(this.wrapper).find(".pos-item-rate").on("change", function () {
+			var item_code = $(this).parents(".pos-bill-item").attr("data-item-code");
+			me.set_item_details(item_code, "rate", $(this).val());
+		})
+	},
+
+	set_item_details: function (item_code, field, value) {
+		var me = this;
+		if (value < 0) {
 			frappe.throw(__("Enter value must be positive"));
 		}
 
 		this.remove_item = []
-		$.each(this.frm.doc["items"] || [], function(i, d) {
-			if(d.serial_no && field == 'qty'){
-				me.validate_serial_no_qty(d, item_code, field, value)
-			}
-
+		$.each(this.frm.doc["items"] || [], function (i, d) {
 			if (d.item_code == item_code) {
+				if (d.serial_no && field == 'qty') {
+					me.validate_serial_no_qty(d, item_code, field, value)
+				}
+
 				d[field] = flt(value);
 				d.amount = flt(d.rate) * flt(d.qty);
-				if(d.qty==0){
+				if (d.qty == 0) {
 					me.remove_item.push(d.idx)
 				}
 			}
 		});
 
-		if(field == 'qty'){
+		if (field == 'qty') {
 			this.remove_zero_qty_item();
 		}
 
 		this.update_paid_amount_status(false)
 	},
 
-	remove_zero_qty_item: function(){
+	remove_zero_qty_item: function () {
 		var me = this;
 		idx = 0
 		this.items = []
 		idx = 0
-		$.each(this.frm.doc["items"] || [], function(i, d) {
-			if(!in_list(me.remove_item, d.idx)){
+		$.each(this.frm.doc["items"] || [], function (i, d) {
+			if (!in_list(me.remove_item, d.idx)) {
 				d.idx = idx;
 				me.items.push(d);
 				idx++;
@@ -671,23 +886,23 @@
 		this.frm.doc["items"] = this.items;
 	},
 
-	make_discount_field: function(){
+	make_discount_field: function () {
 		var me = this;
 
-		this.wrapper.find('input.discount-percentage').on("change", function() {
+		this.wrapper.find('input.discount-percentage').on("change", function () {
 			me.frm.doc.additional_discount_percentage = flt($(this).val(), precision("additional_discount_percentage"));
 			total = me.frm.doc.grand_total
 
-			if(me.frm.doc.apply_discount_on == 'Net Total'){
+			if (me.frm.doc.apply_discount_on == 'Net Total') {
 				total = me.frm.doc.net_total
 			}
 
-			me.frm.doc.discount_amount = flt(total*flt(me.frm.doc.additional_discount_percentage) / 100, precision("discount_amount"));
+			me.frm.doc.discount_amount = flt(total * flt(me.frm.doc.additional_discount_percentage) / 100, precision("discount_amount"));
 			me.wrapper.find('input.discount-amount').val(me.frm.doc.discount_amount)
 			me.refresh();
 		});
 
-		this.wrapper.find('input.discount-amount').on("change", function() {
+		this.wrapper.find('input.discount-amount').on("change", function () {
 			me.frm.doc.discount_amount = flt($(this).val(), precision("discount_amount"));
 			me.frm.doc.additional_discount_percentage = 0.0;
 			me.wrapper.find('input.discount-percentage').val(0);
@@ -695,14 +910,14 @@
 		});
 	},
 
-	customer_validate: function(){
+	customer_validate: function () {
 		var me = this;
-		if(!this.frm.doc.customer){
+		if (!this.frm.doc.customer) {
 			frappe.throw(__("Please select customer"))
 		}
 	},
 
-	add_to_cart: function() {
+	add_to_cart: function () {
 		var me = this;
 		var caught = false;
 		var no_of_items = me.wrapper.find(".pos-bill-item").length;
@@ -713,17 +928,17 @@
 		this.validate_warehouse();
 
 		if (no_of_items != 0) {
-			$.each(this.frm.doc["items"] || [], function(i, d) {
+			$.each(this.frm.doc["items"] || [], function (i, d) {
 				if (d.item_code == me.items[0].item_code) {
 					caught = true;
 					d.qty += 1;
 					d.amount = flt(d.rate) * flt(d.qty);
-					if(me.item_serial_no[d.item_code]){
+					if (me.item_serial_no[d.item_code]) {
 						d.serial_no += '\n' + me.item_serial_no[d.item_code][0]
 						d.warehouse = me.item_serial_no[d.item_code][1]
 					}
 
-					if(me.item_batch_no.length){
+					if (me.item_batch_no.length) {
 						d.batch_no = me.item_batch_no[d.item_code]
 					}
 				}
@@ -737,7 +952,7 @@
 		this.update_paid_amount_status(false)
 	},
 
-	add_new_item_to_grid: function() {
+	add_new_item_to_grid: function () {
 		var me = this;
 		this.child = frappe.model.add_child(this.frm.doc, this.frm.doc.doctype + " Item", "items");
 		this.child.item_code = this.items[0].item_code;
@@ -749,7 +964,7 @@
 		this.child.cost_center = this.pos_profile_data['cost_center'] || this.items[0].cost_center;
 		this.child.income_account = this.pos_profile_data['income_account'] || this.items[0].income_account;
 		this.child.warehouse = (this.item_serial_no[this.child.item_code]
-			? this.item_serial_no[this.child.item_code][1] : (this.pos_profile_data['warehouse'] || this.items[0].default_warehouse) );
+			? this.item_serial_no[this.child.item_code][1] : (this.pos_profile_data['warehouse'] || this.items[0].default_warehouse));
 		this.child.price_list_rate = flt(this.price_list_data[this.child.item_code], 9) / flt(this.frm.doc.conversion_rate, 9);
 		this.child.rate = flt(this.price_list_data[this.child.item_code], 9) / flt(this.frm.doc.conversion_rate, 9);
 		this.child.actual_qty = me.get_actual_qty(this.items[0]);
@@ -760,15 +975,15 @@
 		this.child.item_tax_rate = JSON.stringify(this.tax_data[this.child.item_code]);
 	},
 
-	update_paid_amount_status: function(update_paid_amount){
-		if(this.name){
+	update_paid_amount_status: function (update_paid_amount) {
+		if (this.name) {
 			update_paid_amount = update_paid_amount ? false : true;
 		}
 
 		this.refresh(update_paid_amount);
 	},
 
-	refresh: function(update_paid_amount) {
+	refresh: function (update_paid_amount) {
 		var me = this;
 		this.refresh_fields(update_paid_amount);
 		this.bind_qty_event();
@@ -776,7 +991,7 @@
 		this.set_primary_action();
 	},
 
-	refresh_fields: function(update_paid_amount) {
+	refresh_fields: function (update_paid_amount) {
 		this.apply_pricing_rule();
 		this.discount_amount_applied = false;
 		this._calculate_taxes_and_totals();
@@ -787,40 +1002,45 @@
 		this.set_totals();
 	},
 
-	get_company_currency: function() {
+	get_company_currency: function () {
 		return erpnext.get_currency(this.frm.doc.company);
 	},
 
-	show_item_wise_taxes: function(){
+	show_item_wise_taxes: function () {
 		return null;
 	},
 
-	show_items_in_item_cart: function() {
+	show_items_in_item_cart: function () {
 		var me = this;
 		var $items = this.wrapper.find(".items").empty();
-		$.each(this.frm.doc.items|| [], function(i, d) {
+		$.each(this.frm.doc.items || [], function (i, d) {
 			$(frappe.render_template("pos_bill_item", {
 				item_code: d.item_code,
-				item_name: (d.item_name===d.item_code || !d.item_name) ? "" : ("<br>" + d.item_name),
+				item_name: (d.item_name === d.item_code || !d.item_name) ? "" : ("<br>" + d.item_name),
 				qty: d.qty,
-				actual_qty: me.actual_qty_dict[d.item_code] || 0,
+				discount_percentage: d.discount_percentage || 0.0,
+				actual_qty: me.actual_qty_dict[d.item_code] || 0.0,
 				projected_qty: d.projected_qty,
 				rate: format_number(d.rate, me.frm.doc.currency),
-				enabled: me.pos_profile_data["allow_user_to_edit_rate"] ? true: false,
+				enabled: me.pos_profile_data["allow_user_to_edit_rate"] ? true : false,
 				amount: format_currency(d.amount, me.frm.doc.currency)
 			})).appendTo($items);
 		});
 
-		this.wrapper.find("input.pos-item-qty").on("focus", function() {
+		this.wrapper.find("input.pos-item-qty").on("focus", function () {
 			$(this).select();
 		});
 
-		this.wrapper.find("input.pos-item-rate").on("focus", function() {
+		this.wrapper.find("input.pos-item-discount").on("focus", function () {
+			$(this).select();
+		});
+
+		this.wrapper.find("input.pos-item-rate").on("focus", function () {
 			$(this).select();
 		});
 	},
 
-	set_taxes: function(){
+	set_taxes: function () {
 		var me = this;
 		me.frm.doc.total_taxes_and_charges = 0.0
 
@@ -829,7 +1049,7 @@
 			.find(".tax-area").toggleClass("hide", (taxes && taxes.length) ? false : true)
 			.find(".tax-table").empty();
 
-		$.each(taxes, function(i, d) {
+		$.each(taxes, function (i, d) {
 			if (d.tax_amount && cint(d.included_in_print_rate) == 0) {
 				$(frappe.render_template("pos_tax_row", {
 					description: d.description,
@@ -840,104 +1060,106 @@
 		});
 	},
 
-	set_totals: function() {
+	set_totals: function () {
 		var me = this;
 		this.wrapper.find(".net-total").text(format_currency(me.frm.doc.total, me.frm.doc.currency));
 		this.wrapper.find(".grand-total").text(format_currency(me.frm.doc.grand_total, me.frm.doc.currency));
 	},
 
-	set_primary_action: function() {
+	set_primary_action: function () {
 		var me = this;
 
-		if (this.frm.doc.docstatus==0) {
-			this.page.set_primary_action(__("Pay"), function() {
+		if (this.frm.doc.docstatus == 0) {
+			this.page.set_primary_action(__("Pay"), function () {
 				me.validate();
 				me.update_paid_amount_status(true);
 				me.create_invoice();
 				me.make_payment();
-			}, "octicon octfa fa-credit-card");
-		}else if(this.frm.doc.docstatus == 1) {
-			this.page.set_primary_action(__("Print"), function() {
+			}, "fa fa-credit-card");
+		} else if (this.frm.doc.docstatus == 1) {
+			this.page.set_primary_action(__("Print"), function () {
 				html = frappe.render(me.print_template_data, me.frm.doc)
 				me.print_document(html)
 			})
-		}else {
+		} else {
 			this.page.clear_primary_action()
 		}
 
-		this.page.set_secondary_action(__("New"), function() {
-			me.save_previous_entry();
-			me.create_new();
-		}, "octicon octfa fa-plus").addClass("btn-primary");
+		// this.page.set_secondary_action(__("New"), function () {
+		// 	me.save_previous_entry();
+		// 	me.create_new();
+		// }, "fa fa-plus").addClass("btn-primary");
 	},
 
-	print_dialog: function(){
+	print_dialog: function () {
 		var me = this;
 
 		msgprint = frappe.msgprint(format('<a class="btn btn-primary print_doc" \
 			style="margin-right: 5px;">{0}</a>\
 			<a class="btn btn-default new_doc">{1}</a>', [
-			__('Print'), __('New')
-		]));
+				__('Print'), __('New')
+			]));
 
-		$('.print_doc').click(function(){
+		$('.print_doc').click(function () {
 			html = frappe.render(me.print_template_data, me.frm.doc)
 			me.print_document(html)
 		})
 
-		$('.new_doc').click(function(){
+		$('.new_doc').click(function () {
 			msgprint.hide()
 			me.create_new();
 		})
 	},
 
-	print_document: function(html){
+	print_document: function (html) {
 		var w = window.open();
 		w.document.write(html);
 		w.document.close();
-		setTimeout(function(){
+		setTimeout(function () {
 			w.print();
 			w.close();
 		}, 1000)
 	},
 
-	submit_invoice: function(){
+	submit_invoice: function () {
 		var me = this;
 		this.change_status();
-		if(this.frm.doc.docstatus == 1){
+		if (this.frm.doc.docstatus == 1) {
 			this.print_dialog()
 		}
 	},
 
-	change_status: function(){
-		if(this.frm.doc.docstatus == 0){
+	change_status: function () {
+		if (this.frm.doc.docstatus == 0) {
 			this.frm.doc.docstatus = 1;
 			this.update_invoice();
 			this.disable_input_field();
 		}
 	},
 
-	disable_input_field: function(){
+	disable_input_field: function () {
 		var pointer_events = 'inherit'
 		$(this.wrapper).find('input').attr("disabled", false);
+		$(this.wrapper).find('select').attr("disabled", false);
 
-		if(this.frm.doc.docstatus == 1){
+		if (this.frm.doc.docstatus == 1) {
 			pointer_events = 'none';
 			$(this.wrapper).find('input').attr("disabled", true);
+			$(this.wrapper).find('select').attr("disabled", true);
 		}
 
-		$(this.wrapper).find('.pos-bill-wrapper').css('pointer-events', pointer_events);
+		$(this.wrapper).find('.pos-bill').css('pointer-events', pointer_events);
 		$(this.wrapper).find('.pos-items-section').css('pointer-events', pointer_events);
 		this.set_primary_action();
 	},
 
-	create_invoice: function(){
+	create_invoice: function () {
 		var me = this;
 		var invoice_data = {}
 		this.si_docs = this.get_doc_from_localstorage();
-		if(this.name){
+		if (this.name) {
 			this.update_invoice()
-		}else{
+		} else {
 			this.name = $.now();
 			this.frm.doc.offline_pos_name = this.name;
 			this.frm.doc.posting_date = frappe.datetime.get_today();
@@ -947,14 +1169,15 @@
 			this.update_localstorage();
 			this.set_primary_action();
 		}
+		return invoice_data;
 	},
 
-	update_invoice: function(){
+	update_invoice: function () {
 		var me = this;
 		this.si_docs = this.get_doc_from_localstorage();
-		$.each(this.si_docs, function(index, data){
-			for(key in data){
-				if(key == me.name){
+		$.each(this.si_docs, function (index, data) {
+			for (key in data) {
+				if (key == me.name) {
 					me.si_docs[index][key] = me.frm.doc;
 					me.update_localstorage();
 				}
@@ -962,41 +1185,41 @@
 		})
 	},
 
-	update_localstorage: function(){
-		try{
+	update_localstorage: function () {
+		try {
 			localStorage.setItem('sales_invoice_doc', JSON.stringify(this.si_docs));
-		}catch(e){
+		} catch (e) {
 			frappe.throw(__("LocalStorage is full , did not save"))
 		}
 	},
 
-	get_doc_from_localstorage: function(){
-		try{
+	get_doc_from_localstorage: function () {
+		try {
 			return JSON.parse(localStorage.getItem('sales_invoice_doc')) || [];
-		}catch(e){
+		} catch (e) {
 			return []
 		}
 	},
 
-	set_interval_for_si_sync: function(){
+	set_interval_for_si_sync: function () {
 		var me = this;
-		setInterval(function(){
+		setInterval(function () {
 			me.sync_sales_invoice()
 		}, 60000)
 	},
 
-	sync_sales_invoice: function(){
+	sync_sales_invoice: function () {
 		var me = this;
 		this.si_docs = this.get_submitted_invoice();
 
-		if(this.si_docs.length){
+		if (this.si_docs.length) {
 			frappe.call({
 				method: "erpnext.accounts.doctype.sales_invoice.pos.make_invoice",
 				args: {
 					doc_list: me.si_docs
 				},
-				callback: function(r){
-					if(r.message){
+				callback: function (r) {
+					if (r.message) {
 						me.removed_items = r.message;
 						me.remove_doc_from_localstorage();
 					}
@@ -1005,14 +1228,14 @@
 		}
 	},
 
-	get_submitted_invoice: function(){
+	get_submitted_invoice: function () {
 		var invoices = [];
 		var index = 1;
 		docs = this.get_doc_from_localstorage();
-		if(docs){
-			invoices = $.map(docs, function(data){
-				for(key in data){
-					if(data[key].docstatus == 1 && index < 50){
+		if (docs) {
+			invoices = $.map(docs, function (data) {
+				for (key in data) {
+					if (data[key].docstatus == 1 && index < 50) {
 						index++
 						data[key].docstatus = 0;
 						return data
@@ -1024,14 +1247,14 @@
 		return invoices
 	},
 
-	remove_doc_from_localstorage: function(){
+	remove_doc_from_localstorage: function () {
 		var me = this;
 		this.si_docs = this.get_doc_from_localstorage();
 		this.new_si_docs = [];
-		if(this.removed_items){
-			$.each(this.si_docs, function(index, data){
-				for(key in data){
-					if(!in_list(me.removed_items, key)){
+		if (this.removed_items) {
+			$.each(this.si_docs, function (index, data) {
+				for (key in data) {
+					if (!in_list(me.removed_items, key)) {
 						me.new_si_docs.push(data);
 					}
 				}
@@ -1041,44 +1264,44 @@
 		}
 	},
 
-	validate: function(){
+	validate: function () {
 		var me = this;
 		this.customer_validate();
 		this.item_validate();
 		this.validate_mode_of_payments();
 	},
 
-	item_validate: function(){
-		if(this.frm.doc.items.length == 0){
+	item_validate: function () {
+		if (this.frm.doc.items.length == 0) {
 			frappe.throw(__("Select items to save the invoice"))
 		}
 	},
-	
-	validate_mode_of_payments: function(){
-		if (this.frm.doc.payments.length === 0){
+
+	validate_mode_of_payments: function () {
+		if (this.frm.doc.payments.length === 0) {
 			frappe.throw(__("Payment Mode is not configured. Please check, whether account has been set on Mode of Payments or on POS Profile."))
 		}
 	},
-	
-	validate_serial_no: function(){
+
+	validate_serial_no: function () {
 		var me = this;
 		var item_code = serial_no = '';
-		for (key in this.item_serial_no){
+		for (key in this.item_serial_no) {
 			item_code = key;
 			serial_no = me.item_serial_no[key][0];
 		}
 
-		if(this.items[0].has_serial_no && serial_no == ""){
+		if (this.items[0].has_serial_no && serial_no == "") {
 			this.refresh();
 			frappe.throw(__(repl("Error: Serial no is mandatory for item %(item)s", {
 				'item': this.items[0].item_code
 			})))
 		}
 
-		if(item_code && serial_no){
-			$.each(this.frm.doc.items, function(index, data){
-				if(data.item_code == item_code){
-					if(in_list(data.serial_no.split('\n'), serial_no)){
+		if (item_code && serial_no) {
+			$.each(this.frm.doc.items, function (index, data) {
+				if (data.item_code == item_code) {
+					if (in_list(data.serial_no.split('\n'), serial_no)) {
 						frappe.throw(__(repl("Serial no %(serial_no)s is already taken", {
 							'serial_no': serial_no
 						})))
@@ -1088,7 +1311,7 @@
 		}
 	},
 
-	validate_serial_no_qty: function(args, item_code, field, value){
+	validate_serial_no_qty: function (args, item_code, field, value) {
 		var me = this;
 		if (args.item_code == item_code && args.serial_no
 			&& field == 'qty' && cint(value) != value) {
@@ -1097,7 +1320,7 @@
 			frappe.throw(__("Serial no item cannot be a fraction"))
 		}
 
-		if(args.item_code == item_code && args.serial_no && args.serial_no.split('\n').length != cint(value)){
+		if (args.item_code == item_code && args.serial_no && args.serial_no.split('\n').length != cint(value)) {
 			args.qty = 0.0;
 			args.serial_no = ''
 			this.refresh();
@@ -1107,42 +1330,44 @@
 		}
 	},
 
-	mandatory_batch_no: function(){
+	mandatory_batch_no: function () {
 		var me = this;
-		if(this.items[0].has_batch_no && !this.item_batch_no[this.items[0].item_code]){
+		if (this.items[0].has_batch_no && !this.item_batch_no[this.items[0].item_code]) {
 			frappe.throw(__(repl("Error: Batch no is mandatory for item %(item)s", {
 				'item': this.items[0].item_code
 			})))
 		}
 	},
 
-	apply_pricing_rule: function(){
+	apply_pricing_rule: function () {
 		var me = this;
-		$.each(this.frm.doc["items"], function(n, item) {
+		$.each(this.frm.doc["items"], function (n, item) {
 			pricing_rule = me.get_pricing_rule(item)
 			me.validate_pricing_rule(pricing_rule)
-			if(pricing_rule.length){
+			if (pricing_rule.length) {
+				item.pricing_rule = pricing_rule[0].name;
 				item.margin_type = pricing_rule[0].margin_type;
 				item.price_list_rate = pricing_rule[0].price || item.price_list_rate;
 				item.margin_rate_or_amount = pricing_rule[0].margin_rate_or_amount;
 				item.discount_percentage = pricing_rule[0].discount_percentage || 0.0;
-				me.apply_pricing_rule_on_item(item)
-			} else if(item.discount_percentage > 0 || item.margin_rate_or_amount > 0) {
+			} else if ((item.discount_percentage > 0 || item.margin_rate_or_amount > 0) && item.pricing_rule) {
 				item.margin_rate_or_amount = 0.0;
 				item.discount_percentage = 0.0;
-				me.apply_pricing_rule_on_item(item)
+				item.pricing_rule = null;
 			}
+
+			me.apply_pricing_rule_on_item(item)
 		})
 	},
 
-	get_pricing_rule: function(item){
+	get_pricing_rule: function (item) {
 		var me = this;
-		return $.grep(this.pricing_rules, function(data){
-			if(item.qty >= data.min_qty && (item.qty <= (data.max_qty ? data.max_qty : item.qty)) ){
-				if(data.item_code == item.item_code || in_list(['All Item Groups', item.item_group], data.item_group)) {
-					if(in_list(['Customer', 'Customer Group', 'Territory', 'Campaign'], data.applicable_for)){
+		return $.grep(this.pricing_rules, function (data) {
+			if (item.qty >= data.min_qty && (item.qty <= (data.max_qty ? data.max_qty : item.qty))) {
+				if (data.item_code == item.item_code || in_list(['All Item Groups', item.item_group], data.item_group)) {
+					if (in_list(['Customer', 'Customer Group', 'Territory', 'Campaign'], data.applicable_for)) {
 						return me.validate_condition(data)
-					}else{
+					} else {
 						return true
 					}
 				}
@@ -1150,15 +1375,15 @@
 		})
 	},
 
-	validate_condition: function(data){
+	validate_condition: function (data) {
 		//This method check condition based on applicable for
 		condition = this.get_mapper_for_pricing_rule(data)[data.applicable_for]
-		if(in_list(condition[1], condition[0])){
+		if (in_list(condition[1], condition[0])) {
 			return true
 		}
 	},
 
-	get_mapper_for_pricing_rule: function(data){
+	get_mapper_for_pricing_rule: function (data) {
 		return {
 			'Customer': [data.customer, [this.frm.doc.customer]],
 			'Customer Group': [data.customer_group, [this.frm.doc.customer_group, 'All Customer Groups']],
@@ -1167,32 +1392,32 @@
 		}
 	},
 
-	validate_pricing_rule: function(pricing_rule){
+	validate_pricing_rule: function (pricing_rule) {
 		//This method validate duplicate pricing rule
 		var pricing_rule_name = '';
 		var priority = 0;
 		var pricing_rule_list = [];
 		var priority_list = []
 
-		if(pricing_rule.length > 1){
+		if (pricing_rule.length > 1) {
 
-			$.each(pricing_rule, function(index, data){
+			$.each(pricing_rule, function (index, data) {
 				pricing_rule_name += data.name + ','
 				priority_list.push(data.priority)
-				if(priority <= data.priority){
+				if (priority <= data.priority) {
 					priority = data.priority
 					pricing_rule_list.push(data)
 				}
 			})
 
 			count = 0
-			$.each(priority_list, function(index, value){
-				if(value == priority){
+			$.each(priority_list, function (index, value) {
+				if (value == priority) {
 					count++
 				}
 			})
 
-			if(priority == 0 || count > 1){
+			if (priority == 0 || count > 1) {
 				frappe.throw(__(repl("Multiple Price Rules exists with same criteria, please resolve conflict by assigning priority. Price Rules: %(pricing_rule)s", {
 					'pricing_rule': pricing_rule_name
 				})))
@@ -1202,17 +1427,17 @@
 		}
 	},
 
-	validate_warehouse: function(){
-		if(this.items[0].is_stock_item && !this.items[0].default_warehouse && !this.pos_profile_data['warehouse']){
+	validate_warehouse: function () {
+		if (this.items[0].is_stock_item && !this.items[0].default_warehouse && !this.pos_profile_data['warehouse']) {
 			frappe.throw(__("Default warehouse is required for selected item"))
 		}
 	},
 
-	get_actual_qty: function(item) {
+	get_actual_qty: function (item) {
 		this.actual_qty = 0.0;
 
 		var warehouse = this.pos_profile_data['warehouse'] || item.default_warehouse;
-		if(warehouse && this.bin_data[item.item_code]) {
+		if (warehouse && this.bin_data[item.item_code]) {
 			this.actual_qty = this.bin_data[item.item_code][warehouse] || 0;
 			this.actual_qty_dict[item.item_code] = this.actual_qty
 		}
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index c65a845..a8d166e 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -8,8 +8,8 @@
 from frappe import _, msgprint, scrub
 from frappe.defaults import get_user_permissions
 from frappe.utils import add_days, getdate, formatdate, get_first_day, date_diff, add_years
-from erpnext.utilities.doctype.address.address import get_address_display
-from erpnext.utilities.doctype.contact.contact import get_contact_details
+from frappe.geo.doctype.address.address import get_address_display, get_default_address
+from frappe.email.doctype.contact.contact import get_contact_details, get_default_contact
 from erpnext.exceptions import PartyFrozen, InvalidCurrency, PartyDisabled, InvalidAccountCurrency
 
 class DuplicatePartyAccountError(frappe.ValidationError): pass
@@ -60,21 +60,18 @@
 def set_address_details(out, party, party_type):
 	billing_address_field = "customer_address" if party_type == "Lead" \
 		else party_type.lower() + "_address"
-	out[billing_address_field] = frappe.db.get_value("Address",
-		{party_type.lower(): party.name, "is_primary_address":1}, "name")
+	out[billing_address_field] = get_default_address(party_type, party.name)
 
 	# address display
 	out.address_display = get_address_display(out[billing_address_field])
 
 	# shipping address
 	if party_type in ["Customer", "Lead"]:
-		out.shipping_address_name = frappe.db.get_value("Address",
-			{party_type.lower(): party.name, "is_shipping_address":1}, "name")
+		out.shipping_address_name = get_default_address(party_type, party.name, 'is_shipping_address')
 		out.shipping_address = get_address_display(out["shipping_address_name"])
 
 def set_contact_details(out, party, party_type):
-	out.contact_person = frappe.db.get_value("Contact",
-		{party_type.lower(): party.name, "is_primary_contact":1}, "name")
+	out.contact_person = get_default_contact(party_type, party.name)
 
 	if not out.contact_person:
 		out.update({
@@ -174,17 +171,17 @@
 		account = frappe.db.get_value("Party Account",
 			{"parenttype": party_type, "parent": party, "company": company}, "account")
 
-		if not account:
+		if not account and party_type in ['Customer', 'Supplier']:
 			party_group_doctype = "Customer Group" if party_type=="Customer" else "Supplier Type"
 			group = frappe.db.get_value(party_type, party, scrub(party_group_doctype))
 			account = frappe.db.get_value("Party Account",
 				{"parenttype": party_group_doctype, "parent": group, "company": company}, "account")
 
-		if not account:
+		if not account and party_type in ['Customer', 'Supplier']:
 			default_account_name = "default_receivable_account" \
 				if party_type=="Customer" else "default_payable_account"
 			account = frappe.db.get_value("Company", company, default_account_name)
-			
+
 		existing_gle_currency = get_party_gle_currency(party_type, party, company)
 		if existing_gle_currency:
 			if account:
@@ -211,7 +208,7 @@
 
 	return frappe.local_cache("party_gle_currency", (party_type, party, company), generator,
 		regenerate_if_none=True)
-		
+
 def get_party_gle_account(party_type, party, company):
 	def generator():
 		existing_gle_account = frappe.db.sql("""select account from `tabGL Entry`
@@ -252,7 +249,7 @@
 		if existing_gle_currency and party_account_currency != existing_gle_currency:
 			frappe.throw(_("Accounting entries have already been made in currency {0} for company {1}. Please select a receivable or payable account with currency {0}.").format(existing_gle_currency, account.company))
 
-		if doc.default_currency and party_account_currency and company_default_currency:
+		if doc.get("default_currency") and party_account_currency and company_default_currency:
 			if doc.default_currency != party_account_currency and doc.default_currency != company_default_currency:
 				frappe.throw(_("Billing currency must be equal to either default comapany's currency or party account currency"))
 
@@ -340,19 +337,24 @@
 
 def validate_party_frozen_disabled(party_type, party_name):
 	if party_type and party_name:
-		party = frappe.db.get_value(party_type, party_name, ["is_frozen", "disabled"], as_dict=True)
-		if party.disabled:
-			frappe.throw(_("{0} {1} is disabled").format(party_type, party_name), PartyDisabled)
-		elif party.is_frozen:
-			frozen_accounts_modifier = frappe.db.get_value( 'Accounts Settings', None,'frozen_accounts_modifier')
-			if not frozen_accounts_modifier in frappe.get_roles():
-				frappe.throw(_("{0} {1} is frozen").format(party_type, party_name), PartyFrozen)
+		if party_type in ("Customer", "Supplier"):
+			party = frappe.db.get_value(party_type, party_name, ["is_frozen", "disabled"], as_dict=True)
+			if party.disabled:
+				frappe.throw(_("{0} {1} is disabled").format(party_type, party_name), PartyDisabled)
+			elif party.get("is_frozen"):
+				frozen_accounts_modifier = frappe.db.get_value( 'Accounts Settings', None,'frozen_accounts_modifier')
+				if not frozen_accounts_modifier in frappe.get_roles():
+					frappe.throw(_("{0} {1} is frozen").format(party_type, party_name), PartyFrozen)
+
+		elif party_type == "Employee":
+			if frappe.db.get_value("Employee", party_name, "status") == "Left":
+				frappe.msgprint(_("{0} {1} is not active").format(party_type, party_name), PartyDisabled, alert=True)
 
 def get_timeline_data(doctype, name):
 	'''returns timeline data for the past one year'''
 	from frappe.desk.form.load import get_communication_data
 	data = get_communication_data(doctype, name,
 		fields = 'unix_timestamp(date(creation)), count(name)',
-		after = add_years(None, -1).strftime('%Y-%m-%d'),
+		after = add_years(None, -1).strftime('%Y-%m-%d'), limit = 366,
 		group_by='group by date(creation)', as_dict=False)
 	return dict(data)
\ No newline at end of file
diff --git a/erpnext/accounts/party_status.py b/erpnext/accounts/party_status.py
deleted file mode 100644
index 6d9efb1..0000000
--- a/erpnext/accounts/party_status.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-
-import frappe
-
-from frappe.utils import evaluate_filters
-from frappe.desk.notifications import get_filters_for
-
-# NOTE: if you change this also update triggers in erpnext/hooks.py
-status_depends_on = {
-	'Customer': ('Opportunity', 'Quotation', 'Sales Order', 'Delivery Note', 'Sales Invoice', 'Project', 'Issue'),
-	'Supplier': ('Supplier Quotation', 'Purchase Order', 'Purchase Receipt', 'Purchase Invoice')
-}
-
-default_status = {
-	'Customer': 'Active',
-	'Supplier': None
-}
-
-def notify_status(doc, method=None):
-	'''Notify status to customer, supplier'''
-
-	party_type = None
-	for key, doctypes in status_depends_on.iteritems():
-		if doc.doctype in doctypes:
-			party_type = key
-			break
-
-	if not party_type:
-		return
-
-	name = doc.get(party_type.lower())
-	if not name:
-		return
-
-	party = frappe.get_doc(party_type, name)
-	filters = get_filters_for(doc.doctype)
-	party.flags.ignore_mandatory = True
-
-	status = None
-	if filters:
-		if evaluate_filters(doc, filters):
-			# filters match, passed document is open
-			status = 'Open'
-
-	if status=='Open':
-		if party.status != 'Open':
-			# party not open, make it open
-			party.status = 'Open'
-			party.save(ignore_permissions=True)
-
-	else:
-		if party.status == 'Open':
-			# may be open elsewhere, check
-			# default status
-			update_status(party)
-
-	party.update_modified()
-	party.notify_update()
-
-def get_party_status(doc):
-	'''return party status based on open documents'''
-	status = default_status[doc.doctype]
-	for doctype in status_depends_on[doc.doctype]:
-		filters = get_filters_for(doctype)
-		filters[doc.doctype.lower()] = doc.name
-		if filters:
-			open_count = frappe.get_all(doctype, fields='name', filters=filters, limit_page_length=1)
-			if len(open_count) > 0:
-				status = 'Open'
-				break
-
-	return status
-
-def update_status(doc):
-	'''Set status as open if there is any open notification'''
-	status = get_party_status(doc)
-	if doc.status != status:
-		doc.db_set('status', status)
diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js
index a228c43..3ab522e 100644
--- a/erpnext/accounts/report/accounts_payable/accounts_payable.js
+++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js
@@ -53,5 +53,11 @@
 			"default": "90",
 			"reqd": 1
 		}
-	]
+	],
+	onload: function(report) {
+		report.page.add_inner_button(__("Accounts Payable Summary"), function() {
+			var filters = report.get_values();
+			frappe.set_route('query-report', 'Accounts Payable Summary', {company: filters.company});
+		});
+	}
 }
diff --git a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
index b01c8bc..0a1734a 100644
--- a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
+++ b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
@@ -53,5 +53,12 @@
 			"default": "90",
 			"reqd": 1
 		}
-	]
+	],
+
+	onload: function(report) {
+		report.page.add_inner_button(__("Accounts Payable"), function() {
+			var filters = report.get_values();
+			frappe.set_route('query-report', 'Accounts Payable', {company: filters.company});
+		});
+	}
 }
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
index 3816c6f..9bc5c2f 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
@@ -53,5 +53,12 @@
 			"default": "90",
 			"reqd": 1
 		}
-	]
+	],
+
+	onload: function(report) {
+		report.page.add_inner_button(__("Accounts Receivable Summary"), function() {
+			var filters = report.get_values();
+			frappe.set_route('query-report', 'Accounts Receivable Summary', {company: filters.company});
+		});
+	}
 }
diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
index 0fe6bc6..5cc0566 100644
--- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
+++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
@@ -53,5 +53,12 @@
 			"default": "90",
 			"reqd": 1
 		}
-	]
+	],
+
+	onload: function(report) {
+		report.page.add_inner_button(__("Accounts Receivable"), function() {
+			var filters = report.get_values();
+			frappe.set_route('query-report', 'Accounts Receivable', {company: filters.company});
+		});
+	}
 }
diff --git a/erpnext/accounts/report/cash_flow/cash_flow.py b/erpnext/accounts/report/cash_flow/cash_flow.py
index 182878a..7a776f5 100644
--- a/erpnext/accounts/report/cash_flow/cash_flow.py
+++ b/erpnext/accounts/report/cash_flow/cash_flow.py
@@ -10,7 +10,8 @@
 
 
 def execute(filters=None):
-	period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year, filters.periodicity)
+	period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year, 
+		filters.periodicity)
 
 	operation_accounts = {
 		"section_name": "Operations",
@@ -103,7 +104,7 @@
 	data = {}
 	total = 0
 	for period in period_list:
-		start_date = get_start_date(period, accumulated_values)
+		start_date = get_start_date(period, accumulated_values, company)
 		gl_sum = frappe.db.sql_list("""
 			select sum(credit) - sum(debit)
 			from `tabGL Entry`
@@ -126,10 +127,10 @@
 	data["total"] = total
 	return data
 
-def get_start_date(period, accumulated_values):
+def get_start_date(period, accumulated_values, company):
 	start_date = period["year_start_date"]
 	if accumulated_values:
-		start_date = get_fiscal_year(period.to_date)[1]
+		start_date = get_fiscal_year(period.to_date, company=company)[1]
 
 	return start_date
 
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index bc4a220..c897d1c 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -3,10 +3,8 @@
 
 from __future__ import unicode_literals
 import frappe
-import math
 from frappe import _
-from frappe.utils import (flt, getdate, get_first_day, get_last_day, date_diff,
-	add_months, add_days, formatdate, cint)
+from frappe.utils import flt, getdate, get_first_day, add_months, add_days, formatdate
 
 def get_period_list(from_fiscal_year, to_fiscal_year, periodicity):
 	"""Get a list of dict {"from_date": from_date, "to_date": to_date, "key": key, "label": label}
@@ -149,7 +147,6 @@
 				
 def get_date_fiscal_year(date):
 	from erpnext.accounts.utils import get_fiscal_year
-	
 	return get_fiscal_year(date)[0]
 
 def accumulate_values_into_parents(accounts, accounts_by_name, period_list, accumulated_values):
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js
index 0fca7dc..a422871 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.js
+++ b/erpnext/accounts/report/general_ledger/general_ledger.js
@@ -48,13 +48,19 @@
 			"fieldtype": "Data",
 		},
 		{
+			"fieldname":"project",
+			"label": __("Project"),
+			"fieldtype": "Link",
+			"options": "Project"
+		},
+		{
 			"fieldtype": "Break",
 		},
 		{
 			"fieldname":"party_type",
 			"label": __("Party Type"),
-			"fieldtype": "Select",
-			"options": ["", "Customer", "Supplier"],
+			"fieldtype": "Link",
+			"options": "Party Type",
 			"default": ""
 		},
 		{
@@ -80,13 +86,6 @@
 			"fieldname":"group_by_account",
 			"label": __("Group by Account"),
 			"fieldtype": "Check",
-		},
-		{
-			"fieldname":"letter_head",
-			"label": __("Letter Head"),
-			"fieldtype": "Link",
-			"options": "Letter Head",
-			"default": frappe.defaults.get_default("letter_head"),
 		}
 	]
 }
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 00c17e8..d09ac70 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -149,6 +149,9 @@
 	if not (filters.get("account") or filters.get("party") or filters.get("group_by_account")):
 		conditions.append("posting_date >=%(from_date)s")
 
+	if filters.get("project"):
+		conditions.append("project=%(project)s")
+
 	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("GL Entry")
 	if match_conditions: conditions.append(match_conditions)
diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
index 747eb43..254523f 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
+++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
@@ -9,12 +9,12 @@
 
 def execute(filters=None):
 	period_list = get_period_list(filters.from_fiscal_year, filters.to_fiscal_year, filters.periodicity)
-	
+
 	income = get_data(filters.company, "Income", "Credit", period_list, filters = filters,
 		accumulated_values=filters.accumulated_values, ignore_closing_entries=True, ignore_accumulated_values_for_fy= True)
 	expense = get_data(filters.company, "Expense", "Debit", period_list, filters=filters,
 		accumulated_values=filters.accumulated_values, ignore_closing_entries=True, ignore_accumulated_values_for_fy= True)
-	
+
 	net_profit_loss = get_net_profit_loss(income, expense, period_list, filters.company)
 
 	data = []
@@ -24,7 +24,7 @@
 		data.append(net_profit_loss)
 
 	columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company)
-	
+
 	chart = get_chart_data(filters, columns, income, expense, net_profit_loss)
 
 	return columns, data, None, chart
@@ -43,21 +43,21 @@
 
 		for period in period_list:
 			net_profit_loss[period.key] = flt(income[-2][period.key] - expense[-2][period.key], 3)
-			
+
 			if net_profit_loss[period.key]:
 				has_value=True
-			
+
 			total += flt(net_profit_loss[period.key])
 			net_profit_loss["total"] = total
-		
+
 		if has_value:
 			return net_profit_loss
 
 def get_chart_data(filters, columns, income, expense, net_profit_loss):
 	x_intervals = ['x'] + [d.get("label") for d in columns[2:]]
-	
+
 	income_data, expense_data, net_profit = [], [], []
-	
+
 	for p in columns[2:]:
 		if income:
 			income_data.append(income[-2].get(p.get("fieldname")))
@@ -65,7 +65,7 @@
 			expense_data.append(expense[-2].get(p.get("fieldname")))
 		if net_profit_loss:
 			net_profit.append(net_profit_loss.get(p.get("fieldname")))
-			
+
 	columns = [x_intervals]
 	if income_data:
 		columns.append(["Income"] + income_data)
@@ -73,15 +73,20 @@
 		columns.append(["Expense"] + expense_data)
 	if net_profit:
 		columns.append(["Net Profit/Loss"] + net_profit)
-		
+
 	chart = {
 		"data": {
 			'x': 'x',
-			'columns': columns
+			'columns': columns,
+			'colors': {
+				'Income': '#5E64FF',
+				'Expense': '#b8c2cc',
+				'Net Profit/Loss': '#ff5858'
+			}
 		}
 	}
-	
+
 	if not filters.accumulated_values:
 		chart["chart_type"] = "bar"
-		
+
 	return chart
\ No newline at end of file
diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.py b/erpnext/accounts/report/profitability_analysis/profitability_analysis.py
index 6d95237..c0a4212 100644
--- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.py
+++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.py
@@ -23,9 +23,9 @@
 def get_accounts_data(based_on, company):
 	if based_on == 'cost_center':
 		return frappe.db.sql("""select name, parent_cost_center as parent_account, cost_center_name as account_name, lft, rgt
-			from `tabCost Center` where company=%s order by lft""", company, as_dict=True)
+			from `tabCost Center` where company=%s order by name""", company, as_dict=True)
 	else:
-		return frappe.get_all('Project', fields = ["name"], filters = {'company': company})
+		return frappe.get_all('Project', fields = ["name"], filters = {'company': company}, order_by = 'name')
 
 def get_data(accounts, filters, based_on):
 	if not accounts:
diff --git a/erpnext/docs/assets/img/fleet-management/__init__.py b/erpnext/accounts/report/unpaid_expense_claim/__init__.py
similarity index 100%
copy from erpnext/docs/assets/img/fleet-management/__init__.py
copy to erpnext/accounts/report/unpaid_expense_claim/__init__.py
diff --git a/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.js b/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.js
new file mode 100644
index 0000000..811414a
--- /dev/null
+++ b/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.js
@@ -0,0 +1,12 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.query_reports["Unpaid Expense Claim"] = {
+	"filters": [
+		{
+			"fieldname":"employee",
+			"label": __("Employee"),
+			"fieldtype": "Link"
+		}
+	]
+}
diff --git a/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.json b/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.json
new file mode 100644
index 0000000..a1087c0
--- /dev/null
+++ b/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.json
@@ -0,0 +1,18 @@
+{
+ "add_total_row": 0, 
+ "apply_user_permissions": 1, 
+ "creation": "2017-01-04 16:26:18.309717", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 0, 
+ "is_standard": "Yes", 
+ "modified": "2017-01-04 16:26:18.309717", 
+ "modified_by": "Administrator", 
+ "module": "Accounts", 
+ "name": "Unpaid Expense Claim", 
+ "owner": "Administrator", 
+ "ref_doctype": "Expense Claim", 
+ "report_name": "Unpaid Expense Claim", 
+ "report_type": "Script Report"
+}
\ No newline at end of file
diff --git a/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.py b/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.py
new file mode 100644
index 0000000..eee620b
--- /dev/null
+++ b/erpnext/accounts/report/unpaid_expense_claim/unpaid_expense_claim.py
@@ -0,0 +1,34 @@
+# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+
+def execute(filters=None):
+	columns, data = [], []
+	columns = get_columns()
+	data = get_unclaimed_expese_claims(filters)
+	return columns, data
+
+def get_columns():
+	return [_("Employee") + ":Link/Employee:120", _("Employee Name") + "::120",_("Expense Claim") + ":Link/Expense Claim:120",
+		_("Sanctioned Amount") + ":Currency:120", _("Paid Amount") + ":Currency:120", _("Outstanding Amount") + ":Currency:150"]
+
+def get_unclaimed_expese_claims(filters):
+	cond = "1=1"
+	if filters.get("employee"):
+		cond = "ec.employee = %(employee)s"
+
+	return frappe.db.sql(""" 
+		select
+			ec.employee, ec.employee_name, ec.name, ec.total_sanctioned_amount, ec.total_amount_reimbursed,
+			sum(gle.credit_in_account_currency - gle.debit_in_account_currency) as outstanding_amt
+		from 
+			`tabExpense Claim` ec, `tabGL Entry` gle
+		where
+			gle.against_voucher_type = "Expense Claim" and gle.against_voucher = ec.name
+			and gle.party is not null and ec.docstatus = 1 and ec.is_paid = 0 and {cond} group by ec.name
+		having
+			outstanding_amt > 0
+	""".format(cond=cond), filters, as_list=1)
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index b7fef75..c35ca82 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -20,32 +20,63 @@
 	return get_fiscal_years(date, fiscal_year, label, verbose, company, as_dict=as_dict)[0]
 
 def get_fiscal_years(transaction_date=None, fiscal_year=None, label="Date", verbose=1, company=None, as_dict=False):
-	# if year start date is 2012-04-01, year end date should be 2013-03-31 (hence subdate)
-	cond = " disabled = 0"
-	if fiscal_year:
-		cond += " and fy.name = %(fiscal_year)s"
-	else:
-		cond += " and %(transaction_date)s >= fy.year_start_date and %(transaction_date)s <= fy.year_end_date"
+	fiscal_years = frappe.cache().hget("fiscal_years", company) or []
+	
+	if not fiscal_years:		
+		# if year start date is 2012-04-01, year end date should be 2013-03-31 (hence subdate)
+		cond = ""
+		if fiscal_year:
+			cond += " and fy.name = {0}".format(frappe.db.escape(fiscal_year))
+		if company:
+			cond += """
+				and (not exists (select name 
+					from `tabFiscal Year Company` fyc 
+					where fyc.parent = fy.name) 
+				or exists(select company 
+					from `tabFiscal Year Company` fyc 
+					where fyc.parent = fy.name 
+					and fyc.company=%(company)s)
+				)
+			"""
 
-	if company:
-		cond += """ and (not exists(select name from `tabFiscal Year Company` fyc where fyc.parent = fy.name)
-			or exists(select company from `tabFiscal Year Company` fyc where fyc.parent = fy.name and fyc.company=%(company)s ))"""
+		fiscal_years = frappe.db.sql("""
+			select 
+				fy.name, fy.year_start_date, fy.year_end_date 
+			from 
+				`tabFiscal Year` fy
+			where 
+				disabled = 0 {0}
+			order by 
+				fy.year_start_date desc""".format(cond), {
+				"company": company
+			}, as_dict=True)
+			
+		frappe.cache().hset("fiscal_years", company, fiscal_years)
 
-	fy = frappe.db.sql("""select fy.name, fy.year_start_date, fy.year_end_date from `tabFiscal Year` fy
-		where %s order by fy.year_start_date desc""" % cond, {
-			"fiscal_year": fiscal_year,
-			"transaction_date": transaction_date,
-			"company": company
-		}, as_dict=as_dict)
+	if transaction_date:
+		transaction_date = getdate(transaction_date)
 
-	if not fy:
-		error_msg = _("""{0} {1} not in any active Fiscal Year. For more details check {2}.""").format(label, formatdate(transaction_date), "https://frappe.github.io/erpnext/user/manual/en/accounts/articles/fiscal-year-error")
-		if verbose==1: frappe.msgprint(error_msg)
-		raise FiscalYearError, error_msg
-	return fy
+	for fy in fiscal_years:
+		matched = False
+		if fiscal_year and fy.name == fiscal_year:
+			matched = True
 
-def validate_fiscal_year(date, fiscal_year, label=_("Date"), doc=None):
-	years = [f[0] for f in get_fiscal_years(date, label=label)]
+		if (transaction_date and getdate(fy.year_start_date) <= transaction_date 
+			and getdate(fy.year_end_date) >= transaction_date):
+			matched = True
+			
+		if matched:
+			if as_dict:
+				return (fy,)
+			else:
+				return ((fy.name, fy.year_start_date, fy.year_end_date),)
+
+	error_msg = _("""{0} {1} not in any active Fiscal Year.""").format(label, formatdate(transaction_date))
+	if verbose==1: frappe.msgprint(error_msg)
+	raise FiscalYearError, error_msg
+
+def validate_fiscal_year(date, fiscal_year, company, label=_("Date"), doc=None):
+	years = [f[0] for f in get_fiscal_years(date, label=label, company=company)]
 	if fiscal_year not in years:
 		if doc:
 			doc.fiscal_year = years[0]
diff --git a/erpnext/buying/doctype/buying_settings/buying_settings.py b/erpnext/buying/doctype/buying_settings/buying_settings.py
index 3449721..1f0184b 100644
--- a/erpnext/buying/doctype/buying_settings/buying_settings.py
+++ b/erpnext/buying/doctype/buying_settings/buying_settings.py
@@ -9,11 +9,10 @@
 from frappe.model.document import Document
 
 class BuyingSettings(Document):
-		
 	def validate(self):
 		for key in ["supplier_type", "supp_master_name", "maintain_same_rate", "buying_price_list"]:
 			frappe.db.set_default(key, self.get(key, ""))
 
 		from erpnext.setup.doctype.naming_series.naming_series import set_by_naming_series
-		set_by_naming_series("Supplier", "supplier_name", 
+		set_by_naming_series("Supplier", "supplier_name",
 			self.get("supp_master_name")=="Naming Series", hide_name_field=False)
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index 5d74760..c03ccc8 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -21,20 +21,12 @@
 		if(this.frm.get_field('shipping_address')) {
 			this.frm.set_query("shipping_address", function(){
 				if(me.frm.doc.customer){
-					return{
-						filters:{
-							"customer": me.frm.doc.customer
-						}
-					}
-				}
-				else{
-					return{
-						filters:{
-							"is_your_company_address": 1,
-							"company": me.frm.doc.company
-						}
-					}
-				}
+					return {
+						query: 'frappe.geo.doctype.address.address.address_query',
+						filters: { link_doctype: 'Customer', link_name: me.frm.doc.customer }
+					};
+				} else
+					return erpnext.queries.company_address_query(me.frm.doc)
 			});
 		}
 	},
@@ -50,13 +42,9 @@
 			});
 		}
 
-		$.each([["supplier", "supplier"],
-			["contact_person", "supplier_filter"],
-			["supplier_address", "supplier_filter"]],
-			function(i, opts) {
-				if(me.frm.fields_dict[opts[0]])
-					me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
-			});
+		me.frm.set_query('supplier', erpnext.queries.supplier);
+		me.frm.set_query('contact_person', erpnext.queries.contact_query);
+		me.frm.set_query('supplier_address', erpnext.queries.address_query);
 
 		if(this.frm.fields_dict.supplier) {
 			this.frm.set_query("supplier", function() {
@@ -79,6 +67,8 @@
 	},
 
 	refresh: function(doc) {
+		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'supplier', doctype: 'Supplier'};
+
 		this.frm.toggle_display("supplier_name",
 			(this.frm.doc.supplier_name && this.frm.doc.supplier_name!==this.frm.doc.supplier));
 
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 15356fd..0a577c3 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -66,7 +66,7 @@
 
 		if(doc.docstatus == 1 && doc.status != "Closed") {
 			if(flt(doc.per_received, 2) < 100 && allow_receipt) {
-				cur_frm.add_custom_button(__('Receive'), this.make_purchase_receipt, __("Make"));
+				cur_frm.add_custom_button(__('Receipt'), this.make_purchase_receipt, __("Make"));
 
 				if(doc.is_subcontracted==="Yes") {
 					cur_frm.add_custom_button(__('Material to Supplier'),
@@ -226,18 +226,6 @@
 	})
 }
 
-cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters: {'supplier': doc.supplier}
-	}
-}
-
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters: {'supplier': doc.supplier}
-	}
-}
-
 cur_frm.fields_dict['items'].grid.get_field('project').get_query = function(doc, cdt, cdn) {
 	return {
 		filters:[
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 6847a98..113dbe0 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -134,6 +134,42 @@
 						}
 					})
 				}, __("Get items from"));
+				
+				// Get items from open Material Requests based on supplier
+				cur_frm.add_custom_button(__('Possible Supplier'), function() {
+					// Create a dialog window for the user to pick their supplier
+					var d = new frappe.ui.Dialog({
+						title: __('Select Possible Supplier'),
+						fields: [
+						{fieldname: 'supplier', fieldtype:'Link', options:'Supplier', label:'Supplier', reqd:1},
+						{fieldname: 'ok_button', fieldtype:'Button', label:'Get Items from Material Requests'},
+						]
+					});
+					
+					// On the user clicking the ok button
+					d.fields_dict.ok_button.input.onclick = function() {
+						var btn = d.fields_dict.ok_button.input;
+						var v = d.get_values();
+						if(v) {
+							$(btn).set_working();
+							
+							erpnext.utils.map_current_doc({
+								method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_item_from_material_requests_based_on_supplier",
+								source_name: v.supplier,
+								get_query_filters: {
+									material_request_type: "Purchase",
+									docstatus: 1,
+									status: ["!=", "Stopped"],
+									per_ordered: ["<", 99.99],
+									company: cur_frm.doc.company
+								}
+							});
+							$(btn).done_working();
+							d.hide();
+						}
+					}	
+					d.show();
+				}, __("Get items from"));
 		}
 	},
 
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index 802888d..6300864 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -6,7 +6,7 @@
 import frappe, json
 from frappe import _
 from frappe.model.mapper import get_mapped_doc
-from frappe.utils import get_url, random_string, cint
+from frappe.utils import get_url, cint
 from frappe.utils.user import get_user_fullname
 from frappe.utils.print_format import download_pdf
 from frappe.desk.form.load import get_attachments
@@ -39,7 +39,7 @@
 
 	def validate_email_id(self, args):
 		if not args.email_id:
-			frappe.throw(_("Row {0}: For supplier {0} email id is required to send email").format(args.idx, args.supplier))
+			frappe.throw(_("Row {0}: For supplier {0} Email Address is required to send email").format(args.idx, args.supplier))
 
 	def on_submit(self):
 		frappe.db.set(self, 'status', 'Submitted')
@@ -244,3 +244,49 @@
 		args = doc.get('suppliers')[cint(supplier_idx) - 1]
 		doc.update_supplier_part_no(args)
 		return doc
+		
+@frappe.whitelist()
+def get_item_from_material_requests_based_on_supplier(source_name, target_doc = None):
+	mr_items_list = frappe.db.sql("""
+		SELECT
+			mr.name, mr_item.item_code
+		FROM
+			`tabItem` as item, 
+			`tabItem Supplier` as item_supp, 
+			`tabMaterial Request Item` as mr_item, 
+			`tabMaterial Request`  as mr 
+		WHERE item_supp.supplier = %(supplier)s 
+			AND item.name = item_supp.parent 
+			AND mr_item.parent = mr.name 
+			AND mr_item.item_code = item.name 
+			AND mr.status != "Stopped" 
+			AND mr.material_request_type = "Purchase" 
+			AND mr.docstatus = 1 
+			AND mr.per_ordered < 99.99""", {"supplier": source_name}, as_dict=1)
+	
+	material_requests = {}
+	for d in mr_items_list:
+		material_requests.setdefault(d.name, []).append(d.item_code)
+
+	for mr, items in material_requests.items():
+		target_doc = get_mapped_doc("Material Request", mr, {
+			"Material Request": {
+				"doctype": "Request for Quotation",
+				"validation": {
+					"docstatus": ["=", 1],
+					"material_request_type": ["=", "Purchase"],
+				}
+			},
+			"Material Request Item": {
+				"doctype": "Request for Quotation Item",
+				"condition": lambda row: row.item_code in items,
+				"field_map": [
+					["name", "material_request_item"],
+					["parent", "material_request"],
+					["uom", "uom"]
+				]
+			}
+		}, target_doc)
+		
+	return target_doc
+		
\ No newline at end of file
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation_dashboard.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation_dashboard.py
index ba09d3f..9582523 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation_dashboard.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation_dashboard.py
@@ -6,7 +6,6 @@
 		'fieldname': 'request_for_quotation',
 		'transactions': [
 			{
-				'label': _('Related'),
 				'items': ['Supplier Quotation']
 			},
 		]
diff --git a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
index c2979a1..0af30c2 100644
--- a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
+++ b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
@@ -155,7 +155,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Email Id", 
+   "label": "Email Address", 
    "length": 0, 
    "no_copy": 1, 
    "options": "contact.email_id", 
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js
index b176e00..7e5e045 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/erpnext/buying/doctype/supplier/supplier.js
@@ -16,6 +16,8 @@
 		});
 	},
 	refresh: function(frm) {
+		frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Supplier'}
+
 		if(frappe.defaults.get_default("supp_master_name")!="Naming Series") {
 			frm.toggle_display("naming_series", false);
 		} else {
@@ -24,11 +26,11 @@
 
 		if(frm.doc.__islocal){
 	    	hide_field(['address_html','contact_html']);
-			erpnext.utils.clear_address_and_contact(frm);
+			frappe.geo.clear_address_and_contact(frm);
 		}
 		else {
 		  	unhide_field(['address_html','contact_html']);
-			erpnext.utils.render_address_and_contact(frm);
+			frappe.geo.render_address_and_contact(frm);
 
 			// custom buttons
 			frm.add_custom_button(__('Accounting Ledger'), function() {
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index 4b8f8c5..277a5b9 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -163,35 +163,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "status", 
-   "fieldtype": "Select", 
-   "hidden": 1, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Status", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nOpen", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "column_break0", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -796,7 +767,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:24:30.465053", 
+ "modified": "2017-01-30 00:52:31.193443", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Supplier", 
@@ -813,7 +784,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -834,7 +804,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -855,7 +824,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -876,7 +844,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -897,7 +864,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -918,7 +884,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -939,7 +904,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -957,5 +921,6 @@
  "search_fields": "supplier_name, supplier_type", 
  "sort_order": "ASC", 
  "title_field": "supplier_name", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index 3677ee2..704e828 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -6,10 +6,11 @@
 import frappe.defaults
 from frappe import msgprint, _
 from frappe.model.naming import make_autoname
-from erpnext.utilities.address_and_contact import load_address_and_contact
+from frappe.geo.address_and_contact import (load_address_and_contact,
+	delete_contact_and_address)
+
 from erpnext.utilities.transaction_base import TransactionBase
 from erpnext.accounts.party import validate_party_accounts, get_timeline_data # keep this
-from erpnext.accounts.party_status import get_party_status
 
 class Supplier(TransactionBase):
 	def get_feed(self):
@@ -46,21 +47,10 @@
 		else:
 			self.name = make_autoname(self.naming_series + '.#####')
 
-	def update_address(self):
-		frappe.db.sql("""update `tabAddress` set supplier_name=%s, modified=NOW()
-			where supplier=%s""", (self.supplier_name, self.name))
-
-	def update_contact(self):
-		frappe.db.sql("""update `tabContact` set supplier_name=%s, modified=NOW()
-			where supplier=%s""", (self.supplier_name, self.name))
-
 	def on_update(self):
 		if not self.naming_series:
 			self.naming_series = ''
 
-		self.update_address()
-		self.update_contact()
-
 	def validate(self):
 		#validation for Naming Series mandatory field...
 		if frappe.defaults.get_global_default('supp_master_name') == 'Naming Series':
@@ -68,38 +58,10 @@
 				msgprint(_("Series is mandatory"), raise_exception=1)
 
 		validate_party_accounts(self)
-		self.status = get_party_status(self)
-
-	def get_contacts(self,nm):
-		if nm:
-			contact_details =frappe.db.convert_to_lists(frappe.db.sql("select name, CONCAT(IFNULL(first_name,''),' ',IFNULL(last_name,'')),contact_no,email_id from `tabContact` where supplier = %s", nm))
-
-			return contact_details
-		else:
-			return ''
-
-	def delete_supplier_address(self):
-		for rec in frappe.db.sql("select * from `tabAddress` where supplier=%s", (self.name,), as_dict=1):
-			frappe.db.sql("delete from `tabAddress` where name=%s",(rec['name']))
-
-	def delete_supplier_contact(self):
-		for contact in frappe.db.sql_list("""select name from `tabContact`
-			where supplier=%s""", self.name):
-				frappe.delete_doc("Contact", contact)
 
 	def on_trash(self):
-		self.delete_supplier_address()
-		self.delete_supplier_contact()
+		delete_contact_and_address('Supplier', self.name)
 
 	def after_rename(self, olddn, newdn, merge=False):
-		set_field = ''
 		if frappe.defaults.get_global_default('supp_master_name') == 'Supplier Name':
 			frappe.db.set(self, "supplier_name", newdn)
-			self.update_contact()
-			set_field = ", supplier_name=%(newdn)s"
-		self.update_supplier_address(newdn, set_field)
-
-	def update_supplier_address(self, newdn, set_field):
-		frappe.db.sql("""update `tabAddress` set address_title=%(newdn)s
-			{set_field} where supplier=%(newdn)s"""\
-			.format(set_field=set_field), ({"newdn": newdn}))
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier/supplier_list.js b/erpnext/buying/doctype/supplier/supplier_list.js
index acf8e68..dd98c43 100644
--- a/erpnext/buying/doctype/supplier/supplier_list.js
+++ b/erpnext/buying/doctype/supplier/supplier_list.js
@@ -1,8 +1,3 @@
 frappe.listview_settings['Supplier'] = {
-	add_fields: ["supplier_name", "supplier_type", 'status'],
-	get_indicator: function(doc) {
-		if(doc.status==="Open") {
-			return [doc.status, "red", "status,=," + doc.status];
-		}
-	}
+	add_fields: ["supplier_name", "supplier_type"],
 };
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index 0323c2f..b3bdeb0 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -11,6 +11,9 @@
 			cur_frm.add_custom_button(__("Purchase Order"), this.make_purchase_order,
 				__("Make"));
 			cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
+			cur_frm.add_custom_button(__("Quotation"), this.make_quotation,
+				__("Make"));
+
 		}
 		else if (this.frm.doc.docstatus===0) {
 			cur_frm.add_custom_button(__('Material Request'),
@@ -35,6 +38,13 @@
 			method: "erpnext.buying.doctype.supplier_quotation.supplier_quotation.make_purchase_order",
 			frm: cur_frm
 		})
+	},
+	make_quotation: function() {
+		frappe.model.open_mapped_doc({
+			method: "erpnext.buying.doctype.supplier_quotation.supplier_quotation.make_quotation",
+			frm: cur_frm
+		})
+
 	}
 });
 
@@ -49,15 +59,3 @@
 			]
 		}
 	}
-
-cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters:{'supplier': doc.supplier}
-	}
-}
-
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters:{'supplier': doc.supplier}
-	}
-}
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index 144e982..30899c8 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -97,8 +97,26 @@
 		},
 		"Purchase Taxes and Charges": {
 			"doctype": "Purchase Taxes and Charges",
-			"add_if_empty": True
 		},
 	}, target_doc, set_missing_values)
 
 	return doclist
+
+@frappe.whitelist()
+def make_quotation(source_name, target_doc=None):
+	doclist = get_mapped_doc("Supplier Quotation", source_name, {
+		"Supplier Quotation": {
+			"doctype": "Quotation",
+			"field_map": {
+				"name": "supplier_quotation",
+			}
+		},
+		"Supplier Quotation Item": {
+			"doctype": "Quotation Item",
+			"condition": lambda doc: frappe.db.get_value("Item", doc.item_code, "is_sales_item")==1,
+			"add_if_empty": True
+		}
+	}, target_doc)
+
+	return doclist
+
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_dashboard.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_dashboard.py
index 80f946e..df69063 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_dashboard.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_dashboard.py
@@ -11,11 +11,12 @@
 		'transactions': [
 			{
 				'label': _('Related'),
-				'items': ['Purchase Order']
+				'items': ['Purchase Order', 'Quotation']
 			},
 			{
 				'label': _('Reference'),
 				'items': ['Material Request', 'Request for Quotation', 'Project']
 			},
 		]
+
 	}
diff --git a/erpnext/buying/report/supplier_addresses_and_contacts/__init__.py b/erpnext/buying/report/supplier_addresses_and_contacts/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/buying/report/supplier_addresses_and_contacts/__init__.py
+++ /dev/null
diff --git a/erpnext/buying/report/supplier_addresses_and_contacts/supplier_addresses_and_contacts.json b/erpnext/buying/report/supplier_addresses_and_contacts/supplier_addresses_and_contacts.json
deleted file mode 100644
index 9ae1adc..0000000
--- a/erpnext/buying/report/supplier_addresses_and_contacts/supplier_addresses_and_contacts.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "apply_user_permissions": 1, 
- "creation": "2013-10-09 10:38:40", 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 1, 
- "is_standard": "Yes", 
- "modified": "2014-09-11 08:53:17.358554", 
- "modified_by": "Administrator",
- "module": "Buying", 
- "name": "Supplier Addresses and Contacts", 
- "owner": "Administrator", 
- "query": "SELECT\n    `tabSupplier`.name as \"Supplier:Link/Supplier:120\",\n\t`tabSupplier`.supplier_name as \"Supplier Name::120\",\n\t`tabSupplier`.supplier_type as \"Supplier Type:Link/Supplier Type:120\",\n\tconcat_ws(', ', \n\t\ttrim(',' from `tabAddress`.address_line1), \n\t\ttrim(',' from tabAddress.address_line2), \n\t\ttabAddress.state, tabAddress.pincode, tabAddress.country\n\t) as 'Address::180',\n    concat_ws(', ', `tabContact`.first_name, `tabContact`.last_name) as \"Contact Name::180\",\n\t`tabContact`.phone as \"Phone\",\n\t`tabContact`.mobile_no as \"Mobile No\",\n\t`tabContact`.email_id as \"Email Id::120\",\n\t`tabContact`.is_primary_contact as \"Is Primary Contact::120\"\nFROM\n\t`tabSupplier`\n\tleft join `tabAddress` on (\n\t\t`tabAddress`.supplier=`tabSupplier`.name\n\t)\n\tleft join `tabContact` on (\n\t\t`tabContact`.supplier=`tabSupplier`.name\n\t)\nWHERE\n\t`tabSupplier`.docstatus<2\nORDER BY\n\t`tabSupplier`.name asc", 
- "ref_doctype": "Supplier", 
- "report_name": "Supplier Addresses and Contacts", 
- "report_type": "Query Report"
-}
\ No newline at end of file
diff --git a/erpnext/config/buying.py b/erpnext/config/buying.py
index e246266..990ca7a 100644
--- a/erpnext/config/buying.py
+++ b/erpnext/config/buying.py
@@ -172,8 +172,12 @@
 				{
 					"type": "report",
 					"is_query_report": True,
-					"name": "Supplier Addresses and Contacts",
-					"doctype": "Supplier"
+					"name": "Addresses And Contacts",
+					"label": "Supplier Addresses And Contacts",
+					"doctype": "Address",
+					"route_options": {
+						"party_type": "Supplier"
+					}
 				},
 			]
 		},
diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py
index 9397ffc..029ef74 100644
--- a/erpnext/config/desktop.py
+++ b/erpnext/config/desktop.py
@@ -229,15 +229,6 @@
 			"type": "list"
 		},
 		{
-			"module_name": "Assessment",
-			"color": "#8a70be",
-			"icon": "fa fa-file-text-alt",
-			"label": _("Assessment"),
-			"link": "List/Assessment",
-			"_doctype": "Assessment",
-			"type": "list"
-		},
-		{
 			"module_name": "Fees",
 			"color": "#83C21E",
 			"icon": "fa fa-money",
diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index 55363ab..0a969ed 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -146,6 +146,11 @@
 					"name": "Appraisal Template",
 					"description": _("Template for performance appraisals.")
 				},
+				{
+					"type": "page",
+					"name": "team-updates",
+					"label": _("Team Updates")
+				},
 			]
 		},
 
@@ -168,6 +173,21 @@
 		},
 
 		{
+			"label": _("Fleet Management"),
+			"items": [
+				{
+					"type": "doctype",
+					"name": "Vehicle"
+				},
+				{
+					"type": "doctype",
+					"name": "Vehicle Log"
+				},
+			]
+		},
+
+
+		{
 			"label": _("Setup"),
 			"icon": "fa fa-cog",
 			"items": [
@@ -232,7 +252,7 @@
 				{
 					"type": "report",
 					"is_query_report": True,
-					"name": "Monthly Salary Register",
+					"name": "Salary Register",
 					"doctype": "Salary Slip"
 				},
 				{
@@ -241,10 +261,36 @@
 					"name": "Monthly Attendance Sheet",
 					"doctype": "Attendance"
 				},
+				{
+					"type": "report",
+					"is_query_report": True,
+					"name": "Vehicle Expenses",
+					"doctype": "Vehicle"
+				},
 
 			]
 		},
 		{
+			"label": _("Employee Loan Management"),
+			"icon": "icon-list",
+			"items": [
+				{
+					"type": "doctype",
+					"name": "Loan Type",
+					"description": _("Define various loan types")
+				},
+				{
+					"type": "doctype",
+					"name": "Employee Loan Application",
+					"description": _("Employee Loan Application")
+				},
+				{
+					"type": "doctype",
+					"name": "Employee Loan"
+				},
+			]
+		},
+		{
 			"label": _("Help"),
 			"icon": "fa fa-facetime-video",
 			"items": [
diff --git a/erpnext/config/schools.py b/erpnext/config/schools.py
index 1d33d4d..e95b734 100644
--- a/erpnext/config/schools.py
+++ b/erpnext/config/schools.py
@@ -6,13 +6,16 @@
 		{
 			"label": _("Student"),
 			"items": [
-
 				{
 					"type": "doctype",
 					"name": "Student"
 				},
 				{
 					"type": "doctype",
+					"name": "Guardian"
+				},
+				{
+					"type": "doctype",
 					"name": "Student Log"
 				},
 				{
@@ -109,7 +112,7 @@
 			"items": [
 				{
 					"type": "doctype",
-					"name": "Assessment"
+					"name": "Assessment Plan"
 				},
 				{
 					"type": "doctype",
@@ -117,7 +120,23 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Grading Structure"
+					"name": "Assessment Result"
+				},
+				{
+					"type": "doctype",
+					"name": "Grading Scale"
+				},
+				{
+					"type": "doctype",
+					"name": "Assessment Criteria"
+				},
+				{
+					"type": "doctype",
+					"name": "Assessment Criteria Group"
+				},
+				{
+					"type": "doctype",
+					"name": "Assessment Result Tool"
 				}
 			]
 		},
@@ -145,23 +164,6 @@
 			]
 		},
 		{
-			"label": _("LMS"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Announcement"
-				},
-				{
-					"type": "doctype",
-					"name": "Topic"
-				},
-				{
-					"type": "doctype",
-					"name": "Discussion"
-				}
-			]
-		},
-		{
 			"label": _("Setup"),
 			"items": [
 				{
diff --git a/erpnext/config/selling.py b/erpnext/config/selling.py
index c406d09..bbae245 100644
--- a/erpnext/config/selling.py
+++ b/erpnext/config/selling.py
@@ -120,6 +120,16 @@
 				{
 					"type": "report",
 					"is_query_report": True,
+					"name": "Addresses And Contacts",
+					"label": "Sales Partner Addresses And Contacts",
+					"doctype": "Address",
+					"route_options": {
+						"party_type": "Sales Partner"
+					}
+				},
+				{
+					"type": "report",
+					"is_query_report": True,
 					"name": "Territory Target Variance (Item Group-Wise)",
 					"route": "query-report/Territory Target Variance Item Group-Wise",
 					"doctype": "Territory"
@@ -215,8 +225,12 @@
 				{
 					"type": "report",
 					"is_query_report": True,
-					"name": "Customer Addresses And Contacts",
-					"doctype": "Contact"
+					"name": "Addresses And Contacts",
+					"label": "Customer Addresses And Contacts",
+					"doctype": "Address",
+					"route_options": {
+						"party_type": "Customer"
+					}
 				},
 				{
 					"type": "report",
diff --git a/erpnext/config/setup.py b/erpnext/config/setup.py
index 9c9bae2..878b2f2 100644
--- a/erpnext/config/setup.py
+++ b/erpnext/config/setup.py
@@ -96,6 +96,12 @@
 			"items": [
 				{
 					"type": "doctype",
+					"name": "Feedback Trigger",
+					"label": _("Feedback Trigger"),
+					"description": _("Automatically triggers the feedback request based on conditions.")
+				},
+				{
+					"type": "doctype",
 					"name": "Email Digest",
 					"description": _("Create and manage daily, weekly and monthly email digests.")
 				},
diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py
index 3ca424d..a98c40e 100644
--- a/erpnext/config/stock.py
+++ b/erpnext/config/stock.py
@@ -50,6 +50,11 @@
 					"doctype": "Item",
 				},
 				{
+					"type": "page",
+					"name": "stock-balance",
+					"label": _("Stock Summary")
+				},
+				{
 					"type": "report",
 					"is_query_report": True,
 					"name": "Stock Ageing",
@@ -264,6 +269,12 @@
 				{
 					"type": "report",
 					"is_query_report": True,
+					"name": "Batch Item Expiry Status",
+					"doctype": "Stock Ledger Entry"
+				},
+				{
+					"type": "report",
+					"is_query_report": True,
 					"name": "Item Prices",
 					"doctype": "Price List"
 				},
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 554529c..67d4822 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -113,7 +113,7 @@
 				date_field = "transaction_date"
 
 			if date_field and self.get(date_field):
-				validate_fiscal_year(self.get(date_field), self.fiscal_year,
+				validate_fiscal_year(self.get(date_field), self.fiscal_year, self.company,
 					self.meta.get_label(date_field), self)
 
 	def validate_due_date(self):
@@ -131,7 +131,7 @@
 			transaction_date = self.posting_date
 		else:
 			transaction_date = self.transaction_date
-		 
+
 		if self.meta.get_field("currency"):
 			# price list part
 			fieldname = "selling_price_list" if buying_or_selling.lower() == "selling" \
@@ -144,7 +144,7 @@
 					self.plc_conversion_rate = 1.0
 
 				elif not self.plc_conversion_rate:
-					self.plc_conversion_rate = get_exchange_rate(self.price_list_currency, 
+					self.plc_conversion_rate = get_exchange_rate(self.price_list_currency,
 						self.company_currency, transaction_date)
 
 			# currency
@@ -570,7 +570,7 @@
 							elif asset.status in ("Scrapped", "Cancelled", "Sold"):
 								frappe.throw(_("Row #{0}: Asset {1} cannot be submitted, it is already {2}")
 									.format(d.idx, d.asset, asset.status))
-									
+
 	def delink_advance_entries(self, linked_doc_name):
 		total_allocated_amount = 0
 		for adv in self.advances:
@@ -583,7 +583,7 @@
 			if consider_for_total_advance:
 				total_allocated_amount += flt(adv.allocated_amount, adv.precision("allocated_amount"))
 
-		frappe.db.set_value(self.doctype, self.name, "total_advance", 
+		frappe.db.set_value(self.doctype, self.name, "total_advance",
 			total_allocated_amount, update_modified=False)
 
 	def group_similar_items(self):
@@ -711,7 +711,7 @@
 			.format(order_doctype, order_condition))
 
 	reference_condition = " and (" + " or ".join(conditions) + ")" if conditions else ""
-	
+
 	journal_entries = frappe.db.sql("""
 		select
 			"Journal Entry" as reference_type, t1.name as reference_name,
@@ -771,8 +771,8 @@
 def update_invoice_status():
 	# Daily update the status of the invoices
 
-	frappe.db.sql(""" update `tabSales Invoice` set status = 'Overdue' 
+	frappe.db.sql(""" update `tabSales Invoice` set status = 'Overdue'
 		where due_date < CURDATE() and docstatus = 1 and outstanding_amount > 0""")
 
-	frappe.db.sql(""" update `tabPurchase Invoice` set status = 'Overdue' 
+	frappe.db.sql(""" update `tabPurchase Invoice` set status = 'Overdue'
 		where due_date < CURDATE() and docstatus = 1 and outstanding_amount > 0""")
\ No newline at end of file
diff --git a/erpnext/controllers/js/contact_address_common.js b/erpnext/controllers/js/contact_address_common.js
deleted file mode 100644
index c51ff46..0000000
--- a/erpnext/controllers/js/contact_address_common.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	cur_frm.add_fetch('customer', 'customer_name', 'customer_name');
-	cur_frm.add_fetch('supplier', 'supplier_name', 'supplier_name');
-
-	cur_frm.fields_dict.customer.get_query = erpnext.queries.customer;
-	cur_frm.fields_dict.supplier.get_query = erpnext.queries.supplier;
-
-	if(cur_frm.fields_dict.lead) {
-		cur_frm.fields_dict.lead.get_query = erpnext.queries.lead;
-		cur_frm.add_fetch('lead', 'lead_name', 'lead_name');
-	}
-
-	if(doc.__islocal) {
-		var last_route = frappe.route_history.slice(-2, -1)[0];
-		if(last_route && last_route[0]==="Form") {
-			var doctype = last_route[1],
-				docname = last_route.slice(2).join("/");
-
-			if(["Customer", "Quotation", "Sales Order", "Sales Invoice", "Delivery Note",
-				"Installation Note", "Opportunity", "Warranty Claim", "Maintenance Visit",
-				"Maintenance Schedule"]
-				.indexOf(doctype)!==-1) {
-				var refdoc = frappe.get_doc(doctype, docname);
-				if((refdoc.doctype == "Quotation" && refdoc.quotation_to=="Customer") ||
-					(refdoc.doctype == "Opportunity" && refdoc.enquiry_from=="Customer") ||
-					!in_list(["Opportunity", "Quotation"], doctype)) {
-						cur_frm.set_value("customer", refdoc.customer || refdoc.name);
-						cur_frm.set_value("customer_name", refdoc.customer_name);
-						if(cur_frm.doc.doctype==="Address")
-							cur_frm.set_value("address_title", cur_frm.doc.customer_name);
-				}
-			}
-			else if(["Supplier", "Supplier Quotation", "Purchase Order", "Purchase Invoice", "Purchase Receipt"]
-				.indexOf(doctype)!==-1) {
-				var refdoc = frappe.get_doc(doctype, docname);
-				cur_frm.set_value("supplier", refdoc.supplier || refdoc.name);
-				cur_frm.set_value("supplier_name", refdoc.supplier_name);
-				if(cur_frm.doc.doctype==="Address")
-					cur_frm.set_value("address_title", cur_frm.doc.supplier_name);
-			}
-			else if(["Lead", "Opportunity", "Quotation"]
-				.indexOf(doctype)!==-1) {
-				var refdoc = frappe.get_doc(doctype, docname);
-
-				if((refdoc.doctype == "Quotation" && refdoc.quotation_to=="Lead") ||
-					(refdoc.doctype == "Opportunity" && refdoc.enquiry_from=="Lead") || (doctype=="Lead")) {
-						cur_frm.set_value("lead", refdoc.lead || refdoc.name);
-						cur_frm.set_value("lead_name", refdoc.customer_name || refdoc.company_name || refdoc.lead_name);
-						if(cur_frm.doc.doctype==="Address")
-							cur_frm.set_value("address_title", cur_frm.doc.lead_name);
-				}
-			}
-			else if(doctype == "Sales Partner") {
-				cur_frm.set_value("sales_partner", docname);
-			}
-		}
-	}
-}
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index 98390ff..cc3f277 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -3,32 +3,9 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.desk.reportview import get_match_cond
-from frappe.model.db_query import DatabaseQuery
+from frappe.desk.reportview import get_match_cond, get_filters_cond
 from frappe.utils import nowdate
 
-def get_filters_cond(doctype, filters, conditions):
-	if filters:
-		flt = filters
-		if isinstance(filters, dict):
-			filters = filters.items()
-			flt = []
-			for f in filters:
-				if isinstance(f[1], basestring) and f[1][0] == '!':
-					flt.append([doctype, f[0], '!=', f[1][1:]])
-				else:
-					value = frappe.db.escape(f[1]) if isinstance(f[1], basestring) else f[1]
-					flt.append([doctype, f[0], '=', value])
-
-		query = DatabaseQuery(doctype)
-		query.filters = flt
-		query.conditions = conditions
-		query.build_filter_conditions(flt, conditions)
-
-		cond = ' and ' + ' and '.join(query.conditions)
-	else:
-		cond = ''
-	return cond
 
  # searches for active employees
 def employee_query(doctype, txt, searchfield, start, page_len, filters):
@@ -88,7 +65,7 @@
 		fields = ["name", "customer_group", "territory"]
 	else:
 		fields = ["name", "customer_name", "customer_group", "territory"]
-		
+
 	meta = frappe.get_meta("Customer")
 	fields = fields + [f for f in meta.get_search_fields() if not f in fields]
 
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 4fbee58..55bcaf3 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -6,7 +6,6 @@
 from frappe.utils import flt, comma_or, nowdate, getdate
 from frappe import _
 from frappe.model.document import Document
-from erpnext.accounts.party_status import notify_status
 
 def validate_status(status, options):
 	if status not in options:
@@ -287,7 +286,6 @@
 				target = frappe.get_doc(args["target_parent_dt"], args["name"])
 				target.set_status(update=True)
 				target.notify_update()
-				notify_status(target)
 
 	def _update_modified(self, args, update_modified):
 		args['update_modified'] = ''
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index b08826a..add882c 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -15,8 +15,8 @@
 	def validate(self):
 		super(StockController, self).validate()
 		self.validate_inspection()
-	
-	def make_gl_entries(self, repost_future_gle=True):
+
+	def make_gl_entries(self, gl_entries=None, repost_future_gle=True, from_repost=False):
 		if self.docstatus == 2:
 			delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
 
@@ -24,8 +24,9 @@
 			warehouse_account = get_warehouse_account()
 
 			if self.docstatus==1:
-				gl_entries = self.get_gl_entries(warehouse_account)
-				make_gl_entries(gl_entries)
+				if not gl_entries:
+					gl_entries = self.get_gl_entries(warehouse_account)
+				make_gl_entries(gl_entries, from_repost=from_repost)
 
 			if repost_future_gle:
 				items, warehouses = self.get_items_and_warehouses()
@@ -50,7 +51,7 @@
 				for sle in sle_list:
 					if warehouse_account.get(sle.warehouse):
 						# from warehouse account
-						
+
 						self.check_expense_account(item_row)
 
 						# If item is not a sample item 
@@ -88,7 +89,7 @@
 			for wh in warehouse_with_no_account:
 				if frappe.db.get_value("Warehouse", wh, "company"):
 					frappe.throw(_("Warehouse {0} is not linked to any account, please create/link the corresponding (Asset) account for the warehouse.").format(wh))
-					
+
 			msgprint(_("No accounting entries for the following warehouses") + ": \n" +
 				"\n".join(warehouse_with_no_account))
 
@@ -255,7 +256,7 @@
 	def make_gl_entries_on_cancel(self, repost_future_gle=True):
 		if frappe.db.sql("""select name from `tabGL Entry` where voucher_type=%s
 			and voucher_no=%s""", (self.doctype, self.name)):
-				self.make_gl_entries(repost_future_gle)
+				self.make_gl_entries(repost_future_gle=repost_future_gle)
 
 	def get_serialized_items(self):
 		serialized_items = []
@@ -278,7 +279,7 @@
 			incoming_rate = incoming_rate[0][0] if incoming_rate else 0.0
 
 		return incoming_rate
-		
+
 	def validate_warehouse(self):
 		from erpnext.stock.utils import validate_warehouse_company
 
@@ -287,7 +288,7 @@
 
 		for w in warehouses:
 			validate_warehouse_company(w, self.company)
-			
+
 	def update_billing_percentage(self, update_modified=True):
 		self._update_percent_field({
 			"target_dt": self.doctype + " Item",
@@ -301,21 +302,21 @@
 	def validate_inspection(self):
 		'''Checks if quality inspection is set for Items that require inspection.
 		On submit, throw an exception'''
-		
+
 		inspection_required_fieldname = None
 		if self.doctype in ["Purchase Receipt", "Purchase Invoice"]:
 			inspection_required_fieldname = "inspection_required_before_purchase"
 		elif self.doctype in ["Delivery Note", "Sales Invoice"]:
 			inspection_required_fieldname = "inspection_required_before_delivery"
-		
+
 		if not inspection_required_fieldname or \
 			(self.doctype in ["Sales Invoice", "Purchase Invoice"] and not self.update_stock):
 				return
-		
+
 		for d in self.get('items'):
-			if (frappe.db.get_value("Item", d.item_code, inspection_required_fieldname) 
+			if (frappe.db.get_value("Item", d.item_code, inspection_required_fieldname)
 				and not d.quality_inspection):
-				
+
 				frappe.msgprint(_("Quality Inspection required for Item {0}").format(d.item_code))
 				if self.docstatus==1:
 					raise frappe.ValidationError
@@ -331,7 +332,7 @@
 
 	future_stock_vouchers = get_future_stock_vouchers(posting_date, posting_time, for_warehouses, for_items)
 	gle = get_voucherwise_gl_entries(future_stock_vouchers, posting_date)
-	
+
 	for voucher_type, voucher_no in future_stock_vouchers:
 		existing_gle = gle.get((voucher_type, voucher_no), [])
 		voucher_obj = frappe.get_doc(voucher_type, voucher_no)
@@ -339,7 +340,7 @@
 		if expected_gle:
 			if not existing_gle or not compare_existing_and_expected_gle(existing_gle, expected_gle):
 				_delete_gl_entries(voucher_type, voucher_no)
-				voucher_obj.make_gl_entries(repost_future_gle=False)
+				voucher_obj.make_gl_entries(gl_entries=expected_gle, repost_future_gle=False, from_repost=True)
 		else:
 			_delete_gl_entries(voucher_type, voucher_no)
 
@@ -394,10 +395,19 @@
 	return gl_entries
 
 def get_warehouse_account():
-	warehouse_account = frappe._dict()
+	if not frappe.flags.warehouse_account_map or frappe.flags.in_test:
+		warehouse_account = frappe._dict()
 
-	for d in frappe.db.sql("""select warehouse, name, account_currency from tabAccount
-		where account_type = 'Stock' and (warehouse is not null and warehouse != ''
-		and is_group != 1) and is_group=0 """, as_dict=1):
+		for d in frappe.db.sql("""select
+				warehouse, name, account_currency
+			from
+				tabAccount
+			where
+				account_type = 'Stock'
+				and (warehouse is not null and warehouse != '')
+				and is_group=0 """, as_dict=1):
 			warehouse_account.setdefault(d.warehouse, d)
-	return warehouse_account
+
+		frappe.flags.warehouse_account_map = warehouse_account
+
+	return frappe.flags.warehouse_account_map
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index 57bceee..0e02df8 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -366,8 +366,9 @@
 					# discount amount rounding loss adjustment if no taxes
 					if (not taxes or self.doc.apply_discount_on == "Net Total") \
 						and i == len(self.doc.get("items")) - 1:
-							discount_amount_loss = flt(self.doc.total - net_total - self.doc.discount_amount,
+							discount_amount_loss = flt(self.doc.net_total - net_total - self.doc.discount_amount,
 								self.doc.precision("net_total"))
+
 							item.net_amount = flt(item.net_amount + discount_amount_loss,
 								item.precision("net_amount"))
 
@@ -452,7 +453,7 @@
 
 		elif self.doc.doctype == "Purchase Invoice":
 			self.doc.outstanding_amount = flt(total_amount_to_pay, self.doc.precision("outstanding_amount"))
-		
+
 	def calculate_paid_amount(self):
 		paid_amount = base_paid_amount = 0.0
 
@@ -469,7 +470,7 @@
 		self.doc.change_amount = 0.0
 		self.doc.base_change_amount = 0.0
 		if self.doc.paid_amount > self.doc.grand_total:
-			self.doc.change_amount = flt(self.doc.paid_amount - self.doc.grand_total + 
+			self.doc.change_amount = flt(self.doc.paid_amount - self.doc.grand_total +
 				self.doc.write_off_amount, self.doc.precision("change_amount"))
 
 			self.doc.base_change_amount = flt(self.doc.base_paid_amount - self.doc.base_grand_total +
@@ -485,7 +486,7 @@
 	def calculate_margin(self, item):
 		total_margin = 0.0
 		if item.price_list_rate:
-			if item.pricing_rule and not self.doc.ignore_pricing_rule: 
+			if item.pricing_rule and not self.doc.ignore_pricing_rule:
 				pricing_rule = frappe.get_doc('Pricing Rule', item.pricing_rule)
 				item.margin_type = pricing_rule.margin_type
 				item.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
@@ -494,4 +495,4 @@
 				margin_value = item.margin_rate_or_amount if item.margin_type == 'Amount' else flt(item.price_list_rate) * flt(item.margin_rate_or_amount) / 100
 				total_margin = flt(item.price_list_rate) + flt(margin_value)
 
-		return total_margin 
+		return total_margin
diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js
index be3cd82..7e22125 100644
--- a/erpnext/crm/doctype/lead/lead.js
+++ b/erpnext/crm/doctype/lead/lead.js
@@ -25,6 +25,7 @@
 	refresh: function() {
 		var doc = this.frm.doc;
 		erpnext.toggle_naming_series();
+		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'name', doctype: 'Lead'}
 
 		if(!this.frm.doc.__islocal && this.frm.doc.__onload && !this.frm.doc.__onload.is_customer) {
 			this.frm.add_custom_button(__("Customer"), this.create_customer, __("Make"));
@@ -34,9 +35,9 @@
 		}
 
 		if(!this.frm.doc.__islocal) {
-			erpnext.utils.render_address_and_contact(cur_frm);
+			frappe.geo.render_address_and_contact(cur_frm);
 		} else {
-			erpnext.utils.clear_address_and_contact(cur_frm);
+			frappe.geo.clear_address_and_contact(cur_frm);
 		}
 	},
 
diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json
index 99d41af..8c4be89 100644
--- a/erpnext/crm/doctype/lead/lead.json
+++ b/erpnext/crm/doctype/lead/lead.json
@@ -140,7 +140,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Email Id", 
+   "label": "Email Address", 
    "length": 0, 
    "no_copy": 0, 
    "oldfieldname": "email_id", 
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index ee3f96f..c306cbf 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -4,11 +4,12 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.utils import cstr, validate_email_add, cint, comma_and, has_gravatar, nowdate
+from frappe.utils import (cstr, validate_email_add, cint, comma_and, has_gravatar,
+	getdate, nowdate)
 from frappe.model.mapper import get_mapped_doc
 
 from erpnext.controllers.selling_controller import SellingController
-from erpnext.utilities.address_and_contact import load_address_and_contact
+from frappe.geo.address_and_contact import load_address_and_contact
 from erpnext.accounts.party import set_taxes
 
 sender_field = "email_id"
@@ -41,11 +42,11 @@
 				frappe.throw(_("Lead Owner cannot be same as the Lead"))
 
 			if self.email_id == self.contact_by:
-				frappe.throw(_("Next Contact By cannot be same as the Lead Email id"))
+				frappe.throw(_("Next Contact By cannot be same as the Lead Email Address"))
 
 			self.image = has_gravatar(self.email_id)
 
-		if self.contact_date and self.contact_date < nowdate():
+		if self.contact_date and getdate(self.contact_date) < nowdate():
 			frappe.throw(_("Next Contact Date cannot be in the past"))
 
 	def on_update(self):
@@ -67,7 +68,7 @@
 				where email_id=%s and name!=%s""", (self.email_id, self.name))
 
 			if duplicate_leads:
-				frappe.throw(_("Email id must be unique, already exists for {0}")
+				frappe.throw(_("Email Address must be unique, already exists for {0}")
 					.format(comma_and(duplicate_leads)), frappe.DuplicateEntryError)
 
 	def on_trash(self):
@@ -87,7 +88,7 @@
 			"lead": self.name,
 			"docstatus": 1,
 			"status": ["!=", "Lost"]
-			
+
 		})
 
 	def has_lost_quotation(self):
@@ -127,7 +128,7 @@
 
 @frappe.whitelist()
 def make_opportunity(source_name, target_doc=None):
-	target_doc = get_mapped_doc("Lead", source_name,
+	target_doc = get_mapped_doc("Lead", source_name, 
 		{"Lead": {
 			"doctype": "Opportunity",
 			"field_map": {
@@ -154,6 +155,9 @@
 			}
 		}}, target_doc)
 	target_doc.quotation_to = "Lead"
+	target_doc.run_method("set_missing_values")
+	target_doc.run_method("set_other_charges")
+	target_doc.run_method("calculate_taxes_and_totals")
 
 	return target_doc
 
diff --git a/erpnext/crm/doctype/lead/lead_dashboard.py b/erpnext/crm/doctype/lead/lead_dashboard.py
new file mode 100644
index 0000000..b87fc0e
--- /dev/null
+++ b/erpnext/crm/doctype/lead/lead_dashboard.py
@@ -0,0 +1,11 @@
+from frappe import _
+
+def get_data():
+	return {
+		'fieldname': 'lead',
+		'transactions': [
+			{
+				'items': ['Opportunity', 'Quotation']
+			},
+		]
+	}
\ No newline at end of file
diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js
index b86a5a5..def67d8 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.js
+++ b/erpnext/crm/doctype/opportunity/opportunity.js
@@ -6,9 +6,14 @@
 cur_frm.email_field = "contact_email";
 frappe.ui.form.on("Opportunity", {
 	customer: function(frm) {
+		frm.trigger('set_contact_link');
 		erpnext.utils.get_party_details(frm);
 	},
 
+	lead: function(frm) {
+		frm.trigger('set_contact_link');
+	},
+
 	customer_address: function(frm, cdt, cdn) {
 		erpnext.utils.get_address_display(frm, 'customer_address', 'address_display', false);
 	},
@@ -23,6 +28,8 @@
 	refresh: function(frm) {
 		var doc = frm.doc;
 		frm.events.enquiry_from(frm);
+		frm.trigger('set_contact_link');
+
 		if(!doc.__islocal && doc.status!=="Lost") {
 			if(doc.with_items){
 				frm.add_custom_button(__('Supplier Quotation'),
@@ -35,7 +42,7 @@
 				cur_frm.cscript.create_quotation, __("Make"));
 
 			frm.page.set_inner_btn_group_as_primary(__("Make"));
-		
+
 			if(doc.status!=="Quotation") {
 				frm.add_custom_button(__('Lost'),
 					cur_frm.cscript['Declare Opportunity Lost']);
@@ -43,6 +50,14 @@
 		}
 	},
 
+	set_contact_link: function(frm) {
+		if(frm.doc.customer) {
+			frappe.dynamic_link = {doc: frm.doc, fieldname: 'customer', doctype: 'Customer'}
+		} else if(frm.doc.lead) {
+			frappe.dynamic_link = {doc: frm.doc, fieldname: 'lead', doctype: 'Lead'}
+		}
+	},
+
 	make_supplier_quotation: function(frm) {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.opportunity.opportunity.make_supplier_quotation",
@@ -62,7 +77,7 @@
 		if(!this.frm.doc.status)
 			set_multiple(this.frm.doc.doctype, this.frm.doc.name, { status:'Open' });
 		if(!this.frm.doc.company && frappe.defaults.get_user_default("Company"))
-			set_multiple(this.frm.doc.doctype, this.frm.doc.name, 
+			set_multiple(this.frm.doc.doctype, this.frm.doc.name,
 				{ company:frappe.defaults.get_user_default("Company") });
 
 		this.setup_queries();
@@ -75,10 +90,7 @@
 			this.frm.set_query("contact_by", erpnext.queries.user);
 		}
 
-		this.frm.set_query("customer_address", function() {
-			if(me.frm.doc.lead) return {filters: { lead: me.frm.doc.lead } };
-			else if(me.frm.doc.customer) return {filters: { customer: me.frm.doc.customer } };
-		});
+		me.frm.set_query('customer_address', erpnext.queries.address_query);
 
 		this.frm.set_query("item_code", "items", function() {
 			return {
@@ -89,8 +101,7 @@
 
 		$.each([["lead", "lead"],
 			["customer", "customer"],
-			["contact_person", "customer_filter"],
-			["territory", "not_a_group_filter"]], function(i, opts) {
+			["contact_person", "customer_filter"]], function(i, opts) {
 				me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
 			});
 	},
diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index 4bb6765..301dc82 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -106,30 +106,6 @@
 			lead_name, company_name = frappe.db.get_value("Lead", self.lead, ["lead_name", "company_name"])
 			self.customer_name = company_name or lead_name
 
-	def get_cust_address(self,name):
-		details = frappe.db.sql("""select customer_name, address, territory, customer_group
-			from `tabCustomer` where name = %s and docstatus != 2""", (name), as_dict = 1)
-		if details:
-			ret = {
-				'customer_name':	details and details[0]['customer_name'] or '',
-				'address'	:	details and details[0]['address'] or '',
-				'territory'			 :	details and details[0]['territory'] or '',
-				'customer_group'		:	details and details[0]['customer_group'] or ''
-			}
-			# ********** get primary contact details (this is done separately coz. , in case there is no primary contact thn it would not be able to fetch customer details in case of join query)
-
-			contact_det = frappe.db.sql("""select contact_name, contact_no, email_id
-				from `tabContact` where customer = %s and is_customer = 1
-					and is_primary_contact = 'Yes' and docstatus != 2""", name, as_dict = 1)
-
-			ret['contact_person'] = contact_det and contact_det[0]['contact_name'] or ''
-			ret['contact_no']		 = contact_det and contact_det[0]['contact_no'] or ''
-			ret['email_id']			 = contact_det and contact_det[0]['email_id'] or ''
-
-			return ret
-		else:
-			frappe.throw(_("Customer {0} does not exist").format(name), frappe.DoesNotExistError)
-
 	def on_update(self):
 		self.add_calendar_event()
 
diff --git a/erpnext/crm/doctype/opportunity/opportunity_dashboard.py b/erpnext/crm/doctype/opportunity/opportunity_dashboard.py
index 40ff6d0..1939c2e 100644
--- a/erpnext/crm/doctype/opportunity/opportunity_dashboard.py
+++ b/erpnext/crm/doctype/opportunity/opportunity_dashboard.py
@@ -8,7 +8,6 @@
 		},
 		'transactions': [
 			{
-				'label': _('Related'),
 				'items': ['Quotation', 'Supplier Quotation']
 			},
 		]
diff --git a/erpnext/demo/data/address.json b/erpnext/demo/data/address.json
index be4d5ec..7618c2c 100644
--- a/erpnext/demo/data/address.json
+++ b/erpnext/demo/data/address.json
@@ -1,245 +1,218 @@
 [
  {
-  "address_line1": "254 Theotokopoulou Str.", 
-  "address_type": "Office", 
-  "city": "Larnaka", 
-  "country": "Cyprus", 
-  "customer": "Adaptas", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "254 Theotokopoulou Str.",
+  "address_type": "Office",
+  "city": "Larnaka",
+  "country": "Cyprus",
+  "links": [{"link_doctype": "Customer", "link_name": "Adaptas"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "R Patr\u00e3o Caramelho 116", 
-  "address_type": "Office", 
-  "city": "Fajozes", 
-  "country": "Portugal", 
-  "customer": "Asian Fusion", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "R Patr\u00e3o Caramelho 116",
+  "address_type": "Office",
+  "city": "Fajozes",
+  "country": "Portugal",
+  "links": [{"link_doctype": "Customer", "link_name": "Asian Fusion"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "30 Fulford Road", 
-  "address_type": "Office", 
-  "city": "PENTRE-PIOD", 
-  "country": "United Kingdom", 
-  "customer": "Asian Junction", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "30 Fulford Road",
+  "address_type": "Office",
+  "city": "PENTRE-PIOD",
+  "country": "United Kingdom",
+  "links": [{"link_doctype": "Customer", "link_name": "Asian Junction"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Schoenebergerstrasse 13", 
-  "address_type": "Office", 
-  "city": "Raschau", 
-  "country": "Germany", 
-  "customer": "Big D Supermarkets", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Schoenebergerstrasse 13",
+  "address_type": "Office",
+  "city": "Raschau",
+  "country": "Germany",
+  "links": [{"link_doctype": "Customer", "link_name": "Big D Supermarkets"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Hoheluftchaussee 43", 
-  "address_type": "Office", 
-  "city": "Kieritzsch", 
-  "country": "Germany", 
-  "customer": "Buttrey Food & Drug", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Hoheluftchaussee 43",
+  "address_type": "Office",
+  "city": "Kieritzsch",
+  "country": "Germany",
+  "links": [{"link_doctype": "Customer", "link_name": "Buttrey Food & Drug"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "R Cimo Vila 6", 
-  "address_type": "Office", 
-  "city": "Rebordosa", 
-  "country": "Portugal", 
-  "customer": "Chi-Chis", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "R Cimo Vila 6",
+  "address_type": "Office",
+  "city": "Rebordosa",
+  "country": "Portugal",
+  "links": [{"link_doctype": "Customer", "link_name": "Chi-Chis"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "R 5 Outubro 9", 
-  "address_type": "Office", 
-  "city": "Quinta Nova S\u00e3o Domingos", 
-  "country": "Portugal", 
-  "customer": "Choices", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "R 5 Outubro 9",
+  "address_type": "Office",
+  "city": "Quinta Nova S\u00e3o Domingos",
+  "country": "Portugal",
+  "links": [{"link_doctype": "Customer", "link_name": "Choices"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Avenida Macambira 953", 
-  "address_type": "Office", 
-  "city": "Goi\u00e2nia", 
-  "country": "Brazil", 
-  "customer": "Consumers and Consumers Express", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Avenida Macambira 953",
+  "address_type": "Office",
+  "city": "Goi\u00e2nia",
+  "country": "Brazil",
+  "links": [{"link_doctype": "Customer", "link_name": "Consumers and Consumers Express"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "2342 Goyeau Ave", 
-  "address_type": "Office", 
-  "city": "Windsor", 
-  "country": "Canada", 
-  "customer": "Crafts Canada", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "2342 Goyeau Ave",
+  "address_type": "Office",
+  "city": "Windsor",
+  "country": "Canada",
+  "links": [{"link_doctype": "Customer", "link_name": "Crafts Canada"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Laukaantie 82", 
-  "address_type": "Office", 
-  "city": "KOKKOLA", 
-  "country": "Finland", 
-  "customer": "Endicott Shoes", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Laukaantie 82",
+  "address_type": "Office",
+  "city": "KOKKOLA",
+  "country": "Finland",
+  "links": [{"link_doctype": "Customer", "link_name": "Endicott Shoes"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "9 Brown Street", 
-  "address_type": "Office", 
-  "city": "PETERSHAM", 
-  "country": "Australia", 
-  "customer": "Fayva", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "9 Brown Street",
+  "address_type": "Office",
+  "city": "PETERSHAM",
+  "country": "Australia",
+  "links": [{"link_doctype": "Customer", "link_name": "Fayva"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Via Donnalbina 41", 
-  "address_type": "Office", 
-  "city": "Cala Gonone", 
-  "country": "Italy", 
-  "customer": "Intelacard", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Via Donnalbina 41",
+  "address_type": "Office",
+  "city": "Cala Gonone",
+  "country": "Italy",
+  "links": [{"link_doctype": "Customer", "link_name": "Intelacard"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Liljerum Grenadj\u00e4rtorpet 69", 
-  "address_type": "Office", 
-  "city": "TOMTEBODA", 
-  "country": "Sweden", 
-  "customer": "Landskip Yard Care", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Liljerum Grenadj\u00e4rtorpet 69",
+  "address_type": "Office",
+  "city": "TOMTEBODA",
+  "country": "Sweden",
+  "links": [{"link_doctype": "Customer", "link_name": "Landskip Yard Care"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "72 Bishopgate Street", 
-  "address_type": "Office", 
-  "city": "SEAHAM", 
-  "country": "United Kingdom", 
-  "customer": "Life Plan Counselling", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "72 Bishopgate Street",
+  "address_type": "Office",
+  "city": "SEAHAM",
+  "country": "United Kingdom",
+  "links": [{"link_doctype": "Customer", "link_name": "Life Plan Counselling"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "\u03a3\u03ba\u03b1\u03c6\u03af\u03b4\u03b9\u03b1 105", 
-  "address_type": "Office", 
-  "city": "\u03a0\u0391\u03a1\u0395\u039a\u039a\u039b\u0397\u03a3\u0399\u0391", 
-  "country": "Cyprus", 
-  "customer": "Mr Fables", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "\u03a3\u03ba\u03b1\u03c6\u03af\u03b4\u03b9\u03b1 105",
+  "address_type": "Office",
+  "city": "\u03a0\u0391\u03a1\u0395\u039a\u039a\u039b\u0397\u03a3\u0399\u0391",
+  "country": "Cyprus",
+  "links": [{"link_doctype": "Customer", "link_name": "Mr Fables"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Mellemvej 7", 
-  "address_type": "Office", 
-  "city": "Aabybro", 
-  "country": "Denmark", 
-  "customer": "Nelson Brothers", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Mellemvej 7",
+  "address_type": "Office",
+  "city": "Aabybro",
+  "country": "Denmark",
+  "links": [{"link_doctype": "Customer", "link_name": "Nelson Brothers"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "Plougg\u00e5rdsvej 98", 
-  "address_type": "Office", 
-  "city": "Karby", 
-  "country": "Denmark", 
-  "customer": "Netobill", 
-  "phone": "23566775757", 
-  "supplier": null
- }, 
+  "address_line1": "Plougg\u00e5rdsvej 98",
+  "address_type": "Office",
+  "city": "Karby",
+  "country": "Denmark",
+  "links": [{"link_doctype": "Customer", "link_name": "Netobill"}],
+  "phone": "23566775757"
+ },
  {
-  "address_line1": "176 Michalakopoulou Street", 
-  "address_type": "Office", 
-  "city": "Agio Georgoudi", 
-  "country": "Cyprus", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Helios Air"
- }, 
+  "address_line1": "176 Michalakopoulou Street",
+  "address_type": "Office",
+  "city": "Agio Georgoudi",
+  "country": "Cyprus",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Helios Air"}]
+ },
  {
-  "address_line1": "Fibichova 1102", 
-  "address_type": "Office", 
-  "city": "Kokor\u00edn", 
-  "country": "Czech Republic", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Ks Merchandise"
- }, 
+  "address_line1": "Fibichova 1102",
+  "address_type": "Office",
+  "city": "Kokor\u00edn",
+  "country": "Czech Republic",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Ks Merchandise"}]
+ },
  {
-  "address_line1": "Zahradn\u00ed 888", 
-  "address_type": "Office", 
-  "city": "Cecht\u00edn", 
-  "country": "Czech Republic", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "HomeBase"
- }, 
+  "address_line1": "Zahradn\u00ed 888",
+  "address_type": "Office",
+  "city": "Cecht\u00edn",
+  "country": "Czech Republic",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "HomeBase"}]
+ },
  {
-  "address_line1": "ul. Grochowska 94", 
-  "address_type": "Office", 
-  "city": "Warszawa", 
-  "country": "Poland", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Scott Ties"
- }, 
+  "address_line1": "ul. Grochowska 94",
+  "address_type": "Office",
+  "city": "Warszawa",
+  "country": "Poland",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Scott Ties"}]
+ },
  {
-  "address_line1": "Norra Esplanaden 87", 
-  "address_type": "Office", 
-  "city": "HELSINKI", 
-  "country": "Finland", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Reliable Investments"
- }, 
+  "address_line1": "Norra Esplanaden 87",
+  "address_type": "Office",
+  "city": "HELSINKI",
+  "country": "Finland",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Reliable Investments"}]
+ },
  {
-  "address_line1": "2038 Fallon Drive", 
-  "address_type": "Office", 
-  "city": "Dresden", 
-  "country": "Canada", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Nan Duskin"
- }, 
+  "address_line1": "2038 Fallon Drive",
+  "address_type": "Office",
+  "city": "Dresden",
+  "country": "Canada",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Nan Duskin"}]
+ },
  {
-  "address_line1": "77 cours Franklin Roosevelt", 
-  "address_type": "Office", 
-  "city": "MARSEILLE", 
-  "country": "France", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Rainbow Records"
- }, 
+  "address_line1": "77 cours Franklin Roosevelt",
+  "address_type": "Office",
+  "city": "MARSEILLE",
+  "country": "France",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Rainbow Records"}]
+ },
  {
-  "address_line1": "ul. Tuwima Juliana 85", 
-  "address_type": "Office", 
-  "city": "\u0141\u00f3d\u017a", 
-  "country": "Poland", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "New World Realty"
- }, 
+  "address_line1": "ul. Tuwima Juliana 85",
+  "address_type": "Office",
+  "city": "\u0141\u00f3d\u017a",
+  "country": "Poland",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "New World Realty"}]
+ },
  {
-  "address_line1": "Gl. Sygehusvej 41", 
-  "address_type": "Office", 
-  "city": "Narsaq", 
-  "country": "Greenland", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Asiatic Solutions"
- }, 
+  "address_line1": "Gl. Sygehusvej 41",
+  "address_type": "Office",
+  "city": "Narsaq",
+  "country": "Greenland",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Asiatic Solutions"}]
+ },
  {
-  "address_line1": "Gosposka ulica 50", 
-  "address_type": "Office", 
-  "city": "Nova Gorica", 
-  "country": "Slovenia", 
-  "customer": null, 
-  "phone": "23566775757", 
-  "supplier": "Eagle Hardware"
+  "address_line1": "Gosposka ulica 50",
+  "address_type": "Office",
+  "city": "Nova Gorica",
+  "country": "Slovenia",
+  "phone": "23566775757",
+  "links": [{"link_doctype": "Supplier", "link_name": "Eagle Hardware"}]
  }
 ]
\ No newline at end of file
diff --git a/erpnext/demo/data/contact.json b/erpnext/demo/data/contact.json
index 130845b..113b561 100644
--- a/erpnext/demo/data/contact.json
+++ b/erpnext/demo/data/contact.json
@@ -1,191 +1,164 @@
 [
  {
-  "customer": "Adaptas", 
-  "email_id": "JanVaclavik@example.com", 
-  "first_name": "January", 
-  "last_name": "V\u00e1clav\u00edk", 
-  "supplier": null
- }, 
+  "email_id": "JanVaclavik@example.com",
+  "first_name": "January",
+  "last_name": "V\u00e1clav\u00edk",
+  "links": [{"link_doctype": "Customer", "link_name": "Adaptas"}]
+ },
  {
-  "customer": "Asian Fusion", 
-  "email_id": "ChidumagaTobeolisa@example.com", 
-  "first_name": "Chidumaga", 
-  "last_name": "Tobeolisa", 
-  "supplier": null
- }, 
+  "email_id": "ChidumagaTobeolisa@example.com",
+  "first_name": "Chidumaga",
+  "last_name": "Tobeolisa",
+  "links": [{"link_doctype": "Customer", "link_name": "Asian Fusion"}]
+ },
  {
-  "customer": "Asian Junction", 
-  "email_id": "JanaKubanova@example.com", 
-  "first_name": "Jana", 
-  "last_name": "Kub\u00e1\u0148ov\u00e1", 
-  "supplier": null
- }, 
+  "email_id": "JanaKubanova@example.com",
+  "first_name": "Jana",
+  "last_name": "Kub\u00e1\u0148ov\u00e1",
+  "links": [{"link_doctype": "Customer", "link_name": "Asian Junction"}]
+ },
  {
-  "customer": "Big D Supermarkets", 
-  "email_id": "XuChaoXuan@example.com", 
-  "first_name": "\u7d39\u8431", 
-  "last_name": "\u4e8e", 
-  "supplier": null
- }, 
+  "email_id": "XuChaoXuan@example.com",
+  "first_name": "\u7d39\u8431",
+  "last_name": "\u4e8e",
+  "links": [{"link_doctype": "Customer", "link_name": "Big D Supermarkets"}]
+ },
  {
-  "customer": "Buttrey Food & Drug", 
-  "email_id": "OzlemVerwijmeren@example.com", 
-  "first_name": "\u00d6zlem", 
-  "last_name": "Verwijmeren", 
-  "supplier": null
- }, 
+  "email_id": "OzlemVerwijmeren@example.com",
+  "first_name": "\u00d6zlem",
+  "last_name": "Verwijmeren",
+  "links": [{"link_doctype": "Customer", "link_name": "Buttrey Food & Drug"}]
+ },
  {
-  "customer": "Chi-Chis", 
-  "email_id": "HansRasmussen@example.com", 
-  "first_name": "Hans", 
-  "last_name": "Rasmussen", 
-  "supplier": null
- }, 
+  "email_id": "HansRasmussen@example.com",
+  "first_name": "Hans",
+  "last_name": "Rasmussen",
+  "links": [{"link_doctype": "Customer", "link_name": "Chi-Chis"}]
+ },
  {
-  "customer": "Choices", 
-  "email_id": "SatomiShigeki@example.com", 
-  "first_name": "Satomi", 
-  "last_name": "Shigeki", 
-  "supplier": null
- }, 
+  "email_id": "SatomiShigeki@example.com",
+  "first_name": "Satomi",
+  "last_name": "Shigeki",
+  "links": [{"link_doctype": "Customer", "link_name": "Choices"}]
+ },
  {
-  "customer": "Consumers and Consumers Express", 
-  "email_id": "SimonVJessen@example.com", 
-  "first_name": "Simon", 
-  "last_name": "Jessen", 
-  "supplier": null
- }, 
+  "email_id": "SimonVJessen@example.com",
+  "first_name": "Simon",
+  "last_name": "Jessen",
+  "links": [{"link_doctype": "Customer", "link_name": "Consumers and Consumers Express"}]
+ },
  {
-  "customer": "Crafts Canada", 
-  "email_id": "NeguaranShahsaah@example.com", 
-  "first_name": "\u0646\u06af\u0627\u0631\u06cc\u0646", 
-  "last_name": "\u0634\u0627\u0647 \u0633\u06cc\u0627\u0647", 
-  "supplier": null
- }, 
+  "email_id": "NeguaranShahsaah@example.com",
+  "first_name": "\u0646\u06af\u0627\u0631\u06cc\u0646",
+  "last_name": "\u0634\u0627\u0647 \u0633\u06cc\u0627\u0647",
+  "links": [{"link_doctype": "Customer", "link_name": "Crafts Canada"}]
+ },
  {
-  "customer": "Endicott Shoes", 
-  "email_id": "Lom-AliBataev@example.com", 
-  "first_name": "Lom-Ali", 
-  "last_name": "Bataev", 
-  "supplier": null
- }, 
+  "email_id": "Lom-AliBataev@example.com",
+  "first_name": "Lom-Ali",
+  "last_name": "Bataev",
+  "links": [{"link_doctype": "Customer", "link_name": "Endicott Shoes"}]
+ },
  {
-  "customer": "Fayva", 
-  "email_id": "VanNgocTien@example.com", 
-  "first_name": "Ti\u00ean", 
-  "last_name": "V\u0103n", 
-  "supplier": null
- }, 
+  "email_id": "VanNgocTien@example.com",
+  "first_name": "Ti\u00ean",
+  "last_name": "V\u0103n",
+  "links": [{"link_doctype": "Customer", "link_name": "Fayva"}]
+ },
  {
-  "customer": "Intelacard", 
-  "email_id": "QuimeyOsorioRuelas@example.com", 
-  "first_name": "Quimey", 
-  "last_name": "Osorio", 
-  "supplier": null
- }, 
+  "email_id": "QuimeyOsorioRuelas@example.com",
+  "first_name": "Quimey",
+  "last_name": "Osorio",
+  "links": [{"link_doctype": "Customer", "link_name": "Intelacard"}]
+ },
  {
-  "customer": "Landskip Yard Care", 
-  "email_id": "EdgardaSalcedoRaya@example.com", 
-  "first_name": "Edgarda", 
-  "last_name": "Salcedo", 
-  "supplier": null
- }, 
+  "email_id": "EdgardaSalcedoRaya@example.com",
+  "first_name": "Edgarda",
+  "last_name": "Salcedo",
+  "links": [{"link_doctype": "Customer", "link_name": "Landskip Yard Care"}]
+ },
  {
-  "customer": "Life Plan Counselling", 
-  "email_id": "HafsteinnBjarnarsonar@example.com", 
-  "first_name": "Hafsteinn", 
-  "last_name": "Bjarnarsonar", 
-  "supplier": null
- }, 
+  "email_id": "HafsteinnBjarnarsonar@example.com",
+  "first_name": "Hafsteinn",
+  "last_name": "Bjarnarsonar",
+  "links": [{"link_doctype": "Customer", "link_name": "Life Plan Counselling"}]
+ },
  {
-  "customer": "Mr Fables", 
-  "email_id": "\u0434\u0430\u043d\u0438\u0438\u043b@example.com", 
-  "first_name": "\u0414\u0430\u043d\u0438\u0438\u043b", 
-  "last_name": "\u041a\u043e\u043d\u043e\u0432\u0430\u043b\u043e\u0432", 
-  "supplier": null
- }, 
+  "email_id": "\u0434\u0430\u043d\u0438\u0438\u043b@example.com",
+  "first_name": "\u0414\u0430\u043d\u0438\u0438\u043b",
+  "last_name": "\u041a\u043e\u043d\u043e\u0432\u0430\u043b\u043e\u0432",
+  "links": [{"link_doctype": "Customer", "link_name": "Mr Fables"}]
+ },
  {
-  "customer": "Nelson Brothers", 
-  "email_id": "SelmaMAndersen@example.com", 
-  "first_name": "Selma", 
-  "last_name": "Andersen", 
-  "supplier": null
- }, 
+  "email_id": "SelmaMAndersen@example.com",
+  "first_name": "Selma",
+  "last_name": "Andersen",
+  "links": [{"link_doctype": "Customer", "link_name": "Nelson Brothers"}]
+ },
  {
-  "customer": "Netobill", 
-  "email_id": "LadislavKolaja@example.com", 
-  "first_name": "Ladislav", 
-  "last_name": "Kolaja", 
-  "supplier": null
- }, 
+  "email_id": "LadislavKolaja@example.com",
+  "first_name": "Ladislav",
+  "last_name": "Kolaja",
+  "links": [{"link_doctype": "Customer", "link_name": "Netobill"}]
+ },
  {
-  "customer": null, 
-  "email_id": "TewoldeAbaalom@example.com", 
-  "first_name": "Tewolde", 
-  "last_name": "Abaalom", 
-  "supplier": "Helios Air"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "Helios Air"}],
+  "email_id": "TewoldeAbaalom@example.com",
+  "first_name": "Tewolde",
+  "last_name": "Abaalom"
+ },
  {
-  "customer": null, 
-  "email_id": "LeilaFernandesRodrigues@example.com", 
-  "first_name": "Leila", 
-  "last_name": "Rodrigues", 
-  "supplier": "Ks Merchandise"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "Ks Merchandise"}],
+  "email_id": "LeilaFernandesRodrigues@example.com",
+  "first_name": "Leila",
+  "last_name": "Rodrigues"
+ },
  {
-  "customer": null, 
-  "email_id": "DmitryBulgakov@example.com", 
-  "first_name": "Dmitry", 
-  "last_name": "Bulgakov", 
-  "supplier": "HomeBase"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "HomeBase"}],
+  "email_id": "DmitryBulgakov@example.com",
+  "first_name": "Dmitry",
+  "last_name": "Bulgakov"
+ },
  {
-  "customer": null, 
-  "email_id": "HaiducWhitfoot@example.com", 
-  "first_name": "Haiduc", 
-  "last_name": "Whitfoot", 
-  "supplier": "Scott Ties"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "Scott Ties"}],
+  "email_id": "HaiducWhitfoot@example.com",
+  "first_name": "Haiduc",
+  "last_name": "Whitfoot"
+ },
  {
-  "customer": null, 
-  "email_id": "SesseljaPetursdottir@example.com", 
-  "first_name": "Sesselja", 
-  "last_name": "P\u00e9tursd\u00f3ttir", 
-  "supplier": "Reliable Investments"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "Reliable Investments"}],
+  "email_id": "SesseljaPetursdottir@example.com",
+  "first_name": "Sesselja",
+  "last_name": "P\u00e9tursd\u00f3ttir"
+ },
  {
-  "customer": null, 
-  "email_id": "HajdarPignar@example.com", 
-  "first_name": "Hajdar", 
-  "last_name": "Pignar", 
-  "supplier": "Nan Duskin"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "Nan Duskin"}],
+  "email_id": "HajdarPignar@example.com",
+  "first_name": "Hajdar",
+  "last_name": "Pignar"
+ },
  {
-  "customer": null, 
-  "email_id": "GustavaLorenzo@example.com", 
-  "first_name": "Gustava", 
-  "last_name": "Lorenzo", 
-  "supplier": "Rainbow Records"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "Rainbow Records"}],
+  "email_id": "GustavaLorenzo@example.com",
+  "first_name": "Gustava",
+  "last_name": "Lorenzo"
+ },
  {
-  "customer": null, 
-  "email_id": "BethanyWood@example.com", 
-  "first_name": "Bethany", 
-  "last_name": "Wood", 
-  "supplier": "New World Realty"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "New World Realty"}],
+  "email_id": "BethanyWood@example.com",
+  "first_name": "Bethany",
+  "last_name": "Wood"
+ },
  {
-  "customer": null, 
-  "email_id": "GlorianaBrownlock@example.com", 
-  "first_name": "Gloriana", 
-  "last_name": "Brownlock", 
-  "supplier": "Asiatic Solutions"
- }, 
+  "links": [{"link_doctype": "Supplier", "link_name": "Asiatic Solutions"}],
+  "email_id": "GlorianaBrownlock@example.com",
+  "first_name": "Gloriana",
+  "last_name": "Brownlock"
+ },
  {
-  "customer": null, 
-  "email_id": "JensonFraser@gustr.com", 
-  "first_name": "Jenson", 
-  "last_name": "Fraser", 
-  "supplier": "Eagle Hardware"
+  "links": [{"link_doctype": "Supplier", "link_name": "Eagle Hardware"}],
+  "email_id": "JensonFraser@gustr.com",
+  "first_name": "Jenson",
+  "last_name": "Fraser"
  }
 ]
\ No newline at end of file
diff --git a/erpnext/demo/setup/setup_data.py b/erpnext/demo/setup/setup_data.py
index 902bbab..4c1d443 100644
--- a/erpnext/demo/setup/setup_data.py
+++ b/erpnext/demo/setup/setup_data.py
@@ -32,7 +32,7 @@
 	import_json('Contact')
 	import_json('Lead')
 	setup_currency_exchange()
-	setup_mode_of_payment()
+	#setup_mode_of_payment()
 	setup_account_to_expense_type()
 	setup_budget()
 	setup_pos_profile()
@@ -46,9 +46,8 @@
 
 	if not frappe.get_all('Company', limit=1):
 		setup_complete({
-			"first_name": "Test",
-			"last_name": "User",
-			"email": "demo@erpnext.com",
+			"full_name": "Test User",
+			"email": "test_demo@erpnext.com",
 			"company_tagline": 'Awesome Products and Services',
 			"password": "demo",
 			"fy_start_date": "2015-01-01",
@@ -163,11 +162,10 @@
 	ss.append('deductions', {
 		'salary_component': 'Income Tax',
 		"abbr":'IT',
-		'condition': 'base > 1000',
-		'amount': random.random() * 1000,
+		'condition': 'base > 10000',
+		'formula': 'base*.1',
 		"idx": 1
 	})
-
 	ss.insert()
 
 	return ss
diff --git a/erpnext/demo/user/hr.py b/erpnext/demo/user/hr.py
index cfe3119..2536602 100644
--- a/erpnext/demo/user/hr.py
+++ b/erpnext/demo/user/hr.py
@@ -6,6 +6,7 @@
 from erpnext.projects.doctype.timesheet.test_timesheet import make_timesheet
 from erpnext.projects.doctype.timesheet.timesheet import make_salary_slip, make_sales_invoice
 from frappe.utils.make_random import get_random
+from erpnext.hr.doctype.expense_claim.test_expense_claim import get_payable_account
 from erpnext.hr.doctype.expense_claim.expense_claim import get_expense_approver, make_bank_entry
 from erpnext.hr.doctype.leave_application.leave_application import (get_leave_balance_on,
 	OverlapError, AttendanceAlreadyMarkedError)
@@ -50,6 +51,7 @@
 		expense_claim.extend('expenses', get_expenses())
 		expense_claim.employee = get_random("Employee")
 		expense_claim.company = frappe.flags.company
+		expense_claim.payable_account = get_payable_account(expense_claim.company)
 		expense_claim.posting_date = frappe.flags.current_date
 		expense_claim.exp_approver = filter((lambda x: x[0] != 'Administrator'), get_expense_approver(None, '', None, 0, 20, None))[0][0]
 		expense_claim.insert()
@@ -118,6 +120,7 @@
 	employees = get_timesheet_based_salary_slip_employee()
 	for e in employees:
 		ts = make_timesheet(e.employee, simulate = True, billable = 1, activity_type=get_random("Activity Type"))
+		frappe.db.commit()
 
 		rand = random.random()
 		if rand >= 0.3:
@@ -137,7 +140,8 @@
 	sales_invoice = make_sales_invoice(name)
 	sales_invoice.customer = get_random("Customer")
 	sales_invoice.append('items', {
-		'item_code': get_random("Item", {"has_variants": 0, "is_stock_item": 0, "is_fixed_asset": 0}),
+		'item_code': get_random("Item", {"has_variants": 0, "is_stock_item": 0,
+			"is_fixed_asset": 0}),
 		'qty': 1,
 		'rate': 1000
 	})
@@ -176,18 +180,18 @@
 				frappe.db.rollback()
 
 def mark_attendance():
-	att_date = frappe.flags.current_date
+	attendance_date = frappe.flags.current_date
 	for employee in frappe.get_all('Employee', fields=['name'], filters = {'status': 'Active'}):
 
-		if not frappe.db.get_value("Attendance", {"employee": employee.name, "att_date": att_date}):
+		if not frappe.db.get_value("Attendance", {"employee": employee.name, "attendance_date": attendance_date}):
 			attendance = frappe.get_doc({
 				"doctype": "Attendance",
 				"employee": employee.name,
-				"att_date": att_date
+				"attendance_date": attendance_date
 			})
 			leave = frappe.db.sql("""select name from `tabLeave Application`
 				where employee = %s and %s between from_date and to_date and status = 'Approved'
-				and docstatus = 1""", (employee.name, att_date))
+				and docstatus = 1""", (employee.name, attendance_date))
 
 			if leave:
 				attendance.status = "Absent"
diff --git a/erpnext/docs/assets/img/accounts/offline-records.png b/erpnext/docs/assets/img/accounts/offline-records.png
index 78bb730..a73f696 100644
--- a/erpnext/docs/assets/img/accounts/offline-records.png
+++ b/erpnext/docs/assets/img/accounts/offline-records.png
Binary files differ
diff --git a/erpnext/docs/assets/img/accounts/pos-customer.png b/erpnext/docs/assets/img/accounts/pos-customer.png
index ffb058a..c3cbb8a 100644
--- a/erpnext/docs/assets/img/accounts/pos-customer.png
+++ b/erpnext/docs/assets/img/accounts/pos-customer.png
Binary files differ
diff --git a/erpnext/docs/assets/img/accounts/pos-item.png b/erpnext/docs/assets/img/accounts/pos-item.png
index 321e8dc..14bd371 100644
--- a/erpnext/docs/assets/img/accounts/pos-item.png
+++ b/erpnext/docs/assets/img/accounts/pos-item.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/employee-loan-application.png b/erpnext/docs/assets/img/human-resources/employee-loan-application.png
new file mode 100644
index 0000000..317de4f
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/employee-loan-application.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/employee-loan.png b/erpnext/docs/assets/img/human-resources/employee-loan.png
new file mode 100644
index 0000000..19f3181
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/employee-loan.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/employee_account.png b/erpnext/docs/assets/img/human-resources/employee_account.png
new file mode 100644
index 0000000..a9a6066
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/employee_account.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/expense-claim-3.1.png b/erpnext/docs/assets/img/human-resources/expense-claim-3.1.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/expense-claim-3.1.png
rename to erpnext/docs/assets/img/human-resources/expense-claim-3.1.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/expense-claim-3.2.png b/erpnext/docs/assets/img/human-resources/expense-claim-3.2.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/expense-claim-3.2.png
rename to erpnext/docs/assets/img/human-resources/expense-claim-3.2.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/expense_claim.png b/erpnext/docs/assets/img/human-resources/expense_claim.png
index ddca100..9647d3d 100644
--- a/erpnext/docs/assets/img/human-resources/expense_claim.png
+++ b/erpnext/docs/assets/img/human-resources/expense_claim.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/expense_claim_book.png b/erpnext/docs/assets/img/human-resources/expense_claim_book.png
new file mode 100644
index 0000000..4b81604
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/expense_claim_book.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/loan-repayment-salary-slip.png b/erpnext/docs/assets/img/human-resources/loan-repayment-salary-slip.png
new file mode 100644
index 0000000..4e5f340
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/loan-repayment-salary-slip.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/loan-type.png b/erpnext/docs/assets/img/human-resources/loan-type.png
new file mode 100644
index 0000000..9146b89
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/loan-type.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/payment.png b/erpnext/docs/assets/img/human-resources/payment.png
new file mode 100644
index 0000000..f6b6e5d
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/payment.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/payment_entry.png b/erpnext/docs/assets/img/human-resources/payment_entry.png
new file mode 100644
index 0000000..a499ccf
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/payment_entry.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/repayment-info.png b/erpnext/docs/assets/img/human-resources/repayment-info.png
new file mode 100644
index 0000000..5b8bdf7
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/repayment-info.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/repayment-schedule.png b/erpnext/docs/assets/img/human-resources/repayment-schedule.png
new file mode 100644
index 0000000..f2ddf02
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/repayment-schedule.png
Binary files differ
diff --git a/erpnext/docs/assets/img/human-resources/unclaimed_expense_claims.png b/erpnext/docs/assets/img/human-resources/unclaimed_expense_claims.png
new file mode 100644
index 0000000..1581bb7
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/unclaimed_expense_claims.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/vehicle-1.1.png b/erpnext/docs/assets/img/human-resources/vehicle-1.1.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/vehicle-1.1.png
rename to erpnext/docs/assets/img/human-resources/vehicle-1.1.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/vehicle-1.2.png b/erpnext/docs/assets/img/human-resources/vehicle-1.2.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/vehicle-1.2.png
rename to erpnext/docs/assets/img/human-resources/vehicle-1.2.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/vehicle-1.3.png b/erpnext/docs/assets/img/human-resources/vehicle-1.3.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/vehicle-1.3.png
rename to erpnext/docs/assets/img/human-resources/vehicle-1.3.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/vehicle-expenses.png b/erpnext/docs/assets/img/human-resources/vehicle-expenses.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/vehicle-expenses.png
rename to erpnext/docs/assets/img/human-resources/vehicle-expenses.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/vehicle-log-2.1.png b/erpnext/docs/assets/img/human-resources/vehicle-log-2.1.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/vehicle-log-2.1.png
rename to erpnext/docs/assets/img/human-resources/vehicle-log-2.1.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/vehicle-log-2.2.png b/erpnext/docs/assets/img/human-resources/vehicle-log-2.2.png
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/vehicle-log-2.2.png
rename to erpnext/docs/assets/img/human-resources/vehicle-log-2.2.png
Binary files differ
diff --git a/erpnext/docs/assets/img/fleet-management/__init__.py b/erpnext/docs/assets/img/setup/feedback/__init__.py
similarity index 100%
rename from erpnext/docs/assets/img/fleet-management/__init__.py
rename to erpnext/docs/assets/img/setup/feedback/__init__.py
diff --git a/erpnext/docs/assets/img/setup/feedback/feedback-trigger-condition.png b/erpnext/docs/assets/img/setup/feedback/feedback-trigger-condition.png
new file mode 100644
index 0000000..5fdae3c
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/feedback-trigger-condition.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/feedback-trigger-subject.png b/erpnext/docs/assets/img/setup/feedback/feedback-trigger-subject.png
new file mode 100644
index 0000000..22c3f4c
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/feedback-trigger-subject.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/manual-feedback-request-option.png b/erpnext/docs/assets/img/setup/feedback/manual-feedback-request-option.png
new file mode 100644
index 0000000..e9f6487
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/manual-feedback-request-option.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/manual-feedback-request.png b/erpnext/docs/assets/img/setup/feedback/manual-feedback-request.png
new file mode 100644
index 0000000..cf9ecc0
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/manual-feedback-request.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/resend-feedback-request-button.png b/erpnext/docs/assets/img/setup/feedback/resend-feedback-request-button.png
new file mode 100644
index 0000000..9a4b19d
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/resend-feedback-request-button.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/resend-feedback-request-custom-message.png b/erpnext/docs/assets/img/setup/feedback/resend-feedback-request-custom-message.png
new file mode 100644
index 0000000..a68f520
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/resend-feedback-request-custom-message.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/setting-up-feedback-trigger-message.png b/erpnext/docs/assets/img/setup/feedback/setting-up-feedback-trigger-message.png
new file mode 100644
index 0000000..6bc802e
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/setting-up-feedback-trigger-message.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/setting-up-feedback-trigger.png b/erpnext/docs/assets/img/setup/feedback/setting-up-feedback-trigger.png
new file mode 100644
index 0000000..dec0336
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/setting-up-feedback-trigger.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/sidebar-ratings.png b/erpnext/docs/assets/img/setup/feedback/sidebar-ratings.png
new file mode 100644
index 0000000..72f4377
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/sidebar-ratings.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/submit-feedback.png b/erpnext/docs/assets/img/setup/feedback/submit-feedback.png
new file mode 100644
index 0000000..a1ccf0d
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/submit-feedback.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/feedback/timeline-rating-and-feedback.png b/erpnext/docs/assets/img/setup/feedback/timeline-rating-and-feedback.png
new file mode 100644
index 0000000..0f691d3
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/feedback/timeline-rating-and-feedback.png
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/calender-email-digest.png b/erpnext/docs/assets/old_images/erpnext/calender-email-digest.png
new file mode 100644
index 0000000..1d95ef4
--- /dev/null
+++ b/erpnext/docs/assets/old_images/erpnext/calender-email-digest.png
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/calender-event-lead.png b/erpnext/docs/assets/old_images/erpnext/calender-event-lead.png
new file mode 100644
index 0000000..dc6eb8b
--- /dev/null
+++ b/erpnext/docs/assets/old_images/erpnext/calender-event-lead.png
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/calender-event-manually.png b/erpnext/docs/assets/old_images/erpnext/calender-event-manually.png
new file mode 100644
index 0000000..84cb343
--- /dev/null
+++ b/erpnext/docs/assets/old_images/erpnext/calender-event-manually.png
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/calender-event-notification.png b/erpnext/docs/assets/old_images/erpnext/calender-event-notification.png
new file mode 100644
index 0000000..fa1e4ff
--- /dev/null
+++ b/erpnext/docs/assets/old_images/erpnext/calender-event-notification.png
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/calender-event-permission.png b/erpnext/docs/assets/old_images/erpnext/calender-event-permission.png
new file mode 100644
index 0000000..783f968
--- /dev/null
+++ b/erpnext/docs/assets/old_images/erpnext/calender-event-permission.png
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/calender-event-recurring.png b/erpnext/docs/assets/old_images/erpnext/calender-event-recurring.png
new file mode 100644
index 0000000..6147cf5
--- /dev/null
+++ b/erpnext/docs/assets/old_images/erpnext/calender-event-recurring.png
Binary files differ
diff --git a/erpnext/docs/install.md b/erpnext/docs/install.md
index 26ad128..c6a87cb 100644
--- a/erpnext/docs/install.md
+++ b/erpnext/docs/install.md
@@ -8,7 +8,7 @@
 
 After you have installed Frappe Bench, go to you bench folder, which is     `frappe.bench` by default and setup **erpnext**.
 
-    bench get-app erpnext {{ source_link }}
+    bench get-app erpnext https://github.com/frappe/erpnext
 
 Then create a new site to install the app.
 
@@ -27,4 +27,4 @@
 Fire up your browser and go to http://localhost:8000 and you should see the login screen. Login as **Administrator** and **admin** (or the password you set at the time of `new-site`) and you are set.
 
 <!-- jinja -->
-<!-- autodoc -->
\ No newline at end of file
+<!-- autodoc -->
diff --git a/erpnext/docs/user/manual/en/CRM/customer.md b/erpnext/docs/user/manual/en/CRM/customer.md
index 55755e6..1e4e0b5 100644
--- a/erpnext/docs/user/manual/en/CRM/customer.md
+++ b/erpnext/docs/user/manual/en/CRM/customer.md
@@ -13,7 +13,7 @@
 
 or upload it via the Data Import Tool.
 
-A Customer can avail the features (operations) in the selling process. The general flow can be summarazed as:
+A Customer can avail the features (operations) in the selling process. The general flow can be summarised as:
 
 <img class="screenshot" alt="Customer" src="{{docs_base_url}}/assets/img/crm/customer-to selling-flowchart.jpeg">
 
diff --git a/erpnext/docs/user/manual/en/CRM/newsletter.md b/erpnext/docs/user/manual/en/CRM/newsletter.md
index c4d9c9d..9749e17 100644
--- a/erpnext/docs/user/manual/en/CRM/newsletter.md
+++ b/erpnext/docs/user/manual/en/CRM/newsletter.md
@@ -9,7 +9,7 @@
 Select the list that you want to send the email to. Fill in your content in
 the message box, and send your newsletter.If you wish to test your email, to
 see how it looks to the recepient, you can use the test function. Save the
-document before testing. A test email will be sent to your email id. You can
+document before testing. A test email will be sent to your Email Address. You can
 send the email to all the intended receipients by clicking on the send button.
 
 <img class="screenshot" alt="Newsletter - New" src="{{docs_base_url}}/assets/img/crm/newsletter-new.png">
diff --git a/erpnext/docs/user/manual/en/accounts/payment-request.md b/erpnext/docs/user/manual/en/accounts/payment-request.md
index 1b71f2f..67c812d 100644
--- a/erpnext/docs/user/manual/en/accounts/payment-request.md
+++ b/erpnext/docs/user/manual/en/accounts/payment-request.md
@@ -18,7 +18,7 @@
 ---
 
 ##### Notify Customer
-You can notify customer from Payment Request with print format. If customer contact email is mentioned, it will automatically fetch email. If not so you can set email id on Payment Request. 
+You can notify customer from Payment Request with print format. If customer contact email is mentioned, it will automatically fetch email. If not so you can set Email Address on Payment Request. 
 
 <img class="screenshot" alt="Payment Request" src="{{docs_base_url}}/assets/img/accounts/pr-details-2.png">
 
diff --git a/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md b/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md
index 4d25639..770e71a 100644
--- a/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md
+++ b/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md
@@ -28,6 +28,6 @@
 
 In a situation where recurring invoice is not created successfully, user with System Manager role is notified about it via email. Also the document on which recurring event failed, "Is Recurring" field is unchecked for it. This means system doesn't try creating recurring invoice for that document again.
 	
-Failure in creation of recurring invoice could be due to multiple reasons like wrong email id mentioned in the Email Notification field in Recurring section etc.
+Failure in creation of recurring invoice could be due to multiple reasons like wrong Email Address mentioned in the Email Notification field in Recurring section etc.
 
-On receipt of notification, if cause of failure is fixed (like correcting email id) within 24 hours, then recurring invoice will be generated automatically. If issue is not fixed within the said time, then document should be created for that month/year manually.
\ No newline at end of file
+On receipt of notification, if cause of failure is fixed (like correcting Email Address) within 24 hours, then recurring invoice will be generated automatically. If issue is not fixed within the said time, then document should be created for that month/year manually.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/sales-invoice.md b/erpnext/docs/user/manual/en/accounts/sales-invoice.md
index e68d2c7..aa7f3a6 100644
--- a/erpnext/docs/user/manual/en/accounts/sales-invoice.md
+++ b/erpnext/docs/user/manual/en/accounts/sales-invoice.md
@@ -51,7 +51,7 @@
 Invoice” box. Here you can fill in the details of how frequently you want to
 bill this Invoice and the period for which the contract is valid.
 
-ERPNext will automatically create new Invoices and mail it to the email ids
+ERPNext will automatically create new Invoices and mail it to the Email Addresses
 you set.
 
 #### POS Invoices
diff --git a/erpnext/docs/user/manual/en/buying/request-for-quotation.md b/erpnext/docs/user/manual/en/buying/request-for-quotation.md
index c27895f..07b0d3f 100644
--- a/erpnext/docs/user/manual/en/buying/request-for-quotation.md
+++ b/erpnext/docs/user/manual/en/buying/request-for-quotation.md
@@ -24,7 +24,7 @@
 
 #### For Supplier
 
-__Step 1:__ User has to create contact or enter email id against the supplier on request for quotation.
+__Step 1:__ User has to create contact or enter Email Address against the supplier on request for quotation.
 
 ![Request For Quotation]({{docs_base_url}}/assets/img/buying/set-email-id.png)
 
diff --git a/erpnext/docs/user/manual/en/customer-portal/portal-login.md b/erpnext/docs/user/manual/en/customer-portal/portal-login.md
index 4a3b60c..e2cdbdb 100644
--- a/erpnext/docs/user/manual/en/customer-portal/portal-login.md
+++ b/erpnext/docs/user/manual/en/customer-portal/portal-login.md
@@ -1,4 +1,4 @@
-To login into the customer account, the customer has to use his email id and
+To login into the customer account, the customer has to use his Email Address and
 the password sent by ERPNext; generated through the sign-up process.
 
 ![Login]({{docs_base_url}}/assets/old_images/erpnext/customer-portal-login.png)
diff --git a/erpnext/docs/user/manual/en/customer-portal/sign-up.md b/erpnext/docs/user/manual/en/customer-portal/sign-up.md
index 01929ec..43c2f08 100644
--- a/erpnext/docs/user/manual/en/customer-portal/sign-up.md
+++ b/erpnext/docs/user/manual/en/customer-portal/sign-up.md
@@ -16,7 +16,7 @@
 
 ![Sign Up]({{docs_base_url}}/assets/old_images/erpnext/customer-portal-sign-up-3.png)
 
-After the sign up process, a mail will be sent to the customers email id with
+After the sign up process, a mail will be sent to the customers Email Address with
 the password details.
 
 {next}
diff --git a/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md b/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md
new file mode 100644
index 0000000..b76a226
--- /dev/null
+++ b/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md
@@ -0,0 +1,56 @@
+# Employee Loan Management
+This module enables companies which provides employee loans to define and manage employee loans.
+Employees can request loans, which are then reviewed and approved. For the approved loans, 
+repayment schedule for the entire loan cycle can be generated and automatic deduction from salary can also be set up. 
+
+### Loan Type
+To create a new Loan Type go to:
+
+> Human Resources > Employee Loan Management > Loan Type > New Loan Type
+
+Configure Loan limit and Rate of interest.
+
+<img class="screenshot" alt="Loan Type" src="{{docs_base_url}}/assets/img/human-resources/loan-type.png">
+
+### Employee Loan Application
+
+Employee can apply for loan by going to:
+
+> Human Resources > Employee Loan Management > Employee Loan Application > New Employee Loan Application
+
+<img class="screenshot" alt="Employee Loan Application" src="{{docs_base_url}}/assets/img/human-resources/employee-loan-application.png">
+
+#### In the Employee Loan Application,
+
+  * Enter Employee details and Loan details
+  * Select the repayment method, and based on your selection enter Repayment Period in Months or repayment Amount
+  
+On save, Employee can see Repayment Information and make changes if required before submitting.
+
+<img class="screenshot" alt="Employee Loan Application" src="{{docs_base_url}}/assets/img/human-resources/repayment-info.png">
+
+### Employee Loan
+
+Once the Loan is approved, Manager can create Employee Loan record for the Employee.
+
+> Human Resources > Employee Loan Management > Employee Loan > New Employee Loan
+
+<img class="screenshot" alt="Employee Loan Application" src="{{docs_base_url}}/assets/img/human-resources/employee-loan.png">
+
+#### In the Employee Loan,
+
+ * Enter Employee and Loan Application
+ * Check "Repay from Salary" if the loan repayment will be deducted from the salary
+ * Enter Disbursement Date and Account Info
+ * As soon as you hit save, the repayment schedule is generated.
+ 
+<img class="screenshot" alt="repayment Schedule" src="{{docs_base_url}}/assets/img/human-resources/repayment-schedule.png">
+
+#### Loan repayment deduction from Salary
+
+To auto deduct the Loan repayment from Salary, check "Repay from Salary" in Employee Loan. It will appear as Loan repayment in Salary Slip.
+
+<img class="screenshot" alt="Salary Slip" src="{{docs_base_url}}/assets/img/human-resources/loan-repayment-salary-slip.png">
+
+
+ 
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/expense-claim.md b/erpnext/docs/user/manual/en/human-resources/expense-claim.md
index da3b2ee..1d4996d 100644
--- a/erpnext/docs/user/manual/en/human-resources/expense-claim.md
+++ b/erpnext/docs/user/manual/en/human-resources/expense-claim.md
@@ -9,6 +9,10 @@
 Set the Employee ID, date and the list of expenses that are to be claimed and
 “Submit” the record.
 
+### Set Account for Employee
+Set employee's expense account on the employee form, system books an expense amount of an employee under this account.
+<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/employee_account.png">
+
 ### Approving Expenses
 
 Approver for the Expense Claim is selected by an Employee himself. Users to whom `Expense Approver` role is assigned will shown in the Expense Claim Approver field.
@@ -18,11 +22,25 @@
 Expense Claim Approver can update the “Sanctioned Amounts” against Claimed Amount of an Employee. If submitting, Approval Status should be submitted to Approved or Rejected. If Approved, then Expense Claim gets submitted. If rejected, then Expen
 Comments can be added in the Comments section explaining why the claim was approved or rejected.
 
-### Booking the Expense and Reimbursement
+### Booking the Expense
 
-The approved Expense Claim must then be converted into a Journal Entry and a
-payment must be made. Note: This amount should not be clubbed with Salary
-because the amount will then be taxable to the Employee.
+On submission of Expense Claim, system books an expense against the expense account and the employee account
+<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/expense_claim_book.png">
+
+User can view unpaid expense claim using report "Unclaimed Expense Claims"
+<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/unclaimed_expense_claims.png">
+
+### Payment for Expense Claim
+
+To make payment against the expense claim, user has to click on Make > Bank Entry
+#### Expense Claim
+<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/payment.png">
+
+#### Payment Entry
+<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/payment_entry.png">
+
+
+Note: This amount should not be clubbed with Salary because the amount will then be taxable to the Employee.
 
 ### Linking with Task & Project
 
diff --git a/erpnext/docs/user/manual/en/human-resources/fleet-management.md b/erpnext/docs/user/manual/en/human-resources/fleet-management.md
new file mode 100644
index 0000000..e55caa5
--- /dev/null
+++ b/erpnext/docs/user/manual/en/human-resources/fleet-management.md
@@ -0,0 +1,64 @@
+Fleet Management section of Human Resources helps your Organization manage their fleet of vehicles and track their expenses.
+
+To use Fleet Management in ERPNext,
+
+  1. Set Up a Vehicle.
+  2. Enter Vehicle Logs regularly.
+  3. Make Expense Claims for Vehicle Expenses.
+  4. View Reports for Vehicle Expenses.
+
+### Vehicle Set Up
+
+The Vehicle Set Up allows you to define the different types of Vehicles in your Organization.It acts as the Vehicle Master for Fleet Management. 
+
+To create a new Vehicle go to:
+
+Human Resources > Fleet Management > Vehicle
+
+* Enter License Plate, Make, Model, Odometer Value, Fuel Type and Fuel UOM for a quick entry.
+
+	<img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/human-resources/vehicle-1.1.png">
+
+* Enter details like Insurance, Chassis, Vehicle Value, Location and Employee.
+
+	<img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/human-resources/vehicle-1.2.png">
+
+* Enter Vehicle attributes like color, wheels, doors and last carbon check 
+
+	<img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/human-resources/vehicle-1.3.png">
+
+### Vehicle Log
+
+Vehicle Log is used to enter Odometer readings, Fuel Expenses and Service Expense details.
+
+To create a new Vehicle Log go to:
+
+Human Resources > Fleet Management > Vehicle Log
+
+* Enter License Plate, Employee, Date, Odometer reading for a quick entry.
+
+	<img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/vehicle-log-2.1.png">
+
+* Enter Refueling details, Service details if applicable.
+
+	<img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/vehicle-log-2.2.png">
+
+### Make Expense Claim
+
+* Click on Make Expense Claim button. This button appears only in case of Submitted Vehicle Logs.
+
+	<img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/expense-claim-3.1.png">
+
+When you click on 'Make Expense Claim',
+
+  1. The date,employee,expense total are copied over to the created Expense Claim.
+  2. The sum of Fuel Expenses and Service Expenses is copied over to Expense Claim Amount.
+  3. Employee can submit the Expense Claim for further processing.
+
+	<img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/expense-claim-3.2.png">
+
+### Vehicle Expenses Report
+
+* To track and monitor Vehicle Expenses you can use the Vehicle Expenses report.This report gives a one stop view of all your vehicle expenses month wise.
+
+	<img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/vehicle-expenses.png">
diff --git a/erpnext/docs/user/manual/en/human-resources/index.txt b/erpnext/docs/user/manual/en/human-resources/index.txt
index 5615790..673efdb 100644
--- a/erpnext/docs/user/manual/en/human-resources/index.txt
+++ b/erpnext/docs/user/manual/en/human-resources/index.txt
@@ -14,4 +14,6 @@
 holiday-list
 human-resource-setup
 daily-work-summary
+fleet-management
+employee-loan-management
 articles
diff --git a/erpnext/docs/user/manual/en/human-resources/job-applicant.md b/erpnext/docs/user/manual/en/human-resources/job-applicant.md
index 75e6a85..767780f 100644
--- a/erpnext/docs/user/manual/en/human-resources/job-applicant.md
+++ b/erpnext/docs/user/manual/en/human-resources/job-applicant.md
@@ -16,7 +16,7 @@
 
 > Setup > Email Account > New 
 
-* Enter the email id and the password, and select 'Enable Incoming'
+* Enter the Email Address and the password, and select 'Enable Incoming'
 
 * In 'Append To' select 'Job Applicant'
 
diff --git a/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md b/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md
index 6d58e2c..2d12ff4 100644
--- a/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md
+++ b/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md
@@ -13,7 +13,7 @@
 <img class="screenshot" alt="Setup Item Master" src="{{docs_base_url}}/assets/img/selling/setup-drop-ship-on-item-master.png">
 
 #### Setup on Sales Order
-If Drop Shipping has set on Item master, it will automatically set **Supplier delivers to Customer** and **Supplier** on Salse Order Item.
+If Drop Shipping has set on Item master, it will automatically set **Supplier delivers to Customer** and **Supplier** on Sales Order Item.
 
 You can setup Drop Shipping, on Sales Order Item. Under **Drop Ship** section, set **Supplier delivers to Customer** and select **Supplier** agaist which Purchase Order will get created.
 
diff --git a/erpnext/docs/user/manual/en/selling/sales-order.md b/erpnext/docs/user/manual/en/selling/sales-order.md
index 32e58a5..bcd9c93 100644
--- a/erpnext/docs/user/manual/en/selling/sales-order.md
+++ b/erpnext/docs/user/manual/en/selling/sales-order.md
@@ -80,7 +80,7 @@
 
 On updating the Sales Order, a Recurring ID will be generated which will be same for all recurring orders generated from this particular Sales Order.
 
-ERPNext will automatically create new Order and mail a notification to the email IDs you set in the 'Notification Email Address'field.
+ERPNext will automatically create new Order and mail a notification to the Email Addresses you set in the 'Notification Email Address'field.
 
 <img class="screenshot" alt="Reccuring Sales Order" src="{{docs_base_url}}/assets/img/selling/recurring-sales-order.png">
 
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md b/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md
index 79cefe1..643d243 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md
@@ -1,6 +1,6 @@
 #Rename User
 
-Renaming functionality allows you to edit id of specific record. User is saved with person's email id. Only User with System Manager's role will be able to rename User IDs.
+Renaming functionality allows you to edit id of specific record. User is saved with person's Email Address. Only User with System Manager's role will be able to rename User IDs.
 
 Following are the steps to rename user id.
 
@@ -18,7 +18,7 @@
 
 #### Step 3: Update
 
-Enter valid email id and click on Rename.
+Enter valid Email Address and click on Rename.
 
 <img alt="Update" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-user-2.png"> 
 
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-account.md b/erpnext/docs/user/manual/en/setting-up/email/email-account.md
index 4392bf4..0fafa53 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-account.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-account.md
@@ -28,7 +28,7 @@
 
 ### How ERPNext handles replies
 
-In ERPNext when you send an email to a contact like a customer, the sender will be the user who sent the email. In the **Reply-To** property, the email id will be of the default incoming account (like `replies@yourcompany.com`). ERPNext will automatically extract these emails from the incoming account and tag it to the relvant communication
+In ERPNext when you send an email to a contact like a customer, the sender will be the user who sent the email. In the **Reply-To** property, the Email Address will be of the default incoming account (like `replies@yourcompany.com`). ERPNext will automatically extract these emails from the incoming account and tag it to the relvant communication
 
 ### Notification for unreplied messages
 
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md b/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md
index 3fbb4e4..9ec3073 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md
@@ -25,7 +25,7 @@
 	3. Value Change: When a particular value in the selected type changes.
 	4. Days Before / Days After: Trigger this alert a few days before or after the **Reference Date.** To set the days, set **Days Before or After**. This can be useful in reminding you of upcoming due dates or reminding you to follow up on certain leads of quotations.
 3. Set additional conditions if you want.
-4. Set the recipients of this alert. The recipient could either be a field of the document or a list of fixed email ids.
+4. Set the recipients of this alert. The recipient could either be a field of the document or a list of fixed Email Addresses.
 5. Compose the message
 
 
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-reports.md b/erpnext/docs/user/manual/en/setting-up/email/email-reports.md
index 1730143..a27a2dc 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-reports.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-reports.md
@@ -12,7 +12,7 @@
 
 #### Step 1
 
-Select the Report, the user for which you want to create this report (permissions will apply for this user), the email ids where you want this report emailed and the frequency of the report.
+Select the Report, the user for which you want to create this report (permissions will apply for this user), the Email Addresses where you want this report emailed and the frequency of the report.
 
 <img class="screenshot" alt="Make Auto Email Report" src="{{docs_base_url}}/assets/img/setup/email/auto-email-1.png">
 
diff --git a/erpnext/docs/assets/img/fleet-management/__init__.py b/erpnext/docs/user/manual/en/setting-up/feedback/__init__.py
similarity index 100%
copy from erpnext/docs/assets/img/fleet-management/__init__.py
copy to erpnext/docs/user/manual/en/setting-up/feedback/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/index.md b/erpnext/docs/user/manual/en/setting-up/feedback/index.md
new file mode 100644
index 0000000..bb2efaf
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/index.md
@@ -0,0 +1,7 @@
+# Feedback
+
+Customer/User Feedback for a Product or Services can be useful for business as it can be used to make decisions for improvements either in products or services.
+
+### Topics
+
+{index}
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/index.txt b/erpnext/docs/user/manual/en/setting-up/feedback/index.txt
new file mode 100644
index 0000000..08160cc
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/index.txt
@@ -0,0 +1,4 @@
+setting-up-feedback
+submit-feedback
+resend-feedback-request
+manual-feedback-request
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/manual-feedback-request.md b/erpnext/docs/user/manual/en/setting-up/feedback/manual-feedback-request.md
new file mode 100644
index 0000000..4afaee1
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/manual-feedback-request.md
@@ -0,0 +1,17 @@
+# Manual Feedback Request
+
+We can also send the feedback request to Customer/User without configuring the
+Feedback Trigger.
+
+To request a feedback manually go to respective document e.g. Sales Order, Issue etc.
+and click on Ask a Feedback option in Menu.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/manual-feedback-request-option.png">
+
+Then, user can enter the feedback request details like email id, message and send the
+feedback request mail.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/manual-feedback-request.png">
+
+Note. If Feedback Trigger is already configured for the document then system will fetch
+Feedback Request details (email id, message)
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/resend-feedback-request.md b/erpnext/docs/user/manual/en/setting-up/feedback/resend-feedback-request.md
new file mode 100644
index 0000000..0dbb3b7
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/resend-feedback-request.md
@@ -0,0 +1,16 @@
+# Resend Feedback Request
+
+We can also Resend the Feedback Request to the Customer/User.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/timeline-rating-and-feedback.png">
+
+To resend the Feedback Request we will need to navigate the Communication by clicking the `Details` link on Timeline Feedback.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/resend-feedback-request-button.png">
+
+On Resend Button click a dialog with the Feedback Request message will appear user can either send the
+Feedback Request with same message or he/she can make the changes in the Feedback Request message.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/resend-feedback-request-custom-message.png">
+
+{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/setting-up-feedback.md b/erpnext/docs/user/manual/en/setting-up/feedback/setting-up-feedback.md
new file mode 100644
index 0000000..373d703
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/setting-up-feedback.md
@@ -0,0 +1,53 @@
+# Feedback Trigger
+
+You can set up the Feedback Trigger for various documents to get the Feedback from the user.
+
+For this, you will need to setup the Feedback Trigger,
+
+> Setup > Email > Feedback Trigger
+
+### Setting Up Feedback Trigger
+
+To Setup an Feedback:
+
+1. Select which Document Type you want to send feedback request mail.
+2. Select the Email Field, This field will be used to get the recipients email id.
+3. Set the Subject for feedback request mail.
+4. Set the conditions, if all the conditions are met only then the feedback request mail will be sent.
+5. Compose the message.
+
+### Setting a Subject
+You can retrieve the data for a particular field by using `doc.[field_name]`. To use it in your subject/message, you have to surround it with `{% raw %}{{ }}{% endraw %}`. These are called [Jinja](http://jinja.pocoo.org/) tags. So, for example, to get the name of a document, you use `{% raw %}{{ doc.name }}{% endraw %}`. The below example sends an feedback request whenever Issue is Closed with the Subject, "ISS-##### Issue is Resolved"
+
+<img class="screenshot" alt="Setting Subject" src="{{docs_base_url}}/assets/img/setup/feedback/feedback-trigger-subject.png">
+
+### Setting Conditions
+
+Feedback Trigger allows you to set conditions according to the field data in your documents. The feedback request email will be sent on document save only if the all conditions are true For example if you want to trigger the feedback request mail to a customer if an Issue is has been saved as "Closed" as it's status, you put `doc.status == "Closed"` in the conditions textbox. You can also set more complex conditions by combining them.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/feedback-trigger-condition.png">
+
+### Setting a Message
+
+You can use both Jinja Tags (`{% raw %}{{ doc.[field_name] }}{% endraw %}`) and HTML tags in the message textbox.
+
+	{% raw %}<h3>Your Support Ticket is Resolved</h3>
+
+	<p>Issue {{ doc.name }} Is resolved. Please check and confirm the same.</p>
+	<p> Your Feedback is important for us. Please give us your Feedback for {{ doc.name }}</p>
+	<p> Please visit the following url for feedback.</p>
+
+	{{ feedback_url }}
+	{% endraw %}
+
+---
+
+### Example
+
+1. Setting up Feedback Trigger
+    <img class="screenshot" alt="Defining Criteria" src="{{docs_base_url}}/assets/img/setup/feedback/setting-up-feedback-trigger.png">
+
+1. Setting the Recipients and Message
+    <img class="screenshot" alt="Set Message" src="{{docs_base_url}}/assets/img/setup/feedback/setting-up-feedback-trigger-message.png">
+
+{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/submit-feedback.md b/erpnext/docs/user/manual/en/setting-up/feedback/submit-feedback.md
new file mode 100644
index 0000000..9069f37
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/submit-feedback.md
@@ -0,0 +1,19 @@
+# Submit Feedback
+
+Once feedback request mail is sent the user/customer. He/She can visit the URL to submit the feedback
+as well as rating for the document.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/submit-feedback.png">
+
+Once Feedback is submitted the feedback details message and ratings will be recorded and will be shown on Document sidebar and timeline. Also once the Feedback is successfully submitted by the user the link shared to the user will be expired and can not be used to submit the Feedback again.
+
+On Document sidebar the latest feedback ratings will displayed.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/sidebar-ratings.png">
+
+Also, The Feedback details such as Feedback message and ratings will be shown in the Document's Timeline along
+with Comment, Email.
+
+<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/timeline-rating-and-feedback.png">
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md
index cde4648..8143f0b 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md
@@ -10,7 +10,7 @@
 
 #### Difference between a customer name and a contact name
 
-A customer name is the name of the organisation and a contact name is the name of the user who is operating the ERPNext system.
+A customer name is the name of the organisation and a contact name is the name of the person from that organisation.
 
 For Example: If American Power Mills is an organisation name and their founder Shiv Agarwal has installed ERPNext on his system. Then,
 
diff --git a/erpnext/docs/user/manual/en/stock/warehouse.md b/erpnext/docs/user/manual/en/stock/warehouse.md
index 172e469..74ee8cc 100644
--- a/erpnext/docs/user/manual/en/stock/warehouse.md
+++ b/erpnext/docs/user/manual/en/stock/warehouse.md
@@ -4,15 +4,27 @@
 cities, towns, and villages. They mostly have loading docks to load and unload
 goods from trucks.
 
+The terminology of 'Warehouse" in ERPNext is a bit broader though and maybe can be 
+regarded as "storage locations". For example you can create a sub-Warehouse which 
+practically is a shelf inside your actual location. 
+This can become quite a detailed Tree like >Warehouse >Room >Row >Shelf >Box
+
 To go to Warehouse, click on Stock and go to Warehouse under Setup.  You
 could also switch to 'Tree' View or simply type warehouse tree in the awsone bar.
 
 <img class="screenshot" alt="Warehouse" src="{{docs_base_url}}/assets/img/stock/warehouse.png">
 
 In ERPNext, every Warehouse must belong to a specific company, to maintain
-company wise stock balance. The Warehouses are saved with their respective
-company’s abbreviations. This facilitates in identifying which Warehouse
-belongs to which company, at a glance.
+company wise stock balance. In order to do so each Warehouse is linked with an 
+Account in the Chart of Accounts (by default of the the same name as the Warehouse 
+itself) which captures the monetary equivalent of the goods or materials stored 
+in that specific warehouse. If you have a more detailed Warehouse Tree as the one 
+described above most likely it's a good idea to link the sub-locations (>room >row >Shelf, ...)
+to the account of the actual Warehouse (the root Warehouse of that Tree) as most 
+scenarios do not require to account for value of stock items per Shelf or Box.
+
+Warehouses are saved with their respective company’s abbreviations. This facilitates 
+identifying which Warehouse belongs to which company, at a glance.
 
 You can include user restrictions for these Warehouses. In case you do not
 wish a particular user to operate on a particular Warehouse, you can refrain
diff --git a/erpnext/docs/user/manual/en/support/issue.md b/erpnext/docs/user/manual/en/support/issue.md
index 246af8d..29fb858 100644
--- a/erpnext/docs/user/manual/en/support/issue.md
+++ b/erpnext/docs/user/manual/en/support/issue.md
@@ -2,7 +2,7 @@
 from the “Contact” section of your website. (To fully integrate the Support
 Ticket to email, see the Email Settings section).
 
-> Tip: A dedicated support email id is a good way to integrate incoming
+> Tip: A dedicated support Email Address is a good way to integrate incoming
 queries via email. For example, you can send support queries to ERPNext at
 support@erpnext.com and it will automatically create a Issue in the
 Frappe system.
diff --git a/erpnext/docs/user/manual/en/using-erpnext/calendar.md b/erpnext/docs/user/manual/en/using-erpnext/calendar.md
index 1ad325b..5e0ae29 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/calendar.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/calendar.md
@@ -34,7 +34,7 @@
 
 ###Permission for Event
 
-You can set Event as Private or Public. Private Events will be visible only to you, and if any other user selected in the participants table. Instead of User, you can also assign permission for event based on Role.
+You can set Event as Private or Public. Private Events will be visible only to you, and you can also assign permission for event based on Role in the participants table.
 
 Public Event, like Birthday will be visible to all.
 
diff --git a/erpnext/docs/user/videos/learn/newsletter.md b/erpnext/docs/user/videos/learn/newsletter.md
index 9896309..695dfae 100644
--- a/erpnext/docs/user/videos/learn/newsletter.md
+++ b/erpnext/docs/user/videos/learn/newsletter.md
@@ -6,4 +6,4 @@
 
 A newsletter is a short written report that tells about the recent activities of an organization. It is generally sent to members of the organization, potential clients, customers or potential leads.
 
-This video walks you through managing Newsletter List, master containing email id's to whom Newsletter will be sent. You can compose Newsletter using rich text editor, and also in HTML editor.
+This video walks you through managing Newsletter List, master containing Email Address's to whom Newsletter will be sent. You can compose Newsletter using rich text editor, and also in HTML editor.
diff --git a/erpnext/fleet_management/report/__init__.py b/erpnext/fleet_management/report/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/fleet_management/report/__init__.py
+++ /dev/null
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 95f6c0b..14ea74b 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -48,7 +48,7 @@
 
 website_context = {
 	"favicon": 	"/assets/erpnext/images/favicon.png",
-	"splash_image": "/assets/erpnext/images/splash.png"
+	"splash_image": "/assets/erpnext/images/erp-icon.svg"
 }
 
 website_route_rules = [
@@ -107,17 +107,12 @@
 	{"title": _("Shipments"), "route": "/shipments", "reference_doctype": "Delivery Note", "role":"Customer"},
 	{"title": _("Issues"), "route": "/issues", "reference_doctype": "Issue", "role":"Customer"},
 	{"title": _("Addresses"), "route": "/addresses", "reference_doctype": "Address"},
-	{"title": _("Announcements"), "route": "/announcement", "reference_doctype": "Announcement"},
-	{"title": _("Courses"), "route": "/course", "reference_doctype": "Course", "role":"Student"},
-	{"title": _("Assessment Schedule"), "route": "/assessment", "reference_doctype": "Assessment", "role":"Student"},
 	{"title": _("Fees"), "route": "/fees", "reference_doctype": "Fees", "role":"Student"}
 ]
 
 default_roles = [
-	{'role': 'Customer', 'doctype':'Contact', 'email_field': 'email_id',
-		'filters': {'ifnull(customer, "")': ('!=', '')}},
-	{'role': 'Supplier', 'doctype':'Contact', 'email_field': 'email_id',
-		'filters': {'ifnull(supplier, "")': ('!=', '')}},
+	{'role': 'Customer', 'doctype':'Contact', 'email_field': 'email_id'},
+	{'role': 'Supplier', 'doctype':'Contact', 'email_field': 'email_id'},
 	{'role': 'Student', 'doctype':'Student', 'email_field': 'student_email_id'}
 ]
 
@@ -126,19 +121,7 @@
 	"Sales Invoice": "erpnext.controllers.website_list_for_contact.has_website_permission",
 	"Supplier Quotation": "erpnext.controllers.website_list_for_contact.has_website_permission",
 	"Delivery Note": "erpnext.controllers.website_list_for_contact.has_website_permission",
-	"Issue": "erpnext.support.doctype.issue.issue.has_website_permission",
-	"Address": "erpnext.utilities.doctype.address.address.has_website_permission",
-	"Discussion": "erpnext.schools.web_form.discussion.discussion.has_website_permission"
-}
-
-permission_query_conditions = {
-	"Contact": "erpnext.utilities.address_and_contact.get_permission_query_conditions_for_contact",
-	"Address": "erpnext.utilities.address_and_contact.get_permission_query_conditions_for_address"
-}
-
-has_permission = {
-	"Contact": "erpnext.utilities.address_and_contact.has_permission",
-	"Address": "erpnext.utilities.address_and_contact.has_permission"
+	"Issue": "erpnext.support.doctype.issue.issue.has_website_permission"
 }
 
 dump_report_map = "erpnext.startup.report_data_map.data_map"
@@ -155,23 +138,14 @@
 		"on_cancel": "erpnext.stock.doctype.material_request.material_request.update_completed_and_requested_qty"
 	},
 	"User": {
+		"after_insert": "frappe.email.doctype.contact.contact.update_contact",
 		"validate": "erpnext.hr.doctype.employee.employee.validate_employee_role",
 		"on_update": "erpnext.hr.doctype.employee.employee.update_user_permissions",
-		"on_update": "erpnext.utilities.doctype.contact.contact.update_contact"
+		"on_update": "frappe.geo.address_and_contact.set_default_role"
 	},
 	("Sales Taxes and Charges Template", 'Price List'): {
 		"on_update": "erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings.validate_cart_settings"
 	},
-	"Address": {
-		"validate": "erpnext.shopping_cart.cart.set_customer_in_address"
-	},
-
-	# bubble transaction notification on master
-	('Opportunity', 'Quotation', 'Sales Order', 'Delivery Note', 'Sales Invoice',
-		'Supplier Quotation', 'Purchase Order', 'Purchase Receipt',
-		'Purchase Invoice', 'Project', 'Issue'): {
-			'on_change': 'erpnext.accounts.party_status.notify_status'
-		},
 
 	"Website Settings": {
 		"validate": "erpnext.portal.doctype.products_settings.products_settings.home_page_is_products"
diff --git a/erpnext/hr/doctype/appraisal/appraisal.json b/erpnext/hr/doctype/appraisal/appraisal.json
index 0906557..450a47b 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.json
+++ b/erpnext/hr/doctype/appraisal/appraisal.json
@@ -21,7 +21,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -49,7 +48,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Series", 
@@ -79,7 +77,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Appraisal Template", 
@@ -111,7 +108,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "For Employee", 
@@ -142,7 +138,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "For Employee Name", 
@@ -172,7 +167,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -202,7 +196,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Status", 
@@ -233,7 +226,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Start Date", 
@@ -263,7 +255,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "End Date", 
@@ -293,7 +284,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Goals", 
@@ -322,7 +312,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Goals", 
@@ -337,7 +326,7 @@
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 1, 
+   "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -352,7 +341,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Calculate Total Score", 
@@ -381,7 +369,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Total Score (Out of 5)", 
@@ -411,7 +398,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -438,7 +424,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Remarks", 
@@ -466,7 +451,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -493,7 +477,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Company", 
@@ -523,7 +506,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -550,7 +532,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Amended From", 
@@ -583,7 +564,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:47:32.082712", 
+ "modified": "2017-02-14 04:54:28.784666", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Appraisal", 
@@ -599,7 +580,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -620,7 +600,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -641,7 +620,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -661,5 +639,6 @@
  "sort_order": "DESC", 
  "timeline_field": "employee", 
  "title_field": "employee_name", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/appraisal/appraisal.py b/erpnext/hr/doctype/appraisal/appraisal.py
index df6d770..e69dfa8 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.py
+++ b/erpnext/hr/doctype/appraisal/appraisal.py
@@ -16,6 +16,9 @@
 		if not self.status:
 			self.status = "Draft"
 
+		if not self.goals:
+			frappe.throw(_("Goals cannot be empty"))
+
 		set_employee_name(self)
 		self.validate_dates()
 		self.validate_existing_appraisal()
diff --git a/erpnext/hr/doctype/attendance/attendance.js b/erpnext/hr/doctype/attendance/attendance.js
index 2aeeb9f..7f2b18f 100644
--- a/erpnext/hr/doctype/attendance/attendance.js
+++ b/erpnext/hr/doctype/attendance/attendance.js
@@ -5,7 +5,7 @@
 cur_frm.add_fetch('employee', 'employee_name', 'employee_name');
 
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	if(doc.__islocal) cur_frm.set_value("att_date", get_today());
+	if(doc.__islocal) cur_frm.set_value("attendance_date", get_today());
 }
 
 cur_frm.fields_dict.employee.get_query = function(doc,cdt,cdn) {
diff --git a/erpnext/hr/doctype/attendance/attendance.json b/erpnext/hr/doctype/attendance/attendance.json
index 9a1b66e..9bbb3e5 100644
--- a/erpnext/hr/doctype/attendance/attendance.json
+++ b/erpnext/hr/doctype/attendance/attendance.json
@@ -106,7 +106,7 @@
    "collapsible": 0, 
    "columns": 0, 
    "fieldname": "employee_name", 
-   "fieldtype": "Data", 
+   "fieldtype": "Read Only", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
@@ -148,7 +148,7 @@
    "no_copy": 1, 
    "oldfieldname": "status", 
    "oldfieldtype": "Select", 
-   "options": "\nPresent\nAbsent\nHalf Day", 
+   "options": "\nPresent\nAbsent\nOn Leave\nHalf Day", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -165,9 +165,10 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "depends_on": "eval:doc.status==\"On Leave\"", 
    "fieldname": "leave_type", 
    "fieldtype": "Link", 
-   "hidden": 1, 
+   "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
@@ -180,11 +181,11 @@
    "oldfieldtype": "Link", 
    "options": "Leave Type", 
    "permlevel": 0, 
-   "print_hide": 1, 
+   "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "remember_last_selected_value": 0, 
-   "report_hide": 1, 
+   "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
@@ -223,7 +224,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "att_date", 
+   "fieldname": "attendance_date", 
    "fieldtype": "Date", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -234,7 +235,7 @@
    "label": "Attendance Date", 
    "length": 0, 
    "no_copy": 0, 
-   "oldfieldname": "att_date", 
+   "oldfieldname": "attendance_date", 
    "oldfieldtype": "Date", 
    "permlevel": 0, 
    "print_hide": 0, 
@@ -317,7 +318,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:50:01.058617", 
+ "modified": "2017-01-12 16:09:27.301839", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Attendance", 
@@ -390,9 +391,10 @@
  "quick_entry": 0, 
  "read_only": 0, 
  "read_only_onload": 0, 
- "search_fields": "employee, employee_name, att_date, status", 
+ "search_fields": "employee, employee_name, attendance_date, status", 
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "employee_name", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/attendance/attendance.py b/erpnext/hr/doctype/attendance/attendance.py
index feecae0..465c772 100644
--- a/erpnext/hr/doctype/attendance/attendance.py
+++ b/erpnext/hr/doctype/attendance/attendance.py
@@ -11,26 +11,31 @@
 
 class Attendance(Document):
 	def validate_duplicate_record(self):
-		res = frappe.db.sql("""select name from `tabAttendance` where employee = %s and att_date = %s
+		res = frappe.db.sql("""select name from `tabAttendance` where employee = %s and attendance_date = %s
 			and name != %s and docstatus = 1""",
-			(self.employee, self.att_date, self.name))
+			(self.employee, self.attendance_date, self.name))
 		if res:
 			frappe.throw(_("Attendance for employee {0} is already marked").format(self.employee))
 
 		set_employee_name(self)
 
 	def check_leave_record(self):
-		if self.status == 'Present':
-			leave = frappe.db.sql("""select name from `tabLeave Application`
-				where employee = %s and %s between from_date and to_date and status = 'Approved'
-				and docstatus = 1""", (self.employee, self.att_date))
+		leave_record = frappe.db.sql("""select leave_type, half_day from `tabLeave Application`
+			where employee = %s and %s between from_date and to_date and status = 'Approved'
+			and docstatus = 1""", (self.employee, self.attendance_date), as_dict=True)
+		if leave_record:
+			if leave_record[0].half_day:
+				self.status = 'Half Day'
+				frappe.msgprint(_("Employee {0} on Half day on {1}").format(self.employee, self.attendance_date))
+			else:
+				self.status = 'On Leave'
+				self.leave_type = leave_record[0].leave_type
+				frappe.msgprint(_("Employee {0} on Leave on {1}").format(self.employee, self.attendance_date))
+		if self.status == "On Leave" and not leave_record:
+			frappe.throw(_("No leave record found for employee {0} for {1}").format(self.employee, self.attendance_date))
 
-			if leave:
-				frappe.throw(_("Employee {0} was on leave on {1}. Cannot mark attendance.").format(self.employee,
-					self.att_date))
-
-	def validate_att_date(self):
-		if getdate(self.att_date) > getdate(nowdate()):
+	def validate_attendance_date(self):
+		if getdate(self.attendance_date) > getdate(nowdate()):
 			frappe.throw(_("Attendance can not be marked for future dates"))
 
 	def validate_employee(self):
@@ -41,13 +46,7 @@
 
 	def validate(self):
 		from erpnext.controllers.status_updater import validate_status
-		validate_status(self.status, ["Present", "Absent", "Half Day"])
-		self.validate_att_date()
+		validate_status(self.status, ["Present", "Absent", "On Leave", "Half Day"])
+		self.validate_attendance_date()
 		self.validate_duplicate_record()
 		self.check_leave_record()
-
-	def on_update(self):
-		# this is done because sometimes user entered wrong employee name
-		# while uploading employee attendance
-		employee_name = frappe.db.get_value("Employee", self.employee, "employee_name")
-		frappe.db.set(self, 'employee_name', employee_name)
diff --git a/erpnext/hr/doctype/attendance/attendance_list.js b/erpnext/hr/doctype/attendance/attendance_list.js
index 05353e2..f36fb15 100644
--- a/erpnext/hr/doctype/attendance/attendance_list.js
+++ b/erpnext/hr/doctype/attendance/attendance_list.js
@@ -1,5 +1,5 @@
 frappe.listview_settings['Attendance'] = {
-	add_fields: ["status", "att_date"],
+	add_fields: ["status", "attendance_date"],
 	get_indicator: function(doc) {
 		return [__(doc.status), doc.status=="Present" ? "green" : "darkgrey", "status,=," + doc.status];
 	}
diff --git a/erpnext/hr/doctype/attendance/test_records.json b/erpnext/hr/doctype/attendance/test_records.json
index 12983dc..1c8f3b5 100644
--- a/erpnext/hr/doctype/attendance/test_records.json
+++ b/erpnext/hr/doctype/attendance/test_records.json
@@ -4,7 +4,7 @@
 		"name": "_Test Attendance 1",
 		"employee": "_T-Employee-0001",
 		"status": "Present",
-		"att_date": "2014-02-01",
+		"attendance_date": "2014-02-01",
 		"company": "_Test Company"
 	}
 ]
diff --git a/erpnext/hr/doctype/employee/employee.js b/erpnext/hr/doctype/employee/employee.js
index fe83f40..c24a6bc 100755
--- a/erpnext/hr/doctype/employee/employee.js
+++ b/erpnext/hr/doctype/employee/employee.js
@@ -48,8 +48,8 @@
 
 });
 frappe.ui.form.on('Employee',{
-	prefered_contact_email:function(frm){
-		frm.events.update_contact(frm)
+	prefered_contact_email:function(frm){		
+		frm.events.update_contact(frm)		
 	},
 	personal_email:function(frm){
 		frm.events.update_contact(frm)
@@ -74,5 +74,19 @@
 			}
 		});
 	},
+	create_user: function(frm) {
+		if (!frm.doc.prefered_email)
+		{
+			frappe.throw(__("Please enter Preferred Contact Email"))
+		}
+		frappe.call({
+			method: "erpnext.hr.doctype.employee.employee.create_user",
+			args: { employee: cur_frm.doc.name },
+			callback: function(r)
+			{
+				frm.set_value("user_id", r.message)
+			}
+		});
+	}
 });
 cur_frm.cscript = new erpnext.hr.EmployeeController({frm: cur_frm});
diff --git a/erpnext/hr/doctype/employee/employee.json b/erpnext/hr/doctype/employee/employee.json
index 5ded5a0..4efba60 100644
--- a/erpnext/hr/doctype/employee/employee.json
+++ b/erpnext/hr/doctype/employee/employee.json
@@ -217,6 +217,35 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "depends_on": "eval:(!doc.user_id)", 
+   "fieldname": "create_user", 
+   "fieldtype": "Button", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Create User", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "image", 
    "fieldtype": "Attach Image", 
    "hidden": 1, 
@@ -768,7 +797,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "description": "Provide email id registered in company", 
+   "description": "Provide Email Address registered in company", 
    "fieldname": "company_email", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -2244,7 +2273,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:15:16.925799", 
+ "modified": "2016-12-19 17:24:22.941738", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Employee", 
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 58d1262..afa21e0 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -6,7 +6,7 @@
 
 from frappe.utils import getdate, validate_email_add, today, add_years
 from frappe.model.naming import make_autoname
-from frappe import throw, _
+from frappe import throw, _, scrub
 import frappe.permissions
 from frappe.model.document import Document
 from erpnext.utilities.transaction_base import delete_events
@@ -26,6 +26,8 @@
 				self.name = make_autoname(self.naming_series + '.####')
 			elif naming_method == 'Employee Number':
 				self.name = self.employee_number
+			elif naming_method == 'Full Name':
+				self.name = self.employee_name
 
 		self.employee = self.name
 
@@ -39,6 +41,7 @@
 		self.validate_status()
 		self.validate_employee_leave_approver()
 		self.validate_reports_to()
+		self.validate_prefered_email()
 
 		if self.user_id:
 			self.validate_for_enabled_user_id()
@@ -153,13 +156,18 @@
 	def on_trash(self):
 		delete_events(self.doctype, self.name)
 
+	def validate_prefered_email(self):
+		if not self.get(scrub(self.prefered_contact_email)):
+			frappe.msgprint(_("Please enter " + self.prefered_contact_email))
+
+
 def get_timeline_data(doctype, name):
 	'''Return timeline for attendance'''
-	return dict(frappe.db.sql('''select unix_timestamp(att_date), count(*)
+	return dict(frappe.db.sql('''select unix_timestamp(attendance_date), count(*)
 		from `tabAttendance` where employee=%s
-			and att_date > date_sub(curdate(), interval 1 year)
+			and attendance_date > date_sub(curdate(), interval 1 year)
 			and status in ('Present', 'Half Day')
-			group by att_date''', name))
+			group by attendance_date''', name))
 
 @frappe.whitelist()
 def get_retirement_date(date_of_birth=None):
@@ -250,3 +258,34 @@
 		sales_person = frappe.db.get_value("Sales Person", {"Employee": employee})
 		if sales_person:
 			frappe.db.set_value("Sales Person", sales_person, "enabled", 0)
+
+@frappe.whitelist()
+def create_user(employee, user = None):
+	emp = frappe.get_doc("Employee", employee)
+
+	employee_name = emp.employee_name.split(" ")
+	middle_name = last_name = ""
+
+	if len(employee_name) >= 3:
+		last_name = " ".join(employee_name[2:])
+		middle_name = employee_name[1]
+	elif len(employee_name) == 2:
+		last_name = employee_name[1]
+
+	first_name = employee_name[0]
+
+	user = frappe.new_doc("User")
+	user.update({
+		"name": emp.employee_name,
+		"email": emp.prefered_email,
+		"enabled": 1,
+		"first_name": first_name,
+		"middle_name": middle_name,
+		"last_name": last_name,
+		"gender": emp.gender,
+		"birth_date": emp.date_of_birth,
+		"phone": emp.cell_number,
+		"bio": emp.bio
+	})
+	user.insert()
+	return user.name
diff --git a/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.py b/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.py
index 353008e..7438737 100644
--- a/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.py
+++ b/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.py
@@ -20,7 +20,7 @@
 		"status": "Active", "department": department, "branch": branch, "company": company}, order_by="employee_name")
 	marked_employee = {}
 	for emp in frappe.get_list("Attendance", fields=["employee", "status"],
-							   filters={"att_date": date}):
+							   filters={"attendance_date": date}):
 		marked_employee[emp['employee']] = emp['status']
 
 	for employee in employee_list:
@@ -36,14 +36,16 @@
 
 
 @frappe.whitelist()
-def mark_employee_attendance(employee_list, status, date, company=None):
+def mark_employee_attendance(employee_list, status, date, leave_type=None, company=None):
 	employee_list = json.loads(employee_list)
 	for employee in employee_list:
 		attendance = frappe.new_doc("Attendance")
 		attendance.employee = employee['employee']
 		attendance.employee_name = employee['employee_name']
-		attendance.att_date = date
+		attendance.attendance_date = date
 		attendance.status = status
+		if status == "On Leave" and leave_type:
+			attendance.leave_type = leave_type
 		if company:
 			attendance.company = company
 		else:
diff --git a/erpnext/hr/report/monthly_salary_register/__init__.py b/erpnext/hr/doctype/employee_loan/__init__.py
similarity index 100%
copy from erpnext/hr/report/monthly_salary_register/__init__.py
copy to erpnext/hr/doctype/employee_loan/__init__.py
diff --git a/erpnext/hr/doctype/employee_loan/employee_loan.js b/erpnext/hr/doctype/employee_loan/employee_loan.js
new file mode 100644
index 0000000..a03dbda
--- /dev/null
+++ b/erpnext/hr/doctype/employee_loan/employee_loan.js
@@ -0,0 +1,88 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Employee Loan', {
+	onload: function(frm) {
+		frm.set_query("employee_loan_application", function() {
+			return {
+				"filters": {
+					"employee": frm.doc.employee,
+					"docstatus": 1,
+					"status": "Approved"
+				}
+			};
+		});
+
+		$.each(["payment_account", "employee_loan_account"], function(i, field) {
+			frm.set_query(field, function() {
+				return {
+					"filters": {
+						"company": frm.doc.company,
+						"root_type": "Asset",
+						"is_group": 0
+					}
+				};
+			});
+		})
+	},
+
+	mode_of_payment: function(frm){
+		frappe.call({
+			method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
+			args: {
+				"mode_of_payment": frm.doc.mode_of_payment,
+				"company": frm.doc.company
+			},
+			callback: function(r, rt) {
+				if(r.message) {
+					frm.set_value("payment_account", r.message.account);
+				}
+			}
+		});
+	},
+
+	refresh: function(frm) {
+		frm.trigger("toggle_fields");
+
+		if(frm.doc.docstatus==1) {
+			frm.add_custom_button(__('Ledger'), function() {
+				frappe.route_options = {
+					"voucher_no": frm.doc.name,
+					"from_date": frm.doc.posting_date,
+					"to_date": frm.doc.posting_date,
+					"company": frm.doc.company,
+					group_by_voucher: 0
+				};
+				frappe.set_route("query-report", "General Ledger");
+			}, "fa fa-table");
+		}
+	},
+
+	employee_loan_application: function(frm) {
+		return frm.call({
+			method: "erpnext.hr.doctype.employee_loan.employee_loan.get_employee_loan_application",
+			args: {
+				"employee_loan_application": frm.doc.employee_loan_application
+			},
+			callback: function(r){
+				if(!r.exc && r.message) {
+					frm.set_value("loan_type", r.message.loan_type);
+					frm.set_value("loan_amount", r.message.loan_amount);
+					frm.set_value("repayment_method", r.message.repayment_method);
+					frm.set_value("monthly_repayment_amount", r.message.repayment_amount);
+					frm.set_value("repayment_periods", r.message.repayment_periods);
+					frm.set_value("rate_of_interest", r.message.rate_of_interest);
+				}
+			}
+		})
+	},
+
+	repayment_method: function(frm) {
+		frm.trigger("toggle_fields")
+	},
+
+	toggle_fields: function(frm) {
+		frm.toggle_enable("monthly_repayment_amount", frm.doc.repayment_method=="Repay Fixed Amount per Period")
+		frm.toggle_enable("repayment_periods", frm.doc.repayment_method=="Repay Over Number of Periods")
+	}
+});
diff --git a/erpnext/fleet_management/doctype/vehicle/vehicle.json b/erpnext/hr/doctype/employee_loan/employee_loan.json
similarity index 76%
copy from erpnext/fleet_management/doctype/vehicle/vehicle.json
copy to erpnext/hr/doctype/employee_loan/employee_loan.json
index edad8a2..560515f 100644
--- a/erpnext/fleet_management/doctype/vehicle/vehicle.json
+++ b/erpnext/hr/doctype/employee_loan/employee_loan.json
@@ -1,32 +1,34 @@
 {
  "allow_copy": 0, 
- "allow_import": 0, 
+ "allow_import": 1, 
  "allow_rename": 0, 
- "autoname": "field:license_plate", 
+ "autoname": "ELN.####", 
  "beta": 0, 
- "creation": "2016-09-03 03:33:27.680331", 
+ "creation": "2016-12-02 10:11:49.673604", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
  "document_type": "Document", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "license_plate", 
-   "fieldtype": "Data", 
+   "fieldname": "employee", 
+   "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "License Plate", 
+   "label": "Employee", 
    "length": 0, 
-   "no_copy": 1, 
+   "no_copy": 0, 
+   "options": "Employee", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -37,24 +39,83 @@
    "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
-   "unique": 1
+   "unique": 0
   }, 
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "make", 
-   "fieldtype": "Data", 
+   "fieldname": "employee_name", 
+   "fieldtype": "Read Only", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Make", 
+   "label": "Employee Name", 
    "length": 0, 
    "no_copy": 0, 
+   "options": "employee.employee_name", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "employee_loan_application", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Employee Loan Application", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Employee Loan Application", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "loan_type", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Loan Type", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Loan Type", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -99,71 +160,16 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "model", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Model", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "vehicle_details", 
-   "fieldtype": "Section Break", 
+   "default": "", 
+   "fieldname": "posting_date", 
+   "fieldtype": "Date", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Details", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "last_odometer", 
-   "fieldtype": "Int", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
-   "label": "Odometer Value (Last)", 
+   "label": "Posting Date", 
    "length": 0, 
    "no_copy": 1, 
    "permlevel": 0, 
@@ -175,34 +181,6 @@
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
-   "set_only_once": 1, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "acquisition_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Acquisition Date", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
   }, 
@@ -211,194 +189,26 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "location", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Location", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break_8", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "chassis_no", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Chassis No", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "vehicle_value", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Vehicle Value", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 1, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "employee", 
+   "fieldname": "company", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Employee", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Employee", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "insurance_details", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Insurance Details", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "insurance_company", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Insurance Company", 
+   "label": "Company", 
    "length": 0, 
    "no_copy": 0, 
+   "options": "Company", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
-   "remember_last_selected_value": 0, 
+   "remember_last_selected_value": 1, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -408,187 +218,18 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "policy_no", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Policy No", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break_15", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "start_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Start Date", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "end_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "End Date", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "additional_details", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Additional Details", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "fuel_type", 
+   "fieldname": "status", 
    "fieldtype": "Select", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Fuel Type", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Petrol\nDiesel\nNatural Gas\nElectric", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "Litre", 
-   "fieldname": "uom", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Fuel UOM", 
+   "label": "Status", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "UOM", 
+   "options": "Loan Unpaid\nLoan Paid\nEMI in progress\nLoan Repaid", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -596,7 +237,7 @@
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 1, 
+   "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -606,15 +247,15 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "carbon_check_date", 
-   "fieldtype": "Date", 
+   "fieldname": "repay_from_salary", 
+   "fieldtype": "Check", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Last Carbon Check", 
+   "label": "Repay from Salary", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -634,7 +275,121 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "column_break_21", 
+   "fieldname": "section_break_8", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Loan Details", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "loan_amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Loan Amount", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "", 
+   "fieldname": "rate_of_interest", 
+   "fieldtype": "Percent", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Rate of Interest (%) / Year", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "loan_type.rate_of_interest", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "disbursement_date", 
+   "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Disbursement Date", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_11", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -661,15 +416,47 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "color", 
-   "fieldtype": "Data", 
+   "default": "Repay Over Number of Periods", 
+   "fieldname": "repayment_method", 
+   "fieldtype": "Select", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Color", 
+   "label": "Repayment Method", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "\nRepay Fixed Amount per Period\nRepay Over Number of Periods", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "", 
+   "depends_on": "", 
+   "fieldname": "repayment_periods", 
+   "fieldtype": "Int", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Repayment Period in Months", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -689,15 +476,17 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "wheels", 
-   "fieldtype": "Int", 
+   "default": "", 
+   "depends_on": "", 
+   "fieldname": "monthly_repayment_amount", 
+   "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Wheels", 
+   "label": "Repayment Amount", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -717,15 +506,15 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "doors", 
-   "fieldtype": "Int", 
+   "fieldname": "account_info", 
+   "fieldtype": "Section Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Doors", 
+   "label": "Account Info", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -745,6 +534,290 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "mode_of_payment", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Mode of Payment", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Mode of Payment", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "payment_account", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Payment Account", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Account", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_9", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "employee_loan_account", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Employee Loan Account", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Account", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_15", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Repayment Schedule", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "repayment_schedule", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Repayment Schedule", 
+   "length": 0, 
+   "no_copy": 1, 
+   "options": "Repayment Schedule", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_17", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Totals", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "0", 
+   "fieldname": "total_payment", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Total Payment", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_19", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "0", 
+   "fieldname": "total_interest_payable", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Total Interest Payable", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "amended_from", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -756,7 +829,7 @@
    "label": "Amended From", 
    "length": 0, 
    "no_copy": 1, 
-   "options": "Vehicle", 
+   "options": "Employee Loan", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
@@ -775,21 +848,21 @@
  "image_view": 0, 
  "in_create": 0, 
  "in_dialog": 0, 
- "is_submittable": 0, 
+ "is_submittable": 1, 
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 06:00:22.056662", 
+ "modified": "2017-01-17 07:13:10.704520", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
- "name": "Vehicle", 
+ "module": "HR", 
+ "name": "Employee Loan", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [
   {
    "amend": 0, 
    "apply_user_permissions": 0, 
-   "cancel": 0, 
+   "cancel": 1, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
@@ -801,19 +874,19 @@
    "print": 1, 
    "read": 1, 
    "report": 1, 
-   "role": "Fleet Manager", 
+   "role": "HR Manager", 
    "set_user_permissions": 0, 
    "share": 1, 
-   "submit": 0, 
+   "submit": 1, 
    "write": 1
   }
  ], 
- "quick_entry": 1, 
+ "quick_entry": 0, 
  "read_only": 0, 
  "read_only_onload": 0, 
- "search_fields": "license_plate,location,model", 
- "sort_field": "modified", 
+ "search_fields": "posting_date", 
+ "sort_field": "creation", 
  "sort_order": "DESC", 
- "title_field": "", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee_loan/employee_loan.py b/erpnext/hr/doctype/employee_loan/employee_loan.py
new file mode 100644
index 0000000..568596e
--- /dev/null
+++ b/erpnext/hr/doctype/employee_loan/employee_loan.py
@@ -0,0 +1,127 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe, math
+import erpnext
+from frappe import _
+from frappe.utils import flt, rounded, add_months, nowdate
+from erpnext.controllers.accounts_controller import AccountsController
+from erpnext.accounts.general_ledger import make_gl_entries
+
+class EmployeeLoan(AccountsController):
+	def validate(self):
+		check_repayment_method(self.repayment_method, self.loan_amount, self.monthly_repayment_amount, self.repayment_periods)
+		if not self.company:
+			self.company = erpnext.get_default_company()
+		if not self.posting_date:
+			self.posting_date = nowdate()
+		if self.loan_type and not self.rate_of_interest:
+			self.rate_of_interest = frappe.db.get_value("Loan Type", self.loan_type, "rate_of_interest")
+		if self.repayment_method == "Repay Over Number of Periods":
+			self.monthly_repayment_amount = get_monthly_repayment_amount(self.repayment_method, self.loan_amount, self.rate_of_interest, self.repayment_periods)
+
+		self.make_repayment_schedule()
+		self.set_repayment_period()
+		self.calculate_totals()
+
+	def on_submit(self):
+		self.make_gl_entries()
+
+	def on_cancel(self):
+		self.make_gl_entries()
+
+	def make_gl_entries(self):
+		gl_entries = []
+		# Gl entries for employee loan account
+		gl_entries.append(
+			self.get_gl_dict({
+				"account": self.employee_loan_account,
+				"party_type": "Employee",
+				"party": self.employee,
+				"debit": self.loan_amount,
+				"debit_in_account_currency": self.loan_amount
+			})
+		)
+		# Gl entries for payment account
+		gl_entries.append(
+			self.get_gl_dict({
+				"account": self.payment_account,
+				"credit": self.loan_amount,
+				"credit_in_account_currency": self.loan_amount
+			})
+		)
+		make_gl_entries(gl_entries, cancel=(self.docstatus == 2))
+
+	def make_repayment_schedule(self):
+		self.repayment_schedule = []
+		payment_date = self.disbursement_date
+		balance_amount = self.loan_amount
+
+		while(balance_amount > 0):
+			interest_amount = rounded(balance_amount * flt(self.rate_of_interest) / (12*100))
+			principal_amount = self.monthly_repayment_amount - interest_amount
+			balance_amount = rounded(balance_amount + interest_amount - self.monthly_repayment_amount)
+
+			if balance_amount < 0:
+				principal_amount += balance_amount
+				balance_amount = 0.0
+
+			total_payment = principal_amount + interest_amount
+
+			self.append("repayment_schedule", {
+				"payment_date": payment_date,
+				"principal_amount": principal_amount,
+				"interest_amount": interest_amount,
+				"total_payment": total_payment,
+				"balance_loan_amount": balance_amount
+			})
+
+			next_payment_date = add_months(payment_date, 1)
+			payment_date = next_payment_date
+
+	def set_repayment_period(self):
+		if self.repayment_method == "Repay Fixed Amount per Period":
+			repayment_periods = len(self.repayment_schedule)
+
+			self.repayment_periods = repayment_periods
+
+	def calculate_totals(self):
+		self.total_payment = 0
+		self.total_interest_payable = 0
+		for data in self.repayment_schedule:
+			self.total_payment += data.total_payment
+			self.total_interest_payable +=data.interest_amount
+
+	def update_status(self):
+		if self.disbursement_date:
+			self.status = "Loan Paid"
+		if len(self.repayment_schedule)>0:
+			self.status = "repayment in progress"
+	
+def check_repayment_method(repayment_method, loan_amount, monthly_repayment_amount, repayment_periods):
+	if repayment_method == "Repay Over Number of Periods" and not repayment_periods:
+		frappe.throw(_("Please enter Repayment Periods"))
+		
+	if repayment_method == "Repay Fixed Amount per Period":
+		if not monthly_repayment_amount:
+			frappe.throw(_("Please enter repayment Amount"))
+		if monthly_repayment_amount > loan_amount:
+			frappe.throw(_("Monthly Repayment Amount cannot be greater than Loan Amount"))
+
+def get_monthly_repayment_amount(repayment_method, loan_amount, rate_of_interest, repayment_periods):
+	if rate_of_interest:
+		monthly_interest_rate = flt(rate_of_interest) / (12 *100)
+		monthly_repayment_amount = math.ceil((loan_amount * monthly_interest_rate *
+			(1 + monthly_interest_rate)**repayment_periods) \
+			/ ((1 + monthly_interest_rate)**repayment_periods - 1))
+	else:
+		monthly_repayment_amount = math.ceil(flt(loan_amount) / repayment_periods)
+	return monthly_repayment_amount
+
+@frappe.whitelist()
+def get_employee_loan_application(employee_loan_application):
+	employee_loan = frappe.get_doc("Employee Loan Application", employee_loan_application)
+	if employee_loan:
+		return employee_loan
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee_loan/test_employee_loan.py b/erpnext/hr/doctype/employee_loan/test_employee_loan.py
new file mode 100644
index 0000000..c1c6ba2
--- /dev/null
+++ b/erpnext/hr/doctype/employee_loan/test_employee_loan.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import erpnext
+import unittest
+from frappe.utils import nowdate
+from erpnext.hr.doctype.salary_structure.test_salary_structure import make_employee
+
+class TestEmployeeLoan(unittest.TestCase):
+	def setUp(self):
+		create_loan_type("Personal Loan", 500000, 8.4)
+		self.employee = make_employee("robert_loan@loan.com")
+		create_employee_loan(self.employee, "Personal Loan", 280000, "Repay Over Number of Periods", 20)
+	
+	def test_employee_loan(self):
+		employee_loan = frappe.get_doc("Employee Loan", {"employee":self.employee})
+		self.assertEquals(employee_loan.monthly_repayment_amount, 15052)
+		self.assertEquals(employee_loan.total_interest_payable, 21034)
+		self.assertEquals(employee_loan.total_payment, 301034)
+
+		schedule = employee_loan.repayment_schedule
+
+		self.assertEquals(len(schedule), 20)
+
+		for idx, principal_amount, interest_amount, balance_loan_amount in [[3, 13369, 1683, 227079], [19, 14941, 105, 0], [17, 14740, 312, 29785]]:
+			self.assertEquals(schedule[idx].principal_amount, principal_amount)
+			self.assertEquals(schedule[idx].interest_amount, interest_amount)
+			self.assertEquals(schedule[idx].balance_loan_amount, balance_loan_amount)
+
+		employee_loan.repayment_method = "Repay Fixed Amount per Period"
+		employee_loan.monthly_repayment_amount = 14000
+		employee_loan.save()
+
+		self.assertEquals(len(employee_loan.repayment_schedule), 22)
+		self.assertEquals(employee_loan.total_interest_payable, 22712)
+		self.assertEquals(employee_loan.total_payment, 302712)
+
+
+def create_loan_type(loan_name, maximum_loan_amount, rate_of_interest):
+	if not frappe.db.get_value("Loan Type", loan_name):
+		frappe.get_doc({
+			"doctype": "Loan Type",
+			"loan_name": loan_name,
+			"maximum_loan_amount": maximum_loan_amount,
+			"rate_of_interest": rate_of_interest
+		}).insert()
+
+def	create_employee_loan(employee, loan_type, loan_amount, repayment_method, repayment_periods):
+	if not frappe.db.get_value("Employee Loan", {"employee":employee}):
+		employee_loan = frappe.new_doc("Employee Loan")
+		employee_loan.update({
+				"employee": employee,
+				"loan_type": loan_type,
+				"loan_amount": loan_amount,
+				"repayment_method": repayment_method,
+				"repayment_periods": repayment_periods,
+				"disbursement_date": nowdate(),
+				"mode_of_payment": frappe.db.get_value('Mode of Payment', {'type': 'Cash'}, 'name'),
+				"payment_account": frappe.db.get_value('Account', {'account_type': 'Cash', 'company': erpnext.get_default_company(),'is_group':0}, "name"),
+				"employee_loan_account": frappe.db.get_value('Account', {'account_type': 'Cash', 'company': erpnext.get_default_company(),'is_group':0}, "name")
+			})
+		employee_loan.insert()
+		return employee_loan
+	else:
+		return frappe.get_doc("Employee Loan", {"employee":employee})
\ No newline at end of file
diff --git a/erpnext/hr/report/monthly_salary_register/__init__.py b/erpnext/hr/doctype/employee_loan_application/__init__.py
similarity index 100%
copy from erpnext/hr/report/monthly_salary_register/__init__.py
copy to erpnext/hr/doctype/employee_loan_application/__init__.py
diff --git a/erpnext/hr/doctype/employee_loan_application/employee_loan_application.js b/erpnext/hr/doctype/employee_loan_application/employee_loan_application.js
new file mode 100644
index 0000000..6958bea
--- /dev/null
+++ b/erpnext/hr/doctype/employee_loan_application/employee_loan_application.js
@@ -0,0 +1,16 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Employee Loan Application', {
+	refresh: function(frm) {
+		frm.trigger("toggle_fields")
+	},
+	repayment_method: function(frm) {
+		frm.trigger("toggle_fields")
+	},
+
+	toggle_fields: function(frm) {
+		frm.toggle_enable("repayment_amount", frm.doc.repayment_method=="Repay Fixed Amount per Period")
+		frm.toggle_enable("repayment_periods", frm.doc.repayment_method=="Repay Over Number of Periods")
+	}
+});
diff --git a/erpnext/fleet_management/doctype/vehicle_log/vehicle_log.json b/erpnext/hr/doctype/employee_loan_application/employee_loan_application.json
similarity index 82%
copy from erpnext/fleet_management/doctype/vehicle_log/vehicle_log.json
copy to erpnext/hr/doctype/employee_loan_application/employee_loan_application.json
index 26a4a01..e30dc5a 100644
--- a/erpnext/fleet_management/doctype/vehicle_log/vehicle_log.json
+++ b/erpnext/hr/doctype/employee_loan_application/employee_loan_application.json
@@ -2,31 +2,33 @@
  "allow_copy": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
- "autoname": "naming_series:", 
+ "autoname": "ELA/.#####", 
  "beta": 0, 
- "creation": "2016-09-03 14:14:51.788550", 
+ "creation": "2016-12-02 12:35:56.046811", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
- "document_type": "Document", 
+ "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "vehicle_section", 
-   "fieldtype": "Section Break", 
+   "default": "Today", 
+   "fieldname": "posting_date", 
+   "fieldtype": "Date", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
+   "label": "Posting Date", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "fa fa-user", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -44,72 +46,14 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "naming_series", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Series", 
-   "length": 0, 
-   "no_copy": 1, 
-   "options": "VLOG.", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "license_plate", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "License Plate", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Vehicle", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "employee", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Employee", 
    "length": 0, 
    "no_copy": 0, 
@@ -131,7 +75,36 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "column_break_4", 
+   "fieldname": "employee_name", 
+   "fieldtype": "Read Only", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 1, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Employee Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "employee.employee_name", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_2", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -154,6 +127,177 @@
    "unique": 0
   }, 
   {
+   "allow_on_submit": 1, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "status", 
+   "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Status", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Open\nApproved\nRejected", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "company", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Company", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Company", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_4", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Loan Info", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "loan_type", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Loan Type", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Loan Type", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "loan_amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Loan Amount", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "required_by_date", 
+   "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Required by Date", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -185,15 +329,15 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "model", 
-   "fieldtype": "Read Only", 
+   "fieldname": "description", 
+   "fieldtype": "Small Text", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Model", 
+   "label": "Reason", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -213,35 +357,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "make", 
-   "fieldtype": "Read Only", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Make", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "odometer_reading", 
+   "fieldname": "repayment_info", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -249,7 +365,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Odometer Reading", 
+   "label": "Repayment Info", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -269,17 +385,18 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "date", 
-   "fieldtype": "Date", 
+   "fieldname": "repayment_method", 
+   "fieldtype": "Select", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Date", 
+   "label": "Repayment Method", 
    "length": 0, 
    "no_copy": 0, 
+   "options": "\nRepay Fixed Amount per Period\nRepay Over Number of Periods", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -297,50 +414,23 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "odometer", 
-   "fieldtype": "Int", 
+   "fieldname": "rate_of_interest", 
+   "fieldtype": "Percent", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Odometer", 
+   "label": "Rate of Interest", 
    "length": 0, 
    "no_copy": 0, 
+   "options": "loan_type.rate_of_interest", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 1, 
-   "columns": 0, 
-   "fieldname": "refuelling_details", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Refuelling Details", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -353,35 +443,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "fuel_qty", 
-   "fieldtype": "Float", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Fuel Qty", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "price", 
+   "fieldname": "total_payable_interest", 
    "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -389,14 +451,14 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Fuel Price", 
+   "label": "Total Payable Interest", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -409,7 +471,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "column_break_15", 
+   "fieldname": "column_break_11", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -436,72 +498,16 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "supplier", 
-   "fieldtype": "Link", 
+   "depends_on": "", 
+   "fieldname": "repayment_amount", 
+   "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Supplier", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Supplier", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "invoice", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Invoice Ref", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 1, 
-   "columns": 0, 
-   "fieldname": "service_details", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Service_Details", 
+   "label": "Repayment Amount", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -521,18 +527,18 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "service_detail", 
-   "fieldtype": "Table", 
+   "depends_on": "", 
+   "fieldname": "repayment_periods", 
+   "fieldtype": "Int", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Service Detail", 
+   "label": "Repayment Period in Months", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Vehicle Service", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -550,50 +556,22 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "section_break_20", 
-   "fieldtype": "Section Break", 
+   "fieldname": "total_payable_amount", 
+   "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
+   "label": "Total Payable Amount", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 1, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:doc.docstatus==1", 
-   "fieldname": "expense_claim", 
-   "fieldtype": "Button", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Make Expense Claim", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -617,7 +595,7 @@
    "label": "Amended From", 
    "length": 0, 
    "no_copy": 1, 
-   "options": "Vehicle Log", 
+   "options": "Employee Loan Application", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
@@ -640,10 +618,10 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:24:55.310831", 
+ "modified": "2017-01-09 12:02:36.562577", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
- "name": "Vehicle Log", 
+ "module": "HR", 
+ "name": "Employee Loan Application", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [
@@ -662,18 +640,42 @@
    "print": 1, 
    "read": 1, 
    "report": 1, 
-   "role": "Fleet Manager", 
+   "role": "HR Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 1, 
+   "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "is_custom": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Employee", 
    "set_user_permissions": 0, 
    "share": 1, 
    "submit": 1, 
    "write": 1
   }
  ], 
- "quick_entry": 1, 
+ "quick_entry": 0, 
  "read_only": 0, 
  "read_only_onload": 0, 
+ "search_fields": "employee, employee_name, loan_type, loan_amount", 
  "sort_field": "modified", 
  "sort_order": "DESC", 
- "title_field": "", 
+ "timeline_field": "employee", 
+ "title_field": "employee_name", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee_loan_application/employee_loan_application.py b/erpnext/hr/doctype/employee_loan_application/employee_loan_application.py
new file mode 100644
index 0000000..15dbd4e
--- /dev/null
+++ b/erpnext/hr/doctype/employee_loan_application/employee_loan_application.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe, math
+from frappe import _
+from frappe.utils import flt
+from frappe.model.document import Document
+
+from erpnext.hr.doctype.employee_loan.employee_loan import get_monthly_repayment_amount, check_repayment_method
+
+class EmployeeLoanApplication(Document):
+	def validate(self):
+		check_repayment_method(self.repayment_method, self.loan_amount, self.repayment_amount, self.repayment_periods)
+		self.validate_loan_amount()
+		self.get_repayment_details()
+
+	def validate_loan_amount(self):
+		maximum_loan_limit = frappe.db.get_value('Loan Type', self.loan_type, 'maximum_loan_amount')
+		if self.loan_amount > maximum_loan_limit:
+			frappe.throw(_("Loan Amount cannot exceed Maximum Loan Amount of {0}").format(maximum_loan_limit))
+
+	def get_repayment_details(self):
+		if self.repayment_method == "Repay Over Number of Periods":
+			self.repayment_amount = get_monthly_repayment_amount(self.repayment_method, self.loan_amount, self.rate_of_interest, self.repayment_periods)
+
+		if self.repayment_method == "Repay Fixed Amount per Period":
+			monthly_interest_rate = flt(self.rate_of_interest) / (12 *100)
+			self.repayment_periods = math.ceil((math.log(self.repayment_amount) - math.log(self.repayment_amount - \
+									(self.loan_amount*monthly_interest_rate)))/(math.log(1+monthly_interest_rate)))
+
+		self.total_payable_amount = self.repayment_amount * self.repayment_periods
+		self.total_payable_interest = self.total_payable_amount - self.loan_amount
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee_loan_application/test_employee_loan_application.py b/erpnext/hr/doctype/employee_loan_application/test_employee_loan_application.py
new file mode 100644
index 0000000..1d157d6
--- /dev/null
+++ b/erpnext/hr/doctype/employee_loan_application/test_employee_loan_application.py
@@ -0,0 +1,51 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+from erpnext.hr.doctype.salary_structure.test_salary_structure import make_employee
+
+class TestEmployeeLoanApplication(unittest.TestCase):
+	def setUp(self):
+		self.create_loan_type()
+		self.employee = make_employee("kate_loan@loan.com")
+		self.create_loan_application()
+
+	def create_loan_type(self):
+		if not frappe.db.get_value("Loan Type", "Home Loan"):
+			frappe.get_doc({
+				"doctype": "Loan Type",
+				"loan_name": "Home Loan",
+				"maximum_loan_amount": 500000,
+				"rate_of_interest": 9.2
+			}).insert()
+
+	def create_loan_application(self):
+		if not frappe.db.get_value("Employee Loan Application", {"employee":self.employee}, "name"):
+			loan_application = frappe.new_doc("Employee Loan Application")
+			loan_application.update({
+				"employee": self.employee,
+				"loan_type": "Home Loan",
+				"rate_of_interest": 9.2,
+				"loan_amount": 250000,
+				"repayment_method": "Repay Over Number of Periods",
+				"repayment_periods": 24
+			})
+			loan_application.insert()
+	
+
+	def test_loan_totals(self):
+		loan_application = frappe.get_doc("Employee Loan Application", {"employee":self.employee})
+		self.assertEquals(loan_application.repayment_amount, 11445)
+		self.assertEquals(loan_application.total_payable_interest, 24680)
+		self.assertEquals(loan_application.total_payable_amount, 274680)
+
+		loan_application.repayment_method = "Repay Fixed Amount per Period"
+		loan_application.repayment_amount = 15000
+		loan_application.save()
+
+		self.assertEquals(loan_application.repayment_periods, 18)
+		self.assertEquals(loan_application.total_payable_interest, 20000)
+		self.assertEquals(loan_application.total_payable_amount, 270000)
\ No newline at end of file
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 8b3c451..7d19051 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -158,6 +158,21 @@
 	}
 }
 
+frappe.ui.form.on("Expense Claim", {
+	refresh: function(frm) {
+		if(frm.doc.docstatus == 1) {
+			frm.add_custom_button(__('Accounting Ledger'), function() {
+				frappe.route_options = {
+					voucher_no: frm.doc.name,
+					company: frm.doc.company,
+					group_by_voucher: false
+				};
+				frappe.set_route("query-report", "General Ledger");
+			}, __("View"));
+		}
+	}
+})
+
 frappe.ui.form.on("Expense Claim Detail", {
 	claim_amount: function(frm, cdt, cdn) {
 		var child = locals[cdt][cdn];
@@ -176,6 +191,47 @@
 	}
 })
 
+frappe.ui.form.on("Expense Claim",{
+	setup: function(frm) {
+		frm.trigger("set_query_for_cost_center")
+		frm.trigger("set_query_for_payable_account")
+		frm.add_fetch("company", "cost_center", "cost_center");
+		frm.add_fetch("company", "default_payable_account", "payable_account");
+	},
+
+	refresh: function(frm) {
+		frm.trigger("toggle_fields")
+	},
+
+	set_query_for_cost_center: function(frm) {
+		frm.fields_dict["cost_center"].get_query = function() {
+			return {
+				filters: {
+					"company": frm.doc.company
+				}
+			}
+		}
+	},
+
+	set_query_for_payable_account: function(frm) {
+		frm.fields_dict["payable_account"].get_query = function() {
+			return {
+				filters: {
+					"root_type": "Liability",
+					"account_type": "Payable"
+				}
+			}
+		}
+	},
+
+	is_paid: function(frm) {
+		frm.trigger("toggle_fields")
+	},
+
+	toggle_fields: function(frm) {
+		frm.toggle_reqd("mode_of_payment", frm.doc.is_paid)
+	}
+});
 
 frappe.ui.form.on("Expense Claim", "employee_name", function(frm) {
 	erpnext.expense_claim.set_title(frm);
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.json b/erpnext/hr/doctype/expense_claim/expense_claim.json
index 99b20fe..f517b91 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.json
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.json
@@ -46,6 +46,34 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "is_paid", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Is Paid", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "default": "Draft", 
    "depends_on": "eval:!doc.__islocal", 
    "fieldname": "approval_status", 
@@ -55,7 +83,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
-   "in_standard_filter": 1, 
+   "in_standard_filter": 0, 
    "label": "Approval Status", 
    "length": 0, 
    "no_copy": 1, 
@@ -86,7 +114,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "in_standard_filter": 1, 
+   "in_standard_filter": 0, 
    "label": "Approver", 
    "length": 0, 
    "no_copy": 0, 
@@ -175,7 +203,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Total Sanctioned Amount", 
    "length": 0, 
@@ -322,7 +350,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
-   "in_standard_filter": 1, 
+   "in_standard_filter": 0, 
    "label": "From Employee", 
    "length": 0, 
    "no_copy": 0, 
@@ -375,36 +403,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Company", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "company", 
-   "oldfieldtype": "Link", 
-   "options": "Company", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 1, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "vehicle_log", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -434,90 +432,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "cb1", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "total_amount_reimbursed", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Total Amount Reimbursed", 
-   "length": 0, 
-   "no_copy": 1, 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "remark", 
-   "fieldtype": "Small Text", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Remark", 
-   "length": 0, 
-   "no_copy": 1, 
-   "oldfieldname": "remark", 
-   "oldfieldtype": "Small Text", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "project", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -572,6 +486,90 @@
    "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "cb1", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "total_amount_reimbursed", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Total Amount Reimbursed", 
+   "length": 0, 
+   "no_copy": 1, 
+   "options": "Company:company:default_currency", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "remark", 
+   "fieldtype": "Small Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Remark", 
+   "length": 0, 
+   "no_copy": 1, 
+   "oldfieldname": "remark", 
+   "oldfieldtype": "Small Text", 
+   "permlevel": 0, 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
    "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
@@ -634,6 +632,238 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "accounting_details", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Accounting Details", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "company", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 1, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Company", 
+   "length": 0, 
+   "no_copy": 0, 
+   "oldfieldname": "company", 
+   "oldfieldtype": "Link", 
+   "options": "Company", 
+   "permlevel": 0, 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 1, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "is_paid", 
+   "fieldname": "mode_of_payment", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Mode of Payment", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Mode of Payment", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_24", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "", 
+   "fieldname": "payable_account", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Payable Account", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Account", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "cost_center", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Employees Email Address", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Cost Center", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 1, 
+   "columns": 0, 
+   "fieldname": "more_details", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "More Details", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "Draft", 
+   "fieldname": "status", 
+   "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 1, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Status", 
+   "length": 0, 
+   "no_copy": 1, 
+   "options": "Draft\nPaid\nUnpaid\nSubmitted\nCancelled", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "amended_from", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -663,7 +893,7 @@
  ], 
  "hide_heading": 0, 
  "hide_toolbar": 0, 
- "icon": "fa fa-money", 
+ "icon": "icon-money", 
  "idx": 1, 
  "image_view": 0, 
  "in_create": 0, 
@@ -673,10 +903,11 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-11-07 05:52:48.548201", 
+ "modified": "2017-01-19 18:15:35.968292", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Expense Claim", 
+ "name_case": "Title Case", 
  "owner": "harshada@webnotestech.com", 
  "permissions": [
   {
@@ -689,7 +920,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -710,7 +940,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -732,7 +961,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -754,7 +982,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -775,5 +1002,6 @@
  "sort_order": "DESC", 
  "timeline_field": "employee", 
  "title_field": "title", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index efdee97..957753a 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -4,13 +4,17 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.utils import get_fullname, flt
+from frappe.utils import get_fullname, flt, cstr
 from frappe.model.document import Document
 from erpnext.hr.utils import set_employee_name
+from erpnext.accounts.party import get_party_account
+from erpnext.accounts.general_ledger import make_gl_entries
+from erpnext.accounts.doctype.sales_invoice.sales_invoice import get_bank_cash_account
+from erpnext.controllers.accounts_controller import AccountsController
 
 class InvalidExpenseApproverError(frappe.ValidationError): pass
 
-class ExpenseClaim(Document):
+class ExpenseClaim(AccountsController):
 	def get_feed(self):
 		return _("{0}: From {0} for {1}").format(self.approval_status,
 			self.employee_name, self.total_claimed_amount)
@@ -21,16 +25,53 @@
 		self.calculate_total_amount()
 		set_employee_name(self)
 		self.set_expense_account()
+		self.set_payable_account()
+		self.set_cost_center()
+		self.set_status()
 		if self.task and not self.project:
 			self.project = frappe.db.get_value("Task", self.task, "project")
 
+	def set_status(self):
+		self.status = {
+			"0": "Draft",
+			"1": "Submitted",
+			"2": "Cancelled"
+		}[cstr(self.docstatus or 0)]
+
+		if self.total_sanctioned_amount == self.total_amount_reimbursed and self.docstatus == 1:
+			self.status = "Paid"
+		elif self.docstatus == 1:
+			self.status = "Unpaid"
+
+	def set_payable_account(self):
+		if not self.payable_account and not self.is_paid:
+			self.payable_account = frappe.db.get_value("Company", self.company, "default_payable_account")
+
+	def set_cost_center(self):
+		if not self.cost_center:
+			self.cost_center = frappe.db.get_value('Company', self.company, 'cost_center')
+
 	def on_submit(self):
 		if self.approval_status=="Draft":
 			frappe.throw(_("""Approval Status must be 'Approved' or 'Rejected'"""))
+
 		self.update_task_and_project()
+		self.make_gl_entries()
+
+		if self.is_paid:
+			update_reimbursed_amount(self)
+
+		self.set_status()
 
 	def on_cancel(self):
 		self.update_task_and_project()
+		if self.payable_account:
+			self.make_gl_entries(cancel=True)
+
+		if self.is_paid:
+			update_reimbursed_amount(self)
+
+		self.set_status()
 
 	def update_task_and_project(self):
 		if self.task:
@@ -38,6 +79,79 @@
 		elif self.project:
 			frappe.get_doc("Project", self.project).update_project()
 
+	def make_gl_entries(self, cancel = False):
+		if flt(self.total_sanctioned_amount) > 0:
+			gl_entries = self.get_gl_entries()
+			make_gl_entries(gl_entries, cancel)
+
+	def get_gl_entries(self):
+		gl_entry = []
+		self.validate_account_details()
+		
+		# payable entry
+		gl_entry.append(
+			self.get_gl_dict({
+				"account": self.payable_account,
+				"credit": self.total_sanctioned_amount,
+				"credit_in_account_currency": self.total_sanctioned_amount,
+				"against": ",".join([d.default_account for d in self.expenses]),
+				"party_type": "Employee",
+				"party": self.employee,
+				"against_voucher_type": self.doctype,
+				"against_voucher": self.name
+			})
+		)
+
+		# expense entries
+		for data in self.expenses:
+			gl_entry.append(
+				self.get_gl_dict({
+					"account": data.default_account,
+					"debit": data.sanctioned_amount,
+					"debit_in_account_currency": data.sanctioned_amount,
+					"against": self.employee,
+					"cost_center": self.cost_center
+				})
+			)
+
+		if self.is_paid:
+			# payment entry
+			payment_account = get_bank_cash_account(self.mode_of_payment, self.company).get("account")
+			gl_entry.append(
+				self.get_gl_dict({
+					"account": payment_account,
+					"credit": self.total_sanctioned_amount,
+					"credit_in_account_currency": self.total_sanctioned_amount,
+					"against": self.employee
+				})
+			)
+
+			gl_entry.append(
+				self.get_gl_dict({
+					"account": self.payable_account,
+					"party_type": "Employee",
+					"party": self.employee,
+					"against": payment_account,
+					"debit": self.total_sanctioned_amount,
+					"debit_in_account_currency": self.total_sanctioned_amount,
+					"against_voucher": self.name,
+					"against_voucher_type": self.doctype,
+				})
+			)
+
+		return gl_entry
+
+	def validate_account_details(self):
+		if not self.cost_center:
+			frappe.throw(_("Cost center is required to book an expense claim"))
+
+		if not self.payable_account:
+			frappe.throw(_("Please set default payable account in the employee {0}").format(self.employee))
+
+		if self.is_paid:
+			if not self.mode_of_payment:
+				frappe.throw(_("Mode of payment is required to make a payment").format(self.employee))
+
 	def calculate_total_amount(self):
 		self.total_claimed_amount = 0
 		self.total_sanctioned_amount = 0
@@ -64,7 +178,18 @@
 		for expense in self.expenses:
 			if not expense.default_account:
 				expense.default_account = get_expense_claim_account(expense.expense_type, self.company)["account"]
-		
+
+def update_reimbursed_amount(doc):
+	amt = frappe.db.sql("""select ifnull(sum(debit_in_account_currency), 0) as amt 
+		from `tabGL Entry` where against_voucher_type = 'Expense Claim' and against_voucher = %s
+		and party = %s """, (doc.name, doc.employee) ,as_dict=1)[0].amt
+
+	doc.total_amount_reimbursed = amt
+	frappe.db.set_value("Expense Claim", doc.name , "total_amount_reimbursed", amt)
+
+	doc.set_status()
+	frappe.db.set_value("Expense Claim", doc.name , "status", doc.status)
+
 @frappe.whitelist()
 def get_expense_approver(doctype, txt, searchfield, start, page_len, filters):
 	return frappe.db.sql("""
@@ -80,23 +205,26 @@
 
 	expense_claim = frappe.get_doc("Expense Claim", docname)
 	default_bank_cash_account = get_default_bank_cash_account(expense_claim.company, "Bank")
+	if not default_bank_cash_account:
+		default_bank_cash_account = get_default_bank_cash_account(expense_claim.company, "Cash")
 
 	je = frappe.new_doc("Journal Entry")
 	je.voucher_type = 'Bank Entry'
 	je.company = expense_claim.company
 	je.remark = 'Payment against Expense Claim: ' + docname;
 
-	for expense in expense_claim.expenses:
-		je.append("accounts", {
-			"account": expense.default_account,
-			"debit_in_account_currency": expense.sanctioned_amount,
-			"reference_type": "Expense Claim",
-			"reference_name": expense_claim.name
-		})
+	je.append("accounts", {
+		"account": expense_claim.payable_account,
+		"debit_in_account_currency": flt(expense_claim.total_sanctioned_amount - expense_claim.total_amount_reimbursed),
+		"reference_type": "Expense Claim",
+		"party_type": "Employee",
+		"party": expense_claim.employee,
+		"reference_name": expense_claim.name
+	})
 
 	je.append("accounts", {
 		"account": default_bank_cash_account.account,
-		"credit_in_account_currency": expense_claim.total_sanctioned_amount,
+		"credit_in_account_currency": flt(expense_claim.total_sanctioned_amount - expense_claim.total_amount_reimbursed),
 		"reference_type": "Expense Claim",
 		"reference_name": expense_claim.name,
 		"balance": default_bank_cash_account.balance,
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim_list.js b/erpnext/hr/doctype/expense_claim/expense_claim_list.js
index 54073ed..7cff8e2 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim_list.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim_list.js
@@ -2,7 +2,10 @@
 	add_fields: ["approval_status", "total_claimed_amount", "docstatus"],
 	filters:[["approval_status","!=", "Rejected"]],
 	get_indicator: function(doc) {
-		return [__(doc.approval_status), frappe.utils.guess_colour(doc.approval_status),
-			"approval_status,=," + doc.approval_status];
+		if(doc.status == "Paid") {
+			return [__("Paid"), "green", "status,=,'Paid'"];
+		} else {
+			return [__("Unpaid"), "orange"];
+		}
 	}
 };
diff --git a/erpnext/hr/doctype/expense_claim/test_expense_claim.py b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
index 59d686e..20df7be 100644
--- a/erpnext/hr/doctype/expense_claim/test_expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
@@ -4,6 +4,8 @@
 
 import frappe
 import unittest
+from frappe.utils import random_string, nowdate
+from erpnext.hr.doctype.expense_claim.expense_claim import make_bank_entry
 
 test_records = frappe.get_test_records('Expense Claim')
 
@@ -11,8 +13,6 @@
 	def test_total_expense_claim_for_project(self):
 		frappe.db.sql("""delete from `tabTask` where project = "_Test Project 1" """)
 		frappe.db.sql("""delete from `tabProject` where name = "_Test Project 1" """)
-		frappe.db.sql("""delete from `tabExpense Claim`""")
-		frappe.db.sql("""delete from `tabExpense Claim Detail`""")
 
 		frappe.get_doc({
 			"project_name": "_Test Project 1",
@@ -22,15 +22,17 @@
 		}).save()
 
 		task_name = frappe.db.get_value("Task", {"project": "_Test Project 1"})
+		payable_account = get_payable_account("Wind Power LLC")
 
 		expense_claim = frappe.get_doc({
 			 "doctype": "Expense Claim",
 			 "employee": "_T-Employee-0001",
+			 "payable_account": payable_account,
 			 "approval_status": "Approved",
 			 "project": "_Test Project 1",
 			 "task": task_name,
 			 "expenses":
-			 	[{ "expense_type": "Food", "default_account": "Entertainment Expenses - _TC", "claim_amount": 300, "sanctioned_amount": 200 }]
+			 	[{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 300, "sanctioned_amount": 200 }]
 		})
 		expense_claim.submit()
 
@@ -44,7 +46,7 @@
 			 "project": "_Test Project 1",
 			 "task": task_name,
 			 "expenses":
-			 	[{ "expense_type": "Food", "default_account": "Entertainment Expenses - _TC", "claim_amount": 600, "sanctioned_amount": 500 }]
+			 	[{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 600, "sanctioned_amount": 500 }]
 		})
 		expense_claim2.submit()
 
@@ -52,6 +54,64 @@
 		self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 700)
 
 		expense_claim2.cancel()
+		frappe.delete_doc("Expenses Claim", expense_claim2.name)
 
 		self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 200)
 		self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 200)
+		
+	def test_expense_claim_status(self):
+		payable_account = get_payable_account("Wind Power LLC")
+		expense_claim = frappe.get_doc({
+			 "doctype": "Expense Claim",
+			 "employee": "_T-Employee-0001",
+			 "payable_account": payable_account,
+			 "approval_status": "Approved",
+			 "expenses":
+			 	[{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 300, "sanctioned_amount": 200 }]
+		})
+		expense_claim.submit()
+
+		je_dict = make_bank_entry(expense_claim.name)
+		je = frappe.get_doc(je_dict)
+		je.posting_date = nowdate()
+		je.cheque_no = random_string(5)
+		je.cheque_date = nowdate()
+		je.submit()
+
+		expense_claim = frappe.get_doc("Expense Claim", expense_claim.name)
+		self.assertEqual(expense_claim.status, "Paid")
+		
+		je.cancel()
+		expense_claim = frappe.get_doc("Expense Claim", expense_claim.name)
+		self.assertEqual(expense_claim.status, "Unpaid")
+
+	def test_expense_claim_gl_entry(self):
+		payable_account = get_payable_account("Wind Power LLC")
+		expense_claim = frappe.get_doc({
+			 "doctype": "Expense Claim",
+			 "employee": "_T-Employee-0001",
+			 "payable_account": payable_account,
+			 "approval_status": "Approved",
+			 "expenses":
+			 	[{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 300, "sanctioned_amount": 200 }]
+		})
+		expense_claim.submit()
+		
+		gl_entries = frappe.db.sql("""select account, debit, credit
+			from `tabGL Entry` where voucher_type='Expense Claim' and voucher_no=%s
+			order by account asc""", expense_claim.name, as_dict=1)
+
+		self.assertTrue(gl_entries)
+
+		expected_values = dict((d[0], d) for d in [
+			[payable_account, 0.0, 200.0],
+			["Travel Expenses - WP", 200.0, 0.0]
+		])
+
+		for gle in gl_entries:
+			self.assertEquals(expected_values[gle.account][0], gle.account)
+			self.assertEquals(expected_values[gle.account][1], gle.debit)
+			self.assertEquals(expected_values[gle.account][2], gle.credit)
+
+def get_payable_account(company):
+	return frappe.db.get_value('Company', company, 'default_payable_account')
diff --git a/erpnext/hr/doctype/hr_settings/hr_settings.json b/erpnext/hr/doctype/hr_settings/hr_settings.json
index e9d2098..5281045 100644
--- a/erpnext/hr/doctype/hr_settings/hr_settings.json
+++ b/erpnext/hr/doctype/hr_settings/hr_settings.json
@@ -22,6 +22,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Employee Settings", 
    "length": 0, 
    "no_copy": 0, 
@@ -50,6 +51,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Retirement Age", 
    "length": 0, 
    "no_copy": 0, 
@@ -79,10 +81,11 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Employee Records to be created by", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Naming Series\nEmployee Number", 
+   "options": "Naming Series\nEmployee Number\nFull Name", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -106,6 +109,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -133,6 +137,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Stop Birthday Reminders", 
    "length": 0, 
    "no_copy": 0, 
@@ -159,6 +164,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Maintain Billing Hours and Working Hours Same on Timesheet", 
    "length": 0, 
    "no_copy": 0, 
@@ -186,6 +192,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Payroll Settings", 
    "length": 0, 
    "no_copy": 0, 
@@ -213,6 +220,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Include holidays in Total no. of Working Days", 
    "length": 0, 
    "no_copy": 0, 
@@ -241,6 +249,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Email Salary Slip to Employee", 
    "length": 0, 
    "no_copy": 0, 
@@ -268,6 +277,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Max working hours against Timesheet", 
    "length": 0, 
    "no_copy": 0, 
@@ -295,8 +305,8 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-12-21 18:52:03.633251", 
- "modified_by": "Administrator", 
+ "modified": "2017-01-16 14:01:31.183485", 
+ "modified_by": "anastasiadis.st00@gmail.com", 
  "module": "HR", 
  "name": "HR Settings", 
  "owner": "Administrator", 
@@ -327,5 +337,6 @@
  "read_only": 0, 
  "read_only_onload": 0, 
  "sort_order": "ASC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.json b/erpnext/hr/doctype/job_applicant/job_applicant.json
index 05e3c46..3675e5b 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.json
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.json
@@ -53,7 +53,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Email Id", 
+   "label": "Email Address", 
    "length": 0, 
    "no_copy": 0, 
    "options": "Email", 
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.py b/erpnext/hr/doctype/job_applicant/job_applicant.py
index 7a91e2b..66a060c 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.py
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.py
@@ -39,5 +39,5 @@
 				where email_id=%s and name!=%s""", (self.email_id, self.name))
 
 			if names:
-				frappe.throw(_("Email id must be unique, already exists for {0}").format(comma_and(names)), frappe.DuplicateEntryError)
+				frappe.throw(_("Email Address must be unique, already exists for {0}").format(comma_and(names)), frappe.DuplicateEntryError)
 
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index fbf86e1..84c14c9 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -25,7 +25,7 @@
 
 	def validate(self):
 		if not getattr(self, "__islocal", None) and frappe.db.exists(self.doctype, self.name):
-			self.previous_doc = frappe.db.get_value(self.doctype, self.name, "*", as_dict=True)
+			self.previous_doc = frappe.get_value(self.doctype, self.name, "leave_approver", as_dict=True)
 		else:
 			self.previous_doc = None
 
@@ -46,14 +46,10 @@
 				self.status == "Open" and self.previous_doc.leave_approver != self.leave_approver):
 			# notify leave approver about creation
 			self.notify_leave_approver()
-		elif self.previous_doc and \
-				self.previous_doc.status == "Open" and self.status == "Rejected":
-			# notify employee about rejection
-			self.notify_employee(self.status)
 
 	def on_submit(self):
-		if self.status != "Approved":
-			frappe.throw(_("Only Leave Applications with status 'Approved' can be submitted"))
+		if self.status == "Open":
+			frappe.throw(_("Only Leave Applications with status 'Approved' and 'Rejected' can be submitted"))
 
 		self.validate_back_dated_application()
 
@@ -216,7 +212,7 @@
 				LeaveApproverIdentityError)
 
 	def validate_attendance(self):
-		attendance = frappe.db.sql("""select name from `tabAttendance` where employee = %s and (att_date between %s and %s)
+		attendance = frappe.db.sql("""select name from `tabAttendance` where employee = %s and (attendance_date between %s and %s)
 					and status = "Present" and docstatus = 1""",
 			(self.employee, self.from_date, self.to_date))
 		if attendance:
@@ -234,13 +230,18 @@
 			else:
 				name = self.name
 
-			return (_("Leave Application") + ": %s - %s") % (name, _(status))
+			message = "Leave Application: {name}".format(name=name)+"<br>"
+			message += "Leave Type: {leave_type}".format(leave_type=self.leave_type)+"<br>"
+			message += "From Date: {from_date}".format(from_date=self.from_date)+"<br>"
+			message += "To Date: {to_date}".format(to_date=self.to_date)+"<br>"
+			message += "Status: {status}".format(status=_(status))
+			return message
 
 		self.notify({
 			# for post in messages
 			"message": _get_message(url=True),
 			"message_to": employee.user_id,
-			"subject": _get_message(),
+			"subject": (_("Leave Application") + ": %s - %s") % (self.name, _(status))
 		})
 
 	def notify_leave_approver(self):
@@ -252,8 +253,12 @@
 			if url:
 				name = get_link_to_form(self.doctype, self.name)
 				employee_name = get_link_to_form("Employee", self.employee, label=employee_name)
-
-			return (_("New Leave Application") + ": %s - " + _("Employee") + ": %s") % (name, employee_name)
+			message = (_("Leave Application") + ": %s") % (name)+"<br>"
+			message += (_("Employee") + ": %s") % (employee_name)+"<br>"
+			message += (_("Leave Type") + ": %s") % (self.leave_type)+"<br>"
+			message += (_("From Date") + ": %s") % (self.from_date)+"<br>"
+			message += (_("To Date") + ": %s") % (self.to_date)
+			return message
 
 		self.notify({
 			# for post in messages
@@ -261,7 +266,7 @@
 			"message_to": self.leave_approver,
 
 			# for email
-			"subject": _get_message()
+			"subject": (_("New Leave Application") + ": %s - " + _("Employee") + ": %s") % (self.name, cstr(employee.employee_name))
 		})
 
 	def notify(self, args):
@@ -270,6 +275,7 @@
 		post(**{"txt": args.message, "contact": args.message_to, "subject": args.subject,
 			"notify": cint(self.follow_via_email)})
 
+
 @frappe.whitelist()
 def get_approvers(doctype, txt, searchfield, start, page_len, filters):
 	if not filters.get("employee"):
diff --git a/erpnext/fleet_management/doctype/__init__.py b/erpnext/hr/doctype/loan_type/__init__.py
similarity index 100%
rename from erpnext/fleet_management/doctype/__init__.py
rename to erpnext/hr/doctype/loan_type/__init__.py
diff --git a/erpnext/hr/doctype/loan_type/loan_type.js b/erpnext/hr/doctype/loan_type/loan_type.js
new file mode 100644
index 0000000..72f5775
--- /dev/null
+++ b/erpnext/hr/doctype/loan_type/loan_type.js
@@ -0,0 +1,7 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Loan Type', {
+	refresh: function(frm) {
+	}
+});
diff --git a/erpnext/hr/doctype/loan_type/loan_type.json b/erpnext/hr/doctype/loan_type/loan_type.json
new file mode 100644
index 0000000..f9441ea
--- /dev/null
+++ b/erpnext/hr/doctype/loan_type/loan_type.json
@@ -0,0 +1,230 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "autoname": "field:loan_name", 
+ "beta": 0, 
+ "creation": "2016-12-02 10:41:40.732843", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "editable_grid": 1, 
+ "engine": "InnoDB", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "loan_name", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Loan Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "maximum_loan_amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Maximum Loan Amount", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "rate_of_interest", 
+   "fieldtype": "Percent", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Rate of Interest (%) Yearly", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "", 
+   "fieldname": "disabled", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Disabled", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "description", 
+   "fieldtype": "Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Description", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2016-12-29 15:54:17.716285", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "Loan Type", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "is_custom": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "HR Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 0, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/loan_type/loan_type.py b/erpnext/hr/doctype/loan_type/loan_type.py
new file mode 100644
index 0000000..2714e20
--- /dev/null
+++ b/erpnext/hr/doctype/loan_type/loan_type.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class LoanType(Document):
+	pass
diff --git a/erpnext/schools/doctype/assessment/test_assessment.py b/erpnext/hr/doctype/loan_type/test_loan_type.py
similarity index 65%
copy from erpnext/schools/doctype/assessment/test_assessment.py
copy to erpnext/hr/doctype/loan_type/test_loan_type.py
index ce06007..078e11e 100644
--- a/erpnext/schools/doctype/assessment/test_assessment.py
+++ b/erpnext/hr/doctype/loan_type/test_loan_type.py
@@ -6,7 +6,7 @@
 import frappe
 import unittest
 
-# test_records = frappe.get_test_records('Assessment')
+# test_records = frappe.get_test_records('Loan Type')
 
-class TestAssessment(unittest.TestCase):
+class TestLoanType(unittest.TestCase):
 	pass
diff --git a/erpnext/hr/doctype/process_payroll/process_payroll.py b/erpnext/hr/doctype/process_payroll/process_payroll.py
index 8448fa2..7bfde1c 100644
--- a/erpnext/hr/doctype/process_payroll/process_payroll.py
+++ b/erpnext/hr/doctype/process_payroll/process_payroll.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.utils import cint, flt, nowdate, add_days, getdate
+from frappe.utils import cint, flt, nowdate, add_days, getdate, fmt_money
 from frappe import _
 from erpnext.accounts.utils import get_fiscal_year
 
@@ -103,17 +103,23 @@
 						"posting_date": self.posting_date
 					})
 					ss.insert()
-					ss_list.append(ss.name)
+					ss_dict = {}
+					ss_dict["Employee Name"] = ss.employee_name
+					ss_dict["Total Pay"] = fmt_money(ss.rounded_total,currency = frappe.defaults.get_global_default("currency"))
+					ss_dict["Salary Slip"] = self.format_as_links(ss.name)[0]
+					ss_list.append(ss_dict)
 		return self.create_log(ss_list)
 
 
 	def create_log(self, ss_list):
-		log = "<p>" + _("No employee for the above selected criteria OR salary slip already created") + "</p>"
-		if ss_list:
-			log = "<b>" + _("Salary Slip Created") + "</b>\
-			<br><br>%s" % '<br>'.join(self.format_as_links(ss_list))
-		return log
-
+		if not ss_list:
+			log = "<p>" + _("No employee for the above selected criteria OR salary slip already created") + "</p>"
+		else:
+			log = frappe.render_template("templates/includes/salary_slip_log.html",
+						dict(ss_list=ss_list,
+							keys=sorted(ss_list[0].keys()),
+							title=_('Created Salary Slips')))
+			return log
 
 	def get_sal_slip_list(self, ss_status, as_dict=False):
 		"""
@@ -136,44 +142,50 @@
 		self.check_permission('write')
 
 		ss_list = self.get_sal_slip_list(ss_status=0)
+		submitted_ss = []
 		not_submitted_ss = []
 		for ss in ss_list:
 			ss_obj = frappe.get_doc("Salary Slip",ss[0])
+			ss_dict = {}
+			ss_dict["Employee Name"] = ss_obj.employee_name
+			ss_dict["Total Pay"] = fmt_money(ss_obj.rounded_total,currency = frappe.defaults.get_global_default("currency"))
+			ss_dict["Salary Slip"] = self.format_as_links(ss_obj.name)[0]
 			if ss_obj.net_pay<0:
-				not_submitted_ss.append(ss[0])
+				not_submitted_ss.append(ss_dict)
 			else:
 				try:
 					ss_obj.submit()
+					submitted_ss.append(ss_dict)
 				except frappe.ValidationError:
-					not_submitted_ss.append(ss[0])
+					not_submitted_ss.append(ss_dict)
 
-		return self.create_submit_log(ss_list, not_submitted_ss)
+		return self.create_submit_log(submitted_ss, not_submitted_ss)
 
-	def create_submit_log(self, all_ss, not_submitted_ss):
+	def create_submit_log(self, submitted_ss, not_submitted_ss):
 		log = ''
-		if not all_ss:
+		if not submitted_ss and not not_submitted_ss:
 			log = "No salary slip found to submit for the above selected criteria"
-		else:
-			all_ss = [d[0] for d in all_ss]
 
-		submitted_ss = self.format_as_links(list(set(all_ss) - set(not_submitted_ss)))
 		if submitted_ss:
-			log = """
-				<b>Salary Slips Submitted:</b> <br><br>%s
-				""" % ('<br>'.join(submitted_ss))
+			log = frappe.render_template("templates/includes/salary_slip_log.html",
+					dict(ss_list=submitted_ss,
+						keys=sorted(submitted_ss[0].keys()),
+						title=_('Submitted Salary Slips')))
 
 		if not_submitted_ss:
+			log += frappe.render_template(self.get_log_template(),
+					dict(ss_list=not_submitted_ss,
+						keys=sorted(not_submitted_ss[0].keys()),
+						title=_('Not Submitted Salary Slips')))
 			log += """
-				<b>Not Submitted Salary Slips: </b>\
-				<br><br> %s <br><br> \
 				Possible reasons: <br>\
 				1. Net pay is less than 0 <br>
-				2. Company email id specified in employee master is not valid. <br> \
-			"""% ('<br>'.join(not_submitted_ss))
+				2. Company Email Address specified in employee master is not valid. <br>
+				"""
 		return log
 
-	def format_as_links(self, ss_list):
-		return ['<a href="#Form/Salary Slip/{0}">{0}</a>'.format(s) for s in ss_list]
+	def format_as_links(self, salary_slip):
+		return ['<a href="#Form/Salary Slip/{0}">{0}</a>'.format(salary_slip)]
 
 
 	def get_total_salary(self):
@@ -284,15 +296,16 @@
 			frappe.db.set_value("Salary Slip", ss_obj.name, "journal_entry", jv_name)
 
 	def set_start_end_dates(self):
-		self.update(get_start_end_dates(self.payroll_frequency, self.start_date or self.posting_date))
+		self.update(get_start_end_dates(self.payroll_frequency, 
+			self.start_date or self.posting_date, self.company))
 
 
 @frappe.whitelist()
-def get_start_end_dates(payroll_frequency, start_date=None):
+def get_start_end_dates(payroll_frequency, start_date=None, company=None):
 	'''Returns dict of start and end dates for given payroll frequency based on start_date'''
 
 	if payroll_frequency == "Monthly" or payroll_frequency == "Bimonthly" or payroll_frequency == "":
-		fiscal_year = get_fiscal_year(start_date)[0]
+		fiscal_year = get_fiscal_year(start_date, company=company)[0]
 		month = "%02d" % getdate(start_date).month
 		m = get_month_details(fiscal_year, month)
 		if payroll_frequency == "Bimonthly":
diff --git a/erpnext/hr/report/monthly_salary_register/__init__.py b/erpnext/hr/doctype/repayment_schedule/__init__.py
similarity index 100%
copy from erpnext/hr/report/monthly_salary_register/__init__.py
copy to erpnext/hr/doctype/repayment_schedule/__init__.py
diff --git a/erpnext/hr/doctype/repayment_schedule/repayment_schedule.json b/erpnext/hr/doctype/repayment_schedule/repayment_schedule.json
new file mode 100644
index 0000000..3a0dfd3
--- /dev/null
+++ b/erpnext/hr/doctype/repayment_schedule/repayment_schedule.json
@@ -0,0 +1,179 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "beta": 0, 
+ "creation": "2016-12-20 15:32:25.078334", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "editable_grid": 1, 
+ "engine": "InnoDB", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "payment_date", 
+   "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Payment Date", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "principal_amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Principal Amount", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "interest_amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Interest Amount", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "total_payment", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Total Payment", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "balance_loan_amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Balance Loan Amount", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 1, 
+ "max_attachments": 0, 
+ "modified": "2017-01-09 12:00:10.818772", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "Repayment Schedule", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_changes": 1, 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/repayment_schedule/repayment_schedule.py b/erpnext/hr/doctype/repayment_schedule/repayment_schedule.py
new file mode 100644
index 0000000..8abee5e
--- /dev/null
+++ b/erpnext/hr/doctype/repayment_schedule/repayment_schedule.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class RepaymentSchedule(Document):
+	pass
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index 8b0dd16..0262259 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -110,6 +110,7 @@
 	calculate_earning_total(doc, dt, dn, true);
 	calculate_ded_total(doc, dt, dn, true);
 	calculate_net_pay(doc, dt, dn);
+	refresh_many(['amount','gross_pay', 'rounded_total', 'net_pay', 'loan_repayment']);
 };
 
 // Calculate earning total
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.json b/erpnext/hr/doctype/salary_slip/salary_slip.json
index e558d73..7d5dbe9 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.json
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.json
@@ -1266,7 +1266,35 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "description": "Gross Pay + Arrear Amount +Encashment Amount - Total Deduction", 
+   "fieldname": "loan_repayment", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Loan Repayment", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "description": "Gross Pay + Arrear Amount + Encashment Amount - Total Deduction - Loan Repayment", 
    "fieldname": "net_pay", 
    "fieldtype": "Currency", 
    "hidden": 0, 
@@ -1362,7 +1390,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-12-14 08:26:31.400930", 
+ "modified": "2017-01-09 12:37:03.802501", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Slip", 
@@ -1413,7 +1441,7 @@
   }, 
   {
    "amend": 0, 
-   "apply_user_permissions": 0, 
+   "apply_user_permissions": 1, 
    "cancel": 0, 
    "create": 0, 
    "delete": 0, 
@@ -1430,6 +1458,7 @@
    "set_user_permissions": 0, 
    "share": 0, 
    "submit": 0, 
+   "user_permission_doctypes": "[\"Employee\"]", 
    "write": 0
   }
  ], 
@@ -1440,5 +1469,6 @@
  "sort_order": "DESC", 
  "timeline_field": "employee", 
  "title_field": "employee_name", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index eeec6e8..9d57a5d 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -89,8 +89,8 @@
 		    frappe.throw(_("Name error: {0}".format(err)))
 		except SyntaxError as err:
 		    frappe.throw(_("Syntax error in formula or condition: {0}".format(err)))
-		except:
-		    frappe.throw(_("Error in formula or condition"))
+		except Exception, e:
+		    frappe.throw(_("Error in formula or condition: {0}".format(e)))
 		    raise
 
 	def get_data_for_eval(self):
@@ -99,7 +99,7 @@
 
 		for d in self._salary_structure_doc.employees:
 			if d.employee == self.employee:
-				data.base, data.variable = d.base, d.variable
+				data.update(frappe.get_doc("Salary Structure Employee", {"employee": self.employee}).as_dict())
 
 		data.update(frappe.get_doc("Employee", self.employee).as_dict())
 		data.update(self.as_dict())
@@ -108,7 +108,6 @@
 		salary_components = frappe.get_all("Salary Component", fields=["salary_component_abbr"])
 		for salary_component in salary_components:
 			data[salary_component.salary_component_abbr] = 0
-
 		return data
 
 
@@ -284,6 +283,7 @@
 				where t2.name = t1.leave_type
 				and t2.is_lwp = 1
 				and t1.docstatus = 1
+				and t1.status = 'Approved'
 				and t1.employee = %(employee)s
 				and CASE WHEN t2.include_holiday != 1 THEN %(dt)s not in ('{0}') and %(dt)s between from_date and to_date
 				WHEN t2.include_holiday THEN %(dt)s between from_date and to_date
@@ -329,11 +329,21 @@
 
 		self.sum_components('earnings', 'gross_pay')
 		self.sum_components('deductions', 'total_deduction')
+		
+		self.set_loan_repayment()
 
-		self.net_pay = flt(self.gross_pay) - flt(self.total_deduction)
+		self.net_pay = flt(self.gross_pay) - (flt(self.total_deduction) + flt(self.loan_repayment))
 		self.rounded_total = rounded(self.net_pay,
 			self.precision("net_pay") if disable_rounded_total else 0)
 
+	def set_loan_repayment(self):
+		employee_loan = frappe.db.sql("""select sum(total_payment) as loan_repayment from `tabRepayment Schedule`
+						where payment_date between %s and %s and parent in (select name from `tabEmployee Loan`
+						where employee = %s and repay_from_salary = 1 and docstatus = 1)""",
+						(self.start_date, self.end_date, self.employee), as_dict=True)
+		if employee_loan:
+			self.loan_repayment = employee_loan[0].loan_repayment
+
 	def on_submit(self):
 		if self.net_pay < 0:
 			frappe.throw(_("Net Pay cannot be less than 0"))
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index 54faa64..9999f1e 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -7,7 +7,7 @@
 import erpnext
 import calendar
 from erpnext.accounts.utils import get_fiscal_year
-from frappe.utils import getdate, nowdate, add_days
+from frappe.utils import getdate, nowdate, add_days, flt
 from erpnext.hr.doctype.salary_structure.salary_structure import make_salary_slip
 from erpnext.hr.doctype.process_payroll.test_process_payroll import get_salary_component_account
 from erpnext.hr.doctype.process_payroll.process_payroll import get_month_details
@@ -24,7 +24,6 @@
 
 		frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Slip Test Holiday List")
 
-
 	def tearDown(self):
 		frappe.db.set_value("HR Settings", None, "include_holidays_in_total_working_days", 0)
 		frappe.set_user("Administrator")
@@ -40,12 +39,12 @@
 
 		self.assertEquals(ss.total_working_days, no_of_days[0])
 		self.assertEquals(ss.payment_days, no_of_days[0])
-		self.assertEquals(ss.earnings[0].amount, 5000)
+		self.assertEquals(ss.earnings[0].amount, 25000)
 		self.assertEquals(ss.earnings[1].amount, 3000)
 		self.assertEquals(ss.deductions[0].amount, 5000)
-		self.assertEquals(ss.deductions[1].amount, 2500)
-		self.assertEquals(ss.gross_pay, 10500)
-		self.assertEquals(ss.net_pay, 3000)
+		self.assertEquals(ss.deductions[1].amount, 5000)
+		self.assertEquals(ss.gross_pay, 40500)
+		self.assertEquals(ss.net_pay, 29918)
 
 	def test_salary_slip_with_holidays_excluded(self):
 		no_of_days = self.get_no_of_days()
@@ -58,13 +57,13 @@
 
 		self.assertEquals(ss.total_working_days, no_of_days[0] - no_of_days[1])
 		self.assertEquals(ss.payment_days, no_of_days[0] - no_of_days[1])
-		self.assertEquals(ss.earnings[0].amount, 5000)
-		self.assertEquals(ss.earnings[0].default_amount, 5000)
+		self.assertEquals(ss.earnings[0].amount, 25000)
+		self.assertEquals(ss.earnings[0].default_amount, 25000)
 		self.assertEquals(ss.earnings[1].amount, 3000)
 		self.assertEquals(ss.deductions[0].amount, 5000)
-		self.assertEquals(ss.deductions[1].amount, 2500)
-		self.assertEquals(ss.gross_pay, 10500)
-		self.assertEquals(ss.net_pay, 3000)
+		self.assertEquals(ss.deductions[1].amount, 5000)
+		self.assertEquals(ss.gross_pay, 40500)
+		self.assertEquals(ss.net_pay, 29918)
 
 	def test_payment_days(self):
 		no_of_days = self.get_no_of_days()
@@ -76,7 +75,7 @@
 		if getdate(nowdate()).day >= 15:
 			date_of_joining = getdate(add_days(nowdate(),-10))
 			relieving_date = getdate(add_days(nowdate(),-10))
-		elif getdate(nowdate()).day < 15 and getdate(nowdate()).day > 5:
+		elif getdate(nowdate()).day < 15 and getdate(nowdate()).day >= 5:
 			date_of_joining = getdate(add_days(nowdate(),-3))
 			relieving_date = getdate(add_days(nowdate(),-3))
 		elif getdate(nowdate()).day < 5 and not getdate(nowdate()).day == 1:
@@ -130,11 +129,25 @@
 		ss = frappe.get_doc("Salary Slip",
 			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
 		ss.submit()
+
 		email_queue = frappe.db.sql("""select name from `tabEmail Queue`""")
 		self.assertTrue(email_queue)
 
+	def test_loan_repayment_salary_slip(self):
+		from erpnext.hr.doctype.employee_loan.test_employee_loan import create_loan_type, create_employee_loan
+		employee = self.make_employee("test_employee@salary.com")
+		create_loan_type("Car Loan", 500000, 6.4)
+		employee_loan = create_employee_loan(employee, "Car Loan", 11000, "Repay Over Number of Periods", 20)
+		employee_loan.repay_from_salary = 1
+		employee_loan.submit()
+		ss = frappe.get_doc("Salary Slip",
+			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
+		ss.submit()
+		self.assertEquals(ss.loan_repayment, 582)
+		self.assertEquals(ss.net_pay, (flt(ss.gross_pay) - (flt(ss.total_deduction) + flt(ss.loan_repayment))))
+
 	def test_payroll_frequency(self):
-		fiscal_year = get_fiscal_year(nowdate())[0]
+		fiscal_year = get_fiscal_year(nowdate(), company="_Test Company")[0]
 		month = "%02d" % getdate(nowdate()).month
 		m = get_month_details(fiscal_year, month)
 
@@ -167,7 +180,7 @@
 			}).insert()
 
 		if not frappe.db.get_value("Employee", {"user_id": user}):
-			frappe.get_doc({
+			employee = frappe.get_doc({
 				"doctype": "Employee",
 				"naming_series": "EMP-",
 				"employee_name": user,
@@ -183,9 +196,12 @@
 				"status": "Active",
 				"employment_type": "Intern"
 			}).insert()
+			return employee.name
+		else:
+			return frappe.get_value("Employee", {"employee_name":user}, "name")
 
 	def make_holiday_list(self):
-		fiscal_year = get_fiscal_year(nowdate())
+		fiscal_year = get_fiscal_year(nowdate(), company="_Test Company")
 		if not frappe.db.get_value("Holiday List", "Salary Slip Test Holiday List"):
 			holiday_list = frappe.get_doc({
 				"doctype": "Holiday List",
@@ -278,7 +294,7 @@
 
 def get_employee_details(employee):
 	return [{"employee": employee,
-			"base": 25000,
+			"base": 50000,
 			"variable": 5000
 			}
 		]
@@ -289,14 +305,14 @@
 					"salary_component": 'Basic Salary',
 					"abbr":'BS',
 					"condition": 'base > 10000',
-					"formula": 'base*.2',
+					"formula": 'base*.5',
 					"idx": 1
 				},
 				{
 					"salary_component": 'Basic Salary',
 					"abbr":'BS',
 					"condition": 'base < 10000',
-					"formula": 'base*.1',
+					"formula": 'base*.2',
 					"idx": 2
 				},
 				{
@@ -320,13 +336,13 @@
 					"salary_component": 'Professional Tax',
 					"abbr":'PT',
 					"condition": 'base > 10000',
-					"formula": 'base*.2',
+					"formula": 'base*.1',
 					"idx": 1
 				},
 				{
 					"salary_component": 'TDS',
 					"abbr":'T',
-					"formula": 'base*.5',
+					"formula": 'base*.1',
 					"idx": 2
 				},
 				{
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.json b/erpnext/hr/doctype/salary_structure/salary_structure.json
index 8db8e93..b34cff1 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.json
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.json
@@ -1,7 +1,7 @@
 {
  "allow_copy": 0, 
  "allow_import": 1, 
- "allow_rename": 0, 
+ "allow_rename": 1, 
  "autoname": "Prompt", 
  "beta": 0, 
  "creation": "2013-03-07 18:50:29", 
@@ -21,7 +21,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -48,7 +47,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Company", 
@@ -76,7 +74,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Letter Head", 
@@ -107,7 +104,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Payroll Frequency", 
@@ -136,7 +132,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -164,7 +159,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Is Active", 
@@ -195,7 +189,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Default", 
@@ -224,7 +217,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "From Date", 
@@ -253,7 +245,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "To Date", 
@@ -282,7 +273,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -310,7 +300,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Employees", 
@@ -339,7 +328,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -368,7 +356,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Salary Slip Based on Timesheet", 
@@ -396,7 +383,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -425,7 +411,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Salary Component", 
@@ -455,7 +440,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Hour Rate", 
@@ -485,7 +469,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -515,7 +498,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Earning", 
@@ -546,7 +528,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Earnings", 
@@ -576,7 +557,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Deduction", 
@@ -606,7 +586,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Deductions", 
@@ -637,7 +616,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -664,7 +642,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -691,7 +668,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Earning", 
@@ -721,7 +697,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Deduction", 
@@ -751,7 +726,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Net Pay", 
@@ -779,7 +753,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Account", 
@@ -807,7 +780,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Mode of Payment", 
@@ -836,7 +808,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -863,7 +834,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Payment Account", 
@@ -894,7 +864,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-12-14 02:02:10.848614", 
+ "modified": "2017-02-02 01:23:49.179497", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Structure", 
@@ -910,7 +880,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -928,10 +897,9 @@
    "create": 1, 
    "delete": 1, 
    "email": 1, 
-   "export": 0, 
+   "export": 1, 
    "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
+   "import": 1, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -950,5 +918,6 @@
  "sort_order": "DESC", 
  "timeline_field": "", 
  "title_field": "", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 13622c3..d60cd35 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -4,8 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 
-from frappe.utils import cstr, flt, getdate, cint
-from frappe.model.naming import make_autoname
+from frappe.utils import flt, cint
 from frappe import _
 from frappe.model.mapper import get_mapped_doc
 from frappe.model.document import Document
@@ -15,7 +14,6 @@
 	
 	def validate(self):
 		self.validate_amount()
-		self.validate_joining_date()
 		for e in self.get('employees'):
 			set_employee_name(e)
 
@@ -29,19 +27,19 @@
 	def validate_amount(self):
 		if flt(self.net_pay) < 0 and self.salary_slip_based_on_timesheet:
 			frappe.throw(_("Net pay cannot be negative"))
-
-	def validate_joining_date(self):
-		for e in self.get('employees'):
-			joining_date = getdate(frappe.db.get_value("Employee", e.employee, "date_of_joining"))
-			if getdate(self.from_date) < joining_date:
-				frappe.throw(_("From Date in Salary Structure cannot be lesser than Employee Joining Date."))
 				
 
 @frappe.whitelist()
 def make_salary_slip(source_name, target_doc = None, employee = None, as_print = False, print_format = None):
 	def postprocess(source, target):
 		if employee:
+			employee_details = frappe.db.get_value("Employee", employee, 
+							["employee_name", "branch", "designation", "department"], as_dict=1)
 			target.employee = employee
+			target.employee_name = employee_details.employee_name
+			target.branch = employee_details.branch
+			target.designation = employee_details.designation
+			target.department = employee_details.department
 		target.run_method('process_salary_structure')
 
 	doc = get_mapped_doc("Salary Structure", source_name, {
diff --git a/erpnext/hr/doctype/salary_structure/test_salary_structure.py b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
index fe88d9a..36e50d3 100644
--- a/erpnext/hr/doctype/salary_structure/test_salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
@@ -19,8 +19,8 @@
 		frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Structure Test Holiday List")
 		make_earning_salary_component(["Basic Salary", "Allowance", "HRA"])
 		make_deduction_salary_component(["Professional Tax", "TDS"])
-		self.make_employee("test_employee@salary.com")
-		self.make_employee("test_employee_2@salary.com")
+		make_employee("test_employee@salary.com")
+		make_employee("test_employee_2@salary.com")
 		
 	def make_holiday_list(self):
 		if not frappe.db.get_value("Holiday List", "Salary Structure Test Holiday List"):
@@ -33,37 +33,6 @@
 			}).insert()	
 			holiday_list.get_weekly_off_dates()
 			holiday_list.save()
-	
-	def make_employee(self, user):
-		if not frappe.db.get_value("User", user):
-			frappe.get_doc({
-				"doctype": "User",
-				"email": user,
-				"first_name": user,
-				"new_password": "password",
-				"user_roles": [{"doctype": "UserRole", "role": "Employee"}]
-			}).insert()
-			
-
-		if not frappe.db.get_value("Employee", {"user_id": user}):
-			emp = frappe.get_doc({
-				"doctype": "Employee",
-				"naming_series": "EMP-",
-				"employee_name": user,
-				"company": erpnext.get_default_company(),
-				"user_id": user,
-				"date_of_birth": "1990-05-08",
-				"date_of_joining": "2013-01-01",
-				"relieving_date": "",
-				"department": frappe.get_all("Department", fields="name")[0].name,
-				"gender": "Female",
-				"company_email": user,
-				"status": "Active",
-				"employment_type": "Intern"
-			}).insert()
-			return emp.name
-		else:
-			return frappe.get_value("Employee", {"employee_name":user}, "name")
 		
 	def test_amount_totals(self):
 		sal_slip = frappe.get_value("Salary Slip", {"employee_name":"test_employee@salary.com"})
@@ -76,6 +45,36 @@
 			self.assertEquals(sal_slip.get("total_deduction"), 7500)
 			self.assertEquals(sal_slip.get("net_pay"), 7500)
 			
+def make_employee(user):
+	if not frappe.db.get_value("User", user):
+		frappe.get_doc({
+			"doctype": "User",
+			"email": user,
+			"first_name": user,
+			"new_password": "password",
+			"user_roles": [{"doctype": "UserRole", "role": "Employee"}]
+		}).insert()
+		
+
+	if not frappe.db.get_value("Employee", {"user_id": user}):
+		emp = frappe.get_doc({
+			"doctype": "Employee",
+			"naming_series": "EMP-",
+			"employee_name": user,
+			"company": erpnext.get_default_company(),
+			"user_id": user,
+			"date_of_birth": "1990-05-08",
+			"date_of_joining": "2013-01-01",
+			"relieving_date": "",
+			"department": frappe.get_all("Department", fields="name")[0].name,
+			"gender": "Female",
+			"company_email": user,
+			"status": "Active",
+			"employment_type": "Intern"
+		}).insert()
+		return emp.name
+	else:
+		return frappe.get_value("Employee", {"employee_name":user}, "name")			
 		
 def make_salary_slip_from_salary_structure(employee):
 	sal_struct = make_salary_structure('Salary Structure Sample')
diff --git a/erpnext/hr/doctype/salary_structure_employee/salary_structure_employee.json b/erpnext/hr/doctype/salary_structure_employee/salary_structure_employee.json
index aae33e3..f5ac764 100644
--- a/erpnext/hr/doctype/salary_structure_employee/salary_structure_employee.json
+++ b/erpnext/hr/doctype/salary_structure_employee/salary_structure_employee.json
@@ -15,13 +15,14 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "employee", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Employee", 
    "length": 0, 
    "no_copy": 0, 
@@ -31,6 +32,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -41,21 +43,24 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "employee_name", 
-   "fieldtype": "Data", 
+   "fieldtype": "Read Only", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Employee Name", 
    "length": 0, 
    "no_copy": 0, 
+   "options": "employee.employee_name", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -66,13 +71,14 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "base", 
    "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Base", 
    "length": 0, 
    "no_copy": 0, 
@@ -81,6 +87,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -91,13 +98,14 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "variable", 
    "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Variable", 
    "length": 0, 
    "no_copy": 0, 
@@ -106,6 +114,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -123,7 +132,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-08-11 12:18:14.526977", 
+ "modified": "2017-02-02 02:06:33.809285", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Structure Employee", 
@@ -135,5 +144,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/upload_attendance/upload_attendance.py b/erpnext/hr/doctype/upload_attendance/upload_attendance.py
index 49eb8cf..fc1a8ae 100644
--- a/erpnext/hr/doctype/upload_attendance/upload_attendance.py
+++ b/erpnext/hr/doctype/upload_attendance/upload_attendance.py
@@ -36,7 +36,7 @@
 	w.writerow(["Please do not change the template headings"])
 	w.writerow(["Status should be one of these values: " + status])
 	w.writerow(["If you are overwriting existing attendance records, 'ID' column mandatory"])
-	w.writerow(["ID", "Employee", "Employee Name", "Date", "Status",
+	w.writerow(["ID", "Employee", "Employee Name", "Date", "Status", "Leave Type",
 		 "Company", "Naming Series"])
 	return w
 
@@ -53,7 +53,8 @@
 			row = [
 				existing_attendance and existing_attendance.name or "",
 				employee.name, employee.employee_name, date,
-				existing_attendance and existing_attendance.status or "", employee.company,
+				existing_attendance and existing_attendance.status or "",
+				existing_attendance and existing_attendance.leave_type or "", employee.company,
 				existing_attendance and existing_attendance.naming_series or get_naming_series(),
 			]
 			w.writerow(row)
@@ -71,13 +72,13 @@
 	return employees
 
 def get_existing_attendance_records(args):
-	attendance = frappe.db.sql("""select name, att_date, employee, status, naming_series
-		from `tabAttendance` where att_date between %s and %s and docstatus < 2""",
+	attendance = frappe.db.sql("""select name, attendance_date, employee, status, leave_type, naming_series
+		from `tabAttendance` where attendance_date between %s and %s and docstatus < 2""",
 		(args["from_date"], args["to_date"]), as_dict=1)
 
 	existing_attendance = {}
 	for att in attendance:
-		existing_attendance[tuple([att.att_date, att.employee])] = att
+		existing_attendance[tuple([att.attendance_date, att.employee])] = att
 
 	return existing_attendance
 
@@ -103,7 +104,7 @@
 		return {"messages": msg, "error": msg}
 	columns = [scrub(f) for f in rows[4]]
 	columns[0] = "name"
-	columns[3] = "att_date"
+	columns[3] = "attendance_date"
 	ret = []
 	error = False
 
diff --git a/erpnext/fleet_management/doctype/vehicle/__init__.py b/erpnext/hr/doctype/vehicle/__init__.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle/__init__.py
rename to erpnext/hr/doctype/vehicle/__init__.py
diff --git a/erpnext/fleet_management/doctype/vehicle/test_vehicle.py b/erpnext/hr/doctype/vehicle/test_vehicle.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle/test_vehicle.py
rename to erpnext/hr/doctype/vehicle/test_vehicle.py
diff --git a/erpnext/fleet_management/doctype/vehicle/vehicle.js b/erpnext/hr/doctype/vehicle/vehicle.js
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle/vehicle.js
rename to erpnext/hr/doctype/vehicle/vehicle.js
diff --git a/erpnext/fleet_management/doctype/vehicle/vehicle.json b/erpnext/hr/doctype/vehicle/vehicle.json
similarity index 99%
rename from erpnext/fleet_management/doctype/vehicle/vehicle.json
rename to erpnext/hr/doctype/vehicle/vehicle.json
index edad8a2..39735e6 100644
--- a/erpnext/fleet_management/doctype/vehicle/vehicle.json
+++ b/erpnext/hr/doctype/vehicle/vehicle.json
@@ -779,9 +779,9 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 06:00:22.056662", 
+ "modified": "2017-01-09 11:10:11.678834", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
+ "module": "HR", 
  "name": "Vehicle", 
  "name_case": "", 
  "owner": "Administrator", 
@@ -815,5 +815,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/fleet_management/doctype/vehicle/vehicle.py b/erpnext/hr/doctype/vehicle/vehicle.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle/vehicle.py
rename to erpnext/hr/doctype/vehicle/vehicle.py
diff --git a/erpnext/fleet_management/doctype/vehicle/vehicle_dashboard.py b/erpnext/hr/doctype/vehicle/vehicle_dashboard.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle/vehicle_dashboard.py
rename to erpnext/hr/doctype/vehicle/vehicle_dashboard.py
diff --git a/erpnext/fleet_management/doctype/vehicle_log/__init__.py b/erpnext/hr/doctype/vehicle_log/__init__.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle_log/__init__.py
rename to erpnext/hr/doctype/vehicle_log/__init__.py
diff --git a/erpnext/fleet_management/doctype/vehicle_log/test_vehicle_log.py b/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle_log/test_vehicle_log.py
rename to erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
diff --git a/erpnext/fleet_management/doctype/vehicle_log/vehicle_log.js b/erpnext/hr/doctype/vehicle_log/vehicle_log.js
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle_log/vehicle_log.js
rename to erpnext/hr/doctype/vehicle_log/vehicle_log.js
diff --git a/erpnext/fleet_management/doctype/vehicle_log/vehicle_log.json b/erpnext/hr/doctype/vehicle_log/vehicle_log.json
similarity index 99%
rename from erpnext/fleet_management/doctype/vehicle_log/vehicle_log.json
rename to erpnext/hr/doctype/vehicle_log/vehicle_log.json
index 26a4a01..a2cfa27 100644
--- a/erpnext/fleet_management/doctype/vehicle_log/vehicle_log.json
+++ b/erpnext/hr/doctype/vehicle_log/vehicle_log.json
@@ -640,9 +640,9 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:24:55.310831", 
+ "modified": "2017-01-09 11:10:21.208266", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
+ "module": "HR", 
  "name": "Vehicle Log", 
  "name_case": "", 
  "owner": "Administrator", 
@@ -675,5 +675,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/fleet_management/doctype/vehicle_log/vehicle_log.py b/erpnext/hr/doctype/vehicle_log/vehicle_log.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle_log/vehicle_log.py
rename to erpnext/hr/doctype/vehicle_log/vehicle_log.py
diff --git a/erpnext/fleet_management/doctype/vehicle_service/__init__.py b/erpnext/hr/doctype/vehicle_service/__init__.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle_service/__init__.py
rename to erpnext/hr/doctype/vehicle_service/__init__.py
diff --git a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json b/erpnext/hr/doctype/vehicle_service/vehicle_service.json
similarity index 89%
rename from erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
rename to erpnext/hr/doctype/vehicle_service/vehicle_service.json
index 6b80efc..635a0b6 100644
--- a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
+++ b/erpnext/hr/doctype/vehicle_service/vehicle_service.json
@@ -22,6 +22,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Service Item", 
    "length": 0, 
    "no_copy": 0, 
@@ -31,6 +32,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -49,6 +51,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Type", 
    "length": 0, 
    "no_copy": 0, 
@@ -58,6 +61,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -76,6 +80,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Frequency", 
    "length": 0, 
    "no_copy": 0, 
@@ -85,6 +90,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -103,6 +109,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Expense", 
    "length": 0, 
    "no_copy": 0, 
@@ -111,6 +118,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -128,9 +136,9 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-09-20 07:29:50.852748", 
+ "modified": "2017-01-09 11:10:29.476907", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
+ "module": "HR", 
  "name": "Vehicle Service", 
  "name_case": "", 
  "owner": "Administrator", 
@@ -140,5 +148,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.py b/erpnext/hr/doctype/vehicle_service/vehicle_service.py
similarity index 100%
rename from erpnext/fleet_management/doctype/vehicle_service/vehicle_service.py
rename to erpnext/hr/doctype/vehicle_service/vehicle_service.py
diff --git a/erpnext/fleet_management/__init__.py b/erpnext/hr/page/team_updates/__init__.py
similarity index 100%
rename from erpnext/fleet_management/__init__.py
rename to erpnext/hr/page/team_updates/__init__.py
diff --git a/erpnext/hr/page/team_updates/team_update_row.html b/erpnext/hr/page/team_updates/team_update_row.html
new file mode 100644
index 0000000..e3adcb8
--- /dev/null
+++ b/erpnext/hr/page/team_updates/team_update_row.html
@@ -0,0 +1,15 @@
+<div class="row activity-row" data-creation="{%= creation.split(" ")[0] + " 00:00:00" %}">
+	<div class="col-xs-3 text-right activity-date"><span class="{%= date_class %}">
+		{%= date_sep || "" %}</span></div>
+	<div class="col-xs-9 activity-message"
+		title="{%= by %} / {%= dateutil.str_to_user(creation) %}">
+		<div class="row">
+			<div class="col-xs-2 col-sm-1">
+				{{ avatar }}
+			</div>
+			<div class="col-xs-10 col-sm-11 small content">
+				{{ content }}
+			</div>
+		</div>
+	</div>
+</div>
diff --git a/erpnext/hr/page/team_updates/team_updates.css b/erpnext/hr/page/team_updates/team_updates.css
new file mode 100644
index 0000000..d37e782
--- /dev/null
+++ b/erpnext/hr/page/team_updates/team_updates.css
@@ -0,0 +1,57 @@
+.date-indicator {
+    background:none;
+    font-size:12px;
+    vertical-align:middle;
+    font-weight:bold;
+    color:#6c7680;
+}
+.date-indicator::after {
+    margin:0 -4px 0 12px;
+    content:'';
+    display:inline-block;
+    height:8px;
+    width:8px;
+    border-radius:8px;
+	background: #d1d8dd;
+}
+
+.date-indicator.blue {
+	color: #5e64ff;
+}
+
+.date-indicator.blue::after {
+	background: #5e64ff;
+}
+
+.activity-row {
+}
+
+.activity-message {
+	border-left: 1px solid #d1d8dd;
+}
+
+.activity-message .row {
+	padding: 15px;
+	margin-right: 0px;
+	border-bottom: 1px solid #d1d8dd;
+}
+
+.activity-row:last-child .activity-message .row {
+	border-bottom: none;
+}
+
+.activity-row .content {
+	padding-left: 0px;
+	padding-right: 30px;
+}
+
+.activity-date {
+	padding: 15px;
+	padding-right: 0px;
+	z-index: 1;
+}
+
+.for-more {
+	border-top: 1px solid #d1d8dd;
+	padding: 10px;
+}
diff --git a/erpnext/hr/page/team_updates/team_updates.js b/erpnext/hr/page/team_updates/team_updates.js
new file mode 100644
index 0000000..e701b5f
--- /dev/null
+++ b/erpnext/hr/page/team_updates/team_updates.js
@@ -0,0 +1,79 @@
+frappe.pages['team-updates'].on_page_load = function(wrapper) {
+	var page = frappe.ui.make_app_page({
+		parent: wrapper,
+		title: __('Team Updates'),
+		single_column: true
+	});
+
+	frappe.team_updates.make(page);
+	frappe.team_updates.run();
+
+	if(frappe.model.can_read('Daily Work Summary Settings')) {
+		page.add_menu_item(__('Daily Work Summary Settings'), function() {
+			frappe.set_route('Form', 'Daily Work Summary Settings');
+		});
+	}
+}
+
+frappe.team_updates = {
+	start: 0,
+	make: function(page) {
+		var me = frappe.team_updates;
+		me.page = page;
+		me.body = $('<div></div>').appendTo(me.page.main);
+		me.more = $('<div class="for-more"><button class="btn btn-sm btn-default btn-more">'
+			+ __("More") + '</button></div>').appendTo(me.page.main)
+			.find('.btn-more').on('click', function() {
+				me.start += 40;
+				me.run();
+			});
+	},
+	run: function() {
+		var me = frappe.team_updates;
+		frappe.call({
+			method: 'erpnext.hr.page.team_updates.team_updates.get_data',
+			args: {
+				start: me.start
+			},
+			callback: function(r) {
+				if(r.message) {
+					r.message.forEach(function(d) {
+						me.add_row(d);
+					});
+				} else {
+					frappe.show_alert({message:__('No more updates'), indicator:'darkgrey'});
+					me.more.parent().addClass('hidden');
+				}
+			}
+		});
+	},
+	add_row: function(data) {
+		var me = frappe.team_updates;
+
+		data.by = frappe.user.full_name(data.sender);
+		data.avatar = frappe.avatar(data.sender);
+		data.when = comment_when(data.creation);
+
+		var date = dateutil.str_to_obj(data.creation);
+		var last = me.last_feed_date;
+
+		if((last && dateutil.obj_to_str(last) != dateutil.obj_to_str(date)) || (!last)) {
+			var diff = dateutil.get_day_diff(dateutil.get_today(), dateutil.obj_to_str(date));
+			if(diff < 1) {
+				pdate = 'Today';
+			} else if(diff < 2) {
+				pdate = 'Yesterday';
+			} else {
+				pdate = dateutil.global_date_format(date);
+			}
+			data.date_sep = pdate;
+			data.date_class = pdate=='Today' ? "date-indicator blue" : "date-indicator";
+		} else {
+			data.date_sep = null;
+			data.date_class = "";
+		}
+		me.last_feed_date = date;
+
+		$(frappe.render_template('team_update_row', data)).appendTo(me.body)
+	}
+}
\ No newline at end of file
diff --git a/erpnext/hr/page/team_updates/team_updates.json b/erpnext/hr/page/team_updates/team_updates.json
new file mode 100644
index 0000000..167c67f
--- /dev/null
+++ b/erpnext/hr/page/team_updates/team_updates.json
@@ -0,0 +1,25 @@
+{
+ "content": null, 
+ "creation": "2017-01-31 11:02:31.614045", 
+ "docstatus": 0, 
+ "doctype": "Page", 
+ "idx": 0, 
+ "modified": "2017-01-31 11:25:01.983200", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "team-updates", 
+ "owner": "Administrator", 
+ "page_name": "team-updates", 
+ "roles": [
+  {
+   "role": "Employee"
+  }, 
+  {
+   "role": "System Manager"
+  }
+ ], 
+ "script": null, 
+ "standard": "Yes", 
+ "style": null, 
+ "title": "Team Updates"
+}
\ No newline at end of file
diff --git a/erpnext/hr/page/team_updates/team_updates.py b/erpnext/hr/page/team_updates/team_updates.py
new file mode 100644
index 0000000..5b90f6f
--- /dev/null
+++ b/erpnext/hr/page/team_updates/team_updates.py
@@ -0,0 +1,21 @@
+from __future__ import unicode_literals
+
+import frappe
+from email_reply_parser import EmailReplyParser
+from markdown2 import markdown
+
+@frappe.whitelist()
+def get_data(start=0):
+	#frappe.only_for('Employee', 'System Manager')
+	data = frappe.get_all('Communication',
+		fields=('content', 'text_content', 'sender', 'creation'),
+		filters=dict(reference_doctype='Daily Work Summary'),
+		order_by='creation desc', limit=40, start=start)
+
+	for d in data:
+		d.sender_name = frappe.db.get_value("Employee", {"user_id": d.sender},
+			"employee_name") or d.sender
+		if d.text_content:
+			d.content = markdown(EmailReplyParser.parse_reply(d.text_content))
+
+	return data
\ No newline at end of file
diff --git a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
index 7f1c442..8105e1a 100644
--- a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
+++ b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
@@ -30,28 +30,31 @@
 	return columns
 	
 def get_data(filters, leave_types):
-
+	user = frappe.session.user
 	allocation_records_based_on_to_date = get_leave_allocation_records(filters.to_date)
 
 	active_employees = frappe.get_all("Employee", 
 		filters = { "status": "Active", "company": filters.company}, 
-		fields = ["name", "employee_name", "department"])
+		fields = ["name", "employee_name", "department", "user_id"])
 	
 	data = []
 	for employee in active_employees:
-		row = [employee.name, employee.employee_name, employee.department]
+		leave_approvers = [l.leave_approver for l in frappe.db.sql("""select leave_approver from `tabEmployee Leave Approver` where parent = %s""",
+							(employee.name),as_dict=True)]
+		if (len(leave_approvers) and user in leave_approvers) or (user in ["Administrator", employee.user_id]) or ("HR Manager" in frappe.get_roles(user)):
+			row = [employee.name, employee.employee_name, employee.department]
 
-		for leave_type in leave_types:	
-			# leaves taken
-			leaves_taken = get_approved_leaves_for_period(employee.name, leave_type, 
-				filters.from_date, filters.to_date)
+			for leave_type in leave_types:
+				# leaves taken
+				leaves_taken = get_approved_leaves_for_period(employee.name, leave_type,
+					filters.from_date, filters.to_date)
 	
-			# closing balance
-			closing = get_leave_balance_on(employee.name, leave_type, filters.to_date, 
-				allocation_records_based_on_to_date.get(employee.name, frappe._dict()))
+				# closing balance
+				closing = get_leave_balance_on(employee.name, leave_type, filters.to_date,
+					allocation_records_based_on_to_date.get(employee.name, frappe._dict()))
 
-			row += [leaves_taken, closing]
+				row += [leaves_taken, closing]
 			
-		data.append(row)
+			data.append(row)
 		
 	return data
\ No newline at end of file
diff --git a/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py b/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py
index a0b78a6..60bb02c 100644
--- a/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py
+++ b/erpnext/hr/report/employees_working_on_a_holiday/employees_working_on_a_holiday.py
@@ -41,13 +41,13 @@
 		holiday_names[holiday.holiday_date] = holiday.description
 
 	if(holidays_list):
-		cond = " att_date in %(holidays_list)s"
+		cond = " attendance_date in %(holidays_list)s"
 
 		if filters.holiday_list:
 			cond += """ and (employee in (select employee from tabEmployee where holiday_list = %(holidays)s))"""
 
 		employee_list = frappe.db.sql("""select
-				employee, employee_name, att_date, status
+				employee, employee_name, attendance_date, status
 			from tabAttendance
 			where %s"""% cond.format(', '.join(["%s"] * len(holidays_list))),
 				{'holidays_list':holidays_list,
diff --git a/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py b/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py
index 525f9ab..05d3df5 100644
--- a/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py
+++ b/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py
@@ -24,21 +24,23 @@
 		row = [emp, emp_det.employee_name, emp_det.branch, emp_det.department, emp_det.designation,
 			emp_det.company]
 
-		total_p = total_a = 0.0
+		total_p = total_a = total_l = 0.0
 		for day in range(filters["total_days_in_month"]):
 			status = att_map.get(emp).get(day + 1, "None")
-			status_map = {"Present": "P", "Absent": "A", "Half Day": "H", "None": ""}
+			status_map = {"Present": "P", "Absent": "A", "Half Day": "H", "On Leave": "L", "None": ""}
 			row.append(status_map[status])
 
 			if status == "Present":
 				total_p += 1
 			elif status == "Absent":
 				total_a += 1
+			elif status == "On Leave":
+				total_l += 1	
 			elif status == "Half Day":
 				total_p += 0.5
 				total_a += 0.5
 
-		row += [total_p, total_a]
+		row += [total_p, total_l, total_a]
 		data.append(row)
 
 	return columns, data
@@ -53,12 +55,12 @@
 	for day in range(filters["total_days_in_month"]):
 		columns.append(cstr(day+1) +"::20")
 
-	columns += [_("Total Present") + ":Float:80", _("Total Absent") + ":Float:80"]
+	columns += [_("Total Present") + ":Float:80", _("Total Leaves") + ":Float:80",  _("Total Absent") + ":Float:80"]
 	return columns
 
 def get_attendance_list(conditions, filters):
-	attendance_list = frappe.db.sql("""select employee, day(att_date) as day_of_month,
-		status from tabAttendance where docstatus = 1 %s order by employee, att_date""" %
+	attendance_list = frappe.db.sql("""select employee, day(attendance_date) as day_of_month,
+		status from tabAttendance where docstatus = 1 %s order by employee, attendance_date""" %
 		conditions, filters, as_dict=1)
 
 	att_map = {}
@@ -77,7 +79,7 @@
 
 	filters["total_days_in_month"] = monthrange(cint(filters.year), filters.month)[1]
 
-	conditions = " and month(att_date) = %(month)s and year(att_date) = %(year)s"
+	conditions = " and month(attendance_date) = %(month)s and year(attendance_date) = %(year)s"
 
 	if filters.get("company"): conditions += " and company = %(company)s"
 	if filters.get("employee"): conditions += " and employee = %(employee)s"
@@ -95,7 +97,7 @@
 
 @frappe.whitelist()
 def get_attendance_years():
-	year_list = frappe.db.sql_list("""select distinct YEAR(att_date) from tabAttendance ORDER BY YEAR(att_date) DESC""")
+	year_list = frappe.db.sql_list("""select distinct YEAR(attendance_date) from tabAttendance ORDER BY YEAR(attendance_date) DESC""")
 	if not year_list:
 		year_list = [getdate().year]
 
diff --git a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.js b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.js
deleted file mode 100644
index a879b39..0000000
--- a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-frappe.query_reports["Monthly Salary Register"] = {
-	"filters": [
-		{
-			"fieldname":"from_date",
-			"label": __("From"),
-			"fieldtype": "Date",
-			"default": frappe.datetime.add_months(frappe.datetime.get_today(), -1),
-			"reqd": 1
-		},
-		{
-			"fieldname":"to_date",
-			"label": __("To"),
-			"fieldtype": "Date",
-			"default": frappe.datetime.get_today(),
-			"reqd": 1
-		},
-		{
-			"fieldname":"employee",
-			"label": __("Employee"),
-			"fieldtype": "Link",
-			"options": "Employee"
-		},
-		{
-			"fieldname":"company",
-			"label": __("Company"),
-			"fieldtype": "Link",
-			"options": "Company",
-			"default": frappe.defaults.get_user_default("Company")
-		}
-	]
-}
\ No newline at end of file
diff --git a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.json b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.json
deleted file mode 100644
index d32e71e..0000000
--- a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "add_total_row": 1, 
- "apply_user_permissions": 1, 
- "creation": "2013-05-07 18:09:42", 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 1, 
- "is_standard": "Yes", 
- "modified": "2014-06-03 07:18:17.187018", 
- "modified_by": "Administrator", 
- "module": "HR", 
- "name": "Monthly Salary Register", 
- "owner": "Administrator", 
- "ref_doctype": "Salary Slip", 
- "report_name": "Monthly Salary Register", 
- "report_type": "Script Report"
-}
\ No newline at end of file
diff --git a/erpnext/hr/report/monthly_salary_register/__init__.py b/erpnext/hr/report/salary_register/__init__.py
similarity index 100%
rename from erpnext/hr/report/monthly_salary_register/__init__.py
rename to erpnext/hr/report/salary_register/__init__.py
diff --git a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.html b/erpnext/hr/report/salary_register/salary_register.html
similarity index 89%
rename from erpnext/hr/report/monthly_salary_register/monthly_salary_register.html
rename to erpnext/hr/report/salary_register/salary_register.html
index c77e4e5..2a9cd3e 100644
--- a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.html
+++ b/erpnext/hr/report/salary_register/salary_register.html
@@ -2,8 +2,7 @@
 	{%= frappe.boot.letter_heads[filters.letter_head || frappe.defaults.get_default("letter_head")] %}
 </div>
 <h2 class="text-center">{%= __(report.report_name) %}</h2>
-<h5 class="text-center">Fiscal Year: {%= filters.fiscal_year %}</h5>
-<h5 class="text-center">Month: {%= filters.month %}</h5>
+<h5 class="text-center">From {%= filters.date_range[0] %} to {%= filters.date_range[1] %}</h5>
 <hr>
 <table class="table table-bordered">
 	<thead>
@@ -36,4 +35,3 @@
 	</tbody>
 </table>
 <p class="text-right text-muted">Printed On {%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
-
diff --git a/erpnext/hr/report/salary_register/salary_register.js b/erpnext/hr/report/salary_register/salary_register.js
new file mode 100644
index 0000000..8b0faf5
--- /dev/null
+++ b/erpnext/hr/report/salary_register/salary_register.js
@@ -0,0 +1,27 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.query_reports["Salary Register"] = {
+	"filters": [
+		{
+			"fieldname":"date_range",
+			"label": __("Date Range"),
+			"fieldtype": "DateRange",
+			"default": [frappe.datetime.add_months(get_today(),-1), frappe.datetime.get_today()],
+			"reqd": 1
+		},
+		{
+			"fieldname":"employee",
+			"label": __("Employee"),
+			"fieldtype": "Link",
+			"options": "Employee"
+		},
+		{
+			"fieldname":"company",
+			"label": __("Company"),
+			"fieldtype": "Link",
+			"options": "Company",
+			"default": frappe.defaults.get_user_default("Company")
+		}
+	]
+}
diff --git a/erpnext/hr/report/salary_register/salary_register.json b/erpnext/hr/report/salary_register/salary_register.json
new file mode 100644
index 0000000..1166915
--- /dev/null
+++ b/erpnext/hr/report/salary_register/salary_register.json
@@ -0,0 +1,18 @@
+{
+ "add_total_row": 1, 
+ "apply_user_permissions": 1, 
+ "creation": "2017-01-10 17:36:58.153863", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 0, 
+ "is_standard": "Yes", 
+ "modified": "2017-01-10 17:38:00.832224", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "Salary Register", 
+ "owner": "Administrator", 
+ "ref_doctype": "Salary Slip", 
+ "report_name": "Salary Register", 
+ "report_type": "Script Report"
+}
\ No newline at end of file
diff --git a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py b/erpnext/hr/report/salary_register/salary_register.py
similarity index 92%
rename from erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
rename to erpnext/hr/report/salary_register/salary_register.py
index e8d0a0b..1e36b92 100644
--- a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
+++ b/erpnext/hr/report/salary_register/salary_register.py
@@ -3,12 +3,11 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.utils import flt, cstr
-from frappe import msgprint, _
+from frappe.utils import flt
+from frappe import _
 
 def execute(filters=None):
 	if not filters: filters = {}
-
 	salary_slips = get_salary_slips(filters)
 	columns, earning_types, ded_types = get_columns(salary_slips)
 	ss_earning_map = get_ss_earning_map(salary_slips)
@@ -58,6 +57,7 @@
 	return columns, salary_components[_("Earning")], salary_components[_("Deduction")]
 
 def get_salary_slips(filters):
+	filters.update({"from_date": filters.get("date_range")[0], "to_date":filters.get("date_range")[1]})
 	conditions, filters = get_conditions(filters)
 	salary_slips = frappe.db.sql("""select * from `tabSalary Slip` where docstatus = 1 %s
 		order by employee""" % conditions, filters, as_dict=1)
@@ -65,13 +65,12 @@
 	if not salary_slips:
 		frappe.throw(_("No salary slip found between {0} and {1}").format(
 			filters.get("from_date"), filters.get("to_date")))
-
 	return salary_slips
 
 def get_conditions(filters):
 	conditions = ""
-	if filters.get("from_date"): conditions += " and start_date >= %(from_date)s"
-	if filters.get("to_date"): conditions += " and end_date <= %(to_date)s"
+	if filters.get("date_range"): conditions += " and start_date >= %(from_date)s"
+	if filters.get("date_range"): conditions += " and end_date <= %(to_date)s"
 	if filters.get("company"): conditions += " and company = %(company)s"
 	if filters.get("employee"): conditions += " and employee = %(employee)s"
 
diff --git a/erpnext/fleet_management/report/vehicle_expenses/__init__.py b/erpnext/hr/report/vehicle_expenses/__init__.py
similarity index 100%
rename from erpnext/fleet_management/report/vehicle_expenses/__init__.py
rename to erpnext/hr/report/vehicle_expenses/__init__.py
diff --git a/erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.js b/erpnext/hr/report/vehicle_expenses/vehicle_expenses.js
similarity index 100%
rename from erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.js
rename to erpnext/hr/report/vehicle_expenses/vehicle_expenses.js
diff --git a/erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.json b/erpnext/hr/report/vehicle_expenses/vehicle_expenses.json
similarity index 83%
rename from erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.json
rename to erpnext/hr/report/vehicle_expenses/vehicle_expenses.json
index 380c873..f151c67 100644
--- a/erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.json
+++ b/erpnext/hr/report/vehicle_expenses/vehicle_expenses.json
@@ -7,9 +7,9 @@
  "doctype": "Report", 
  "idx": 0, 
  "is_standard": "Yes", 
- "modified": "2016-09-18 08:54:12.080753", 
+ "modified": "2017-01-09 11:18:31.959124", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
+ "module": "HR", 
  "name": "Vehicle Expenses", 
  "owner": "Administrator", 
  "ref_doctype": "Vehicle", 
diff --git a/erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.py b/erpnext/hr/report/vehicle_expenses/vehicle_expenses.py
similarity index 98%
rename from erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.py
rename to erpnext/hr/report/vehicle_expenses/vehicle_expenses.py
index 717a94f..a03b7f3 100644
--- a/erpnext/fleet_management/report/vehicle_expenses/vehicle_expenses.py
+++ b/erpnext/hr/report/vehicle_expenses/vehicle_expenses.py
@@ -15,7 +15,7 @@
 	columns=get_columns()
 	data=get_log_data(filters)
 	chart=get_chart_data(data,period_list)
-	return columns,data,None,chart
+	return columns, data, None, chart
 	
 def get_columns():
 	columns = [_("License") + ":Link/Vehicle:100", _("Make") + ":data:50",
diff --git a/erpnext/hr/web_form/job_application/job_application.json b/erpnext/hr/web_form/job_application/job_application.json
index a11a660..f630570 100644
--- a/erpnext/hr/web_form/job_application/job_application.json
+++ b/erpnext/hr/web_form/job_application/job_application.json
@@ -55,7 +55,7 @@
    "fieldname": "email_id", 
    "fieldtype": "Data", 
    "hidden": 0, 
-   "label": "Email Id", 
+   "label": "Email Address", 
    "max_length": 0, 
    "max_value": 0, 
    "options": "Email", 
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js
index bcf1ae6..9639e7f 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js
@@ -3,18 +3,28 @@
 
 frappe.provide("erpnext.maintenance");
 
-frappe.ui.form.on_change("Maintenance Schedule", "customer", function(frm) {
-	erpnext.utils.get_party_details(frm) });
-frappe.ui.form.on_change("Maintenance Schedule", "customer_address", function(){
-	erpnext.utils.get_address_display(cur_frm, 'customer_address', 'address_display');
-});
-frappe.ui.form.on_change("Maintenance Schedule", "contact_person", function(){
-  erpnext.utils.get_contact_details(cur_frm);	
-});
+frappe.ui.form.on('Maintenance Schedule', {
+	setup: function(frm) {
+		frm.set_query('contact_person', erpnext.queries.contact_query);
+		frm.set_query('customer_address', erpnext.queries.address_query);
+	},
+	customer: function(frm) {
+		erpnext.utils.get_party_details(frm)
+	},
+	customer_address: function(frm) {
+		erpnext.utils.get_address_display(frm, 'customer_address', 'address_display');
+	},
+	contact_person: function(frm) {
+		erpnext.utils.get_contact_details(frm);
+	}
+
+})
 
 // TODO commonify this code
 erpnext.maintenance.MaintenanceSchedule = frappe.ui.form.Controller.extend({
 	refresh: function() {
+		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
+
 		var me = this;
 
 		if (this.frm.doc.docstatus === 0) {
@@ -94,18 +104,6 @@
 
 }
 
-cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters:{ 'customer': doc.customer }
-	}
-}
-
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters:{ 'customer': doc.customer }
-	}
-}
-
 cur_frm.cscript.generate_schedule = function(doc, cdt, cdn) {
 	if (!doc.__islocal) {
 		return $c('runserverobj', args={'method':'generate_schedule', 'docs':doc},
diff --git a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
index 38c20da..62cdf86 100644
--- a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
+++ b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
@@ -2,20 +2,31 @@
 // License: GNU General Public License v3. See license.txt
 
 frappe.provide("erpnext.maintenance");
+me.frm.set_query('contact_person', erpnext.queries.contact_query);
 
 
-frappe.ui.form.on_change("Maintenance Visit", "customer", function(frm) {
-	erpnext.utils.get_party_details(frm) });
-frappe.ui.form.on_change("Maintenance Visit", "customer_address", function(frm){
-	erpnext.utils.get_address_display(frm, 'customer_address', 'address_display')
-});
-frappe.ui.form.on_change("Maintenance Visit", "contact_person", function(frm){
-	erpnext.utils.get_contact_details(frm)
-});
+frappe.ui.form.on('Maintenance Visit', {
+	setup: function(frm) {
+		frm.set_query('contact_person', erpnext.queries.contact_query);
+		frm.set_query('customer_address', erpnext.queries.address_query);
+	},
+	customer: function(frm) {
+		erpnext.utils.get_party_details(frm)
+	},
+	customer_address: function(frm) {
+		erpnext.utils.get_address_display(frm, 'customer_address', 'address_display');
+	},
+	contact_person: function(frm) {
+		erpnext.utils.get_contact_details(frm);
+	}
+
+})
 
 // TODO commonify this code
 erpnext.maintenance.MaintenanceVisit = frappe.ui.form.Controller.extend({
 	refresh: function() {
+		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
+
 		if (this.frm.doc.docstatus===0) {
 			cur_frm.add_custom_button(__('Maintenance Schedule'),
 				function() {
@@ -69,18 +80,6 @@
 	cur_frm.add_fetch('item_code', 'description', 'description');
 }
 
-cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) {
-	return{
-    	filters:{'customer': doc.customer}
-  	}
-}
-
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-  	return{
-    	filters:{'customer': doc.customer}
-  	}
-}
-
 cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
 	return {query: "erpnext.controllers.queries.customer_query" }
 }
diff --git a/erpnext/manufacturing/doctype/bom/bom.json b/erpnext/manufacturing/doctype/bom/bom.json
index c2c9b64..51018d3 100644
--- a/erpnext/manufacturing/doctype/bom/bom.json
+++ b/erpnext/manufacturing/doctype/bom/bom.json
@@ -21,7 +21,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Item", 
@@ -51,7 +50,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Item Name", 
@@ -81,7 +79,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Quantity", 
@@ -110,7 +107,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -137,7 +133,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Is Active", 
@@ -167,7 +162,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Is Default", 
@@ -197,7 +191,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "With Operations", 
@@ -224,7 +217,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Rate Of Materials Based On", 
@@ -253,7 +245,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Price List", 
@@ -281,7 +272,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -309,7 +299,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Currency", 
@@ -338,7 +327,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -365,7 +353,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Conversion Rate", 
@@ -395,7 +382,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Operations", 
@@ -423,7 +409,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Operations", 
@@ -453,7 +438,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Materials", 
@@ -481,7 +465,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Items", 
@@ -511,7 +494,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Scrap", 
@@ -539,7 +521,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Scrap Items", 
@@ -568,7 +549,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Costing", 
@@ -596,7 +576,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Operating Cost", 
@@ -624,7 +603,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Raw Material Cost", 
@@ -652,7 +630,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Scrap Material Cost", 
@@ -681,7 +658,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -707,7 +683,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Operating Cost (Company Currency)", 
@@ -736,7 +711,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Raw Material Cost(Company Currency)", 
@@ -765,7 +739,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Scrap Material Cost(Company Currency)", 
@@ -794,7 +767,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -821,7 +793,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Total Cost", 
@@ -849,7 +820,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -876,7 +846,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Cost(Company Currency)", 
@@ -905,7 +874,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -932,7 +900,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Project", 
@@ -962,7 +929,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Company", 
@@ -991,7 +957,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Amended From", 
@@ -1019,7 +984,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1045,7 +1009,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Item UOM", 
@@ -1073,7 +1036,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1100,7 +1062,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Item Description", 
@@ -1127,7 +1088,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -1154,7 +1114,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Image", 
@@ -1182,7 +1141,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Image View", 
@@ -1212,7 +1170,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Materials Required (Exploded)", 
@@ -1239,7 +1196,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Exploded_items", 
@@ -1271,8 +1227,8 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-21 17:06:49.349654", 
- "modified_by": "rohit@erpnext.com", 
+ "modified": "2017-02-01 14:27:17.949390", 
+ "modified_by": "Administrator", 
  "module": "Manufacturing", 
  "name": "BOM", 
  "owner": "Administrator", 
@@ -1287,7 +1243,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1308,7 +1263,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1329,7 +1283,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1347,5 +1300,6 @@
  "search_fields": "item", 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index f4fed6e..8102057 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -500,10 +500,15 @@
 @frappe.whitelist()
 def get_children():
 	if frappe.form_dict.parent:
-		return frappe.db.sql("""select item_code,
-			bom_no as value, qty,
-			if(ifnull(bom_no, "")!="", 1, 0) as expandable
-			from `tabBOM Item`
-			where parent=%s
-			order by idx
+		return frappe.db.sql("""select
+			bom_item.item_code,
+			bom_item.bom_no as value,
+			bom_item.qty,
+			if(ifnull(bom_item.bom_no, "")!="", 1, 0) as expandable,
+			item.image,
+			item.description
+			from `tabBOM Item` bom_item, tabItem item
+			where bom_item.parent=%s
+			and bom_item.item_code = item.name
+			order by bom_item.idx
 			""", frappe.form_dict.parent, as_dict=True)
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/bom/bom_item_preview.html b/erpnext/manufacturing/doctype/bom/bom_item_preview.html
new file mode 100644
index 0000000..9db19a0
--- /dev/null
+++ b/erpnext/manufacturing/doctype/bom/bom_item_preview.html
@@ -0,0 +1,21 @@
+<div style="padding: 15px;">
+	{% if data.image %}
+	<img class="responsive" src={{ data.image }}>
+	<hr style="margin: 15px -15px;">
+	{% endif %}
+	<h4>
+		{{ __("Description") }}
+	</h4>
+	<div style="padding-top: 10px;">
+		{{ data.description }}
+	</div>
+	<hr style="margin: 15px -15px;">
+	<p>
+		{% if data.value %}
+		<a style="margin-right: 7px; margin-bottom: 7px" class="btn btn-default btn-xs" href="#Form/BOM/{{ data.value }}">
+			{{ __("Open BOM {0}", [data.value.bold()]) }}</a>
+		{% endif %}
+		<a class="btn btn-default btn-xs" href="#Form/Item/{{ data.item_code }}">
+			{{ __("Open Item {0}", [data.item_code.bold()]) }}</a>
+	</p>
+</div>
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/bom/bom_tree.js b/erpnext/manufacturing/doctype/bom/bom_tree.js
index f6a205f..09fe037 100644
--- a/erpnext/manufacturing/doctype/bom/bom_tree.js
+++ b/erpnext/manufacturing/doctype/bom/bom_tree.js
@@ -20,14 +20,14 @@
 		}
 	},
 	toolbar: [
-		{toggle_btn: true},
+		{ toggle_btn: true },
 		{
 			label:__("Edit"),
 			condition: function(node) {
 				return node.expandable;
 			},
 			click: function(node) {
-				
+
 				frappe.set_route("Form", "BOM", node.data.value);
 			}
 		}
@@ -40,5 +40,6 @@
 			},
 			condition: 'frappe.boot.user.can_create.indexOf("BOM") !== -1'
 		}
-	]
+	],
+	view_template: 'bom_item_preview'
 }
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.json b/erpnext/manufacturing/doctype/production_order/production_order.json
index dd8bb5b..04a3a93 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.json
+++ b/erpnext/manufacturing/doctype/production_order/production_order.json
@@ -374,7 +374,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "description": "Warehouse for reserving items", 
+   "description": "", 
    "fieldname": "source_warehouse", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -383,7 +383,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Source Warehouse", 
+   "label": "Source Warehouse (for reserving Items)", 
    "length": 0, 
    "no_copy": 0, 
    "options": "Warehouse", 
@@ -1244,7 +1244,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:13:02.064821", 
+ "modified": "2017-01-12 05:32:52.523006", 
  "modified_by": "Administrator", 
  "module": "Manufacturing", 
  "name": "Production Order", 
@@ -1298,5 +1298,6 @@
  "read_only_onload": 0, 
  "sort_order": "ASC", 
  "title_field": "production_item", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/production_order/production_order_calendar.js b/erpnext/manufacturing/doctype/production_order/production_order_calendar.js
index 2832494..47cac28 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order_calendar.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order_calendar.js
@@ -7,7 +7,10 @@
 		"end": "planned_end_date",
 		"id": "name",
 		"title": "name",
-		"allDay": "allDay"
+		"allDay": "allDay",
+		"progress": function(data) {
+			return flt(data.produced_qty) / data.qty * 100;
+		}
 	},
 	gantt: true,
 	get_css_class: function(data) {
diff --git a/erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json b/erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json
index 2225496..43f79c9 100644
--- a/erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json
+++ b/erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json
@@ -50,7 +50,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Salse Order Date", 
+   "label": "Sales Order Date", 
    "length": 0, 
    "no_copy": 0, 
    "oldfieldname": "document_date", 
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 aaa0e95..4692118 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -249,7 +249,7 @@
 				"wip_warehouse"			: "",
 				"fg_warehouse"			: d.warehouse,
 				"status"				: "Draft",
-				"project"			: frappe.db.get_value("Sales Order", d.sales_order, "project")
+				"project"				: frappe.db.get_value("Sales Order", d.sales_order, "project")
 			}
 
 			""" Club similar BOM and item for processing in case of Sales Orders """
@@ -344,28 +344,56 @@
 		self.make_items_dict(item_list)
 
 	def get_subitems(self,bom_wise_item_details, bom, parent_qty, include_sublevel, only_raw, supply_subs,non_stock_item=0):
-		for d in frappe.db.sql("""SELECT bom_item.item_code, default_material_request_type,
-			ifnull(%(parent_qty)s * sum(bom_item.qty/ifnull(bom.quantity, 1)), 0) as qty,
-			item.is_sub_contracted_item as is_sub_contracted, item.default_bom as default_bom,
-			bom_item.description as description,  bom_item.stock_uom as stock_uom,  item.min_order_qty
-			as min_order_qty FROM `tabBOM Item` bom_item, `tabBOM` bom, tabItem item
-			where bom.name = bom_item.parent and bom.name = %(bom)s and bom_item.docstatus < 2
-			and bom_item.item_code = item.name
-			""" + ("and item.is_stock_item = 1","")[non_stock_item] + """
-			group by bom_item.item_code""", {"bom": bom, "parent_qty": parent_qty}, as_dict=1):
-			if (d.default_material_request_type == "Purchase" and not (d.is_sub_contracted \
-				and only_raw and include_sublevel)) or (d.default_material_request_type == \
-				"Manufacture" and not only_raw):
+		items = frappe.db.sql("""
+			SELECT
+				bom_item.item_code,
+				default_material_request_type,
+				ifnull(%(parent_qty)s * sum(bom_item.qty/ifnull(bom.quantity, 1)), 0) as qty,
+				item.is_sub_contracted_item as is_sub_contracted,
+				item.default_bom as default_bom,
+				bom_item.description as description,
+				bom_item.stock_uom as stock_uom,
+				item.min_order_qty as min_order_qty
+			FROM
+				`tabBOM Item` bom_item,
+				`tabBOM` bom,
+				tabItem item
+			where
+				bom.name = bom_item.parent
+				and bom.name = %(bom)s
+				and bom_item.docstatus < 2
+				and bom_item.item_code = item.name
+			""" + ("and item.is_stock_item = 1", "")[non_stock_item] + """
+			group by bom_item.item_code""", {"bom": bom, "parent_qty": parent_qty}, as_dict=1)
+
+		for d in items:
+			if ((d.default_material_request_type == "Purchase"
+				and not (d.is_sub_contracted and only_raw and include_sublevel))
+				or (d.default_material_request_type == "Manufacture" and not only_raw)):
+
 				if d.item_code in bom_wise_item_details:
-					bom_wise_item_details[d.item_code].qty = bom_wise_item_details[d.item_code].qty\
-						+ d.qty
+					bom_wise_item_details[d.item_code].qty = bom_wise_item_details[d.item_code].qty + d.qty
 				else:
 					bom_wise_item_details[d.item_code] = d
+
 			if include_sublevel:
-				if (d.default_material_request_type == "Purchase" and d.is_sub_contracted \
-					and supply_subs) or (d.default_material_request_type == "Manufacture"):
-					self.get_subitems(bom_wise_item_details,d.default_bom, \
-						d.qty, include_sublevel, only_raw, supply_subs)
+				if ((d.default_material_request_type == "Purchase" and d.is_sub_contracted and supply_subs)
+					or (d.default_material_request_type == "Manufacture")):
+
+					my_qty = 0
+					projected_qty = self.get_item_projected_qty(d.item_code)
+
+					if self.create_material_requests_for_all_required_qty:
+						my_qty = d.qty
+					elif (bom_wise_item_details[d.item_code].qty - d.qty) < projected_qty:
+						my_qty = bom_wise_item_details[d.item_code].qty - projected_qty
+					else:
+						my_qty = d.qty
+
+					if my_qty > 0:
+						self.get_subitems(bom_wise_item_details,
+							d.default_bom, my_qty, include_sublevel, only_raw, supply_subs)
+
 		return bom_wise_item_details
 
 	def make_items_dict(self, item_list):
@@ -380,13 +408,18 @@
 			item_list.append([item, self.item_dict[item][0][1], self.item_dict[item][0][2], total_qty])
 			item_qty = frappe.db.sql("""select warehouse, indented_qty, ordered_qty, actual_qty
 				from `tabBin` where item_code = %s""", item, as_dict=1)
+
 			i_qty, o_qty, a_qty = 0, 0, 0
 			for w in item_qty:
-				i_qty, o_qty, a_qty = i_qty + flt(w.indented_qty), o_qty + flt(w.ordered_qty), a_qty + flt(w.actual_qty)
+				i_qty, o_qty, a_qty = i_qty + flt(w.indented_qty), o_qty + \
+					flt(w.ordered_qty), a_qty + flt(w.actual_qty)
+
 				item_list.append(['', '', '', '', w.warehouse, flt(w.indented_qty),
 					flt(w.ordered_qty), flt(w.actual_qty)])
 			if item_qty:
 				item_list.append(['', '', '', '', 'Total', i_qty, o_qty, a_qty])
+			else:
+				item_list.append(['', '', '', '', 'Total', 0, 0, 0])
 
 		return item_list
 
@@ -449,6 +482,18 @@
 
 		return items_to_be_requested
 
+	def get_item_projected_qty(self,item):
+		item_projected_qty = frappe.db.sql("""
+			select ifnull(sum(projected_qty),0) as qty
+			from `tabBin`
+			where item_code = %(item_code)s and warehouse=%(warehouse)s
+		""", {
+			"item_code": item,
+			"warehouse": self.purchase_request_for_warehouse
+		}, as_dict=1)
+
+		return item_projected_qty[0].qty
+
 	def get_projected_qty(self):
 		items = self.item_dict.keys()
 		item_projected_qty = frappe.db.sql("""select item_code, sum(projected_qty)
diff --git a/erpnext/modules.txt b/erpnext/modules.txt
index 4daf0eb..609a3fe 100644
--- a/erpnext/modules.txt
+++ b/erpnext/modules.txt
@@ -1,7 +1,6 @@
 Accounts
 CRM
 Buying
-Fleet Management
 Projects
 Selling
 Setup
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index b997dfc..e041a2b 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -360,7 +360,14 @@
 erpnext.patches.v7_1.repost_stock_for_deleted_bins_for_merging_items
 execute:frappe.delete_doc('Desktop Icon', {'module_name': 'Profit and Loss Statment'})
 erpnext.patches.v7_2.update_website_for_variant
+erpnext.patches.v7_2.update_assessment_modules
 erpnext.patches.v7_2.update_doctype_status
 erpnext.patches.v7_2.update_salary_slips
+erpnext.patches.v7_2.delete_fleet_management_module_def
+erpnext.patches.v7_2.contact_address_links
+erpnext.patches.v7_2.mark_students_active
 erpnext.patches.v7_2.set_null_value_to_fields
-erpnext.patches.v7_2.update_abbr_in_salary_slips
\ No newline at end of file
+erpnext.patches.v7_2.update_guardian_name_in_student_master
+erpnext.patches.v7_2.update_abbr_in_salary_slips
+erpnext.patches.v7_2.rename_evaluation_criteria
+erpnext.patches.v7_2.update_party_type
\ No newline at end of file
diff --git a/erpnext/patches/v7_0/set_portal_settings.py b/erpnext/patches/v7_0/set_portal_settings.py
index d9b6400..54a17dc 100644
--- a/erpnext/patches/v7_0/set_portal_settings.py
+++ b/erpnext/patches/v7_0/set_portal_settings.py
@@ -7,13 +7,14 @@
 from erpnext.setup.setup_wizard import domainify
 
 def execute():
-	for dt in ("assessment", "announcement", "course", "fees"):
+	frappe.reload_doctype('Role')
+	for dt in ("assessment", "course", "fees"):
 		frappe.reload_doc("schools", "doctype", dt)
 
 	frappe.reload_doc('website', 'doctype', 'portal_menu_item')
 
 	frappe.get_doc('Portal Settings').sync_menu()
-	
+
 	if 'schools' in frappe.get_installed_apps():
 		domainify.setup_domain('Education')
 	else:
diff --git a/erpnext/patches/v7_0/update_party_status.py b/erpnext/patches/v7_0/update_party_status.py
index 208b476..f3733db 100644
--- a/erpnext/patches/v7_0/update_party_status.py
+++ b/erpnext/patches/v7_0/update_party_status.py
@@ -1,8 +1,7 @@
 import frappe
-from erpnext.accounts.party_status import status_depends_on, default_status
-from frappe.desk.notifications import get_filters_for
 
 def execute():
+	return
 	for party_type in ('Customer', 'Supplier'):
 		frappe.reload_doctype(party_type)
 
diff --git a/erpnext/patches/v7_2/__init__.py b/erpnext/patches/v7_2/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/v7_2/__init__.py
+++ b/erpnext/patches/v7_2/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/v7_2/contact_address_links.py b/erpnext/patches/v7_2/contact_address_links.py
new file mode 100644
index 0000000..db724b0
--- /dev/null
+++ b/erpnext/patches/v7_2/contact_address_links.py
@@ -0,0 +1,31 @@
+import frappe
+from frappe.core.doctype.dynamic_link.dynamic_link import deduplicate_dynamic_links
+from frappe.utils import update_progress_bar
+
+def execute():
+	frappe.reload_doc('core', 'doctype', 'dynamic_link')
+	frappe.reload_doc('email', 'doctype', 'contact')
+	frappe.reload_doc('geo', 'doctype', 'address')
+	map_fields = (
+		('Customer', 'customer'),
+		('Supplier', 'supplier'),
+		('Load', 'lead'),
+		('Sales Partner', 'sales_partner')
+	)
+	for doctype in ('Contact', 'Address'):
+		if frappe.db.has_column(doctype, 'customer'):
+			items = frappe.get_all(doctype)
+			for i, doc in enumerate(items):
+				doc = frappe.get_doc(doctype, doc.name)
+				dirty = False
+				for field in map_fields:
+					if doc.get(field[1]):
+						doc.append('links', dict(link_doctype=field[0], link_name=doc.get(field[1])))
+						dirty = True
+
+					if dirty:
+						deduplicate_dynamic_links(doc)
+						doc.update_children()
+
+					update_progress_bar('Updating {0}'.format(doctype), i, len(items))
+			print
\ No newline at end of file
diff --git a/erpnext/patches/v7_2/delete_fleet_management_module_def.py b/erpnext/patches/v7_2/delete_fleet_management_module_def.py
new file mode 100644
index 0000000..542ac11
--- /dev/null
+++ b/erpnext/patches/v7_2/delete_fleet_management_module_def.py
@@ -0,0 +1,10 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+	if frappe.db.exists('Module Def', 'Fleet Management'):
+		frappe.db.sql("""delete from `tabModule Def`
+			where module_name = 'Fleet Management'""")
\ No newline at end of file
diff --git a/erpnext/patches/v7_2/mark_students_active.py b/erpnext/patches/v7_2/mark_students_active.py
new file mode 100644
index 0000000..12057ed
--- /dev/null
+++ b/erpnext/patches/v7_2/mark_students_active.py
@@ -0,0 +1,7 @@
+import frappe
+
+def execute():
+    frappe.reload_doc('schools', 'doctype', 'student_batch_student')
+    frappe.reload_doc('schools', 'doctype', 'student_group_student')
+    frappe.db.sql("update `tabStudent Batch Student` set active=1")
+    frappe.db.sql("update `tabStudent Group Student` set active=1")
diff --git a/erpnext/patches/v7_2/rename_evaluation_criteria.py b/erpnext/patches/v7_2/rename_evaluation_criteria.py
new file mode 100644
index 0000000..a45604f
--- /dev/null
+++ b/erpnext/patches/v7_2/rename_evaluation_criteria.py
@@ -0,0 +1,29 @@
+import frappe
+from frappe.model.utils.rename_field import rename_field
+
+def execute():
+	frappe.rename_doc("DocType", "Evaluation Criteria", "Assessment Criteria", force=True)
+	frappe.reload_doc("schools", "doctype", "assessment_criteria")
+	if 'evaluation_criteria' in frappe.db.get_table_columns('Assessment Criteria'):
+		rename_field("Assessment Criteria", "evaluation_criteria", "assessment_criteria")
+
+	frappe.rename_doc("DocType", "Assessment Evaluation Criteria", "Assessment Plan Criteria", force=True)
+	frappe.reload_doc("schools", "doctype", "assessment_plan_criteria")
+	if 'evaluation_criteria' in frappe.db.get_table_columns('Assessment Plan'):
+		rename_field("Assessment Plan Criteria", "evaluation_criteria", "assessment_criteria")
+
+	frappe.reload_doc("schools", "doctype", "assessment_plan")
+	rename_field("Assessment Plan", "evaluation_criterias", "assessment_criteria")
+
+	frappe.reload_doc("schools", "doctype", "assessment_result_detail")
+	if 'evaluation_criteria' in frappe.db.get_table_columns('Assessment Result Detail'):
+		rename_field("Assessment Result Detail", "evaluation_criteria", "assessment_criteria")
+
+	frappe.rename_doc("DocType", "Course Evaluation Criteria", "Course Assessment Criteria", force=True)
+	frappe.reload_doc("schools", "doctype", "course_assessment_criteria")
+	if 'evaluation_criteria' in frappe.db.get_table_columns('Course Assessment Criteria'):
+		rename_field("Course Assessment Criteria", "evaluation_criteria", "assessment_criteria")
+
+	frappe.reload_doc("schools", "doctype", "course")
+	if 'evaluation_criteria' in frappe.db.get_table_columns('Course'):
+		rename_field("Course", "evaluation_criterias", "assessment_criteria")
diff --git a/erpnext/patches/v7_2/update_assessment_modules.py b/erpnext/patches/v7_2/update_assessment_modules.py
new file mode 100644
index 0000000..9c00902
--- /dev/null
+++ b/erpnext/patches/v7_2/update_assessment_modules.py
@@ -0,0 +1,37 @@
+import frappe
+from frappe.model.utils.rename_field import rename_field
+
+def execute():
+	#Rename Grading Structure to Grading Scale
+	frappe.rename_doc("DocType", "Grading Structure", "Grading Scale", force=True)
+	frappe.rename_doc("DocType", "Grade Interval", "Grading Scale Interval", force=True)
+
+	frappe.reload_doc("schools", "doctype", "grading_scale_interval")
+	rename_field("Grading Scale Interval", "to_score", "threshold")
+
+	frappe.rename_doc("DocType", "Assessment", "Assessment Plan", force=True)
+
+	#Rename Assessment Results
+	frappe.reload_doc("schools", "doctype", "assessment_plan")
+	rename_field("Assessment Plan", "grading_structure", "grading_scale")
+
+	frappe.reload_doc("schools", "doctype", "assessment_result")
+	frappe.reload_doc("schools", "doctype", "assessment_result_detail")
+	frappe.reload_doc("schools", "doctype", "assessment_criteria")
+
+
+	for assessment in frappe.get_all("Assessment Plan", fields=["name", "grading_scale"], filters = [["docstatus", "!=", 2 ]]):
+		print assessment
+		for stud_result in frappe.db.sql("select * from `tabAssessment Result` where parent= %s", assessment.name, as_dict=True):
+			if stud_result.result:
+				assessment_result = frappe.new_doc("Assessment Result")
+				assessment_result.student = stud_result.student
+				assessment_result.student_name = stud_result.student_name
+				assessment_result.assessment_plan = assessment.name
+				assessment_result.grading_scale = assessment.grading_scale
+				assessment_result.total_score = stud_result.result
+				assessment_result.flags.ignore_validate = True
+				assessment_result.flags.ignore_mandatory = True
+				assessment_result.save()
+	
+	frappe.db.sql("""delete from `tabAssessment Result` where parent != '' or parent is not null""")
\ No newline at end of file
diff --git a/erpnext/patches/v7_2/update_guardian_name_in_student_master.py b/erpnext/patches/v7_2/update_guardian_name_in_student_master.py
new file mode 100644
index 0000000..6ac4073
--- /dev/null
+++ b/erpnext/patches/v7_2/update_guardian_name_in_student_master.py
@@ -0,0 +1,9 @@
+import frappe
+from frappe.model.utils.rename_field import rename_field
+
+def execute():
+    frappe.reload_doc("schools", "doctype", "student_guardian")
+    student_guardians = frappe.get_all("Student Guardian", fields=["guardian"])
+    for student_guardian in student_guardians:
+        guardian_name = frappe.db.get_value("Guardian", student_guardian.guardian, "guardian_name")
+        frappe.db.sql("update `tabStudent Guardian` set guardian_name = %s where guardian= %s", (guardian_name, student_guardian.guardian))
\ No newline at end of file
diff --git a/erpnext/patches/v7_2/update_party_type.py b/erpnext/patches/v7_2/update_party_type.py
new file mode 100644
index 0000000..147f5a3
--- /dev/null
+++ b/erpnext/patches/v7_2/update_party_type.py
@@ -0,0 +1,16 @@
+# 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
+
+def execute():
+	frappe.reload_doc('setup', 'doctype', 'party_type')
+	make_party_type()
+
+def make_party_type():
+	for party_type in ["Customer", "Supplier", "Employee"]:
+		if not frappe.db.get_value("Party Type", party_type):
+			doc = frappe.new_doc("Party Type")
+			doc.party_type = party_type
+			doc.save(ignore_permissions=True)
\ No newline at end of file
diff --git a/erpnext/patches/v7_2/update_salary_slips.py b/erpnext/patches/v7_2/update_salary_slips.py
index c694fc5..b7a4050 100644
--- a/erpnext/patches/v7_2/update_salary_slips.py
+++ b/erpnext/patches/v7_2/update_salary_slips.py
@@ -1,19 +1,21 @@
 import frappe
 from erpnext.hr.doctype.process_payroll.process_payroll import get_month_details
+from frappe.utils import cint
 
 def execute():
-	ss_columns = frappe.db.get_table_columns("Salary Slip")
-	if "fiscal_year" not in ss_columns or "month" not in ss_columns:
+	frappe.reload_doctype('Salary Slip')
+	if not frappe.db.has_column('Salary Slip', 'fiscal_year'):
 		return
-		
-	salary_slips = frappe.db.sql("""select fiscal_year, month, name from `tabSalary Slip` 
-				where (month is not null and month != '') 
-				and (fiscal_year is not null and fiscal_year != '') and
-				(start_date is null  or start_date = '') and 
-				(end_date is null  or end_date = '') and docstatus != 2""", as_dict=1)
+
+	salary_slips = frappe.db.sql("""select month, name, fiscal_year from `tabSalary Slip`
+				where (month is not null and month != '') and
+				(start_date is null  or start_date = '') and
+				(end_date is null  or end_date = '') and docstatus != 2""", as_dict=True)
 
 	for salary_slip in salary_slips:
-		get_start_end_date = get_month_details(salary_slip.fiscal_year, salary_slip.month)
+		if not cint(salary_slip.month):
+			continue
+		get_start_end_date = get_month_details(salary_slip.fiscal_year, cint(salary_slip.month))
 		start_date = get_start_end_date['month_start_date']
 		end_date = get_start_end_date['month_end_date']
 		frappe.db.sql("""update `tabSalary Slip` set start_date = %s, end_date = %s where name = %s""",
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 0922f07..b5ef4bf 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -32,7 +32,7 @@
 		"""Load `tasks` from the database"""
 		self.tasks = []
 		for task in self.get_tasks():
-			self.append("tasks", {
+			task_map = {
 				"title": task.subject,
 				"status": task.status,
 				"start_date": task.exp_start_date,
@@ -40,7 +40,11 @@
 				"description": task.description,
 				"task_id": task.name,
 				"task_weight": task.task_weight
-			})
+			}
+
+			self.map_custom_fields(task, task_map)
+
+			self.append("tasks", task_map)
 
 	def get_tasks(self):
 		return frappe.get_all("Task", "*", {"project": self.name}, order_by="exp_start_date asc")
@@ -68,7 +72,6 @@
 	def sync_tasks(self):
 		"""sync tasks and remove table"""
 		if self.flags.dont_sync_tasks: return
-
 		task_names = []
 		for t in self.tasks:
 			if t.task_id:
@@ -85,6 +88,8 @@
 				"task_weight": t.task_weight
 			})
 
+			self.map_custom_fields(t, task)
+
 			task.flags.ignore_links = True
 			task.flags.from_project = True
 			task.flags.ignore_feed = True
@@ -98,6 +103,14 @@
 		self.update_percent_complete()
 		self.update_costing()
 
+	def map_custom_fields(self, source, target):
+		project_task_custom_fields = frappe.get_all("Custom Field", {"dt": "Project Task"}, "fieldname")
+
+		for field in project_task_custom_fields:
+			target.update({
+				field.fieldname: source.get(field.fieldname)
+			})
+
 	def update_project(self):
 		self.update_percent_complete()
 		self.update_costing()
@@ -106,6 +119,8 @@
 
 	def update_percent_complete(self):
 		total = frappe.db.sql("""select count(name) from tabTask where project=%s""", self.name)[0][0]
+		if not total and self.percent_complete:
+			self.percent_complete = 0
 		if (self.percent_complete_method == "Task Completion" and total > 0) or (not self.percent_complete_method and total > 0):
 			completed = frappe.db.sql("""select count(name) from tabTask where
 				project=%s and status in ('Closed', 'Cancelled')""", self.name)[0][0]
diff --git a/erpnext/projects/doctype/task/task.json b/erpnext/projects/doctype/task/task.json
index 9cd2aa8..811626d 100644
--- a/erpnext/projects/doctype/task/task.json
+++ b/erpnext/projects/doctype/task/task.json
@@ -1,7 +1,7 @@
 {
  "allow_copy": 0, 
  "allow_import": 1, 
- "allow_rename": 0, 
+ "allow_rename": 1, 
  "autoname": "TASK.#####", 
  "beta": 0, 
  "creation": "2013-01-29 19:25:50", 
@@ -21,7 +21,8 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
+   "in_global_search": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Subject", 
@@ -51,6 +52,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 1, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Project", 
@@ -81,6 +83,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -110,6 +113,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Status", 
@@ -139,7 +143,8 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Priority", 
@@ -170,6 +175,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -197,6 +203,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Expected Start Date", 
@@ -228,6 +235,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Expected Time (in hours)", 
@@ -257,6 +265,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Weight", 
@@ -285,6 +294,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -311,7 +321,8 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Expected End Date", 
@@ -341,6 +352,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "% Progress", 
@@ -369,6 +381,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -397,6 +410,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Details", 
@@ -428,6 +442,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Depends On", 
@@ -456,6 +471,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "depends_on", 
@@ -485,6 +501,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "depends_on_tasks", 
@@ -514,6 +531,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -544,6 +562,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Actual Start Date (via Time Sheet)", 
@@ -575,6 +594,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Actual Time (in hours)", 
@@ -604,6 +624,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -631,6 +652,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Actual End Date (via Time Sheet)", 
@@ -660,6 +682,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -687,6 +710,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Costing Amount (via Time Sheet)", 
@@ -717,6 +741,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Expense Claim (via Expense Claim)", 
@@ -746,6 +771,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -773,6 +799,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Billing Amount (via Time Sheet)", 
@@ -801,6 +828,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -829,6 +857,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Review Date", 
@@ -859,6 +888,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Closing Date", 
@@ -888,6 +918,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -914,6 +945,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Company", 
@@ -944,7 +976,7 @@
  "istable": 0, 
  "max_attachments": 5, 
  "menu_index": 0, 
- "modified": "2016-11-07 05:12:23.294476", 
+ "modified": "2017-02-14 22:46:02.027284", 
  "modified_by": "Administrator", 
  "module": "Projects", 
  "name": "Task", 
@@ -960,7 +992,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -976,8 +1007,10 @@
  "read_only": 0, 
  "read_only_onload": 0, 
  "search_fields": "subject", 
+ "show_name_in_global_search": 0, 
  "sort_order": "DESC", 
  "timeline_field": "project", 
  "title_field": "subject", 
+ "track_changes": 0, 
  "track_seen": 1
 }
\ No newline at end of file
diff --git a/erpnext/projects/doctype/task/task_calendar.js b/erpnext/projects/doctype/task/task_calendar.js
index f8fc3d3..d7468a5 100644
--- a/erpnext/projects/doctype/task/task_calendar.js
+++ b/erpnext/projects/doctype/task/task_calendar.js
@@ -7,7 +7,8 @@
 		"end": "exp_end_date",
 		"id": "name",
 		"title": "subject",
-		"allDay": "allDay"
+		"allDay": "allDay",
+		"progress": "progress"
 	},
 	gantt: true,
 	filters: [
diff --git a/erpnext/projects/doctype/timesheet/timesheet_calendar.js b/erpnext/projects/doctype/timesheet/timesheet_calendar.js
index b22cd09..14f016a 100644
--- a/erpnext/projects/doctype/timesheet/timesheet_calendar.js
+++ b/erpnext/projects/doctype/timesheet/timesheet_calendar.js
@@ -4,9 +4,9 @@
 		"end": "end_date",
 		"name": "parent",
 		"id": "name",
-		"title": "name",
 		"allDay": "allDay",
-		"child_name": "name"
+		"child_name": "name",
+		"title": "title"
 	},
 	style_map: {
 		"0": "info", 
diff --git a/erpnext/public/build.json b/erpnext/public/build.json
index 30b0900..c405681 100644
--- a/erpnext/public/build.json
+++ b/erpnext/public/build.json
@@ -28,7 +28,8 @@
         "public/js/templates/item_selector.html",
         "public/js/utils/item_selector.js",
         "public/js/help_links.js",
-        "public/js/schools/student_button.html"
+        "public/js/schools/student_button.html",
+        "public/js/schools/assessment_result_tool.html"
     ],
     "js/item-dashboard.min.js": [
         "stock/dashboard/item_dashboard.html",
diff --git a/erpnext/public/css/erpnext.css b/erpnext/public/css/erpnext.css
index 535f83a..cfe9f63 100644
--- a/erpnext/public/css/erpnext.css
+++ b/erpnext/public/css/erpnext.css
@@ -61,11 +61,12 @@
 }
 .item-list-area {
   padding: 15px 0px;
+  overflow-y: scroll;
+  height: calc(100vh - 162px);
 }
 .pos-toolbar,
 .pos-bill-toolbar {
   padding: 10px 0px;
-  border-bottom: 1px solid #d1d8dd;
   height: 51px;
 }
 .pos-item-toolbar .form-group {
@@ -77,6 +78,7 @@
   margin-right: -1px;
 }
 .pos-bill {
+  border-top: 1px solid #d1d8dd;
   margin-left: -15px;
   margin-right: -15px;
 }
@@ -169,6 +171,9 @@
 .payment-toolbar {
   padding-right: 30px;
 }
+.list-row-head.pos-invoice-list {
+  border-top: 1px solid #d1d8dd;
+}
 body[data-route="pos"] .modal-dialog {
   width: 750px;
 }
@@ -210,3 +215,25 @@
   margin: 15px;
   width: 130px;
 }
+.frappe-control[data-fieldname='result_html'] {
+  overflow: scroll;
+}
+.assessment-result-tool {
+  table-layout: fixed;
+}
+.assessment-result-tool input {
+  width: 100%;
+  border: 0;
+  outline: none;
+  text-align: right;
+}
+.assessment-result-tool th {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.assessment-result-tool .total-score,
+.assessment-result-tool .grade,
+.assessment-result-tool .score {
+  text-align: right;
+}
diff --git a/erpnext/public/css/website.css b/erpnext/public/css/website.css
index 6a1d311..1617ea7 100644
--- a/erpnext/public/css/website.css
+++ b/erpnext/public/css/website.css
@@ -78,7 +78,6 @@
   font-weight: inherit;
   color: #8D99A6;
 }
-.transaction-list-item .items-preview,
 .transaction-list-item .transaction-time {
   margin-top: 5px;
 }
diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js
index 16385e1..7115205 100644
--- a/erpnext/public/js/financial_statements.js
+++ b/erpnext/public/js/financial_statements.js
@@ -31,7 +31,8 @@
 			"account": data.account,
 			"company": frappe.query_report_filters_by_name.company.get_value(),
 			"from_date": data.from_date || data.year_start_date,
-			"to_date": data.to_date || data.year_end_date
+			"to_date": data.to_date || data.year_end_date,
+			"project": $.grep(frappe.query_report.filters, function(e){ return e.df.fieldname == 'project'; })[0].$input.val()
 		};
 		frappe.set_route("query-report", "General Ledger");
 	},
diff --git a/erpnext/public/js/pos/pos.html b/erpnext/public/js/pos/pos.html
index 9d0ab60..44e42d7 100644
--- a/erpnext/public/js/pos/pos.html
+++ b/erpnext/public/js/pos/pos.html
@@ -1,14 +1,26 @@
 <div class="pos">
     <div class="row">
-    	<div class="col-sm-5 pos-bill-wrapper">
-            <div class="pos-bill-toolbar row">
-                <div class="party-area col-xs-12"></div>
+    	<div class="col-sm-6 pos-bill-wrapper">
+            <div class="pos-bill-toolbar" style="display: flex;">
+                <div class="party-area" style="flex: 1;"></div>
+				<button class="btn btn-default list-customers-btn" style="margin: 0 5px 0 15px;">
+					<i class="fa fa-list"></i>
+				</button>
+				<button class="btn btn-default add-customer-btn">
+					<i class="fa fa-plus"></i>
+				</button>
+				{% if (allow_delete) { %}
+					<button class="btn btn-default btn-danger" style="margin: 0 5px 0 5px;display:none">
+						<i class="octicon octicon-trashcan"></i>
+					</button>
+				{% } %}
             </div>
     		<div class="pos-bill">
     			<div class="item-cart">
                     <div class="row pos-bill-row pos-bill-header">
-                        <div class="col-xs-5"><h6>{%= __("Item") %}</h6></div>
-                        <div class="col-xs-4"><h6 class="text-right">{%= __("Quantity") %}</h6></div>
+                        <div class="col-xs-4"><h6>{%= __("Item") %}</h6></div>
+                        <div class="col-xs-3"><h6 class="text-right">{%= __("Quantity") %}</h6></div>
+						<div class="col-xs-2"><h6 class="text-right">{%= __("Discount") %}</h6></div>
                         <div class="col-xs-3"><h6 class="text-right">{%= __("Rate") %}</h6></div>
                     </div>
                     <div class="items"></div>
@@ -48,18 +60,27 @@
                     </div>
     			</div>
     		</div>
+			<div class="list-customers">
+
+			</div>
     	</div>
-    	<div class="col-sm-7 pos-items-section">
+    	<div class="col-sm-6 pos-items-section">
 			<div class="row pos-item-area">
 
 			</div>
 			<span id="customer-results" style="color:#68a;"></span>
             <div class="row pos-item-toolbar">
-            	<div class="search-area col-xs-12"></div>
+				<div class="search-item-group col-xs-5"></div>
+				<div class="search-item col-xs-7"></div>
             </div>
-    		<div class="item-list-area">
+    		<div class="item-list-area" style="auto">
 				<div class="app-listing item-list"></ul>
     		</div>
     	</div>
+		<div class="row">
+			<div class="text-right list-paging-area">
+				<button class="btn btn-default btn-more btn-sm" style="margin:5px 20px">{{ __("More") }}</button>
+			</div>
+		</div>
     </div>
 </div>
diff --git a/erpnext/public/js/pos/pos_bill_item.html b/erpnext/public/js/pos/pos_bill_item.html
index f5d1a76..1a1f1e2 100644
--- a/erpnext/public/js/pos/pos_bill_item.html
+++ b/erpnext/public/js/pos/pos_bill_item.html
@@ -1,25 +1,30 @@
 <div class="row pos-bill-row pos-bill-item" data-item-code="{%= item_code %}">
-    <div class="col-xs-5"><h6>{%= item_code || "" %}{%= item_name || "" %}</h6></div>
-    <div class="col-xs-4">
+    <div class="col-xs-4"><h6>{%= item_code || "" %}{%= __(item_name) || "" %}</h6></div>
+    <div class="col-xs-3">
         <div class="row pos-qty-row">
             <div class="col-xs-2 text-center pos-qty-btn" data-action="decrease-qty"><i class="fa fa-minus text-muted" style="font-size:12px"></i></div>
             <div class="col-xs-8">
 				<div>
-                    <input type="text" value="{%= qty %}" class="form-control input-sm pos-item-qty text-right">
+                    <input type="tel" value="{%= qty %}" class="form-control   pos-item-qty text-right">
                 </div>
                 {% if(actual_qty != null) { %}
                 <div style="margin-top: 5px;" class="text-muted small text-right">
-                    <span title="{%= __("In Stock") %}">{%= actual_qty || 0 %}<span>
+                    {%= __("In Stock: ") %} <span>{%= actual_qty || 0.0 %}</span>
                 </div>
                 {% } %}
             </div>
             <div class="col-xs-2 text-center pos-qty-btn" data-action="increase-qty"><i class="fa fa-plus text-muted" style="font-size:12px"></i></div>
         </div>
     </div>
+    <div class="col-xs-2 text-right">
+		<div class="row input-sm">
+            <input type="tel" value="{%= discount_percentage %}" class="form-control text-right pos-item-discount">
+        </div>
+    </div>
     <div class="col-xs-3 text-right">
         <div class="text-muted" style="margin-top: 5px;">
 			{% if(enabled) { %}
-				<input type="text" value="{%= rate %}" class="form-control input-sm pos-item-rate text-right">
+				<input type="tel" value="{%= rate %}" class="form-control input-sm pos-item-rate text-right">
 			{% } else { %}
 				<h6>{%= format_currency(rate) %}</h6>
 			{% } %}
diff --git a/erpnext/public/js/queries.js b/erpnext/public/js/queries.js
index 7c4bf0f..f3167bb 100644
--- a/erpnext/public/js/queries.js
+++ b/erpnext/public/js/queries.js
@@ -36,17 +36,48 @@
 
 	customer_filter: function(doc) {
 		if(!doc.customer) {
-			frappe.throw(__("Please specify a") + " " +
-				__(frappe.meta.get_label(doc.doctype, "customer", doc.name)));
+			frappe.throw(__("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "customer", doc.name))]));
 		}
 
 		return { filters: { customer: doc.customer } };
 	},
 
+	contact_query: function(doc) {
+		if(frappe.dynamic_link) {
+			if(!doc[frappe.dynamic_link.fieldname]) {
+				frappe.throw(__("Please set {0}",
+					[__(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name))]));
+			}
+
+			return {
+				query: 'frappe.email.doctype.contact.contact.contact_query',
+				filters: { link_doctype: frappe.dynamic_link.doctype, link_name: doc[frappe.dynamic_link.fieldname] } };
+		}
+	},
+
+	address_query: function(doc) {
+		if(frappe.dynamic_link) {
+			if(!doc[frappe.dynamic_link.fieldname]) {
+				frappe.throw(__("Please set {0}", 
+					[__(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name))]));
+			}
+
+			return {
+				query: 'frappe.geo.doctype.address.address.address_query',
+				filters: { link_doctype: frappe.dynamic_link.doctype, link_name: doc[frappe.dynamic_link.fieldname] } };
+		}
+	},
+
+	company_address_query: function(doc) {
+		return {
+			query: 'frappe.geo.doctype.address.address.address_query',
+			filters: { is_your_company_address: 1, link_doctype: 'Company', link_name: doc.company || '' }
+		};
+	},
+
 	supplier_filter: function(doc) {
 		if(!doc.supplier) {
-			frappe.throw(__("Please specify a") + " " +
-				__(frappe.meta.get_label(doc.doctype, "supplier", doc.name)));
+			frappe.throw(__("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "supplier", doc.name))]));
 		}
 
 		return { filters: { supplier: doc.supplier } };
@@ -54,8 +85,8 @@
 
 	lead_filter: function(doc) {
 		if(!doc.lead) {
-			frappe.throw(__("Please specify a") + " " +
-				__(frappe.meta.get_label(doc.doctype, "lead", doc.name)));
+			frappe.throw(__("Please specify a {0}", 
+				[__(frappe.meta.get_label(doc.doctype, "lead", doc.name))]));
 		}
 
 		return { filters: { lead: doc.lead } };
@@ -74,7 +105,7 @@
 			filters: [
 				["Warehouse", "company", "in", ["", cstr(doc.company)]],
 				["Warehouse", "is_group", "=",0]
-				
+
 			]
 		}
 	}
diff --git a/erpnext/public/js/schools/assessment_result_tool.html b/erpnext/public/js/schools/assessment_result_tool.html
new file mode 100644
index 0000000..3c09ccd
--- /dev/null
+++ b/erpnext/public/js/schools/assessment_result_tool.html
@@ -0,0 +1,44 @@
+<table class="table table-bordered assessment-result-tool">
+    <thead>
+        <tr>
+            <th style="width: 100px" rowspan="2">Student</th>
+            <th style="width: 200px" rowspan="2">Student Name</th>
+            {% for c in criteria %}
+            <th class="score" style="width: 100px">{{ c.assessment_criteria }}</th>
+            {% endfor %}
+            <th class="score" style="width: 100px">Total Marks</th>
+            <!--criteria-->
+        </tr>
+        <tr>
+            {% for c in criteria %}
+            <th class="score" style="width: 100px">{{ c.maximum_score }}</th>
+            {% endfor %}
+            <th class="score" style="width: 100px">{{max_total_score}}</th>
+        </tr>
+    </thead>
+    <tbody>
+        {% for s in students %}
+        <tr 
+            {% if(s.assessment_details) { %} class="text-muted" {% } %}
+            data-student="{{s.student}}">
+            <td>{{ s.student }}</td>
+            <td>{{ s.student_name }}</td>
+            {% for c in criteria %}
+            <td>
+                <input type="text"
+                    data-max-score="{{c.maximum_score}}"
+                    data-criteria="{{c.assessment_criteria}}"
+                    data-student="{{s.student}}"
+                    {% if(s.assessment_details) { %}
+                        disabled
+                        value="{{s.assessment_details[c.assessment_criteria]}}"
+                    {% } %}/>
+            </td>
+            {% endfor %}
+            <td data-student="{{s.student}}" class="total-score">
+                {% if(s.assessment_details) { %} {{s.assessment_details.total_score}} {% } %}
+            </td>
+        </tr>
+        {% endfor %}
+    </tbody>
+</table>
\ No newline at end of file
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 30323ec..56bc27e 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -192,7 +192,7 @@
 						{fieldtype:"Data", fieldname:"user_fullname_"+ i,
 							label:__("Full Name")},
 						{fieldtype:"Data", fieldname:"user_email_" + i,
-							label:__("Email ID"), placeholder:__("user@example.com"),
+							label:__("Email Address"), placeholder:__("user@example.com"),
 							options: "Email"},
 						{fieldtype:"Column Break"},
 						{fieldtype: "Check", fieldname: "user_sales_" + i,
diff --git a/erpnext/public/js/templates/address_list.html b/erpnext/public/js/templates/address_list.html
index 6ee7d78..f9a317f 100644
--- a/erpnext/public/js/templates/address_list.html
+++ b/erpnext/public/js/templates/address_list.html
@@ -2,7 +2,7 @@
 <div class="clearfix"></div>
 {% for(var i=0, l=addr_list.length; i<l; i++) { %}
     <p class="h6">
-        {%= i+1 %}. {%= addr_list[i].address_type %}
+        {%= i+1 %}. {%= addr_list[i].address_type!="Other" ? addr_list[i].address_type : addr_list[i].address_title %}
         {% if(addr_list[i].is_primary_address) { %}
             <span class="text-muted">({%= __("Primary") %})</span>{% } %}
         {% if(addr_list[i].is_shipping_address) { %}
diff --git a/erpnext/public/js/templates/contact_list.html b/erpnext/public/js/templates/contact_list.html
index e269159..abaadff 100644
--- a/erpnext/public/js/templates/contact_list.html
+++ b/erpnext/public/js/templates/contact_list.html
@@ -1,18 +1,23 @@
 <p><button class="btn btn-xs btn-default btn-contact">
     {{ __("New Contact") }}</button></p>
     <div class="clearfix"></div>
-
+<ol>
 {% for(var i=0, l=contact_list.length; i<l; i++) { %}
     <p class="h6">
-        {%= i+1 %}. {%= contact_list[i].first_name %} {%= contact_list[i].last_name %}
-        {% if(contact_list[i].is_primary_contact) { %}
-            <span class="text-muted">({%= __("Primary") %})</span>
-        {% } %}
+		<li>
+	        {%= contact_list[i].first_name %} {%= contact_list[i].last_name %}
+	        {% if(contact_list[i].is_primary_contact) { %}
+	            <span class="text-muted">({%= __("Primary") %})</span>
+	        {% } %}
+	        {% if(contact_list[i].designation){ %}
+	         <span class="text-muted">&ndash; {%= contact_list[i].designation %}</span>
+	        {% } %}
+	        <a href="#Form/Contact/{%= encodeURIComponent(contact_list[i].name) %}"
+	            class="btn btn-xs btn-default pull-right">
+	            {%= __("Edit") %}</a>
+		</li>
+	</p>
 
-        <a href="#Form/Contact/{%= encodeURIComponent(contact_list[i].name) %}"
-            class="btn btn-xs btn-default pull-right">
-            {%= __("Edit") %}</a>
-    </p>
     <div style="padding-left: 15px;">
         <p style="padding-top: 5px; font-size: 12px;">
         {% if(contact_list[i].phone) { %}
@@ -22,11 +27,12 @@
             {%= __("Mobile No.") %}: {%= contact_list[i].mobile_no %}<br>
         {% } %}
         {% if(contact_list[i].email_id) { %}
-            {%= __("Email ID") %}: {%= contact_list[i].email_id %}
+            {%= __("Email Address") %}: {%= contact_list[i].email_id %}
         {% } %}
         </p>
     </div>
 {% } %}
+</ol>
 {% if(!contact_list.length) { %}
 <p class="text-muted">{%= __("No contacts added yet.") %}</p>
-{% } %}
+{% } %}
\ No newline at end of file
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 74e9fb6..551ea51 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -82,32 +82,6 @@
 
 
 $.extend(erpnext.utils, {
-	clear_address_and_contact: function(frm) {
-		$(frm.fields_dict['address_html'].wrapper).html("");
-		frm.fields_dict['contact_html'] && $(frm.fields_dict['contact_html'].wrapper).html("");
-	},
-
-	render_address_and_contact: function(frm) {
-		// render address
-		$(frm.fields_dict['address_html'].wrapper)
-			.html(frappe.render_template("address_list",
-				cur_frm.doc.__onload))
-			.find(".btn-address").on("click", function() {
-				frappe.new_doc("Address");
-			});
-
-		// render contact
-		if(frm.fields_dict['contact_html']) {
-			$(frm.fields_dict['contact_html'].wrapper)
-				.html(frappe.render_template("contact_list",
-					cur_frm.doc.__onload))
-				.find(".btn-contact").on("click", function() {
-					frappe.new_doc("Contact");
-				}
-			);
-		}
-	},
-
 	set_party_dashboard_indicators: function(frm) {
 		if(frm.doc.__onload && frm.doc.__onload.dashboard_info) {
 			var info = frm.doc.__onload.dashboard_info;
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index a3f3550..a1d200f 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -65,7 +65,7 @@
 	if(!display_field) display_field = "address_display";
 	if(frm.doc[address_field]) {
 		frappe.call({
-			method: "erpnext.utilities.doctype.address.address.get_address_display",
+			method: "frappe.geo.doctype.address.address.get_address_display",
 			args: {"address_dict": frm.doc[address_field] },
 			callback: function(r) {
 				if(r.message) {
@@ -151,7 +151,7 @@
 
 erpnext.utils.get_shipping_address = function(frm, callback){
 	frappe.call({
-		method: "erpnext.utilities.doctype.address.address.get_shipping_address",
+		method: "frappe.geo.doctype.address.address.get_shipping_address",
 		args: {company: frm.doc.company},
 		callback: function(r){
 			if(r.message){
diff --git a/erpnext/public/less/erpnext.less b/erpnext/public/less/erpnext.less
index 2d74b5f..495e618 100644
--- a/erpnext/public/less/erpnext.less
+++ b/erpnext/public/less/erpnext.less
@@ -76,11 +76,13 @@
 
 .item-list-area {
 	padding: 15px 0px;
+	overflow-y: scroll;
+	height: ~"calc(100vh - 162px)";
 }
 
 .pos-toolbar, .pos-bill-toolbar {
 	padding: 10px 0px;
-	border-bottom: 1px solid #d1d8dd;
+	// border-bottom: 1px solid #d1d8dd;
 	height: 51px;
 }
 
@@ -95,6 +97,7 @@
 }
 
 .pos-bill {
+	border-top: 1px solid @border-color;
 	margin-left: -15px;
 	margin-right: -15px;
 }
@@ -211,6 +214,10 @@
 	padding-right: 30px;
 }
 
+.list-row-head.pos-invoice-list {
+	border-top: 1px solid @border-color;
+}
+
 body[data-route="pos"] .modal-dialog {
 	width: 750px;
 
@@ -255,3 +262,28 @@
 	margin: 15px;
 	width: 130px;
 }
+
+// assessment tool
+.frappe-control[data-fieldname='result_html'] {
+	overflow: scroll;
+}
+.assessment-result-tool {
+	table-layout: fixed;
+
+	input {
+		width: 100%;
+		border: 0;
+		outline: none;
+		text-align: right;
+	}
+
+	th {
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+	}
+
+	.total-score, .grade, .score {
+		text-align: right;
+	}
+}
\ No newline at end of file
diff --git a/erpnext/public/less/website.less b/erpnext/public/less/website.less
index b270b8b..a645f28 100644
--- a/erpnext/public/less/website.less
+++ b/erpnext/public/less/website.less
@@ -94,13 +94,9 @@
 	}
 
 	.transaction-time {
-		// margin-left: 15px;
-	}
-
-	.items-preview,
-	.transaction-time {
 		margin-top: 5px;
 	}
+
 }
 
 // order.html
diff --git a/erpnext/schools/api.py b/erpnext/schools/api.py
index bf09351..313b5ff 100644
--- a/erpnext/schools/api.py
+++ b/erpnext/schools/api.py
@@ -7,7 +7,7 @@
 import json
 from frappe import _
 from frappe.model.mapper import get_mapped_doc
-from frappe.utils import flt
+from frappe.utils import flt, cstr
 
 @frappe.whitelist()
 def enroll_student(source_name):
@@ -84,11 +84,12 @@
 
 @frappe.whitelist()
 def get_student_batch_students(student_batch):
-	"""Returns List of student, student_name in Student Batch.
+	"""Returns List of student, student_name, idx in Student Batch.
 
 	:param student_batch: Student Batch.
 	"""
-	students = frappe.get_list("Student Batch Student", fields=["student", "student_name", "idx"] , filters={"parent": student_batch}, order_by= "idx")
+	students = frappe.get_list("Student Batch Student", fields=["student", "student_name", "idx"] , 
+		filters={"parent": student_batch, "active": 1}, order_by= "idx")
 	return students
 
 @frappe.whitelist()
@@ -97,7 +98,8 @@
 
 	:param student_group: Student Group.
 	"""
-	students = frappe.get_list("Student Group Student", fields=["student", "student_name"] , filters={"parent": student_group}, order_by= "idx")
+	students = frappe.get_list("Student Group Student", fields=["student", "student_name"] , 
+		filters={"parent": student_group, "active": 1}, order_by= "idx")
 	return students
 
 @frappe.whitelist()
@@ -163,3 +165,92 @@
 			}, as_dict=True, update={"allDay": 0})
 
 	return data
+
+@frappe.whitelist()
+def get_assessment_criteria(course):
+	"""Returns Assessmemt Criteria and their Weightage from Course Master.
+
+	:param Course: Course
+	"""
+	return frappe.get_list("Course Assessment Criteria", \
+		fields=["assessment_criteria", "weightage"], filters={"parent": course}, order_by= "idx")
+
+@frappe.whitelist()
+def get_assessment_students(assessment_plan, student_group=None, student_batch=None):
+	student_list = []
+	if student_group:
+		student_list = get_student_group_students(student_group)
+	elif student_batch:
+		student_list = get_student_batch_students(student_batch)
+	for i, student in enumerate(student_list):
+		result = get_result(student.student, assessment_plan)
+		if result:
+			student_result = {}
+			for d in result.details:
+				student_result.update({d.assessment_criteria: cstr(d.score) + " ("+ d.grade + ")"})
+			student_result.update({"total_score": cstr(result.total_score) + " (" + result.grade + ")"})
+			student.update({'assessment_details': student_result})
+		else:
+			student.update({'assessment_details': None})
+	return student_list
+
+@frappe.whitelist()
+def get_assessment_details(assessment_plan):
+	"""Returns Assessment Criteria  and Maximum Score from Assessment Plan Master.
+
+	:param Assessment Plan: Assessment Plan
+	"""
+	return frappe.get_list("Assessment Plan Criteria", \
+		fields=["assessment_criteria", "maximum_score"], filters={"parent": assessment_plan}, order_by= "idx")
+
+@frappe.whitelist()
+def get_result(student, assessment_plan):
+	"""Returns Submitted Result of given student for specified Assessment Plan
+
+	:param Student: Student
+	:param Assessment Plan: Assessment Plan
+	"""
+	results = frappe.get_all("Assessment Result", filters={"student": student, "assessment_plan": assessment_plan, "docstatus": 1})
+	if results:
+		return frappe.get_doc("Assessment Result", results[0])
+	else:
+		return None
+
+@frappe.whitelist()
+def get_grade(grading_scale, percentage):
+	"""Returns Grade based on the Grading Scale and Score.
+
+	:param Grading Scale: Grading Scale
+	:param Percentage: Score Percentage Percentage
+	"""
+	grading_scale_intervals = {}
+	for d in frappe.get_all("Grading Scale Interval", fields=["grade_code", "threshold"], filters={"parent": grading_scale}):
+		grading_scale_intervals.update({d.threshold:d.grade_code})
+	intervals = sorted(grading_scale_intervals.keys(), key=float, reverse=True)
+	for interval in intervals:
+		if flt(percentage) >= interval:
+			grade = grading_scale_intervals.get(interval)
+			break
+		else:
+			grade = ""
+	return grade
+
+@frappe.whitelist()
+def mark_assessment_result(student, assessment_plan, scores):
+	student_score = json.loads(scores)
+	details = []
+	for s in student_score.keys():
+		details.append({
+			"assessment_criteria": s,
+			"score": flt(student_score[s])
+		})
+	assessment_result = frappe.new_doc("Assessment Result")
+	assessment_result.update({
+		"student": student,
+		"student_name": frappe.db.get_value("Student", student, "title"),
+		"assessment_plan": assessment_plan,
+		"details": details
+	})
+	assessment_result.save()
+	assessment_result.submit()	
+	return assessment_result
\ No newline at end of file
diff --git a/erpnext/schools/doctype/announcement/announcement.js b/erpnext/schools/doctype/announcement/announcement.js
deleted file mode 100644
index 5b1d1c0..0000000
--- a/erpnext/schools/doctype/announcement/announcement.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2016, Frappe and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('Announcement', {
-	onload: function(frm) {
-		frm.add_fetch('instructor', 'instructor_name' , 'posted_by');
-	}
-});
-
diff --git a/erpnext/schools/doctype/announcement/announcement.json b/erpnext/schools/doctype/announcement/announcement.json
deleted file mode 100644
index 831b71f..0000000
--- a/erpnext/schools/doctype/announcement/announcement.json
+++ /dev/null
@@ -1,315 +0,0 @@
-{
- "allow_copy": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
- "autoname": "announcement.#####", 
- "beta": 0, 
- "creation": "2016-06-23 05:37:33.996289", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Document", 
- "editable_grid": 0, 
- "fields": [
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "default": "", 
-   "fieldname": "receiver", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Receiver", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Student\nStudent Group\nAll Students", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "instructor", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Instructor", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Instructor", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "column_break_3", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "depends_on": "eval: doc.receiver == \"Student\"", 
-   "fieldname": "student", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Student", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Student", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "depends_on": "eval: doc.receiver == \"Student Group\"", 
-   "fieldname": "student_group", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Student Group", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Student Group", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "posted_by", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Posted By", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "section_break_5", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "subject", 
-   "fieldtype": "Small Text", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Subject", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "description", 
-   "fieldtype": "Text Editor", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Description", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "amended_from", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Amended From", 
-   "length": 0, 
-   "no_copy": 1, 
-   "options": "Announcement", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "idx": 0, 
- "image_view": 0, 
- "in_create": 0, 
- "in_dialog": 0, 
- "is_submittable": 1, 
- "issingle": 0, 
- "istable": 0, 
- "max_attachments": 0, 
- "modified": "2016-07-21 06:30:12.825629", 
- "modified_by": "r@r.com", 
- "module": "Schools", 
- "name": "Announcement", 
- "name_case": "", 
- "owner": "demo@erpnext.com", 
- "permissions": [
-  {
-   "amend": 1, 
-   "apply_user_permissions": 0, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 1, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Academics User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 1, 
-   "write": 1
-  }
- ], 
- "quick_entry": 0, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "title_field": "subject", 
- "track_seen": 1
-}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/announcement/announcement.py b/erpnext/schools/doctype/announcement/announcement.py
deleted file mode 100644
index 1a3fe75d..0000000
--- a/erpnext/schools/doctype/announcement/announcement.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe and contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.model.document import Document
-from frappe import _
-
-class Announcement(Document):
-	def validate(self):
-		self.validate_receiver()
-		self.set_posted_by()
-
-	def validate_receiver(self):
-		if self.receiver == "Student":
-			if not self.student:
-				frappe.throw(_("Please select a Student"))
-				self.student_group = None
-		elif self.receiver == "Student Group":
-			if not self.student_group:
-				frappe.throw(_("Please select a Student Group"))
-				self.student = None
-		else:
-			self.student_group = None
-			self.student = None
-
-	def set_posted_by(self):
-		if self.instructor:
-			self.posted_by = frappe.db.get_value("Instructor", self.instructor, "instructor_name")
-		else:
-			self.posted_by = frappe.session.user
-
-
-
-
-def get_message_list(doctype, txt, filters, limit_start, limit_page_length=20):
-	user = frappe.session.user
-	student = frappe.db.sql("select name from `tabStudent` where student_email_id= %s", user)
-	if student:
-		sg_list = frappe.db.sql("""select parent from `tabStudent Group Student` as sgs
-				where sgs.student = %s """,(student))
-
-		data = frappe.db.sql("""select name, receiver, subject, description, posted_by, modified,
-			student, student_group
-		    from `tabAnnouncement` as announce
-			where (announce.receiver = "Student" and announce.student = %s)
-			or (announce.receiver = "Student Group" and announce.student_group in %s)
-			or announce.receiver = "All Students"
-			and announce.docstatus = 1	
-			order by announce.idx asc limit {0} , {1}"""
-			.format(limit_start, limit_page_length), (student,sg_list), as_dict = True)
-
-		for announcement in data:
-			try:
-				num_attachments = frappe.db.sql(""" select count(file_url) from tabFile as file
-													where file.attached_to_name=%s 
-													and file.attached_to_doctype=%s""",(announcement.name,"Announcement"))
-
-			except IOError or frappe.DoesNotExistError:
-				pass
-				frappe.local.message_log.pop()
-
-			announcement.num_attachments = num_attachments[0][0]
-
-		return data
-
-def get_list_context(context=None):
-	return {
-		"show_sidebar": True,
-		'no_breadcrumbs': True,
-		"title": _("Announcements"),
-		"get_list": get_message_list,
-		"row_template": "templates/includes/announcement/announcement_row.html"
-	}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/announcement/test_announcement.py b/erpnext/schools/doctype/announcement/test_announcement.py
deleted file mode 100644
index b0200a2..0000000
--- a/erpnext/schools/doctype/announcement/test_announcement.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe and Contributors
-# See license.txt
-from __future__ import unicode_literals
-
-import frappe
-import unittest
-
-# test_records = frappe.get_test_records('Announcement')
-
-class TestAnnouncement(unittest.TestCase):
-	pass
diff --git a/erpnext/schools/doctype/assessment/assessment.js b/erpnext/schools/doctype/assessment/assessment.js
deleted file mode 100644
index e842f41..0000000
--- a/erpnext/schools/doctype/assessment/assessment.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-cur_frm.add_fetch("student_group", "course", "course");
-cur_frm.add_fetch("examiner", "instructor_name", "examiner_name");
-cur_frm.add_fetch("supervisor", "instructor_name", "supervisor_name");
-cur_frm.add_fetch("student", "title", "student_name");
-
-frappe.ui.form.on("Assessment", {
-    student_group: function(frm) {
-        frm.set_value("results", "");
-        if (frm.doc.student_group) {
-            frappe.call({
-                method: "erpnext.schools.api.get_student_group_students",
-                args: {
-                    "student_group": frm.doc.student_group
-                },
-                callback: function(r) {
-                    if (r.message) {
-                        $.each(r.message, function(i, d) {
-                            var row = frappe.model.add_child(cur_frm.doc, "Assessment Result", "results");
-                            row.student = d.student;
-                            row.student_name = d.student_name;
-                        });
-                    }
-                    refresh_field("results");
-                }
-            });
-        }
-    }
-});
-
-frappe.ui.form.on("Assessment Result", {
-    result: function(frm, cdt, cdn) {
-        if (frm.doc.grading_structure) {
-            var assessment_result = locals[cdt][cdn];
-            frappe.call({
-                method: "erpnext.schools.doctype.assessment.assessment.get_grade",
-                args: {
-                    grading_structure: frm.doc.grading_structure,
-                    result: assessment_result.result
-                },
-                callback: function(r) {
-                    if (r.message) {
-                        frappe.model.set_value(cdt, cdn, 'grade', r.message);
-                    }
-                }
-            });
-        }
-    }
-});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment/assessment.py b/erpnext/schools/doctype/assessment/assessment.py
deleted file mode 100644
index 003b427..0000000
--- a/erpnext/schools/doctype/assessment/assessment.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-from frappe.model.document import Document
-import frappe
-from frappe import _
-
-class Assessment(Document):
-	def validate(self):
-		self.validate_overlap()
-
-	def validate_overlap(self):
-		"""Validates overlap for Student Group/Student Batch, Instructor, Room"""
-		
-		from erpnext.schools.utils import validate_overlap_for
-
-		#Validate overlapping course schedules.
-		if self.student_batch:
-			validate_overlap_for(self, "Course Schedule", "student_batch")
-
-		if self.student_group:
-			validate_overlap_for(self, "Course Schedule", "student_group")
-		
-		validate_overlap_for(self, "Course Schedule", "instructor")
-		validate_overlap_for(self, "Course Schedule", "room")
-
-		#validate overlapping assessment schedules.
-		if self.student_batch:
-			validate_overlap_for(self, "Assessment", "student_batch")
-		
-		if self.student_group:
-			validate_overlap_for(self, "Assessment", "student_group")
-		
-		validate_overlap_for(self, "Assessment", "room")
-		validate_overlap_for(self, "Assessment", "supervisor", self.instructor)
-
-
-def get_assessment_list(doctype, txt, filters, limit_start, limit_page_length=20):
-	user = frappe.session.user
-	student = frappe.db.sql("select name from `tabStudent` where student_email_id= %s", user)
-	if student:
-		return frappe. db.sql('''select course, schedule_date, from_time, to_time, sgs.name from `tabAssessment` as assessment, 
-			`tabStudent Group Student` as sgs where assessment.student_group = sgs.parent and sgs.student = %s and assessment.docstatus=1
-			order by assessment.name asc limit {0} , {1}'''
-			.format(limit_start, limit_page_length), student, as_dict = True)
-
-def get_list_context(context=None):
-	return {
-		"show_sidebar": True,
-		'no_breadcrumbs': True,
-		"title": _("Assessment Schedule"),
-		"get_list": get_assessment_list,
-		"row_template": "templates/includes/assessment/assessment_row.html"
-	}
-
-@frappe.whitelist()
-def get_grade(grading_structure, result):
-	grade = frappe.db.sql("""select gi.from_score, gi.to_score, gi.grade_code, gi.grade_description 
-		from `tabGrading Structure` as gs, `tabGrade Interval` as gi 
-		where gs.name = gi.parent and gs.name = %(grading_structure)s and gi.from_score <= %(result)s 
-		and gi.to_score >= %(result)s""".format(), 
-		{
-			"grading_structure":grading_structure,
-			"result": result
-		},
-		as_dict=True)
-   	 
-	return grade[0].grade_code if grade else ""
-
-def validate_grade(score, grade):
-	pass
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment/__init__.py b/erpnext/schools/doctype/assessment_criteria/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/assessment/__init__.py
copy to erpnext/schools/doctype/assessment_criteria/__init__.py
diff --git a/erpnext/schools/doctype/assessment_criteria/assessment_criteria.js b/erpnext/schools/doctype/assessment_criteria/assessment_criteria.js
new file mode 100644
index 0000000..44b9ca3
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria/assessment_criteria.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Assessment Criteria', {
+	refresh: function(frm) {
+
+	}
+});
diff --git a/erpnext/schools/doctype/assessment_criteria/assessment_criteria.json b/erpnext/schools/doctype/assessment_criteria/assessment_criteria.json
new file mode 100644
index 0000000..990b22b
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria/assessment_criteria.json
@@ -0,0 +1,116 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 1, 
+ "allow_rename": 0, 
+ "autoname": "field:assessment_criteria", 
+ "beta": 0, 
+ "creation": "2016-12-14 16:40:15.144115", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "editable_grid": 1, 
+ "engine": "InnoDB", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "assessment_criteria", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Assessment Criteria", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 1, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "assessment_criteria_group", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Assessment Criteria Group", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Assessment Criteria Group", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2017-02-03 05:53:39.248759", 
+ "modified_by": "Administrator", 
+ "module": "Schools", 
+ "name": "Assessment Criteria", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Academics User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_changes": 0, 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_criteria/assessment_criteria.py b/erpnext/schools/doctype/assessment_criteria/assessment_criteria.py
new file mode 100644
index 0000000..e666a74
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria/assessment_criteria.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class AssessmentCriteria(Document):
+	pass
diff --git a/erpnext/schools/doctype/assessment/test_assessment.py b/erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.py
similarity index 62%
copy from erpnext/schools/doctype/assessment/test_assessment.py
copy to erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.py
index ce06007..fc0d745 100644
--- a/erpnext/schools/doctype/assessment/test_assessment.py
+++ b/erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.py
@@ -6,7 +6,7 @@
 import frappe
 import unittest
 
-# test_records = frappe.get_test_records('Assessment')
+# test_records = frappe.get_test_records('Assessment Criteria')
 
-class TestAssessment(unittest.TestCase):
+class TestAssessmentCriteria(unittest.TestCase):
 	pass
diff --git a/erpnext/schools/doctype/assessment_criteria/test_records.json b/erpnext/schools/doctype/assessment_criteria/test_records.json
new file mode 100644
index 0000000..7af63b3
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria/test_records.json
@@ -0,0 +1,8 @@
+[
+ {
+  "assessment_criteria": "_Test Assessment Criteria"
+ }, 
+ {
+  "assessment_criteria": "_Test Assessment Criteria 1"
+ }
+]
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment/__init__.py b/erpnext/schools/doctype/assessment_criteria_group/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/assessment/__init__.py
copy to erpnext/schools/doctype/assessment_criteria_group/__init__.py
diff --git a/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.js b/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.js
new file mode 100644
index 0000000..89358d2
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Assessment Criteria Group', {
+	refresh: function(frm) {
+
+	}
+});
diff --git a/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.json b/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.json
new file mode 100644
index 0000000..0319868
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.json
@@ -0,0 +1,89 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 1, 
+ "allow_rename": 1, 
+ "autoname": "field:assessment_criteria_group", 
+ "beta": 0, 
+ "creation": "2017-01-27 15:17:38.855910", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "editable_grid": 1, 
+ "engine": "InnoDB", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "assessment_criteria_group", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Assessment Criteria Group", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2017-02-01 17:39:12.453618", 
+ "modified_by": "Administrator", 
+ "module": "Schools", 
+ "name": "Assessment Criteria Group", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Academics User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_changes": 0, 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.py b/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.py
new file mode 100644
index 0000000..75381e1
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria_group/assessment_criteria_group.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class AssessmentCriteriaGroup(Document):
+	pass
diff --git a/erpnext/schools/doctype/assessment/test_assessment.py b/erpnext/schools/doctype/assessment_criteria_group/test_assessment_criteria_group.py
similarity index 60%
copy from erpnext/schools/doctype/assessment/test_assessment.py
copy to erpnext/schools/doctype/assessment_criteria_group/test_assessment_criteria_group.py
index ce06007..5b29337 100644
--- a/erpnext/schools/doctype/assessment/test_assessment.py
+++ b/erpnext/schools/doctype/assessment_criteria_group/test_assessment_criteria_group.py
@@ -6,7 +6,7 @@
 import frappe
 import unittest
 
-# test_records = frappe.get_test_records('Assessment')
+# test_records = frappe.get_test_records('Assessment Criteria Group')
 
-class TestAssessment(unittest.TestCase):
+class TestAssessmentCriteriaGroup(unittest.TestCase):
 	pass
diff --git a/erpnext/schools/doctype/assessment/__init__.py b/erpnext/schools/doctype/assessment_plan/__init__.py
similarity index 100%
rename from erpnext/schools/doctype/assessment/__init__.py
rename to erpnext/schools/doctype/assessment_plan/__init__.py
diff --git a/erpnext/schools/doctype/assessment_plan/assessment_plan.js b/erpnext/schools/doctype/assessment_plan/assessment_plan.js
new file mode 100644
index 0000000..9685e0e
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_plan/assessment_plan.js
@@ -0,0 +1,47 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+cur_frm.add_fetch("student_group", "course", "course");
+cur_frm.add_fetch("student_group", "student_batch", "student_batch");
+cur_frm.add_fetch("examiner", "instructor_name", "examiner_name");
+cur_frm.add_fetch("supervisor", "instructor_name", "supervisor_name");
+
+frappe.ui.form.on("Assessment Plan", {
+        refresh: function(frm) {
+        if (!frm.doc.__islocal) {
+            frm.add_custom_button(__("Assessment Result"), function() {
+                frappe.route_options = {
+                    assessment_plan: frm.doc.name
+                }
+                frappe.set_route("Form", "Assessment Result Tool");
+            });
+        }
+    },
+
+    course: function(frm) {
+        if (frm.doc.course && frm.doc.maximum_assessment_score) {
+            frappe.call({
+                method: "erpnext.schools.api.get_assessment_criteria",
+                args: {
+                    course: frm.doc.course
+                },
+                callback: function(r) {
+                    if (r.message) {
+                        frm.doc.assessment_criteria = [];
+                        $.each(r.message, function(i, d) {
+                            var row = frappe.model.add_child(frm.doc, "Assessment Plan Criteria", "assessment_criteria");
+                            row.assessment_criteria = d.assessment_criteria;
+                            row.maximum_score = d.weightage / 100 * frm.doc.maximum_assessment_score;
+                        });
+                    }
+                    refresh_field("assessment_criteria");
+
+                }
+            });
+        }
+    },
+
+    maximum_assessment_score: function(frm) {
+        frm.trigger("course");
+    }
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment/assessment.json b/erpnext/schools/doctype/assessment_plan/assessment_plan.json
similarity index 85%
rename from erpnext/schools/doctype/assessment/assessment.json
rename to erpnext/schools/doctype/assessment_plan/assessment_plan.json
index 845f2f6..64ff487 100644
--- a/erpnext/schools/doctype/assessment/assessment.json
+++ b/erpnext/schools/doctype/assessment_plan/assessment_plan.json
@@ -73,6 +73,175 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "assessment_group", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 1, 
+   "label": "Assessment Group", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Assessment Group", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "course", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 1, 
+   "label": "Course", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Course", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "maximum_assessment_score", 
+   "fieldtype": "Float", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Maximum Assessment Score", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "grading_scale", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 1, 
+   "label": "Grading Scale", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Grading Scale", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_10", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student_group", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -102,6 +271,33 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "column_break_10", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student_batch", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -130,234 +326,6 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "grading_structure", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Grading Structure", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Grading Structure", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "course", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Course", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Course", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break_2", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "assessment_group", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Assessment Group", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Assessment Group", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "supervisor", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Supervisor", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Instructor", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "supervisor_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Supervisor Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "examiner", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Examiner", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Instructor", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "examiner_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Examiner Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 1, 
    "collapsible_depends_on": "", 
    "columns": 0, 
    "depends_on": "", 
@@ -447,6 +415,63 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "examiner", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Examiner", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Instructor", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "examiner_name", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Examiner Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "column_break_4", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -528,9 +553,66 @@
   {
    "allow_on_submit": 0, 
    "bold": 0, 
-   "collapsible": 1, 
+   "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "section_break_11", 
+   "fieldname": "supervisor", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Supervisor", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Instructor", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "supervisor_name", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Supervisor Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_20", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -538,7 +620,6 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Results", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -558,7 +639,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "results", 
+   "fieldname": "assessment_criteria", 
    "fieldtype": "Table", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -566,10 +647,10 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "results", 
+   "label": "Assessment Criteria", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Assessment Result", 
+   "options": "Assessment Plan Criteria", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -577,7 +658,7 @@
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -598,7 +679,7 @@
    "label": "Amended From", 
    "length": 0, 
    "no_copy": 1, 
-   "options": "Assessment", 
+   "options": "Assessment Plan", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
@@ -622,10 +703,10 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-11-16 13:05:54.953750", 
+ "modified": "2017-02-01 17:22:11.816270", 
  "modified_by": "Administrator", 
  "module": "Schools", 
- "name": "Assessment", 
+ "name": "Assessment Plan", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [
@@ -639,7 +720,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -656,5 +736,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_plan/assessment_plan.py b/erpnext/schools/doctype/assessment_plan/assessment_plan.py
new file mode 100644
index 0000000..31e96aa
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_plan/assessment_plan.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+from frappe.model.document import Document
+import frappe
+from frappe import _
+
+class AssessmentPlan(Document):
+	def validate(self):
+		if not (self.student_batch or self.student_group):
+			frappe.throw(_("Please select Student Group or Student Batch"))
+		self.validate_student_batch()
+		self.validate_overlap()
+		self.validate_max_score()
+
+	def validate_overlap(self):
+		"""Validates overlap for Student Group/Student Batch, Instructor, Room"""
+		
+		from erpnext.schools.utils import validate_overlap_for
+
+		#Validate overlapping course schedules.
+		if self.student_batch:
+			validate_overlap_for(self, "Course Schedule", "student_batch")
+
+		if self.student_group:
+			validate_overlap_for(self, "Course Schedule", "student_group")
+		
+		validate_overlap_for(self, "Course Schedule", "instructor")
+		validate_overlap_for(self, "Course Schedule", "room")
+
+		#validate overlapping assessment schedules.
+		if self.student_batch:
+			validate_overlap_for(self, "Assessment Plan", "student_batch")
+		
+		if self.student_group:
+			validate_overlap_for(self, "Assessment Plan", "student_group")
+		
+		validate_overlap_for(self, "Assessment Plan", "room")
+		validate_overlap_for(self, "Assessment Plan", "supervisor", self.supervisor)
+
+	def validate_student_batch(self):
+		if self.student_group:
+			self.student_batch = frappe.db.get_value("Student Group", self.student_group, "student_batch")
+
+	def validate_max_score(self):
+		max_score = 0
+		for d in self.assessment_criteria:
+			max_score += d.maximum_score
+		if self.maximum_assessment_score != max_score:
+			frappe.throw(_("Sum of Scores of Assessment Criteria needs to be {0}.".format(self.maximum_assessment_score)))
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment/test_assessment.py b/erpnext/schools/doctype/assessment_plan/test_assessment_plan.py
similarity index 64%
copy from erpnext/schools/doctype/assessment/test_assessment.py
copy to erpnext/schools/doctype/assessment_plan/test_assessment_plan.py
index ce06007..2de4f23 100644
--- a/erpnext/schools/doctype/assessment/test_assessment.py
+++ b/erpnext/schools/doctype/assessment_plan/test_assessment_plan.py
@@ -6,7 +6,7 @@
 import frappe
 import unittest
 
-# test_records = frappe.get_test_records('Assessment')
+# test_records = frappe.get_test_records('Assessment Plan')
 
-class TestAssessment(unittest.TestCase):
+class TestAssessmentPlan(unittest.TestCase):
 	pass
diff --git a/erpnext/schools/doctype/assessment/__init__.py b/erpnext/schools/doctype/assessment_plan_criteria/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/assessment/__init__.py
copy to erpnext/schools/doctype/assessment_plan_criteria/__init__.py
diff --git a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json b/erpnext/schools/doctype/assessment_plan_criteria/assessment_plan_criteria.json
similarity index 60%
copy from erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
copy to erpnext/schools/doctype/assessment_plan_criteria/assessment_plan_criteria.json
index 6b80efc..2ba5ca7 100644
--- a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
+++ b/erpnext/schools/doctype/assessment_plan_criteria/assessment_plan_criteria.json
@@ -2,35 +2,67 @@
  "allow_copy": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
+ "autoname": "", 
  "beta": 0, 
- "creation": "2016-09-03 19:20:14.561962", 
+ "creation": "2016-12-14 17:20:27.738226", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
- "document_type": "Document", 
+ "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "service_item", 
-   "fieldtype": "Select", 
+   "fieldname": "assessment_criteria", 
+   "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Service Item", 
+   "in_standard_filter": 0, 
+   "label": "Assessment Criteria", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels", 
+   "options": "Assessment Criteria", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -42,68 +74,15 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "type", 
-   "fieldtype": "Select", 
+   "fieldname": "maximum_score", 
+   "fieldtype": "Float", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Type", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nInspection\nService\nChange", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "frequency", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Frequency", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "expense_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Expense", 
+   "in_standard_filter": 0, 
+   "label": "Maximum Score", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -111,8 +90,9 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -128,10 +108,10 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-09-20 07:29:50.852748", 
+ "modified": "2017-02-01 17:11:47.164623", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
- "name": "Vehicle Service", 
+ "module": "Schools", 
+ "name": "Assessment Plan Criteria", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [], 
@@ -140,5 +120,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_plan_criteria/assessment_plan_criteria.py b/erpnext/schools/doctype/assessment_plan_criteria/assessment_plan_criteria.py
new file mode 100644
index 0000000..53b477f
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_plan_criteria/assessment_plan_criteria.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class AssessmentPlanCriteria(Document):
+	pass
diff --git a/erpnext/schools/doctype/assessment_result/assessment_result.js b/erpnext/schools/doctype/assessment_result/assessment_result.js
new file mode 100644
index 0000000..0af5adc
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_result/assessment_result.js
@@ -0,0 +1,51 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+cur_frm.add_fetch("student", "title", "student_name");
+cur_frm.add_fetch("assessment_plan", "grading_scale", "grading_scale");
+cur_frm.add_fetch("assessment_plan", "maximum_assessment_score", "maximum_score");
+
+frappe.ui.form.on("Assessment Result", {
+    assessment_plan: function(frm) {
+        frappe.call({
+            method: "erpnext.schools.api.get_assessment_details",
+            args: {
+                assessment_plan: frm.doc.assessment_plan
+            },
+            callback: function(r) {
+                if (r.message) {
+                    frm.doc.details = [];
+                    $.each(r.message, function(i, d) {
+                        var row = frappe.model.add_child(frm.doc, "Assessment Result Detail", "details");
+                        row.assessment_criteria = d.assessment_criteria;
+                        row.maximum_score = d.maximum_score;
+                    });
+                }
+                refresh_field("details");
+            }
+        });
+    }
+});
+
+frappe.ui.form.on("Assessment Result Detail", {
+    score: function(frm, cdt, cdn) {
+        var d  = locals[cdt][cdn];
+        if (d.score >= d.maximum_score) {
+            frappe.throw(_("Score cannot be greater than Maximum Score"));
+        }
+        else {
+            frappe.call({
+                method: "erpnext.schools.api.get_grade",
+                args: {
+                    grading_scale: frm.doc.grading_scale,
+                    percentage: ((d.score/d.maximum_score) * 100)
+                },
+                callback: function(r) {
+                    if (r.message) {
+                        frappe.model.set_value(cdt, cdn, "grade", r.message);
+                    }
+                }
+            });
+        }
+    }
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_result/assessment_result.json b/erpnext/schools/doctype/assessment_result/assessment_result.json
index 91e580d..3bf9758 100644
--- a/erpnext/schools/doctype/assessment_result/assessment_result.json
+++ b/erpnext/schools/doctype/assessment_result/assessment_result.json
@@ -2,6 +2,7 @@
  "allow_copy": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
+ "autoname": "RES.######", 
  "beta": 0, 
  "creation": "2015-11-13 17:18:06.468332", 
  "custom": 0, 
@@ -9,18 +10,21 @@
  "doctype": "DocType", 
  "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Student", 
    "length": 0, 
    "no_copy": 0, 
@@ -30,6 +34,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -40,6 +45,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student_name", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -47,6 +53,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Student Name", 
    "length": 0, 
    "no_copy": 0, 
@@ -55,6 +62,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -65,6 +73,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "column_break_3", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -72,6 +81,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -79,6 +89,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -89,21 +100,54 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "result", 
-   "fieldtype": "Data", 
+   "columns": 0, 
+   "fieldname": "assessment_plan", 
+   "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Result", 
+   "in_standard_filter": 0, 
+   "label": "Assessment Plan", 
    "length": 0, 
    "no_copy": 0, 
+   "options": "Assessment Plan", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "grading_scale", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Grading Scale", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Grading Scale", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -114,6 +158,174 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_5", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "", 
+   "fieldname": "details", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Details", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Assessment Result Detail", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_8", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "maximum_score", 
+   "fieldtype": "Float", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Maximum Score", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "total_score", 
+   "fieldtype": "Float", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Total Score", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_11", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "grade", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -121,6 +333,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Grade", 
    "length": 0, 
    "no_copy": 0, 
@@ -129,6 +342,35 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "amended_from", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Amended From", 
+   "length": 0, 
+   "no_copy": 1, 
+   "options": "Assessment Result", 
+   "permlevel": 0, 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -142,21 +384,45 @@
  "image_view": 0, 
  "in_create": 0, 
  "in_dialog": 0, 
- "is_submittable": 0, 
+ "is_submittable": 1, 
  "issingle": 0, 
- "istable": 1, 
+ "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-08-27 12:15:01.923000", 
+ "modified": "2017-01-04 16:56:33.868949", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Assessment Result", 
  "name_case": "", 
  "owner": "Administrator", 
- "permissions": [], 
+ "permissions": [
+  {
+   "amend": 1, 
+   "apply_user_permissions": 0, 
+   "cancel": 1, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "is_custom": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Academics User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 1, 
+   "write": 1
+  }
+ ], 
  "quick_entry": 0, 
  "read_only": 0, 
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "title_field": "student_name", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_result/assessment_result.py b/erpnext/schools/doctype/assessment_result/assessment_result.py
index 84cbcfa..c878ec3 100644
--- a/erpnext/schools/doctype/assessment_result/assessment_result.py
+++ b/erpnext/schools/doctype/assessment_result/assessment_result.py
@@ -4,7 +4,33 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
+from frappe.utils import flt
 from frappe.model.document import Document
+from erpnext.schools.api import get_grade
+from erpnext.schools.api import get_assessment_details
 
 class AssessmentResult(Document):
-	pass
+	def validate(self):
+		self.grading_scale = frappe.db.get_value("Assessment Plan", self.assessment_plan, "grading_scale")
+		self.validate_maximum_score()
+		self.validate_grade()
+	
+	def validate_maximum_score(self):
+		self.maximum_score = frappe.db.get_value("Assessment Plan", self.assessment_plan, "maximum_assessment_score")
+		assessment_details = get_assessment_details(self.assessment_plan)
+		max_scores = {}
+		for d in assessment_details:
+			max_scores.update({d.assessment_criteria: d.maximum_score})
+
+		for d in self.details:
+			d.maximum_score = max_scores.get(d.assessment_criteria)
+			if d.score > d.maximum_score:
+				frappe.throw(_("Score cannot be greater than Maximum Score"))
+		
+	def validate_grade(self):
+		self.total_score = 0.0
+		for d in self.details:
+			d.grade = get_grade(self.grading_scale, (flt(d.score)/d.maximum_score)*100)
+			self.total_score += d.score
+		self.grade = get_grade(self.grading_scale, (self.total_score/self.maximum_score)*100)
diff --git a/erpnext/schools/doctype/assessment_result/test_assessment_result.py b/erpnext/schools/doctype/assessment_result/test_assessment_result.py
new file mode 100644
index 0000000..66e611c
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_result/test_assessment_result.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+from erpnext.schools.api import get_grade
+
+# test_records = frappe.get_test_records('Assessment Result')
+
+class TestAssessmentResult(unittest.TestCase):
+	def test_grade(self):
+		grade = get_grade("_Test Grading Scale", 80)
+		self.assertEquals("A", grade)
+
+		grade = get_grade("_Test Grading Scale", 70)
+		self.assertEquals("B", grade)
+		
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment/__init__.py b/erpnext/schools/doctype/assessment_result_detail/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/assessment/__init__.py
copy to erpnext/schools/doctype/assessment_result_detail/__init__.py
diff --git a/erpnext/schools/doctype/topic/topic.json b/erpnext/schools/doctype/assessment_result_detail/assessment_result_detail.json
similarity index 64%
rename from erpnext/schools/doctype/topic/topic.json
rename to erpnext/schools/doctype/assessment_result_detail/assessment_result_detail.json
index 0a69f88..7956a32 100644
--- a/erpnext/schools/doctype/topic/topic.json
+++ b/erpnext/schools/doctype/assessment_result_detail/assessment_result_detail.json
@@ -1,43 +1,71 @@
 {
  "allow_copy": 0, 
  "allow_import": 0, 
- "allow_rename": 1, 
- "autoname": "Topic.####", 
+ "allow_rename": 0, 
+ "autoname": "", 
  "beta": 0, 
- "creation": "2016-06-28 07:06:38.749398", 
+ "creation": "2016-12-14 17:44:35.583123", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
- "document_type": "Document", 
- "editable_grid": 0, 
+ "document_type": "", 
+ "editable_grid": 1, 
  "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "course", 
+   "columns": 4, 
+   "fieldname": "assessment_criteria", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Course", 
+   "in_standard_filter": 0, 
+   "label": "Assessment Criteria", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Course", 
+   "options": "Assessment Criteria", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "maximum_score", 
+   "fieldtype": "Float", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Maximum Score", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
   }, 
@@ -46,7 +74,63 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "topic_name", 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "score", 
+   "fieldtype": "Float", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Score", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 2, 
+   "fieldname": "grade", 
    "fieldtype": "Data", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -54,73 +138,17 @@
    "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
-   "label": "Topic Name", 
+   "label": "Grade", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "introduction", 
-   "fieldtype": "Text", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Introduction", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "content", 
-   "fieldtype": "Text Editor", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Content", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
+   "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -134,42 +162,20 @@
  "in_dialog": 0, 
  "is_submittable": 0, 
  "issingle": 0, 
- "istable": 0, 
+ "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:29:20.531725", 
+ "modified": "2017-02-01 18:33:06.006040", 
  "modified_by": "Administrator", 
  "module": "Schools", 
- "name": "Topic", 
+ "name": "Assessment Result Detail", 
  "name_case": "", 
  "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 1, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Academics User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }
- ], 
+ "permissions": [], 
  "quick_entry": 1, 
  "read_only": 0, 
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
- "title_field": "course", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_result_detail/assessment_result_detail.py b/erpnext/schools/doctype/assessment_result_detail/assessment_result_detail.py
new file mode 100644
index 0000000..d051593
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_result_detail/assessment_result_detail.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class AssessmentResultDetail(Document):
+	pass
diff --git a/erpnext/schools/doctype/assessment/__init__.py b/erpnext/schools/doctype/assessment_result_tool/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/assessment/__init__.py
copy to erpnext/schools/doctype/assessment_result_tool/__init__.py
diff --git a/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.js b/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.js
new file mode 100644
index 0000000..8fd670e
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.js
@@ -0,0 +1,106 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+cur_frm.add_fetch("assessment_plan", "student_group", "student_group");
+cur_frm.add_fetch("assessment_plan", "student_batch", "student_batch");
+
+frappe.ui.form.on('Assessment Result Tool', {
+    refresh: function(frm) {
+       frm.disable_save();
+	   frm.page.clear_indicator();
+    },
+
+	assessment_plan: function(frm) {
+		if(!(frm.doc.student_batch || frm.doc.student_group)) return;
+		frappe.call({
+			method: "erpnext.schools.api.get_assessment_students",
+			args: {
+				"assessment_plan": frm.doc.assessment_plan,
+				"student_batch": frm.doc.student_batch,
+				"student_group": frm.doc.student_group
+			},
+			callback: function(r) {
+				frm.events.render_table(frm, r.message);
+			}
+		});
+	},
+
+	render_table: function(frm, students) {
+		$(frm.fields_dict.result_html.wrapper).empty();
+		var assessment_plan = frm.doc.assessment_plan;
+		var student_scores = {};
+		students.forEach(function(stu) {
+			student_scores[stu.student] = {}
+		});
+		
+		frappe.call({
+			method: "erpnext.schools.api.get_assessment_details",
+			args: {
+				assessment_plan: assessment_plan
+			},
+			callback: function(r) {
+				var criteria_list = r.message;
+				var max_total_score = 0;
+				criteria_list.forEach(function(c) {
+					max_total_score += c.maximum_score
+				});
+				var result_table = $(frappe.render_template('assessment_result_tool', {
+					frm: frm,
+					students: students,
+					criteria: criteria_list,
+					max_total_score: max_total_score
+				}));
+				result_table.appendTo(frm.fields_dict.result_html.wrapper)
+
+				result_table.on('change', 'input', function(e) {
+					var $input = $(e.target);
+					var max_score = $input.data().maxScore;
+					var student = $input.data().student;
+					var criteria = $input.data().criteria;
+					var value = $input.val();
+					if(value < 0) {
+						$input.val(0);
+						value = 0;
+					}
+					if(value > max_score) {
+						$input.val(max_score);
+						value = max_score;
+					}
+					student_scores[student][criteria] = value;
+					if(Object.keys(student_scores[student]).length == criteria_list.length) {
+						console.log("ok");
+						frappe.call(({
+							method: "erpnext.schools.api.mark_assessment_result",
+							args: {
+								"student": student,
+								"assessment_plan": assessment_plan,
+								"scores": student_scores[student]
+							},
+							callback: function(r) {
+								var doc = r.message;
+								var student = doc.student;
+								result_table.find(`[data-student=${student}].total-score`)
+									.html(doc.total_score + ' ('+ doc.grade + ')');
+								var details = doc.details;
+								result_table.find(`tr[data-student=${student}]`).addClass('text-muted');
+								result_table.find(`input[data-student=${student}]`).each(function(el, input) {
+									var $input = $(input);
+									var criteria = $input.data().criteria;
+									var value = $input.val();
+									var grade = details.find(function(d) {
+										return d.assessment_criteria === criteria;
+									}).grade;
+									$input.val(`${value} (${grade})`);
+									$input.attr('disabled', true);
+								});
+
+							}
+						}))
+					}
+				});
+
+			}
+		});
+	},
+
+});
diff --git a/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.json b/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.json
new file mode 100644
index 0000000..87dff4d
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.json
@@ -0,0 +1,232 @@
+{
+ "allow_copy": 1, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "beta": 0, 
+ "creation": "2017-01-05 12:27:48.951036", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "editable_grid": 1, 
+ "engine": "InnoDB", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "", 
+   "fieldname": "assessment_plan", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Assessment Plan", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Assessment Plan", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "student_group", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Student Group", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Student Group", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "student_batch", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Student Batch", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Student Batch", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "assessment_plan", 
+   "fieldname": "section_break_5", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "result_html", 
+   "fieldtype": "HTML", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Result HTML", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 1, 
+ "hide_toolbar": 1, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 1, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2017-01-05 15:45:59.338722", 
+ "modified_by": "Administrator", 
+ "module": "Schools", 
+ "name": "Assessment Result Tool", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 0, 
+   "email": 1, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "is_custom": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 0, 
+   "role": "Academics User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_changes": 0, 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.py b/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.py
new file mode 100644
index 0000000..a0d286c
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_result_tool/assessment_result_tool.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class AssessmentResultTool(Document):
+	pass
diff --git a/erpnext/schools/doctype/course/course.js b/erpnext/schools/doctype/course/course.js
index fe38806..c667eca 100644
--- a/erpnext/schools/doctype/course/course.js
+++ b/erpnext/schools/doctype/course/course.js
@@ -21,11 +21,11 @@
 			frappe.set_route("List", "Course Schedule");
 		});
 		
-		frm.add_custom_button(__("Assessment"), function() {
+		frm.add_custom_button(__("Assessment Plan"), function() {
 			frappe.route_options = {
 				course: frm.doc.name
 			}
-			frappe.set_route("List", "Assessment");
+			frappe.set_route("List", "Assessment Plan");
 		});
 	}
 });
\ No newline at end of file
diff --git a/erpnext/schools/doctype/course/course.json b/erpnext/schools/doctype/course/course.json
index 6fada19..aab3bbb 100644
--- a/erpnext/schools/doctype/course/course.json
+++ b/erpnext/schools/doctype/course/course.json
@@ -206,6 +206,92 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "assessment", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Assessment", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "default_grading_scale", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Default Grading Scale", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Grading Scale", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "assessment_criteria", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Assessment Criteria", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Course Assessment Criteria", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }
  ], 
  "hide_heading": 0, 
@@ -219,7 +305,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-08-08 05:26:26.442635", 
+ "modified": "2017-02-01 17:24:52.874364", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Course", 
@@ -236,7 +322,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -274,5 +359,6 @@
  "search_fields": "department", 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/course/course.py b/erpnext/schools/doctype/course/course.py
index b590acb..0ac11ec 100644
--- a/erpnext/schools/doctype/course/course.py
+++ b/erpnext/schools/doctype/course/course.py
@@ -8,21 +8,13 @@
 from frappe import _
 
 class Course(Document):
-	pass
-
-def get_sg_list(doctype, txt, filters, limit_start, limit_page_length=20):
-	user = frappe.session.user
-	student = frappe.db.sql("select name from `tabStudent` where student_email_id= %s", user)
-	if student:
-		return frappe.db.sql('''select course, academic_term, academic_year, SG.name from `tabStudent Group`
-			as SG, `tabStudent Group Student` as SGS where SG.name = SGS.parent and SGS.student = %s
-			order by SG.name asc limit {0} , {1}'''.format(limit_start, limit_page_length), student, as_dict=True)
-
-def get_list_context(context=None):
-	return {
-		"show_sidebar": True,
-		'no_breadcrumbs': True,
-		"title": _("Courses"),
-		"get_list": get_sg_list,
-		"row_template": "templates/includes/course/course_row.html"
-	}
\ No newline at end of file
+	def validate(self):
+		self.validate_assessment_criteria()
+	
+	def validate_assessment_criteria(self):
+		if self.assessment_criteria:
+			total_weightage = 0
+			for criteria in self.assessment_criteria:
+				total_weightage += criteria.weightage
+			if total_weightage != 100:
+				frappe.throw(_("Total Weightage of all Assessment Criteria must be 100%"))
diff --git a/erpnext/schools/doctype/announcement/__init__.py b/erpnext/schools/doctype/course_assessment_criteria/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/announcement/__init__.py
copy to erpnext/schools/doctype/course_assessment_criteria/__init__.py
diff --git a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json b/erpnext/schools/doctype/course_assessment_criteria/course_assessment_criteria.json
similarity index 60%
copy from erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
copy to erpnext/schools/doctype/course_assessment_criteria/course_assessment_criteria.json
index 6b80efc..6646d20 100644
--- a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
+++ b/erpnext/schools/doctype/course_assessment_criteria/course_assessment_criteria.json
@@ -2,35 +2,67 @@
  "allow_copy": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
+ "autoname": "", 
  "beta": 0, 
- "creation": "2016-09-03 19:20:14.561962", 
+ "creation": "2016-12-14 16:46:46.786353", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
- "document_type": "Document", 
+ "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "service_item", 
-   "fieldtype": "Select", 
+   "fieldname": "assessment_criteria", 
+   "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Service Item", 
+   "in_standard_filter": 0, 
+   "label": "Assessment Criteria", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels", 
+   "options": "Assessment Criteria", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -42,68 +74,15 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "type", 
-   "fieldtype": "Select", 
+   "fieldname": "weightage", 
+   "fieldtype": "Percent", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Type", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nInspection\nService\nChange", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "frequency", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Frequency", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "expense_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Expense", 
+   "in_standard_filter": 0, 
+   "label": "Weightage", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -111,6 +90,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -128,10 +108,10 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-09-20 07:29:50.852748", 
+ "modified": "2017-02-01 18:01:40.682674", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
- "name": "Vehicle Service", 
+ "module": "Schools", 
+ "name": "Course Assessment Criteria", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [], 
@@ -140,5 +120,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/course_assessment_criteria/course_assessment_criteria.py b/erpnext/schools/doctype/course_assessment_criteria/course_assessment_criteria.py
new file mode 100644
index 0000000..ade2a39
--- /dev/null
+++ b/erpnext/schools/doctype/course_assessment_criteria/course_assessment_criteria.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class CourseAssessmentCriteria(Document):
+	pass
diff --git a/erpnext/schools/doctype/course_schedule/course_schedule.py b/erpnext/schools/doctype/course_schedule/course_schedule.py
index ec30c62..7550ab1 100644
--- a/erpnext/schools/doctype/course_schedule/course_schedule.py
+++ b/erpnext/schools/doctype/course_schedule/course_schedule.py
@@ -55,11 +55,11 @@
 
 		#validate overlapping assessment schedules.
 		if self.student_batch:
-			validate_overlap_for(self, "Assessment", "student_batch")
+			validate_overlap_for(self, "Assessment Plan", "student_batch")
 		
 		if self.student_group:
-			validate_overlap_for(self, "Assessment", "student_group")
+			validate_overlap_for(self, "Assessment Plan", "student_group")
 		
-		validate_overlap_for(self, "Assessment", "room")
-		validate_overlap_for(self, "Assessment", "supervisor", self.instructor)
+		validate_overlap_for(self, "Assessment Plan", "room")
+		validate_overlap_for(self, "Assessment Plan", "supervisor", self.instructor)
 
diff --git a/erpnext/schools/doctype/discussion/__init__.py b/erpnext/schools/doctype/discussion/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/schools/doctype/discussion/__init__.py
+++ /dev/null
diff --git a/erpnext/schools/doctype/discussion/discussion.js b/erpnext/schools/doctype/discussion/discussion.js
deleted file mode 100644
index df3c2b8..0000000
--- a/erpnext/schools/doctype/discussion/discussion.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2016, Frappe and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('Discussion', {
-	refresh: function(frm) {
-
-	}
-});
diff --git a/erpnext/schools/doctype/discussion/discussion.py b/erpnext/schools/doctype/discussion/discussion.py
deleted file mode 100644
index 96732e3..0000000
--- a/erpnext/schools/doctype/discussion/discussion.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe and contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-from frappe.model.document import Document
-
-class Discussion(Document):
-	def validate(self):
-		if not self.owner== frappe.session.user:
-			frappe.throw(_("Not Permitted"))
-
-def get_discussions(doctype, txt, filters, limit_start, limit_page_length=20):
-	from frappe.www.list import get_list
-	if not filters:
-		filters = []
-		filters.append(("Discussion", "course", "=", frappe.form_dict.course))
-	return get_list(doctype, txt, filters, limit_start, limit_page_length, ignore_permissions=True)
-
-def get_list_context(context=None):
-	course_name = frappe.form_dict.course
-	portal_items = [{'reference_doctype': u'Topic', 'route': u"/topic?course=" + str(course_name), 'show_always': 0L, 'title': u'Topics'},
-				{'reference_doctype': u'Discussion', 'route': u"/discussion?course=" + str(course_name), 'show_always': 0L, 'title': u'Discussions'},
-
-	]
-	sidebar_title = course_name
-	return {
-		"show_sidebar": True,
-		'no_breadcrumbs': True,
-		"get_list" : get_discussions,
-		"title": _("Discussions"),
-		"sidebar_items" : portal_items,
-		"sidebar_title" : sidebar_title,
-		"row_template": "templates/includes/discussion/discussion_row.html"
-	}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/discussion/test_discussion.py b/erpnext/schools/doctype/discussion/test_discussion.py
deleted file mode 100644
index 31799f0..0000000
--- a/erpnext/schools/doctype/discussion/test_discussion.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe and Contributors
-# See license.txt
-from __future__ import unicode_literals
-
-import frappe
-import unittest
-
-# test_records = frappe.get_test_records('Discussion')
-
-class TestDiscussion(unittest.TestCase):
-	pass
diff --git a/erpnext/schools/doctype/grade_interval/grade_interval.json b/erpnext/schools/doctype/grade_interval/grade_interval.json
index 79ef9f4..c9c5949 100644
--- a/erpnext/schools/doctype/grade_interval/grade_interval.json
+++ b/erpnext/schools/doctype/grade_interval/grade_interval.json
@@ -9,11 +9,13 @@
  "doctype": "DocType", 
  "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "grade_code", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -21,6 +23,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Grade Code", 
    "length": 0, 
    "no_copy": 0, 
@@ -29,6 +32,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -39,14 +43,16 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "from_score", 
-   "fieldtype": "Float", 
+   "columns": 0, 
+   "fieldname": "min_score", 
+   "fieldtype": "Percent", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "From Score", 
+   "in_standard_filter": 0, 
+   "label": "Min Score", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -54,6 +60,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -64,31 +71,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "to_score", 
-   "fieldtype": "Float", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "To Score", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "1", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "grade_description", 
    "fieldtype": "Small Text", 
    "hidden": 0, 
@@ -96,6 +79,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Grade Description", 
    "length": 0, 
    "no_copy": 0, 
@@ -104,6 +88,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -121,7 +106,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-08-27 15:45:04.657328", 
+ "modified": "2016-12-14 12:54:56.902465", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Grade Interval", 
diff --git a/erpnext/schools/doctype/announcement/__init__.py b/erpnext/schools/doctype/grading_scale/__init__.py
similarity index 100%
rename from erpnext/schools/doctype/announcement/__init__.py
rename to erpnext/schools/doctype/grading_scale/__init__.py
diff --git a/erpnext/schools/doctype/grading_scale/grading_scale.js b/erpnext/schools/doctype/grading_scale/grading_scale.js
new file mode 100644
index 0000000..622388c
--- /dev/null
+++ b/erpnext/schools/doctype/grading_scale/grading_scale.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Grading Scale', {
+	refresh: function(frm) {
+
+	}
+});
diff --git a/erpnext/schools/doctype/discussion/discussion.json b/erpnext/schools/doctype/grading_scale/grading_scale.json
similarity index 70%
rename from erpnext/schools/doctype/discussion/discussion.json
rename to erpnext/schools/doctype/grading_scale/grading_scale.json
index 57ebfba..99c6948 100644
--- a/erpnext/schools/doctype/discussion/discussion.json
+++ b/erpnext/schools/doctype/grading_scale/grading_scale.json
@@ -1,15 +1,15 @@
 {
  "allow_copy": 0, 
- "allow_import": 1, 
- "allow_rename": 0, 
- "autoname": "Discussion.####", 
+ "allow_import": 0, 
+ "allow_rename": 1, 
+ "autoname": "field:grading_scale_name", 
  "beta": 0, 
- "creation": "2016-06-13 07:57:38.326925", 
+ "creation": "2016-08-26 03:06:53.922972", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
- "document_type": "Document", 
- "editable_grid": 0, 
+ "document_type": "", 
+ "editable_grid": 1, 
  "engine": "InnoDB", 
  "fields": [
   {
@@ -17,7 +17,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "subject", 
+   "fieldname": "grading_scale_name", 
    "fieldtype": "Data", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -25,7 +25,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Subject", 
+   "label": "Grading Scale Name", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -36,36 +36,7 @@
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "course", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Course", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Course", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 1, 
+   "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
   }, 
@@ -75,12 +46,12 @@
    "collapsible": 0, 
    "columns": 0, 
    "fieldname": "description", 
-   "fieldtype": "Text", 
+   "fieldtype": "Small Text", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Description", 
    "length": 0, 
@@ -102,6 +73,63 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "grading_intervals_section", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Grading Scale Intervals", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "intervals", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Intervals", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Grading Scale Interval", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "amended_from", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -113,7 +141,7 @@
    "label": "Amended From", 
    "length": 0, 
    "no_copy": 1, 
-   "options": "Discussion", 
+   "options": "Grading Scale", 
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
@@ -136,17 +164,17 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:28:34.032169", 
+ "modified": "2016-12-14 14:35:22.907023", 
  "modified_by": "Administrator", 
  "module": "Schools", 
- "name": "Discussion", 
+ "name": "Grading Scale", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [
   {
    "amend": 0, 
    "apply_user_permissions": 0, 
-   "cancel": 0, 
+   "cancel": 1, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
@@ -170,6 +198,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
- "title_field": "subject", 
- "track_seen": 1
+ "title_field": "", 
+ "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/grading_scale/grading_scale.py b/erpnext/schools/doctype/grading_scale/grading_scale.py
new file mode 100644
index 0000000..4abff96
--- /dev/null
+++ b/erpnext/schools/doctype/grading_scale/grading_scale.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.utils import cint
+from frappe.model.document import Document
+
+class GradingScale(Document):
+	def validate(self):
+		thresholds = []
+		for d in self.intervals:
+			if d.threshold in thresholds:
+				frappe.throw(_("Treshold {0}% appears more than once".format(d.threshold)))
+			else:
+				thresholds.append(cint(d.threshold))
+		if 0 not in thresholds:
+			frappe.throw(_("Please define grade for treshold 0%"))
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment/test_assessment.py b/erpnext/schools/doctype/grading_scale/test_grading_scale.py
similarity index 64%
copy from erpnext/schools/doctype/assessment/test_assessment.py
copy to erpnext/schools/doctype/grading_scale/test_grading_scale.py
index ce06007..5364d7c 100644
--- a/erpnext/schools/doctype/assessment/test_assessment.py
+++ b/erpnext/schools/doctype/grading_scale/test_grading_scale.py
@@ -6,7 +6,7 @@
 import frappe
 import unittest
 
-# test_records = frappe.get_test_records('Assessment')
+# test_records = frappe.get_test_records('Grading Scale')
 
-class TestAssessment(unittest.TestCase):
+class TestGradingScale(unittest.TestCase):
 	pass
diff --git a/erpnext/schools/doctype/grading_scale/test_records.json b/erpnext/schools/doctype/grading_scale/test_records.json
new file mode 100644
index 0000000..72b6954
--- /dev/null
+++ b/erpnext/schools/doctype/grading_scale/test_records.json
@@ -0,0 +1,19 @@
+[
+ {
+  "grading_scale_name": "_Test Grading Scale",
+  "intervals": [
+      {
+         "grade_code": "A",
+         "threshold": 75
+      },
+      {
+          "grade_code": "B",
+          "threshold": 50
+      },
+      {
+          "grade_code": "C",
+          "threshold": 0
+      }
+  ]
+ }
+]
\ No newline at end of file
diff --git a/erpnext/schools/doctype/announcement/__init__.py b/erpnext/schools/doctype/grading_scale_interval/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/announcement/__init__.py
copy to erpnext/schools/doctype/grading_scale_interval/__init__.py
diff --git a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json b/erpnext/schools/doctype/grading_scale_interval/grading_scale_interval.json
similarity index 60%
copy from erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
copy to erpnext/schools/doctype/grading_scale_interval/grading_scale_interval.json
index 6b80efc..10b229c 100644
--- a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
+++ b/erpnext/schools/doctype/grading_scale_interval/grading_scale_interval.json
@@ -3,36 +3,38 @@
  "allow_import": 0, 
  "allow_rename": 0, 
  "beta": 0, 
- "creation": "2016-09-03 19:20:14.561962", 
+ "creation": "2016-08-26 03:11:09.591049", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
- "document_type": "Document", 
+ "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "service_item", 
-   "fieldtype": "Select", 
+   "fieldname": "grade_code", 
+   "fieldtype": "Data", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Service Item", 
+   "in_standard_filter": 0, 
+   "label": "Grade Code", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -42,24 +44,26 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "type", 
-   "fieldtype": "Select", 
+   "default": "0", 
+   "fieldname": "threshold", 
+   "fieldtype": "Percent", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Type", 
+   "in_standard_filter": 0, 
+   "label": "Threshold", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "\nInspection\nService\nChange", 
    "permlevel": 0, 
-   "precision": "", 
+   "precision": "1", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 0, 
+   "reqd": 1, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -69,41 +73,15 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "frequency", 
-   "fieldtype": "Select", 
+   "fieldname": "grade_description", 
+   "fieldtype": "Small Text", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Frequency", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "expense_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Expense", 
+   "in_standard_filter": 0, 
+   "label": "Grade Description", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -111,6 +89,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -128,10 +107,10 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-09-20 07:29:50.852748", 
+ "modified": "2017-01-04 15:27:56.729286", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
- "name": "Vehicle Service", 
+ "module": "Schools", 
+ "name": "Grading Scale Interval", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [], 
@@ -140,5 +119,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/grading_scale_interval/grading_scale_interval.py b/erpnext/schools/doctype/grading_scale_interval/grading_scale_interval.py
new file mode 100644
index 0000000..41ac5ff
--- /dev/null
+++ b/erpnext/schools/doctype/grading_scale_interval/grading_scale_interval.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class GradingScaleInterval(Document):
+	pass
diff --git a/erpnext/schools/doctype/grading_structure/grading_structure.json b/erpnext/schools/doctype/grading_structure/grading_structure.json
index cda6bd4..3c30f29 100644
--- a/erpnext/schools/doctype/grading_structure/grading_structure.json
+++ b/erpnext/schools/doctype/grading_structure/grading_structure.json
@@ -10,11 +10,13 @@
  "doctype": "DocType", 
  "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "grading_system_name", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -22,6 +24,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Grading System Name", 
    "length": 0, 
    "no_copy": 0, 
@@ -30,6 +33,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -40,6 +44,34 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "description", 
    "fieldtype": "Text", 
    "hidden": 0, 
@@ -47,6 +79,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Description", 
    "length": 0, 
    "no_copy": 0, 
@@ -55,6 +88,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -65,30 +99,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "column_break_3", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "grading_intervals_section", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -96,6 +107,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Grading Intervals", 
    "length": 0, 
    "no_copy": 0, 
@@ -104,6 +116,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -114,6 +127,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "grade_intervals", 
    "fieldtype": "Table", 
    "hidden": 0, 
@@ -121,6 +135,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Grade Intervals", 
    "length": 0, 
    "no_copy": 0, 
@@ -130,6 +145,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -147,7 +163,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-08-27 14:20:50.709823", 
+ "modified": "2016-12-14 12:35:39.690256", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Grading Structure", 
@@ -164,6 +180,7 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 0, 
+   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
diff --git a/erpnext/schools/doctype/guardian/guardian.json b/erpnext/schools/doctype/guardian/guardian.json
index 120a884..6f5e25d 100644
--- a/erpnext/schools/doctype/guardian/guardian.json
+++ b/erpnext/schools/doctype/guardian/guardian.json
@@ -1,6 +1,6 @@
 {
  "allow_copy": 0, 
- "allow_import": 0, 
+ "allow_import": 1, 
  "allow_rename": 0, 
  "autoname": "GARD.####", 
  "beta": 0, 
@@ -10,6 +10,7 @@
  "doctype": "DocType", 
  "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
@@ -23,6 +24,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Guardian Name", 
    "length": 0, 
    "no_copy": 0, 
@@ -31,6 +33,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -48,7 +51,8 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Email Address", 
    "length": 0, 
    "no_copy": 0, 
@@ -57,6 +61,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -74,7 +79,8 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Mobile Number", 
    "length": 0, 
    "no_copy": 0, 
@@ -83,6 +89,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -101,6 +108,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Alternate Number", 
    "length": 0, 
    "no_copy": 0, 
@@ -109,31 +117,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break_3", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -152,6 +136,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Date of Birth", 
    "length": 0, 
    "no_copy": 0, 
@@ -160,6 +145,34 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_3", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -178,6 +191,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Education", 
    "length": 0, 
    "no_copy": 0, 
@@ -186,6 +200,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -204,6 +219,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Occupation", 
    "length": 0, 
    "no_copy": 0, 
@@ -212,6 +228,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -230,6 +247,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Designation", 
    "length": 0, 
    "no_copy": 0, 
@@ -238,57 +256,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "image", 
-   "fieldtype": "Attach Image", 
-   "hidden": 1, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Image", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "section_break_9", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -307,6 +275,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Work Address", 
    "length": 0, 
    "no_copy": 0, 
@@ -315,6 +284,92 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "image", 
+   "fieldtype": "Attach Image", 
+   "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Image", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "section_break_13", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Guardian Of ", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "students", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Students", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Guardian Student", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -333,6 +388,8 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Guardian Interests", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -340,6 +397,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -358,6 +416,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Interests", 
    "length": 0, 
    "no_copy": 0, 
@@ -367,6 +426,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -385,7 +445,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-09-01 14:33:26.541873", 
+ "modified": "2017-01-31 16:47:23.436075", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Guardian", 
@@ -419,5 +479,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "guardian_name", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/guardian/guardian.py b/erpnext/schools/doctype/guardian/guardian.py
index 1388cfe..38597f0 100644
--- a/erpnext/schools/doctype/guardian/guardian.py
+++ b/erpnext/schools/doctype/guardian/guardian.py
@@ -7,4 +7,22 @@
 from frappe.model.document import Document
 
 class Guardian(Document):
-	pass
+	def __setup__(self):
+		self.onload()
+
+	def onload(self):
+		"""Load Students for quick view"""
+		self.load_students()
+
+	def load_students(self):
+		"""Load `students` from the database"""
+		self.students = []
+		students = frappe.get_all("Student Guardian", filters={"guardian":self.name}, fields=["parent"])
+		for student in students:
+			self.append("students", {
+				"student":student.parent,
+				"student_name": frappe.db.get_value("Student", student.parent, "title")
+			})
+
+	def validate(self):
+		self.students = []
\ No newline at end of file
diff --git a/erpnext/schools/doctype/announcement/__init__.py b/erpnext/schools/doctype/guardian_student/__init__.py
similarity index 100%
copy from erpnext/schools/doctype/announcement/__init__.py
copy to erpnext/schools/doctype/guardian_student/__init__.py
diff --git a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json b/erpnext/schools/doctype/guardian_student/guardian_student.json
similarity index 60%
copy from erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
copy to erpnext/schools/doctype/guardian_student/guardian_student.json
index 6b80efc..948ed70 100644
--- a/erpnext/fleet_management/doctype/vehicle_service/vehicle_service.json
+++ b/erpnext/schools/doctype/guardian_student/guardian_student.json
@@ -3,34 +3,37 @@
  "allow_import": 0, 
  "allow_rename": 0, 
  "beta": 0, 
- "creation": "2016-09-03 19:20:14.561962", 
+ "creation": "2017-01-31 11:53:21.580099", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
- "document_type": "Document", 
+ "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "service_item", 
-   "fieldtype": "Select", 
+   "fieldname": "student", 
+   "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Service Item", 
+   "in_standard_filter": 0, 
+   "label": "Student", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels", 
+   "options": "Student", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -42,22 +45,22 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "type", 
-   "fieldtype": "Select", 
+   "fieldname": "column_break_2", 
+   "fieldtype": "Column Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Type", 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
-   "options": "\nInspection\nService\nChange", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -69,48 +72,23 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "frequency", 
-   "fieldtype": "Select", 
+   "fieldname": "student_name", 
+   "fieldtype": "Data", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Frequency", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "expense_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Expense", 
+   "in_standard_filter": 0, 
+   "label": "Student Name", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -128,10 +106,10 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-09-20 07:29:50.852748", 
+ "modified": "2017-01-31 16:40:26.551040", 
  "modified_by": "Administrator", 
- "module": "Fleet Management", 
- "name": "Vehicle Service", 
+ "module": "Schools", 
+ "name": "Guardian Student", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [], 
@@ -140,5 +118,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/guardian_student/guardian_student.py b/erpnext/schools/doctype/guardian_student/guardian_student.py
new file mode 100644
index 0000000..bf6f5c1
--- /dev/null
+++ b/erpnext/schools/doctype/guardian_student/guardian_student.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class GuardianStudent(Document):
+	pass
diff --git a/erpnext/schools/doctype/student/student.js b/erpnext/schools/doctype/student/student.js
index e69de29..10fefae 100644
--- a/erpnext/schools/doctype/student/student.js
+++ b/erpnext/schools/doctype/student/student.js
@@ -0,0 +1 @@
+cur_frm.add_fetch("guardian", "guardian_name", "guardian_name");
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student/student.json b/erpnext/schools/doctype/student/student.json
index 6984d38..ff33051 100644
--- a/erpnext/schools/doctype/student/student.json
+++ b/erpnext/schools/doctype/student/student.json
@@ -165,7 +165,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Student Email ID", 
+   "label": "Student Email Address", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -472,6 +472,63 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "section_break_18", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Guardian Details", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "guardians", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Guardians", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Student Guardian", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "section_break_22", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -667,63 +724,6 @@
    "bold": 0, 
    "collapsible": 1, 
    "columns": 0, 
-   "fieldname": "section_break_18", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Guardian Details", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "guardians", 
-   "fieldtype": "Table", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Guardians", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Student Guardian", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 1, 
-   "columns": 0, 
    "fieldname": "section_break_20", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -780,6 +780,145 @@
   {
    "allow_on_submit": 0, 
    "bold": 0, 
+   "collapsible": 1, 
+   "columns": 0, 
+   "fieldname": "exit", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Exit", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "date_of_leaving", 
+   "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Date of Leaving", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "leaving_certificate_number", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Leaving Certificate Number", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "column_break_31", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "reason_for_leaving", 
+   "fieldtype": "Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Reason For Leaving", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
    "default": "", 
@@ -819,7 +958,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-12-01 12:55:32.453131", 
+ "modified": "2017-02-12 01:17:09.872249", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student", 
@@ -836,7 +975,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -856,8 +994,7 @@
    "email": 1, 
    "export": 1, 
    "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
+   "import": 1, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -875,5 +1012,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "title", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student/student.py b/erpnext/schools/doctype/student/student.py
index a34bb6a..b660bb3 100644
--- a/erpnext/schools/doctype/student/student.py
+++ b/erpnext/schools/doctype/student/student.py
@@ -5,9 +5,9 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
+from frappe import _
 
 class Student(Document):
-
 	def validate(self):
 		self.title = " ".join(filter(None, [self.first_name, self.middle_name, self.last_name]))
 
@@ -19,7 +19,7 @@
 		"""Validates if the Student Applicant is Unique"""
 		student = frappe.db.sql("select name from `tabStudent` where student_applicant=%s and name!=%s", (self.student_applicant, self.name))
 		if student:
-			frappe.throw("Student {0} exist against student applicant {1}".format(student[0][0], self.student_applicant))
+			frappe.throw(_("Student {0} exist against student applicant {1}").format(student[0][0], self.student_applicant))
 
 	def update_applicant_status(self):
 		"""Updates Student Applicant status to Admitted"""
@@ -28,10 +28,9 @@
 
 def get_timeline_data(doctype, name):
 	'''Return timeline for attendance'''
-	return dict(frappe.db.sql('''select unix_timestamp(cs.schedule_date), count(*)
-		from `tabCourse Schedule` as cs , `tabStudent Attendance` as sa where
-			sa.course_schedule = cs.name
-			and sa.student=%s
-			and cs.schedule_date > date_sub(curdate(), interval 1 year)
+	return dict(frappe.db.sql('''select unix_timestamp(`date`), count(*)
+		from `tabStudent Attendance` where
+			student=%s
+			and `date` > date_sub(curdate(), interval 1 year)
 			and status = 'Present'
-			group by cs.schedule_date''', name))
+			group by date''', name))
diff --git a/erpnext/schools/doctype/student/student_dashboard.py b/erpnext/schools/doctype/student/student_dashboard.py
index 55faffb..ca2a660 100644
--- a/erpnext/schools/doctype/student/student_dashboard.py
+++ b/erpnext/schools/doctype/student/student_dashboard.py
@@ -7,10 +7,10 @@
 		'fieldname': 'student',
 		'transactions': [
 			{
-				'items': ['Student Log', 'Student Group', 'Student Attendance']
+				'items': ['Student Log', 'Student Batch', 'Student Group', 'Program Enrollment']
 			},
 			{
-				'items': ['Program Enrollment', 'Fees', 'Assessment']
+				'items': ['Fees', 'Assessment Result', 'Student Attendance', 'Student Leave Application']
 			}
 		]
 	}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_applicant/student_applicant.json b/erpnext/schools/doctype/student_applicant/student_applicant.json
index 18a490a..c9f5af3 100644
--- a/erpnext/schools/doctype/student_applicant/student_applicant.json
+++ b/erpnext/schools/doctype/student_applicant/student_applicant.json
@@ -511,7 +511,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Student Email ID", 
+   "label": "Student Email Address", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -560,7 +560,7 @@
    "collapsible": 0, 
    "columns": 0, 
    "fieldname": "nationality", 
-   "fieldtype": "Link", 
+   "fieldtype": "Data", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
@@ -570,7 +570,7 @@
    "label": "Nationality", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Country", 
+   "options": "", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -988,7 +988,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-11-17 10:26:13.225135", 
+ "modified": "2017-02-12 01:27:56.600827", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Applicant", 
@@ -1005,7 +1005,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 1, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1023,5 +1022,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "title", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_attendance/student_attendance.py b/erpnext/schools/doctype/student_attendance/student_attendance.py
index e2d01b5..8e806e4 100644
--- a/erpnext/schools/doctype/student_attendance/student_attendance.py
+++ b/erpnext/schools/doctype/student_attendance/student_attendance.py
@@ -6,11 +6,15 @@
 import frappe
 from frappe.model.document import Document
 from frappe import _
+from erpnext.schools.api import get_student_batch_students, get_student_group_students
+
 
 class StudentAttendance(Document):
 	def validate(self):
 		self.validate_date()
 		self.validate_mandatory()
+		self.validate_course_schedule()
+		self.validate_student()
 		self.validate_duplication()
 		
 	def validate_date(self):
@@ -21,9 +25,27 @@
 		if not (self.student_batch or self.course_schedule):
 			frappe.throw(_("""Student Batch or Course Schedule is mandatory"""))
 	
+	def validate_course_schedule(self):
+		if self.course_schedule:
+			self.student_batch = frappe.db.get_value("Course Schedule", self.course_schedule, "student_batch")
+	
+	def validate_student(self):
+		if self.course_schedule:
+			student_group = frappe.db.get_value("Course Schedule", self.course_schedule, "student_group")
+			student_group_students = []
+			for d in get_student_group_students(student_group):
+				student_group_students.append(d.student)
+			if student_group and self.student not in student_group_students:
+				frappe.throw(_("""Student {0}: {1} does not belong to Student Group {2}""".format(self.student, self.student_name, student_group)))
+		else:
+			student_batch_students = []
+			for d in get_student_batch_students(self.student_batch):
+				student_batch_students.append(d.student)
+			if self.student not in student_batch_students:
+				frappe.throw(_("""Student {0}: {1} does not belong to Student Batch {2}""".format(self.student, self.student_name, self.student_batch)))
+
 	def validate_duplication(self):
 		"""Check if the Attendance Record is Unique"""
-		
 		attendance_records=None
 		if self.course_schedule:
 			attendance_records= frappe.db.sql("""select name from `tabStudent Attendance` where \
diff --git a/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.py b/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.py
index 30a692c..58588a9 100644
--- a/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.py
+++ b/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.py
@@ -18,11 +18,12 @@
 		student_group = frappe.db.get_value("Course Schedule", course_schedule, "student_group")
 		if student_group:
 			student_list = frappe.get_list("Student Group Student", fields=["student", "student_name", "idx"] , \
-			filters={"parent": student_group}, order_by= "idx")
+			filters={"parent": student_group, "active": 1}, order_by= "idx")
 		else:
 			student_batch = frappe.db.get_value("Course Schedule", course_schedule, "student_batch")
 	if not student_list: 
-		student_list = frappe.get_list("Student Batch Student", fields=["student", "student_name", "idx"] , filters={"parent": student_batch}, order_by= "idx")
+		student_list = frappe.get_list("Student Batch Student", fields=["student", "student_name", "idx"] , 
+			filters={"parent": student_batch, "active": 1}, order_by= "idx")
 	
 	if course_schedule:
 		student_attendance_list= frappe.db.sql("""select student, status from `tabStudent Attendance` where \
diff --git a/erpnext/schools/doctype/student_batch/student_batch.json b/erpnext/schools/doctype/student_batch/student_batch.json
index f571d9d..4909ff0 100644
--- a/erpnext/schools/doctype/student_batch/student_batch.json
+++ b/erpnext/schools/doctype/student_batch/student_batch.json
@@ -1,7 +1,7 @@
 {
  "allow_copy": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
+ "allow_import": 1, 
+ "allow_rename": 1, 
  "autoname": "", 
  "beta": 0, 
  "creation": "2016-07-21 15:49:53.776461", 
@@ -22,7 +22,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Student Batch Name", 
@@ -51,7 +50,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Academic Year", 
@@ -81,7 +79,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Active", 
@@ -109,7 +106,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -136,7 +132,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Program", 
@@ -165,7 +160,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Academic Term", 
@@ -194,7 +188,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Students", 
@@ -222,7 +215,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Students", 
@@ -251,7 +243,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Instructors", 
@@ -279,7 +270,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Instructors", 
@@ -309,7 +299,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-12-01 13:18:12.024001", 
+ "modified": "2017-02-03 05:19:35.037148", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Batch", 
@@ -325,8 +315,7 @@
    "email": 1, 
    "export": 1, 
    "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
+   "import": 1, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -347,7 +336,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -365,5 +353,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_batch_student/student_batch_student.json b/erpnext/schools/doctype/student_batch_student/student_batch_student.json
index c9b1b01..3558cc8 100644
--- a/erpnext/schools/doctype/student_batch_student/student_batch_student.json
+++ b/erpnext/schools/doctype/student_batch_student/student_batch_student.json
@@ -14,13 +14,14 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Student", 
    "length": 0, 
    "no_copy": 0, 
@@ -30,6 +31,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -40,13 +42,14 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "column_break_2", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -54,6 +57,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -64,22 +68,52 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student_name", 
    "fieldtype": "Data", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Student Name", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "", 
+   "options": "student.title", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "1", 
+   "fieldname": "active", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Active", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -97,7 +131,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-22 03:27:52.913126", 
+ "modified": "2017-02-03 05:26:35.518004", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Batch Student", 
@@ -109,5 +143,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_group/student_group.js b/erpnext/schools/doctype/student_group/student_group.js
index 6f4084b..392793a 100644
--- a/erpnext/schools/doctype/student_group/student_group.js
+++ b/erpnext/schools/doctype/student_group/student_group.js
@@ -10,11 +10,11 @@
                 frappe.set_route("List", "Course Schedule");
             });
 
-            frm.add_custom_button(__("Assessment"), function() {
+            frm.add_custom_button(__("Assessment Plan"), function() {
                 frappe.route_options = {
                     student_group: frm.doc.name
                 }
-                frappe.set_route("List", "Assessment");
+                frappe.set_route("List", "Assessment Plan");
             });
         }
     },
diff --git a/erpnext/schools/doctype/student_group/student_group.json b/erpnext/schools/doctype/student_group/student_group.json
index 9e44f51..01e161e 100644
--- a/erpnext/schools/doctype/student_group/student_group.json
+++ b/erpnext/schools/doctype/student_group/student_group.json
@@ -216,7 +216,7 @@
   {
    "allow_on_submit": 0, 
    "bold": 0, 
-   "collapsible": 1, 
+   "collapsible": 0, 
    "collapsible_depends_on": "", 
    "columns": 0, 
    "fieldname": "section_break_6", 
@@ -311,7 +311,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-12-01 12:57:17.125085", 
+ "modified": "2017-01-27 14:50:36.107270", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Group", 
@@ -328,7 +328,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -349,7 +348,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -368,5 +366,6 @@
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_group/student_group.py b/erpnext/schools/doctype/student_group/student_group.py
index f604773..2f27957 100644
--- a/erpnext/schools/doctype/student_group/student_group.py
+++ b/erpnext/schools/doctype/student_group/student_group.py
@@ -7,6 +7,7 @@
 from frappe.model.document import Document
 from frappe import _
 from erpnext.schools.utils import validate_duplicate_student
+from erpnext.schools.api import get_student_batch_students
 
 class StudentGroup(Document):
 	def autoname(self):
@@ -29,6 +30,8 @@
 	def validate(self):
 		self.validate_strength()
 		self.validate_student_name()
+		if self.student_batch:
+			self.validate_student_batch()
 		validate_duplicate_student(self.students)
 
 	def validate_strength(self):
@@ -39,4 +42,10 @@
 		for d in self.students:
 			d.student_name = frappe.db.get_value("Student", d.student, "title")
 	
-	
\ No newline at end of file
+	def validate_student_batch(self):
+		student_batch_students = []
+		for d in get_student_batch_students(self.student_batch):
+			student_batch_students.append(d.student)
+		for d in self.students:
+			if d.student not in student_batch_students:
+				frappe.throw(_("""Student {0}: {1} does not belong to Student Batch {2}""".format(d.student, d.student_name, self.student_batch)))
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_group_student/student_group_student.json b/erpnext/schools/doctype/student_group_student/student_group_student.json
index 94493ae..5ca7b66 100644
--- a/erpnext/schools/doctype/student_group_student/student_group_student.json
+++ b/erpnext/schools/doctype/student_group_student/student_group_student.json
@@ -14,6 +14,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -21,6 +22,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Student", 
    "length": 0, 
    "no_copy": 0, 
@@ -30,6 +32,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -40,6 +43,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "column_break_2", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -47,6 +51,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -54,6 +59,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -64,6 +70,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "student_name", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -71,6 +78,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Student Name", 
    "length": 0, 
    "no_copy": 0, 
@@ -79,6 +87,36 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "1", 
+   "fieldname": "active", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Active", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -96,7 +134,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-21 12:27:02.479077", 
+ "modified": "2017-01-27 14:49:54.533005", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Group Student", 
@@ -108,5 +146,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_guardian/student_guardian.json b/erpnext/schools/doctype/student_guardian/student_guardian.json
index d8e50c9..0a41538 100644
--- a/erpnext/schools/doctype/student_guardian/student_guardian.json
+++ b/erpnext/schools/doctype/student_guardian/student_guardian.json
@@ -22,6 +22,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Guardian", 
    "length": 0, 
    "no_copy": 0, 
@@ -31,6 +32,35 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "guardian_name", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Guardian Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -49,6 +79,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Relation", 
    "length": 0, 
    "no_copy": 0, 
@@ -58,6 +89,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -75,7 +107,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-09-01 14:39:03.576590", 
+ "modified": "2017-01-27 13:36:47.177809", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Guardian", 
@@ -87,5 +119,6 @@
  "read_only_onload": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_leave_application/student_leave_application.json b/erpnext/schools/doctype/student_leave_application/student_leave_application.json
index f183afc..ad6d498 100644
--- a/erpnext/schools/doctype/student_leave_application/student_leave_application.json
+++ b/erpnext/schools/doctype/student_leave_application/student_leave_application.json
@@ -103,7 +103,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "date", 
+   "fieldname": "from_date", 
    "fieldtype": "Date", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -111,7 +111,7 @@
    "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
-   "label": "Date", 
+   "label": "From Date", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -131,6 +131,63 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "to_date", 
+   "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "To Date", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "description": "Will show the student as Present in Student Monthly Attendance Report", 
+   "fieldname": "mark_as_present", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Mark as Present", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "section_break_5", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -220,7 +277,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-12-15 14:51:28.774955", 
+ "modified": "2016-12-21 18:58:00.256114", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "Student Leave Application", 
diff --git a/erpnext/schools/doctype/topic/__init__.py b/erpnext/schools/doctype/topic/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/schools/doctype/topic/__init__.py
+++ /dev/null
diff --git a/erpnext/schools/doctype/topic/test_topic.py b/erpnext/schools/doctype/topic/test_topic.py
deleted file mode 100644
index 1d2974e..0000000
--- a/erpnext/schools/doctype/topic/test_topic.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe and Contributors
-# See license.txt
-from __future__ import unicode_literals
-
-import frappe
-import unittest
-
-# test_records = frappe.get_test_records('Topic')
-
-class TestTopic(unittest.TestCase):
-	pass
diff --git a/erpnext/schools/doctype/topic/topic.js b/erpnext/schools/doctype/topic/topic.js
deleted file mode 100644
index bd9379d..0000000
--- a/erpnext/schools/doctype/topic/topic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2016, Frappe and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('Topic', {
-	refresh: function(frm) {
-
-	}
-});
diff --git a/erpnext/schools/doctype/topic/topic.py b/erpnext/schools/doctype/topic/topic.py
deleted file mode 100644
index 5dba561..0000000
--- a/erpnext/schools/doctype/topic/topic.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe and contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.model.document import Document
-from frappe import _
-
-class Topic(Document):
-	pass
-
-def get_topic_list(doctype, txt, filters, limit_start, limit_page_length=20):
-	user = frappe.session.user
-	student = frappe.db.sql("select name from `tabStudent` where student_email_id= %s", user)
-	if student:
-		data = frappe. db.sql('''select name, course, modified,topic_name, introduction, content from `tabTopic` as topic
-								where topic.course = %s 
-								order by idx asc limit {0} , {1}'''.format(limit_start, limit_page_length),filters.course,as_dict = True)
-		
-		for topic in data:
-			try:
-				num_attachments = frappe.db.sql(""" select count(file_url) from tabFile as file
-													where file.attached_to_name=%s 
-													and file.attached_to_doctype=%s""",(topic.name,"Topic"))
-
-			except IOError or frappe.DoesNotExistError:
-				pass
-				frappe.local.message_log.pop()
-
-			topic.num_attachments = num_attachments[0][0]
-
-		return data
-
-def get_list_context(context=None):
-	course = frappe.get_doc('Course', frappe.form_dict.course)
-	portal_items = [{'reference_doctype': u'Topic', 'route': u"/topic?course=" + str(course.name), 'show_always': 0L, 'title': u'Topics'},
-				{'reference_doctype': u'Discussion', 'route': u"/discussion?course=" + str(course.name), 'show_always': 0L, 'title': u'Discussions'},
-
-	]
-	return {
-		"show_sidebar": True,
-		"title": _("Topic"),
-		'no_breadcrumbs': True,
-		"sidebar_items" : portal_items,
-		"sidebar_title" : course.name,
-		"get_list": get_topic_list,
-		"row_template": "templates/includes/topic/topic_row.html"
-	}
\ No newline at end of file
diff --git a/erpnext/schools/report/absent_student_report/absent_student_report.py b/erpnext/schools/report/absent_student_report/absent_student_report.py
index 82a20aa..11b2e13 100644
--- a/erpnext/schools/report/absent_student_report/absent_student_report.py
+++ b/erpnext/schools/report/absent_student_report/absent_student_report.py
@@ -42,7 +42,7 @@
 		_("Student") + ":Link/Student:90", 
 		_("Student Name") + "::150", 
 		_("Student Batch") + "::180",
-		_("Student Email ID") + "::180",
+		_("Student Email Address") + "::180",
 		_("Student Mobile No.") + "::150",
 	]
 	return columns
@@ -55,6 +55,6 @@
 def get_leave_applications(date):
 	leave_applicants = []
 	for student in frappe.db.sql("""select student from `tabStudent Leave Application` 
-		where docstatus = 1 and date = %s""", date):
+	where docstatus = 1 and from_date <= %s and to_date >= %s""", (date, date)):
 		leave_applicants.append(student[0])
 	return leave_applicants
\ No newline at end of file
diff --git a/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.py b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.py
index c112b59..b6bedcb 100644
--- a/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.py
+++ b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.py
@@ -53,7 +53,7 @@
 
 def get_student_batch_strength(student_batch):
 	student_batch_strength = frappe.db.sql("""select count(*) from `tabStudent Batch Student` 
-		where parent = %s""", student_batch)[0][0]
+		where parent = %s and active=1""", student_batch)[0][0]
 	return student_batch_strength
 
 def get_student_attendance(student_batch, date):
diff --git a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js
index 32c0551..8d914cb 100644
--- a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js
+++ b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js
@@ -3,40 +3,40 @@
 
 
 frappe.query_reports["Student Monthly Attendance Sheet"] = {
-	"filters": [
-		{
-			"fieldname":"month",
-			"label": __("Month"),
-			"fieldtype": "Select",
-			"options": "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec",
-			"default": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
-				"Dec"][frappe.datetime.str_to_obj(frappe.datetime.get_today()).getMonth()],
-		},
-		{
-			"fieldname":"year",
-			"label": __("Year"),
-			"fieldtype": "Select",
-			"reqd": 1
-		},
-		{
-			"fieldname":"student_batch",
-			"label": __("Student Batch"),
-			"fieldtype": "Link",
-			"options": "Student Batch",
-			"reqd": 1
-		}
-	],
+    "filters": [{
+            "fieldname": "month",
+            "label": __("Month"),
+            "fieldtype": "Select",
+            "options": "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec",
+            "default": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
+                "Dec"
+            ][frappe.datetime.str_to_obj(frappe.datetime.get_today()).getMonth()],
+        },
+        {
+            "fieldname": "year",
+            "label": __("Year"),
+            "fieldtype": "Select",
+            "reqd": 1
+        },
+        {
+            "fieldname": "student_batch",
+            "label": __("Student Batch"),
+            "fieldtype": "Link",
+            "options": "Student Batch",
+            "reqd": 1
+        }
+    ],
 
-	"onload": function() {
-		return  frappe.call({
-			method: "erpnext.schools.report.student_monthly_attendance_sheet.student_monthly_attendance_sheet.get_attendance_years",
-			callback: function(r) {
-				var year_filter = frappe.query_report_filters_by_name.year;
-				year_filter.df.options = r.message;
-				year_filter.df.default = r.message.split("\n")[0];
-				year_filter.refresh();
-				year_filter.set_input(year_filter.df.default);
-			}
-		});
-	}
-}
+    "onload": function() {
+        return frappe.call({
+            method: "erpnext.schools.report.student_monthly_attendance_sheet.student_monthly_attendance_sheet.get_attendance_years",
+            callback: function(r) {
+                var year_filter = frappe.query_report_filters_by_name.year;
+                year_filter.df.options = r.message;
+                year_filter.df.default = r.message.split("\n")[0];
+                year_filter.refresh();
+                year_filter.set_input(year_filter.df.default);
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py
index 2f8ba52..01cee58 100644
--- a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py
+++ b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.utils import cstr, cint, getdate
+from frappe.utils import cstr, cint, getdate, get_first_day, get_last_day, date_diff, add_days
 from frappe import msgprint, _
 from calendar import monthrange
 from erpnext.schools.api import get_student_batch_students
@@ -11,72 +11,93 @@
 def execute(filters=None):
 	if not filters: filters = {}
 
-	conditions, filters = get_conditions(filters)
-	columns = get_columns(filters)
-	att_map = get_attendance_list(conditions, filters)
+	from_date = get_first_day(filters["month"] + '-' + filters["year"])
+	to_date = get_last_day(filters["month"] + '-' + filters["year"])
+	total_days_in_month = date_diff(to_date, from_date) +1
+	columns = get_columns(total_days_in_month)
 	students = get_student_batch_students(filters.get("student_batch"))
+	students_list = get_students_list(students)
+	att_map = get_attendance_list(from_date, to_date, filters.get("student_batch"), students_list)
 	data = []
 	for stud in students:
 		row = [stud.student, stud.student_name]
-
+		date = from_date
 		total_p = total_a = 0.0
-		for day in range(filters["total_days_in_month"]):
+		for day in range(total_days_in_month):
 			status="None"
 			if att_map.get(stud.student):
-				status = att_map.get(stud.student).get(day + 1, "None")
+				status = att_map.get(stud.student).get(date, "None")
 			status_map = {"Present": "P", "Absent": "A", "None": ""}
 			row.append(status_map[status])
-
 			if status == "Present":
 				total_p += 1
 			elif status == "Absent":
 				total_a += 1
-
+			date = add_days(date, 1)
 		row += [total_p, total_a]
 		data.append(row)
-
 	return columns, data
 
-def get_columns(filters):
+def get_columns(days_in_month):
 	columns = [ _("Student") + ":Link/Student:90", _("Student Name") + "::150"]
-
-	for day in range(filters["total_days_in_month"]):
+	for day in range(days_in_month):
 		columns.append(cstr(day+1) +"::20")
-
 	columns += [_("Total Present") + ":Int:95", _("Total Absent") + ":Int:90"]
 	return columns
 
-def get_attendance_list(conditions, filters):
-	attendance_list = frappe.db.sql("""select student, day(date) as day_of_month,
-		status from `tabStudent Attendance` where docstatus = 1 %s order by student, date""" %
-		conditions, filters, as_dict=1)
+def get_students_list(students):
+	student_list = []
+	for stud in students:
+		student_list.append(stud.student)
+	return student_list
 
+def get_attendance_list(from_date, to_date, student_batch, students_list):
+	attendance_list = frappe.db.sql("""select student, date, status 
+		from `tabStudent Attendance` where docstatus = 1 and student_batch = %s 
+		and date between %s and %s
+		order by student, date""",
+		(student_batch, from_date, to_date), as_dict=1)
 	att_map = {}
+	students_with_leave_application = get_students_with_leave_application(from_date, to_date, students_list)
 	for d in attendance_list:
-		att_map.setdefault(d.student, frappe._dict()).setdefault(d.day_of_month, "")
-		att_map[d.student][d.day_of_month] = d.status
-
+		att_map.setdefault(d.student, frappe._dict()).setdefault(d.date, "")
+		if students_with_leave_application and d.student in students_with_leave_application.get(d.date):
+			att_map[d.student][d.date] = "Present"
+		else:
+			att_map[d.student][d.date] = d.status
 	return att_map
 
-def get_conditions(filters):
-	if not (filters.get("month") and filters.get("year")):
-		msgprint(_("Please select month and year"), raise_exception=1)
+def get_students_with_leave_application(from_date, to_date, students_list):
+	leave_applications = frappe.db.sql("""
+		select student, from_date, to_date 
+		from `tabStudent Leave Application` 
+		where 
+			mark_as_present and docstatus = 1
+			and student in %(students)s
+			and (
+				from_date between %(from_date)s and %(to_date)s
+				or to_date between %(from_date)s and %(to_date)s
+				or (%(from_date)s between from_date and to_date and %(to_date)s between from_date and to_date)
+			)
+		""", {
+			"students": students_list,
+			"from_date": from_date,
+			"to_date": to_date
+		}, as_dict=True)
+	students_with_leaves= {}
+	for application in leave_applications:
+		for date in daterange(application.from_date, application.to_date):
+			students_with_leaves.setdefault(date, []).append(application.student)
 
-	filters["month"] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
-		"Dec"].index(filters.month) + 1
+	return students_with_leaves
 
-	filters["total_days_in_month"] = monthrange(cint(filters.year), filters.month)[1]
-
-	conditions = " and month(date) = %(month)s and year(date) = %(year)s"
-
-	if filters.get("student_batch"): conditions += " and student_batch = %(student_batch)s"
-
-	return conditions, filters
+def daterange(d1, d2):
+	import datetime
+	return (d1 + datetime.timedelta(days=i) for i in range((d2 - d1).days + 1))
 
 @frappe.whitelist()
 def get_attendance_years():
 	year_list = frappe.db.sql_list("""select distinct YEAR(date) from `tabStudent Attendance` ORDER BY YEAR(date) DESC""")
 	if not year_list:
 		year_list = [getdate().year]
-
 	return "\n".join(str(year) for year in year_list)
diff --git a/erpnext/schools/web_form/student_applicant/student_applicant.json b/erpnext/schools/web_form/student_applicant/student_applicant.json
index 63ad764..1feb159 100644
--- a/erpnext/schools/web_form/student_applicant/student_applicant.json
+++ b/erpnext/schools/web_form/student_applicant/student_applicant.json
@@ -1,22 +1,30 @@
 {
+ "accept_payment": 0, 
  "allow_comments": 0, 
  "allow_delete": 0, 
  "allow_edit": 1, 
+ "allow_incomplete": 0, 
  "allow_multiple": 1, 
- "creation": "2016-09-12 02:26:42.447103", 
+ "allow_print": 0, 
+ "amount": 0.0, 
+ "amount_based_on_field": 0, 
+ "creation": "2016-09-22 13:10:10.792735", 
  "doc_type": "Student Applicant", 
  "docstatus": 0, 
  "doctype": "Web Form", 
  "idx": 0, 
  "is_standard": 1, 
  "login_required": 1, 
- "modified": "2016-09-15 02:00:28.493759", 
+ "max_attachment_size": 0, 
+ "modified": "2017-02-12 01:28:57.997942", 
  "modified_by": "Administrator", 
  "module": "Schools", 
  "name": "student-applicant", 
  "owner": "Administrator", 
+ "payment_button_label": "Buy Now", 
  "published": 1, 
  "route": "student-applicant", 
+ "show_sidebar": 1, 
  "sidebar_items": [], 
  "success_url": "/student-applicant", 
  "title": "Student Applicant", 
@@ -26,6 +34,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "First Name", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 1
   }, 
@@ -34,6 +44,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Middle Name", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -42,6 +54,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Last Name", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -50,6 +64,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Image", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -58,6 +74,8 @@
    "fieldtype": "Link", 
    "hidden": 0, 
    "label": "Program", 
+   "max_length": 0, 
+   "max_value": 0, 
    "options": "Program", 
    "read_only": 0, 
    "reqd": 1
@@ -67,6 +85,8 @@
    "fieldtype": "Link", 
    "hidden": 0, 
    "label": "Academic Year", 
+   "max_length": 0, 
+   "max_value": 0, 
    "options": "Academic Year", 
    "read_only": 0, 
    "reqd": 0
@@ -76,6 +96,8 @@
    "fieldtype": "Date", 
    "hidden": 0, 
    "label": "Date of Birth", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -84,6 +106,8 @@
    "fieldtype": "Select", 
    "hidden": 0, 
    "label": "Blood Group", 
+   "max_length": 0, 
+   "max_value": 0, 
    "options": "\nA+\nA-\nB+\nB-\nO+\nO-\nAB+\nAB-", 
    "read_only": 0, 
    "reqd": 0
@@ -93,6 +117,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Student Email ID", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -101,15 +127,19 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Student Mobile Number", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
   {
    "fieldname": "nationality", 
-   "fieldtype": "Link", 
+   "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Nationality", 
-   "options": "Country", 
+   "max_length": 0, 
+   "max_value": 0, 
+   "options": "", 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -118,6 +148,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Address Line 1", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -126,6 +158,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Address Line 2", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -134,6 +168,8 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Pincode", 
+   "max_length": 0, 
+   "max_value": 0, 
    "read_only": 0, 
    "reqd": 0
   }, 
@@ -142,6 +178,8 @@
    "fieldtype": "Table", 
    "hidden": 0, 
    "label": "Guardians", 
+   "max_length": 0, 
+   "max_value": 0, 
    "options": "Student Guardian", 
    "read_only": 0, 
    "reqd": 0
@@ -151,6 +189,8 @@
    "fieldtype": "Table", 
    "hidden": 0, 
    "label": "Siblings", 
+   "max_length": 0, 
+   "max_value": 0, 
    "options": "Student Sibling", 
    "read_only": 0, 
    "reqd": 0
diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js
index ea88e8b..540ec28 100644
--- a/erpnext/selling/doctype/customer/customer.js
+++ b/erpnext/selling/doctype/customer/customer.js
@@ -32,10 +32,12 @@
 			erpnext.toggle_naming_series();
 		}
 
+		frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Customer'}
+
 		frm.toggle_display(['address_html','contact_html'], !frm.doc.__islocal);
 
 		if(!frm.doc.__islocal) {
-			erpnext.utils.render_address_and_contact(frm);
+			frappe.geo.render_address_and_contact(frm);
 
 			// custom buttons
 			frm.add_custom_button(__('Accounting Ledger'), function() {
@@ -51,7 +53,7 @@
 			erpnext.utils.set_party_dashboard_indicators(frm);
 
 		} else {
-			erpnext.utils.clear_address_and_contact(frm);
+			frappe.geo.clear_address_and_contact(frm);
 		}
 
 		var grid = cur_frm.get_field("sales_team").grid;
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index 77cc624..81e17a6 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -23,7 +23,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Name and Type", 
@@ -52,7 +51,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Series", 
@@ -80,7 +78,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Full Name", 
@@ -109,7 +106,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Type", 
@@ -139,7 +135,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "From Lead", 
@@ -169,7 +164,6 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Image", 
@@ -192,42 +186,11 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "default": "Active", 
-   "fieldname": "status", 
-   "fieldtype": "Select", 
-   "hidden": 1, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Status", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Active\nDormant\nOpen", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "column_break0", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -255,7 +218,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Customer Group", 
@@ -286,7 +248,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Territory", 
@@ -316,7 +277,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Tax ID", 
@@ -345,7 +305,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Disabled", 
@@ -373,7 +332,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Currency and Price List", 
@@ -401,7 +359,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Billing Currency", 
@@ -429,7 +386,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Price List", 
@@ -457,7 +413,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -484,7 +439,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Print Language", 
@@ -514,7 +468,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Address and Contact", 
@@ -542,7 +495,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Address HTML", 
@@ -569,7 +521,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Website", 
@@ -596,7 +547,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -623,7 +573,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Contact HTML", 
@@ -652,7 +601,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Accounting", 
@@ -681,7 +629,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Accounts", 
@@ -710,7 +657,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Credit Limit", 
@@ -738,7 +684,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Credit Days Based On", 
@@ -768,7 +713,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Credit Days", 
@@ -797,7 +741,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Credit Limit", 
@@ -828,7 +771,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "More Information", 
@@ -858,7 +800,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Customer Details", 
@@ -887,7 +828,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Frozen", 
@@ -916,7 +856,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Partner and Commission", 
@@ -945,7 +884,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Partner", 
@@ -975,7 +913,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Commission Rate", 
@@ -1005,7 +942,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Team", 
@@ -1033,7 +969,6 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Team Details", 
@@ -1066,7 +1001,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:26:57.948263", 
+ "modified": "2017-02-01 12:00:06.045170", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Customer", 
@@ -1083,7 +1018,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1104,7 +1038,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 1, 
    "print": 0, 
    "read": 1, 
@@ -1125,7 +1058,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1146,7 +1078,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1167,7 +1098,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 1, 
    "print": 0, 
    "read": 1, 
@@ -1188,7 +1118,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1209,7 +1138,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1230,7 +1158,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1251,7 +1178,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -1269,5 +1195,6 @@
  "search_fields": "customer_name,customer_group,territory", 
  "sort_order": "ASC", 
  "title_field": "customer_name", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 48e2982..e4101af 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -9,9 +9,8 @@
 from frappe.utils import flt, cint, cstr
 from frappe.desk.reportview import build_match_conditions
 from erpnext.utilities.transaction_base import TransactionBase
-from erpnext.utilities.address_and_contact import load_address_and_contact
+from frappe.geo.address_and_contact import load_address_and_contact, delete_contact_and_address
 from erpnext.accounts.party import validate_party_accounts, get_timeline_data # keep this
-from erpnext.accounts.party_status import get_party_status
 from erpnext import get_default_currency
 
 class Customer(TransactionBase):
@@ -70,7 +69,6 @@
 		self.flags.is_new_doc = self.is_new()
 		self.flags.old_lead = self.lead_name
 		validate_party_accounts(self)
-		self.status = get_party_status(self)
 		self.validate_credit_limit_on_change()
 
 	def on_update(self):
@@ -79,9 +77,6 @@
 		if self.flags.old_lead != self.lead_name:
 			self.update_lead_status()
 
-		self.update_address()
-		self.update_contact()
-
 		if self.flags.is_new_doc:
 			self.create_lead_address_contact()
 
@@ -95,34 +90,35 @@
 				for d in frappe.get_all(doctype, {'lead': self.lead_name}):
 					frappe.db.set_value(doctype, d.name, 'customer', self.name, update_modified=False)
 
-	def update_address(self):
-		frappe.db.sql("""update `tabAddress` set customer_name=%s, modified=NOW()
-			where customer=%s""", (self.customer_name, self.name))
-
-	def update_contact(self):
-		frappe.db.sql("""update `tabContact` set customer_name=%s, modified=NOW()
-			where customer=%s""", (self.customer_name, self.name))
-
 	def create_lead_address_contact(self):
 		if self.lead_name:
-			if not frappe.db.get_value("Address", {"lead": self.lead_name, "customer": self.name}):
-				frappe.db.sql("""update `tabAddress` set customer=%s, customer_name=%s where lead=%s""",
-					(self.name, self.customer_name, self.lead_name))
+			# assign lead address to customer (if already not set)
+			address_names = frappe.get_all('Dynamic Link', filters={
+								"parenttype":"Address",
+								"link_doctype":"Lead",
+								"link_name":self.lead_name
+							}, fields=["parent as name"])
+
+			for address_name in address_names:
+				address = frappe.get_doc('Address', address_name.get('name'))
+				if not address.has_link('Customer', self.name):
+					address.append('links', dict(link_doctype='Customer', link_name=self.name))
+					address.save()
 
 			lead = frappe.db.get_value("Lead", self.lead_name, ["lead_name", "email_id", "phone", "mobile_no"], as_dict=True)
 
-			c = frappe.new_doc('Contact')
-			c.first_name = lead.lead_name
-			c.email_id = lead.email_id
-			c.phone = lead.phone
-			c.mobile_no = lead.mobile_no
-			c.customer = self.name
-			c.customer_name = self.customer_name
-			c.is_primary_contact = 1
-			c.flags.ignore_permissions = self.flags.ignore_permissions
-			c.autoname()
-			if not frappe.db.exists("Contact", c.name):
-				c.insert()
+			# create contact from lead
+			contact = frappe.new_doc('Contact')
+			contact.first_name = lead.lead_name
+			contact.email_id = lead.email_id
+			contact.phone = lead.phone
+			contact.mobile_no = lead.mobile_no
+			contact.is_primary_contact = 1
+			contact.append('links', dict(link_doctype='Customer', link_name=self.name))
+			contact.flags.ignore_permissions = self.flags.ignore_permissions
+			contact.autoname()
+			if not frappe.db.exists("Contact", contact.name):
+				contact.insert()
 
 	def validate_name_with_customer_group(self):
 		if frappe.db.exists("Customer Group", self.name):
@@ -137,40 +133,14 @@
 			if flt(self.credit_limit) < outstanding_amt:
 				frappe.throw(_("""New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}""").format(outstanding_amt))
 
-	def delete_customer_address(self):
-		addresses = frappe.db.sql("""select name, lead from `tabAddress`
-			where customer=%s""", (self.name,))
-
-		for name, lead in addresses:
-			if lead:
-				frappe.db.sql("""update `tabAddress` set customer=null, customer_name=null
-					where name=%s""", name)
-			else:
-				frappe.db.sql("""delete from `tabAddress` where name=%s""", name)
-
-	def delete_customer_contact(self):
-		for contact in frappe.db.sql_list("""select name from `tabContact`
-			where customer=%s""", self.name):
-				frappe.delete_doc("Contact", contact)
-
 	def on_trash(self):
-		self.delete_customer_address()
-		self.delete_customer_contact()
+		delete_contact_and_address('Customer', self.name)
 		if self.lead_name:
-			frappe.db.sql("update `tabLead` set status='Interested' where name=%s",self.lead_name)
+			frappe.db.sql("update `tabLead` set status='Interested' where name=%s", self.lead_name)
 
 	def after_rename(self, olddn, newdn, merge=False):
-		set_field = ''
 		if frappe.defaults.get_global_default('cust_master_name') == 'Customer Name':
 			frappe.db.set(self, "customer_name", newdn)
-			self.update_contact()
-			set_field = ", customer_name=%(newdn)s"
-		self.update_customer_address(newdn, set_field)
-
-	def update_customer_address(self, newdn, set_field):
-		frappe.db.sql("""update `tabAddress` set address_title=%(newdn)s
-			{set_field} where customer=%(newdn)s"""\
-			.format(set_field=set_field), ({"newdn": newdn}))
 
 
 def get_customer_list(doctype, txt, searchfield, start, page_len, filters):
diff --git a/erpnext/selling/doctype/customer/customer_list.js b/erpnext/selling/doctype/customer/customer_list.js
index 57cebd4..09c3e93 100644
--- a/erpnext/selling/doctype/customer/customer_list.js
+++ b/erpnext/selling/doctype/customer/customer_list.js
@@ -1,12 +1,3 @@
 frappe.listview_settings['Customer'] = {
-	add_fields: ["customer_name", "territory", "customer_group", "customer_type", 'status'],
-	get_indicator: function(doc) {
-		color = {
-			'Open': 'red',
-			'Active': 'green',
-			'Dormant': 'darkgrey'
-		}
-		return [__(doc.status), color[doc.status], "status,=," + doc.status];
-	}
-
+	add_fields: ["customer_name", "territory", "customer_group", "customer_type"],
 };
diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py
index 23df503..0d74d23 100644
--- a/erpnext/selling/doctype/customer/test_customer.py
+++ b/erpnext/selling/doctype/customer/test_customer.py
@@ -10,12 +10,17 @@
 from erpnext.exceptions import PartyFrozen, PartyDisabled
 from frappe.utils import flt
 from erpnext.selling.doctype.customer.customer import get_credit_limit, get_customer_outstanding
+from erpnext.tests.utils import create_test_contact_and_address
 
 test_ignore = ["Price List"]
 
 test_records = frappe.get_test_records('Customer')
 
 class TestCustomer(unittest.TestCase):
+	def setUp(self):
+		if not frappe.get_value('Item', '_Test Item'):
+			make_test_records('Item')
+
 	def tearDown(self):
 		frappe.db.set_value("Customer", '_Test Customer', 'credit_limit', 0.0)
 
@@ -26,21 +31,21 @@
 			'selling_price_list': None,
 			'customer_group': '_Test Customer Group',
 			'contact_designation': None,
-			'customer_address': '_Test Address-Office',
+			'customer_address': '_Test Address for Customer-Office',
 			'contact_department': None,
 			'contact_email': 'test_contact_customer@example.com',
 			'contact_mobile': None,
 			'sales_team': [],
-			'contact_display': '_Test Contact For _Test Customer',
-			'contact_person': '_Test Contact For _Test Customer-_Test Customer',
+			'contact_display': '_Test Contact for _Test Customer',
+			'contact_person': '_Test Contact for _Test Customer-_Test Customer',
 			'territory': u'_Test Territory',
 			'contact_phone': '+91 0000000000',
 			'customer_name': '_Test Customer'
 		}
 
-		make_test_records("Address")
-		make_test_records("Contact")
-		frappe.db.set_value("Contact", "_Test Contact For _Test Customer-_Test Customer",
+		create_test_contact_and_address()
+
+		frappe.db.set_value("Contact", "_Test Contact for _Test Customer-_Test Customer",
 			"is_primary_contact", 1)
 
 		details = get_party_details("_Test Customer")
@@ -117,6 +122,7 @@
 		self.assertEquals(test_customer_1.customer_name, duplicate_customer.customer_name)
 
 	def get_customer_outstanding_amount(self):
+		from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
 		outstanding_amt = get_customer_outstanding('_Test Customer', '_Test Company')
 
 		# If outstanding is negative make a transaction to get positive outstanding amount
@@ -124,7 +130,7 @@
 			return outstanding_amt
 
 		item_qty = int((abs(outstanding_amt) + 200)/100)
-		make_sales_order({'qty':item_qty})
+		make_sales_order(qty=item_qty)
 		return get_customer_outstanding('_Test Customer', '_Test Company')
 
 	def test_customer_credit_limit(self):
@@ -138,7 +144,7 @@
 
 		if outstanding_amt <= 0.0:
 			item_qty = int((abs(outstanding_amt) + 200)/100)
-			make_sales_order({'qty':item_qty})
+			make_sales_order(qty=item_qty)
 
 		if credit_limit == 0.0:
 			frappe.db.set_value("Customer", '_Test Customer', 'credit_limit', outstanding_amt - 50.0)
@@ -165,11 +171,7 @@
 		self.assertRaises(frappe.ValidationError, make_sales_order)
 
 	def test_customer_credit_limit_on_change(self):
-		from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
-
 		outstanding_amt = self.get_customer_outstanding_amount()
-		credit_limit = get_credit_limit('_Test Customer', '_Test Company')
-
 		customer = frappe.get_doc("Customer", '_Test Customer')
 		customer.credit_limit = flt(outstanding_amt - 100)
 		self.assertRaises(frappe.ValidationError, customer.save)
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/erpnext/selling/doctype/installation_note/installation_note.js
index 0334ae7..d4b2179 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.js
+++ b/erpnext/selling/doctype/installation_note/installation_note.js
@@ -32,11 +32,7 @@
 			}
 		});
 
-		this.frm.set_query("contact_person", function() {
-			return {
-				filters: {'customer': me.frm.doc.customer }
-			}
-		});
+		this.frm.set_query('contact_person', erpnext.queries.contact_query);
 
 		this.frm.set_query("customer", function() {
 			return {
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index d111c14..e06f963 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -16,6 +16,7 @@
 	},
 	refresh: function(doc, dt, dn) {
 		this._super(doc, dt, dn);
+
 		if(doc.docstatus == 1 && doc.status!=='Lost') {
 			cur_frm.add_custom_button(__('Make Sales Order'),
 				cur_frm.cscript['Make Sales Order']);
@@ -66,12 +67,8 @@
 		this.frm.toggle_reqd("customer", this.frm.doc.quotation_to == "Customer");
 
 		// to overwrite the customer_filter trigger from queries.js
-		$.each(["customer_address", "shipping_address_name"],
-			function(i, opts) {
-				me.frm.set_query(opts, me.frm.doc.quotation_to==="Lead"
-					? erpnext.queries["lead_filter"] : erpnext.queries["customer_filter"]);
-			}
-		);
+		this.frm.set_query('customer_address', erpnext.queries.address_query);
+		this.frm.set_query('shipping_address_name', erpnext.queries.address_query);
 	},
 
 	tc_name: function() {
diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json
index 4fc536e..a543ecd 100644
--- a/erpnext/selling/doctype/quotation/quotation.json
+++ b/erpnext/selling/doctype/quotation/quotation.json
@@ -2336,6 +2336,35 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "supplier_quotation", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Supplier Quotation", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Supplier Quotation", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }
  ], 
  "hide_heading": 0, 
@@ -2350,7 +2379,7 @@
  "istable": 0, 
  "max_attachments": 1, 
  "menu_index": 0, 
- "modified": "2016-11-07 05:58:07.587479", 
+ "modified": "2017-01-04 06:28:07.269867", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Quotation", 
@@ -2537,5 +2566,6 @@
  "sort_order": "DESC", 
  "timeline_field": "customer", 
  "title_field": "title", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation_dashboard.py b/erpnext/selling/doctype/quotation/quotation_dashboard.py
index e572a92..f1c41e5 100644
--- a/erpnext/selling/doctype/quotation/quotation_dashboard.py
+++ b/erpnext/selling/doctype/quotation/quotation_dashboard.py
@@ -5,7 +5,6 @@
 		'fieldname': 'prevdoc_docname',
 		'transactions': [
 			{
-				'label': _('Related'),
 				'items': ['Sales Order']
 			},
 		]
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index 7a59dd7..36cc472 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -68,47 +68,6 @@
 		self.assertEquals(quotation.get("items")[0].rate, total_margin)
 		si.save()
 
-	def test_party_status_open(self):
-		from erpnext.selling.doctype.customer.test_customer import get_customer_dict
-
-		customer = frappe.get_doc(get_customer_dict('Party Status Test')).insert()
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active')
-
-		quotation = frappe.get_doc(get_quotation_dict(customer=customer.name)).insert()
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Open')
-
-		quotation.submit()
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active')
-
-		quotation.cancel()
-		quotation.delete()
-		customer.delete()
-
-	def test_party_status_close(self):
-		from erpnext.selling.doctype.customer.test_customer import get_customer_dict
-
-		customer = frappe.get_doc(get_customer_dict('Party Status Test')).insert()
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active')
-
-		# open quotation
-		quotation = frappe.get_doc(get_quotation_dict(customer=customer.name)).insert()
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Open')
-
-		# close quotation (submit)
-		quotation.submit()
-
-		quotation1 = frappe.get_doc(get_quotation_dict(customer=customer.name)).insert()
-
-		# still open
-		self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Open')
-
-		quotation.cancel()
-		quotation.delete()
-
-		quotation1.delete()
-
-		customer.delete()
-
 test_records = frappe.get_test_records('Quotation')
 
 def get_quotation_dict(customer=None, item_code=None):
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index f1eeccc..f01e484 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -4,11 +4,23 @@
 {% include 'erpnext/selling/sales_common.js' %}
 
 frappe.ui.form.on("Sales Order", {
+	setup: function(frm) {
+		$.extend(frm.cscript, new erpnext.selling.SalesOrderController({frm: frm}));
+	},
 	onload: function(frm) {
 		erpnext.queries.setup_queries(frm, "Warehouse", function() {
 			return erpnext.queries.warehouse(frm.doc);
 		});
 
+		frm.set_query('project', function(doc, cdt, cdn) {
+			return {
+				query: "erpnext.controllers.queries.get_project_name",
+				filters: {
+					'customer': doc.customer
+				}
+			}
+		});
+
 		// formatter for material request item
 		frm.set_indicator_formatter('item_code',
 			function(doc) { return (doc.qty<=doc.delivered_qty) ? "green" : "orange" })
@@ -17,6 +29,7 @@
 
 erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend({
 	refresh: function(doc, dt, dn) {
+		var me = this;
 		this._super();
 		var allow_purchase = false;
 		var allow_delivery = false;
@@ -24,8 +37,8 @@
 		if(doc.docstatus==1) {
 			if(doc.status != 'Closed') {
 
-				for (var i in cur_frm.doc.items) {
-					var item = cur_frm.doc.items[i];
+				for (var i in this.frm.doc.items) {
+					var item = this.frm.doc.items[i];
 					if(item.delivered_by_supplier === 1 || item.supplier){
 						if(item.qty > flt(item.ordered_qty)
 							&& item.qty > flt(item.delivered_qty)) {
@@ -47,55 +60,69 @@
 				if (this.frm.has_perm("submit")) {
 					// close
 					if(flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed) < 100) {
-							cur_frm.add_custom_button(__('Close'), this.close_sales_order, __("Status"))
+							this.frm.add_custom_button(__('Close'),
+								function() { me.close_sales_order() }, __("Status"))
 						}
 				}
 
 				// delivery note
 				if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1 && allow_delivery) {
-					cur_frm.add_custom_button(__('Delivery'), this.make_delivery_note, __("Make"));
-					cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
+					this.frm.add_custom_button(__('Delivery'),
+						function() { me.make_delivery_note() }, __("Make"));
+					this.frm.add_custom_button(__('Production Order'),
+						function() { me.make_production_order() }, __("Make"));
+
+					this.frm.page.set_inner_btn_group_as_primary(__("Make"));
 				}
 
 				// sales invoice
 				if(flt(doc.per_billed, 2) < 100) {
-					cur_frm.add_custom_button(__('Invoice'), this.make_sales_invoice, __("Make"));
+					this.frm.add_custom_button(__('Invoice'),
+						function() { me.make_sales_invoice() }, __("Make"));
 				}
 
 				// material request
 				if(!doc.order_type || ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1
 					&& flt(doc.per_delivered, 2) < 100) {
-						cur_frm.add_custom_button(__('Material Request'), this.make_material_request, __("Make"));
+						this.frm.add_custom_button(__('Material Request'),
+							function() { me.make_material_request() }, __("Make"));
 				}
 
 				// make purchase order
 				if(flt(doc.per_delivered, 2) < 100 && allow_purchase) {
-					cur_frm.add_custom_button(__('Purchase Order'), cur_frm.cscript.make_purchase_order, __("Make"));
+					this.frm.add_custom_button(__('Purchase Order'),
+						function() { me.make_purchase_order() }, __("Make"));
 				}
 
+				// payment request
 				if(flt(doc.per_billed)==0) {
-					cur_frm.add_custom_button(__('Payment Request'), this.make_payment_request, __("Make"));
-					cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_payment_entry, __("Make"));
+					this.frm.add_custom_button(__('Payment Request'),
+						function() { me.make_payment_request() }, __("Make"));
+					this.frm.add_custom_button(__('Payment'),
+						function() { me.make_payment_entry() }, __("Make"));
 				}
 
 				// maintenance
 				if(flt(doc.per_delivered, 2) < 100 &&
 						["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1) {
-					cur_frm.add_custom_button(__('Maintenance Visit'), this.make_maintenance_visit, __("Make"));
-					cur_frm.add_custom_button(__('Maintenance Schedule'), this.make_maintenance_schedule, __("Make"));
+					this.frm.add_custom_button(__('Maintenance Visit'),
+						function() { me.make_maintenance_visit() }, __("Make"));
+					this.frm.add_custom_button(__('Maintenance Schedule'),
+						function() { me.make_maintenance_schedule() }, __("Make"));
 				}
 
-
 			} else {
 				if (this.frm.has_perm("submit")) {
 					// un-close
-					cur_frm.add_custom_button(__('Re-open'), cur_frm.cscript['Unclose Sales Order'], __("Status"));
+					this.frm.add_custom_button(__('Re-open'), function() {
+						me.frm.cscript.update_status('Re-open', 'Draft')
+					}, __("Status"));
 				}
 			}
 		}
 
 		if (this.frm.doc.docstatus===0) {
-			cur_frm.add_custom_button(__('Quotation'),
+			this.frm.add_custom_button(__('Quotation'),
 				function() {
 					erpnext.utils.map_current_doc({
 						method: "erpnext.selling.doctype.quotation.quotation.make_sales_order",
@@ -103,9 +130,9 @@
 						get_query_filters: {
 							docstatus: 1,
 							status: ["!=", "Lost"],
-							order_type: cur_frm.doc.order_type,
-							customer: cur_frm.doc.customer || undefined,
-							company: cur_frm.doc.company
+							order_type: me.frm.doc.order_type,
+							customer: me.frm.doc.customer || undefined,
+							company: me.frm.doc.company
 						}
 					})
 				}, __("Get items from"));
@@ -114,6 +141,82 @@
 		this.order_type(doc);
 	},
 
+	make_production_order() {
+		var me = this;
+		this.frm.call({
+			doc: this.frm.doc,
+			method: 'get_production_order_items',
+			callback: function(r) {
+				if(!r.message.every(function(d) { return !!d.bom })) {
+					frappe.msgprint({
+						title: __('Production Order not created'),
+						message: __('No Items with Bill of Materials to Manufacture'),
+						indicator: 'orange'
+					});
+					return;
+				}
+				else if(!r.message.every(function(d) { return !!d.pending_qty })) {
+					frappe.msgprint({
+						title: __('Production Order not created'),
+						message: __('Production Order already created for all items with BOM'),
+						indicator: 'orange'
+					});
+					return;
+				} else {
+					var fields = [
+						{fieldtype:'Table', fieldname: 'items',
+							description: __('Select BOM and Qty for Production'),
+							fields: [
+								{fieldtype:'Read Only', fieldname:'item_code',
+									label: __('Item Code'), in_list_view:1},
+								{fieldtype:'Link', fieldname:'bom', options: 'BOM',
+									label: __('Select BOM'), in_list_view:1, get_query: function(doc) {
+										return {filters: {item: doc.item_code}};
+									}},
+								{fieldtype:'Float', fieldname:'pending_qty',
+									label: __('Qty'), in_list_view:1},
+							],
+							get_data: function() {
+								return r.message
+							}
+						}
+					]
+					var d = new frappe.ui.Dialog({
+						title: __('Select Items to Manufacture'),
+						fields: fields,
+						primary_action: function() {
+							data = d.get_values();
+							me.frm.call({
+								method: 'make_production_orders',
+								args: {
+									items: data,
+									company: me.frm.doc.company,
+									sales_order: me.frm.docname,
+									project: me.frm.project
+								},
+								freeze: true,
+								callback: function(r) {
+									if(r.message) {
+										frappe.msgprint({
+											message: __('Production Orders Created: {0}',
+												[r.message.map(function(d) {
+													return repl('<a href="#Form/Production Order/%(name)s">%(name)s</a>', {name:d})
+												}).join(', ')]),
+											indicator: 'green'
+										})
+									}
+									d.hide();
+								}
+							});
+						},
+						primary_action_label: __('Make')
+					});
+					d.show();
+				}
+			}
+		});
+	},
+
 	order_type: function() {
 		this.frm.toggle_reqd("delivery_date", this.frm.doc.order_type == "Sales");
 	},
@@ -125,39 +228,40 @@
 	make_material_request: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.selling.doctype.sales_order.sales_order.make_material_request",
-			frm: cur_frm
+			frm: this.frm
 		})
 	},
 
 	make_delivery_note: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.selling.doctype.sales_order.sales_order.make_delivery_note",
-			frm: cur_frm
+			frm: this.frm
 		})
 	},
 
 	make_sales_invoice: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.selling.doctype.sales_order.sales_order.make_sales_invoice",
-			frm: cur_frm
+			frm: this.frm
 		})
 	},
 
 	make_maintenance_schedule: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_schedule",
-			frm: cur_frm
+			frm: this.frm
 		})
 	},
 
 	make_maintenance_visit: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_visit",
-			frm: cur_frm
+			frm: this.frm
 		})
 	},
 
 	make_purchase_order: function(){
+		var me = this;
 		var dialog = new frappe.ui.Dialog({
 			title: __("For Supplier"),
 			fields: [
@@ -165,7 +269,7 @@
 					"get_query": function () {
 						return {
 							query:"erpnext.selling.doctype.sales_order.sales_order.get_supplier",
-							filters: {'parent': cur_frm.doc.name}
+							filters: {'parent': me.frm.doc.name}
 						}
 					}, "reqd": 1 },
 				{"fieldtype": "Button", "label": __("Make Purchase Order"), "fieldname": "make_purchase_order", "cssClass": "btn-primary"},
@@ -180,7 +284,7 @@
 				type: "GET",
 				method: "erpnext.selling.doctype.sales_order.sales_order.make_purchase_order_for_drop_shipment",
 				args: {
-					"source_name": cur_frm.doc.name,
+					"source_name": me.frm.doc.name,
 					"for_supplier": args.supplier
 				},
 				freeze: true,
@@ -195,51 +299,25 @@
 		dialog.show();
 	},
 	close_sales_order: function(){
-		cur_frm.cscript.update_status("Close", "Closed")
+		this.frm.cscript.update_status("Close", "Closed")
+	},
+	update_status: function(label, status){
+		var doc = this.frm.doc;
+		frappe.ui.form.is_saving = true;
+		frappe.call({
+			method: "erpnext.selling.doctype.sales_order.sales_order.update_status",
+			args: {status: status, name: doc.name},
+			callback: function(r){
+				this.frm.reload_doc();
+			},
+			always: function() {
+				frappe.ui.form.is_saving = false;
+			}
+		});
+	},
+	on_submit: function(doc, cdt, cdn) {
+		if(cint(frappe.boot.notification_settings.sales_order)) {
+			this.frm.email_doc(frappe.boot.notification_settings.sales_order_message);
+		}
 	}
-
 });
-
-// for backward compatibility: combine new and previous states
-$.extend(cur_frm.cscript, new erpnext.selling.SalesOrderController({frm: cur_frm}));
-
-cur_frm.cscript.new_contact = function(){
-	tn = frappe.model.make_new_doc_and_get_name('Contact');
-	locals['Contact'][tn].is_customer = 1;
-	if(doc.customer) locals['Contact'][tn].customer = doc.customer;
-	frappe.set_route('Form', 'Contact', tn);
-}
-
-cur_frm.fields_dict['project'].get_query = function(doc, cdt, cdn) {
-	return {
-		query: "erpnext.controllers.queries.get_project_name",
-		filters: {
-			'customer': doc.customer
-		}
-	}
-}
-
-cur_frm.cscript.update_status = function(label, status){
-	var doc = cur_frm.doc;
-	frappe.ui.form.is_saving = true;
-	frappe.call({
-		method: "erpnext.selling.doctype.sales_order.sales_order.update_status",
-		args: {status: status, name: doc.name},
-		callback: function(r){
-			cur_frm.reload_doc();
-		},
-		always: function() {
-			frappe.ui.form.is_saving = false;
-		}
-	});
-}
-
-cur_frm.cscript['Unclose Sales Order'] = function() {
-	cur_frm.cscript.update_status('Re-open', 'Draft')
-}
-
-cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
-	if(cint(frappe.boot.notification_settings.sales_order)) {
-		cur_frm.email_doc(frappe.boot.notification_settings.sales_order_message);
-	}
-};
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index acae0e5..fdaadd8 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -304,6 +304,24 @@
 			self.indicator_color = "green"
 			self.indicator_title = _("Paid")
 
+	def get_production_order_items(self):
+		'''Returns items with BOM that already do not have a linked production order'''
+		items = []
+		for i in self.packed_items or self.items:
+			bom = frappe.get_all('BOM', dict(item=i.item_code, is_active=True),
+					order_by='is_default desc')
+			bom = bom[0].name if bom else None
+			items.append(dict(
+				item_code= i.item_code,
+				bom = bom,
+				warehouse = i.warehouse,
+				pending_qty= i.qty - flt(frappe.db.sql('''select sum(qty) from `tabProduction Order`
+					where production_item=%s and sales_order=%s''', (i.item_code, self.name))[0][0])
+			))
+
+		return items
+
+
 	def on_recurring(self, reference_doc):
 		mcount = month_map[reference_doc.recurring_type]
 		self.set("delivery_date", get_next_date(reference_doc.delivery_date, mcount,
@@ -442,7 +460,7 @@
 		target.amount = flt(source.amount) - flt(source.billed_amt)
 		target.base_amount = target.amount * flt(source_parent.conversion_rate)
 		target.qty = target.amount / flt(source.rate) if (source.rate and source.billed_amt) else source.qty
-		
+
 		item = frappe.db.get_value("Item", target.item_code, ["item_group", "selling_cost_center"], as_dict=1)
 		target.cost_center = frappe.db.get_value("Project", source_parent.project, "cost_center") \
 			or item.selling_cost_center \
@@ -653,6 +671,27 @@
 		})
 
 @frappe.whitelist()
+def make_production_orders(items, sales_order, company, project=None):
+	'''Make Production Orders against the given Sales Order for the given `items`'''
+	items = json.loads(items).get('items')
+	out = []
+
+	for i in items:
+		production_order = frappe.get_doc(dict(
+			doctype='Production Order',
+			production_item=i['item_code'],
+			bom_no=i['bom'],
+			qty=i['pending_qty'],
+			company=company,
+			sales_order=sales_order,
+			project=project,
+			fg_warehouse=i['warehouse']
+		)).insert()
+		out.append(production_order)
+
+	return [p.name for p in out]
+
+@frappe.whitelist()
 def update_status(status, name):
 	so = frappe.get_doc("Sales Order", name)
 	so.update_status(status)
diff --git a/erpnext/selling/page/sales_analytics/sales_analytics.js b/erpnext/selling/page/sales_analytics/sales_analytics.js
index 2f9b02c..73793d4 100644
--- a/erpnext/selling/page/sales_analytics/sales_analytics.js
+++ b/erpnext/selling/page/sales_analytics/sales_analytics.js
@@ -202,7 +202,9 @@
 				if (posting_date >= from_date && posting_date <= to_date) {
 					var item = me.item_by_name[tl[me.tree_grid.item_key]] ||
 						me.item_by_name['Not Set'];
-					item[me.column_map[tl.posting_date].field] += (is_val ? tl.base_net_amount : tl.qty);
+					if(item){
+						item[me.column_map[tl.posting_date].field] += (is_val ? tl.base_net_amount : tl.qty);
+					}
 				}
 			}
 		});
diff --git a/erpnext/selling/page/sales_funnel/sales_funnel.py b/erpnext/selling/page/sales_funnel/sales_funnel.py
index 4d12efd..3c4d528 100644
--- a/erpnext/selling/page/sales_funnel/sales_funnel.py
+++ b/erpnext/selling/page/sales_funnel/sales_funnel.py
@@ -12,9 +12,9 @@
 		where (date(`modified`) between %s and %s)
 		and status != "Do Not Contact" """, (from_date, to_date))[0][0]
 
-	active_leads += frappe.db.sql("""select count(distinct customer) from `tabContact`
-		where (date(`modified`) between %s and %s)
-		and status != "Passive" """, (from_date, to_date))[0][0]
+	active_leads += frappe.db.sql("""select count(distinct contact.name) from `tabContact` contact
+		left join `tabDynamic Link` dl on (dl.parent=contact.name) where dl.link_doctype='Customer' 
+		and (date(contact.modified) between %s and %s) and status != "Passive" """, (from_date, to_date))[0][0]
 
 	opportunities = frappe.db.sql("""select count(*) from `tabOpportunity`
 		where (date(`creation`) between %s and %s)
diff --git a/erpnext/selling/report/customer_addresses_and_contacts/__init__.py b/erpnext/selling/report/customer_addresses_and_contacts/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/selling/report/customer_addresses_and_contacts/__init__.py
+++ /dev/null
diff --git a/erpnext/selling/report/customer_addresses_and_contacts/customer_addresses_and_contacts.json b/erpnext/selling/report/customer_addresses_and_contacts/customer_addresses_and_contacts.json
deleted file mode 100644
index e0fba61..0000000
--- a/erpnext/selling/report/customer_addresses_and_contacts/customer_addresses_and_contacts.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "add_total_row": 0, 
- "apply_user_permissions": 1, 
- "creation": "2012-10-04 18:45:27", 
- "disabled": 0, 
- "docstatus": 0, 
- "doctype": "Report", 
- "idx": 1, 
- "is_standard": "Yes", 
- "modified": "2015-08-24 11:44:00.711112", 
- "modified_by": "Administrator", 
- "module": "Selling", 
- "name": "Customer Addresses And Contacts", 
- "owner": "Administrator", 
- "query": "SELECT\n\t`tabCustomer`.name as \"Customer ID:Link/Customer\",\n\t`tabCustomer`.customer_name as \"Customer Name\",\n\t`tabCustomer`.customer_group as \"Customer Group:Link/Customer Group\",\n\t`tabAddress`.address_line1 as \"Address Line 1\",\n\t`tabAddress`.address_line2 as \"Address Line 2\",\n\t`tabAddress`.city as \"City\",\n\t`tabAddress`.state as \"State\",\n\t`tabAddress`.pincode as \"Postal Code\",\n\t`tabAddress`.country as \"Country\",\n\t`tabAddress`.is_primary_address as \"Is Primary Address:Check\", \n\t`tabContact`.first_name as \"First Name\",\n\t`tabContact`.last_name as \"Last Name\",\n\t`tabContact`.phone as \"Phone\",\n\t`tabContact`.mobile_no as \"Mobile No\",\n\t`tabContact`.email_id as \"Email Id\",\n\t`tabContact`.is_primary_contact as \"Is Primary Contact:Check\"\nFROM\n\t`tabCustomer`\n\tleft join `tabAddress` on (\n\t\t`tabAddress`.customer=`tabCustomer`.name\n\t)\n\tleft join `tabContact` on (\n\t\t`tabContact`.customer=`tabCustomer`.name\n\t)\nWHERE\n\t`tabCustomer`.docstatus<2\nORDER BY\n\t`tabCustomer`.name asc", 
- "ref_doctype": "Customer", 
- "report_name": "Customer Addresses And Contacts", 
- "report_type": "Query Report"
-}
\ No newline at end of file
diff --git a/erpnext/selling/report/lead_details/lead_details.json b/erpnext/selling/report/lead_details/lead_details.json
index b5113d8..047b4b7 100644
--- a/erpnext/selling/report/lead_details/lead_details.json
+++ b/erpnext/selling/report/lead_details/lead_details.json
@@ -1,16 +1,18 @@
 {
+ "add_total_row": 0, 
  "apply_user_permissions": 1, 
  "creation": "2013-10-22 11:58:16", 
+ "disabled": 0, 
  "docstatus": 0, 
  "doctype": "Report", 
  "idx": 1, 
  "is_standard": "Yes", 
- "modified": "2015-02-02 11:39:57.231750", 
+ "modified": "2017-01-19 15:44:59.742195", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Lead Details", 
  "owner": "Administrator", 
- "query": "SELECT\n    `tabLead`.name as \"Lead Id:Link/Lead:120\",\n    `tabLead`.lead_name as \"Lead Name::120\",\n\t`tabLead`.company_name as \"Company Name::120\",\n\t`tabLead`.status as \"Status::120\",\n\tconcat_ws(', ', \n\t\ttrim(',' from `tabAddress`.address_line1), \n\t\ttrim(',' from tabAddress.address_line2)\n\t) as 'Address::180',\n\t`tabAddress`.state as \"State::100\",\n\t`tabAddress`.pincode as \"Pincode::70\",\n\t`tabAddress`.country as \"Country::100\",\n\t`tabLead`.phone as \"Phone::100\",\n\t`tabLead`.mobile_no as \"Mobile No::100\",\n\t`tabLead`.email_id as \"Email Id::120\",\n\t`tabLead`.lead_owner as \"Lead Owner::120\",\n\t`tabLead`.source as \"Source::120\",\n\t`tabLead`.territory as \"Territory::120\",\n    `tabLead`.owner as \"Owner:Link/User:120\"\nFROM\n\t`tabLead`\n\tleft join `tabAddress` on (\n\t\t`tabAddress`.lead=`tabLead`.name\n\t)\nWHERE\n\t`tabLead`.docstatus<2\nORDER BY\n\t`tabLead`.name asc", 
+ "query": "SELECT\n    `tabLead`.name as \"Lead Id:Link/Lead:120\",\n    `tabLead`.lead_name as \"Lead Name::120\",\n\t`tabLead`.company_name as \"Company Name::120\",\n\t`tabLead`.status as \"Status::120\",\n\tconcat_ws(', ', \n\t\ttrim(',' from `tabAddress`.address_line1), \n\t\ttrim(',' from tabAddress.address_line2)\n\t) as 'Address::180',\n\t`tabAddress`.state as \"State::100\",\n\t`tabAddress`.pincode as \"Pincode::70\",\n\t`tabAddress`.country as \"Country::100\",\n\t`tabLead`.phone as \"Phone::100\",\n\t`tabLead`.mobile_no as \"Mobile No::100\",\n\t`tabLead`.email_id as \"Email Id::120\",\n\t`tabLead`.lead_owner as \"Lead Owner::120\",\n\t`tabLead`.source as \"Source::120\",\n\t`tabLead`.territory as \"Territory::120\",\n    `tabLead`.owner as \"Owner:Link/User:120\"\nFROM\n\t`tabLead`\n\tleft join `tabDynamic Link` on (\n\t\t`tabDynamic Link`.link_name=`tabLead`.name\n\t)\n\tleft join `tabAddress` on (\n\t\t`tabAddress`.name=`tabDynamic Link`.parent\n\t)\nWHERE\n\t`tabLead`.docstatus<2\nORDER BY\n\t`tabLead`.name asc", 
  "ref_doctype": "Lead", 
  "report_name": "Lead Details", 
  "report_type": "Query Report"
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 7ddf45d..9d9511e 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -26,16 +26,17 @@
 
 		this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate");
 
-		$.each([["customer_address", "customer_filter"],
-			["shipping_address_name", "customer_filter"],
-			["contact_person", "customer_filter"],
-			["customer", "customer"],
+		$.each([["customer", "customer"],
 			["lead", "lead"]],
 			function(i, opts) {
 				if(me.frm.fields_dict[opts[0]])
 					me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
 			});
 
+		me.frm.set_query('contact_person', erpnext.queries.contact_query);
+		me.frm.set_query('customer_address', erpnext.queries.address_query);
+		me.frm.set_query('shipping_address_name', erpnext.queries.address_query);
+
 		if(this.frm.fields_dict.taxes_and_charges) {
 			this.frm.set_query("taxes_and_charges", function() {
 				return {
@@ -104,6 +105,9 @@
 
 	refresh: function() {
 		this._super();
+
+		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
+
 		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.packed_items) {
diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js
index f22e63e..5dd8ceb 100644
--- a/erpnext/setup/doctype/company/company.js
+++ b/erpnext/setup/doctype/company/company.js
@@ -4,6 +4,17 @@
 frappe.provide("erpnext.company");
 
 frappe.ui.form.on("Company", {
+	setup: function(frm) {
+		frm.fields_dict['default_payable_account'].get_query = function() {
+			return{
+				filters: {
+					"root_type": "Liability",
+					"account_type": "Payable"
+				}
+			}
+		}
+	},
+
 	onload: function(frm) {
 		erpnext.company.setup_queries(frm);
 	},
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 32ad8eb..93f02f8 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -153,6 +153,8 @@
 			self.db_set("default_income_account", frappe.db.get_value("Account",
 				{"account_name": _("Sales"), "company": self.name}))
 
+		if not self.default_payable_account:
+			self.db_set("default_payable_account", self.default_payable_account)
 
 	def _set_default_account(self, fieldname, account_type):
 		if self.get(fieldname):
diff --git a/erpnext/setup/doctype/company/delete_company_transactions.py b/erpnext/setup/doctype/company/delete_company_transactions.py
index eb5c043..eef8599 100644
--- a/erpnext/setup/doctype/company/delete_company_transactions.py
+++ b/erpnext/setup/doctype/company/delete_company_transactions.py
@@ -73,11 +73,23 @@
 
 def delete_lead_addresses(company_name):
 	"""Delete addresses to which leads are linked"""
-	for lead in frappe.get_all("Lead", filters={"company": company_name}):
-		frappe.db.sql("""delete from `tabAddress`
-			where lead=%s and (customer='' or customer is null) and (supplier='' or supplier is null)""", lead.name)
+	leads = frappe.get_all("Lead", filters={"company": company_name})
+	leads = [ "'%s'"%row.get("name") for row in leads ]
+	addresses = []
+	if leads:
+		addresses = frappe.db.sql_list("""select parent from `tabDynamic Link` where link_name 
+			in ({leads})""".format(leads=",".join(leads)), debug=True)
+		addresses = ["'%s'"%addr for addr in addresses]
 
-		frappe.db.sql("""update `tabAddress` set lead=null, lead_name=null where lead=%s""", lead.name)
+		frappe.db.sql("""delete from tabAddress where name in ({addresses}) and 
+			name not in (select distinct dl1.parent from `tabDynamic Link` dl1 
+			inner join `tabDynamic Link` dl2 on dl1.parent=dl2.parent 
+			and dl1.link_doctype<>dl2.link_doctype)""".format(addresses=",".join(addresses)), debug=True)
+
+		frappe.db.sql("""delete from `tabDynamic Link` where link_doctype='Lead' and parenttype='Address' 
+			and link_name in ({leads})""".format(leads=",".join(leads)), debug=True)
+
+		frappe.db.sql("""update tabCustomer set lead_name=NULL where lead_name in ({leads})""".format(leads=",".join(leads)), debug=True)
 
 def delete_communications(doctype, company_name, company_fieldname):
 		frappe.db.sql("""
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index dfe3ec0..a9832de 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -8,17 +8,19 @@
 from frappe import msgprint, throw, _
 
 from frappe.model.document import Document
+from frappe.permissions import get_doctypes_with_read
 
 class NamingSeriesNotSetError(frappe.ValidationError): pass
 
 class NamingSeries(Document):
 	def get_transactions(self, arg=None):
 		doctypes = list(set(frappe.db.sql_list("""select parent
-				from `tabDocField` df where fieldname='naming_series' and 
-				exists(select * from `tabDocPerm` dp, `tabRole` role where dp.role = role.name and dp.parent = df.parent and not role.disabled)""")
+				from `tabDocField` df where fieldname='naming_series'""")
 			+ frappe.db.sql_list("""select dt from `tabCustom Field`
 				where fieldname='naming_series'""")))
 
+		doctypes = list(set(get_doctypes_with_read()) | set(doctypes))
+
 		prefixes = ""
 		for d in doctypes:
 			options = ""
@@ -128,7 +130,8 @@
 			throw(_('Special Characters except "-", "#", "." and "/" not allowed in naming series'))
 
 	def get_options(self, arg=None):
-		return frappe.get_meta(arg or self.select_doc_for_series).get_field("naming_series").options
+		if frappe.get_meta(arg or self.select_doc_for_series).get_field("naming_series"):
+			return frappe.get_meta(arg or self.select_doc_for_series).get_field("naming_series").options
 
 	def get_current(self, arg=None):
 		"""get series current"""
diff --git a/erpnext/fleet_management/doctype/__init__.py b/erpnext/setup/doctype/party_type/__init__.py
similarity index 100%
copy from erpnext/fleet_management/doctype/__init__.py
copy to erpnext/setup/doctype/party_type/__init__.py
diff --git a/erpnext/setup/doctype/party_type/party_type.js b/erpnext/setup/doctype/party_type/party_type.js
new file mode 100644
index 0000000..7a96dc5
--- /dev/null
+++ b/erpnext/setup/doctype/party_type/party_type.js
@@ -0,0 +1,15 @@
+// Copyright (c) 2016, Frappe Technologies and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Party Type', {
+	setup: function(frm) {
+		frm.fields_dict["party_type"].get_query = function(frm) {
+			return {
+				filters: {
+					"istable": 0,
+					"is_submittable": 0
+				}
+			}
+		}
+	}
+});
diff --git a/erpnext/setup/doctype/party_type/party_type.json b/erpnext/setup/doctype/party_type/party_type.json
new file mode 100644
index 0000000..f49e7b3
--- /dev/null
+++ b/erpnext/setup/doctype/party_type/party_type.json
@@ -0,0 +1,130 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "autoname": "field:party_type", 
+ "beta": 0, 
+ "creation": "2016-12-26 11:26:51.508286", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "editable_grid": 1, 
+ "engine": "InnoDB", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "party_type", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "in_standard_filter": 0, 
+   "label": "Party Type", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "DocType", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2017-01-19 17:55:33.428335", 
+ "modified_by": "Administrator", 
+ "module": "Setup", 
+ "name": "Party Type", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "System Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Accounts User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Accounts Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_changes": 1, 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/party_type/party_type.py b/erpnext/setup/doctype/party_type/party_type.py
new file mode 100644
index 0000000..74db037
--- /dev/null
+++ b/erpnext/setup/doctype/party_type/party_type.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class PartyType(Document):
+	pass
+
+@frappe.whitelist()
+def get_party_type(doctype, txt, searchfield, start, page_len, filters):
+	return frappe.db.sql("""select name from `tabParty Type`
+			where `{key}` LIKE %(txt)s
+			order by name limit %(start)s, %(page_len)s"""
+			.format(key=searchfield), {
+				'txt': "%%%s%%" % frappe.db.escape(txt),
+				'start': start, 'page_len': page_len
+			})
diff --git a/erpnext/schools/doctype/assessment/test_assessment.py b/erpnext/setup/doctype/party_type/test_party_type.py
similarity index 65%
rename from erpnext/schools/doctype/assessment/test_assessment.py
rename to erpnext/setup/doctype/party_type/test_party_type.py
index ce06007..079fe2f 100644
--- a/erpnext/schools/doctype/assessment/test_assessment.py
+++ b/erpnext/setup/doctype/party_type/test_party_type.py
@@ -6,7 +6,7 @@
 import frappe
 import unittest
 
-# test_records = frappe.get_test_records('Assessment')
+# test_records = frappe.get_test_records('Party Type')
 
-class TestAssessment(unittest.TestCase):
+class TestPartyType(unittest.TestCase):
 	pass
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.js b/erpnext/setup/doctype/sales_partner/sales_partner.js
index 143bf44..84cf749 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.js
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.js
@@ -1,14 +1,17 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-cur_frm.cscript.refresh = function(doc,dt,dn){
+frappe.ui.form.on('Sales Partner', {
+	refresh: function(frm) {
+		frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Sales Person'}
 
-	if(doc.__islocal){
-		hide_field(['address_html', 'contact_html']);
-		erpnext.utils.clear_address_and_contact(cur_frm);
+		if(frm.doc.__islocal){
+			hide_field(['address_html', 'contact_html', 'address_contacts']);
+			frappe.geo.clear_address_and_contact(frm);
+		}
+		else{
+			unhide_field(['address_html', 'contact_html', 'address_contacts']);
+			frappe.geo.render_address_and_contact(frm);
+		}
 	}
-	else{
-		unhide_field(['address_html', 'contact_html']);
-		erpnext.utils.render_address_and_contact(cur_frm);
-	}
-}
+});
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.py b/erpnext/setup/doctype/sales_partner/sales_partner.py
index 5a2aa49..96211af 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.py
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.py
@@ -5,7 +5,7 @@
 import frappe
 from frappe.utils import cstr, filter_strip_join
 from frappe.website.website_generator import WebsiteGenerator
-from erpnext.utilities.address_and_contact import load_address_and_contact
+from frappe.geo.address_and_contact import load_address_and_contact
 
 class SalesPartner(WebsiteGenerator):
 	website = frappe._dict(
@@ -28,15 +28,6 @@
 		if self.partner_website and not self.partner_website.startswith("http"):
 			self.partner_website = "http://" + self.partner_website
 
-	def get_contacts(self, nm):
-		if nm:
-			return frappe.db.convert_to_lists(frappe.db.sql("""
-				select name, CONCAT(IFNULL(first_name,''),
-					' ',IFNULL(last_name,'')),contact_no,email_id
-				from `tabContact` where sales_partner = %s""", nm))
-		else:
-			return ''
-
 	def get_context(self, context):
 		address = frappe.db.get_value("Address",
 			{"sales_partner": self.name, "is_primary_address": 1},
diff --git a/erpnext/setup/doctype/sms_settings/sms_settings.py b/erpnext/setup/doctype/sms_settings/sms_settings.py
index ddfc045..2888942 100644
--- a/erpnext/setup/doctype/sms_settings/sms_settings.py
+++ b/erpnext/setup/doctype/sms_settings/sms_settings.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
 
@@ -46,7 +47,7 @@
 	return number and (number[0][0] or number[0][1]) or ''
 
 @frappe.whitelist()
-def send_sms(receiver_list, msg, sender_name = ''):
+def send_sms(receiver_list, msg, sender_name = '', success_msg = True):
 
 	import json
 	if isinstance(receiver_list, basestring):
@@ -58,8 +59,9 @@
 
 	arg = {
 		'receiver_list' : receiver_list,
-		'message'		: msg,
-		'sender_name'	: sender_name or get_sender_name()
+		'message'		: unicode(msg).encode('utf-8'),
+		'sender_name'	: sender_name or get_sender_name(),
+		'success_msg'	: success_msg
 	}
 
 	if frappe.db.get_value('SMS Settings', None, 'sms_gateway_url'):
@@ -77,13 +79,15 @@
 	for d in arg.get('receiver_list'):
 		args[ss.receiver_parameter] = d
 		status = send_request(ss.sms_gateway_url, args)
-		if status >= 200 and status < 300:
+
+		if 200 <= status < 300:
 			success_list.append(d)
 
 	if len(success_list) > 0:
 		args.update(arg)
 		create_sms_log(args, success_list)
-		frappe.msgprint(_("SMS sent to following numbers: {0}").format("\n" + "\n".join(success_list)))
+		if arg.get('success_msg'):
+			frappe.msgprint(_("SMS sent to following numbers: {0}").format("\n" + "\n".join(success_list)))
 
 
 def send_request(gateway_url, params):
@@ -99,7 +103,7 @@
 	sl = frappe.new_doc('SMS Log')
 	sl.sender_name = args['sender_name']
 	sl.sent_on = nowdate()
-	sl.message = args['message']
+	sl.message = args['message'].decode('utf-8')
 	sl.no_of_requested_sms = len(args['receiver_list'])
 	sl.requested_numbers = "\n".join(args['receiver_list'])
 	sl.no_of_sent_sms = len(sent_to)
diff --git a/erpnext/setup/setup_wizard/install_fixtures.py b/erpnext/setup/setup_wizard/install_fixtures.py
index 1589b3b..5e08203 100644
--- a/erpnext/setup/setup_wizard/install_fixtures.py
+++ b/erpnext/setup/setup_wizard/install_fixtures.py
@@ -171,6 +171,10 @@
 		{'doctype': "Email Account", "email_id": "support@example.com", "append_to": "Issue"},
 		{'doctype': "Email Account", "email_id": "jobs@example.com", "append_to": "Job Applicant"},
 
+		{'doctype': "Party Type", "party_type": "Customer"},
+		{'doctype': "Party Type", "party_type": "Supplier"},
+		{'doctype': "Party Type", "party_type": "Employee"},
+
 		{"doctype": "Offer Term", "offer_term": _("Date of Joining")},
 		{"doctype": "Offer Term", "offer_term": _("Annual Salary")},
 		{"doctype": "Offer Term", "offer_term": _("Probationary Period")},
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 395ea51..664c089 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -407,7 +407,7 @@
 
 				if args.get("customer_contact_" + str(i)):
 					create_contact(args.get("customer_contact_" + str(i)),
-						"customer", doc.name)
+						"Customer", doc.name)
 			except frappe.NameError:
 				pass
 
@@ -425,7 +425,7 @@
 
 				if args.get("supplier_contact_" + str(i)):
 					create_contact(args.get("supplier_contact_" + str(i)),
-						"supplier", doc.name)
+						"Supplier", doc.name)
 			except frappe.NameError:
 				pass
 
@@ -433,12 +433,13 @@
 	"""Create contact based on given contact name"""
 	contact = contact.strip().split(" ")
 
-	frappe.get_doc({
+	contact = frappe.get_doc({
 		"doctype":"Contact",
-		party_type: party,
 		"first_name":contact[0],
 		"last_name": len(contact) > 1 and contact[1] or ""
-	}).insert()
+	})
+	contact.append('links', dict(link_doctype=party_type, link_name=party))
+	contact.insert()
 
 def create_letter_head(args):
 	if args.get("attach_letterhead"):
diff --git a/erpnext/setup/setup_wizard/test_setup_data.py b/erpnext/setup/setup_wizard/test_setup_data.py
index de54a1d..25378f4 100644
--- a/erpnext/setup/setup_wizard/test_setup_data.py
+++ b/erpnext/setup/setup_wizard/test_setup_data.py
@@ -13,7 +13,7 @@
 "customer_2": "Mahesh Engg",
 "customer_contact_1": "Aditya Duggal",
 "customer_contact_2": "Mahesh Malani",
-"first_name": "Rushabh",
+"full_name": "Rushabh Mehta",
 "fy_start": "1st Apr",
 "item_1": "Enterprise Plan",
 "item_2": "Small Business",
@@ -42,7 +42,6 @@
 "item_uom_3": "Unit",
 "item_uom_4": "Unit",
 "item_uom_5": "Unit",
-"last_name": "Mehta",
 "supplier_1": "Google",
 "supplier_2": "Hetzner",
 "supplier_3": "Digital Ocean",
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index 0c214e4..cb63837 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -6,7 +6,7 @@
 from frappe import _, throw
 from frappe.utils import flt
 from frappe.utils import get_datetime_str, nowdate
-	
+
 def get_company_currency(company):
 	currency = frappe.db.get_value("Company", company, "default_currency", cache=True)
 	if not currency:
@@ -37,8 +37,7 @@
 	if not frappe.get_list("Company"):
 		setup_complete({
 			"currency"			:"USD",
-			"first_name"		:"Test",
-			"last_name"			:"User",
+			"full_name"			:"Test User",
 			"company_name"		:"Wind Power LLC",
 			"timezone"			:"America/New_York",
 			"company_abbr"		:"WP",
@@ -52,7 +51,7 @@
 			"password"			:"test",
 			"chart_of_accounts" : "Standard",
 			"domain"			: "Manufacturing",
-			
+
 		})
 
 	frappe.db.sql("delete from `tabLeave Allocation`")
@@ -71,18 +70,18 @@
 	if not (from_currency and to_currency):
 		# manqala 19/09/2016: Should this be an empty return or should it throw and exception?
 		return
-	
+
 	if from_currency == to_currency:
 		return 1
-	
+
 	# cksgb 19/09/2016: get last entry in Currency Exchange with from_currency and to_currency.
-	entries = frappe.get_all("Currency Exchange", fields = ["exchange_rate"], 
+	entries = frappe.get_all("Currency Exchange", fields = ["exchange_rate"],
 		filters=[
-			["date", "<=", get_datetime_str(transaction_date)], 
-			["from_currency", "=", from_currency], 
+			["date", "<=", get_datetime_str(transaction_date)],
+			["from_currency", "=", from_currency],
 			["to_currency", "=", to_currency]
 		], order_by="date desc", limit=1)
-	
+
 	if entries:
 		return flt(entries[0].exchange_rate)
 
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index d5cde4a..b427b94 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -6,7 +6,7 @@
 from frappe import throw, _
 import frappe.defaults
 from frappe.utils import cint, flt, get_fullname, cstr
-from erpnext.utilities.doctype.address.address import get_address_display
+from frappe.geo.doctype.address.address import get_address_display
 from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings import get_shopping_cart_settings
 from frappe.utils.nestedset import get_root_of
 from erpnext.accounts.utils import get_account_name
@@ -160,6 +160,7 @@
 	return doc
 
 def _get_cart_quotation(party=None):
+	'''Return the open Quotation of type "Shopping Cart" or make a new one'''
 	if not party:
 		party = get_party()
 
@@ -182,8 +183,7 @@
 			(party.doctype.lower()): party.name
 		})
 
-		qdoc.contact_person = frappe.db.get_value("Contact", {"email_id": frappe.session.user,
-			"customer": party.name})
+		qdoc.contact_person = frappe.db.get_value("Contact", {"email_id": frappe.session.user})
 		qdoc.contact_email = frappe.session.user
 
 		qdoc.flags.ignore_permissions = True
@@ -198,8 +198,7 @@
 	party.customer_name = company_name or fullname
 	party.customer_type == "Company" if company_name else "Individual"
 
-	contact_name = frappe.db.get_value("Contact", {"email_id": frappe.session.user,
-		"customer": party.name})
+	contact_name = frappe.db.get_value("Contact", {"email_id": frappe.session.user})
 	contact = frappe.get_doc("Contact", contact_name)
 	contact.first_name = fullname
 	contact.last_name = None
@@ -291,10 +290,14 @@
 	if not user:
 		user = frappe.session.user
 
-	party = frappe.db.get_value("Contact", {"email_id": user}, ["customer", "supplier"], as_dict=1)
-	if party:
-		party_doctype = 'Customer' if party.customer else 'Supplier'
-		party = party.customer or party.supplier
+	contact_name = frappe.db.get_value("Contact", {"email_id": user})
+	party = None
+
+	if contact_name:
+		contact = frappe.get_doc('Contact', contact_name)
+		if contact.links:
+			party_doctype = contact.links[0].link_doctype
+			party = contact.links[0].link_name
 
 	cart_settings = frappe.get_doc("Shopping Cart Settings")
 
@@ -331,10 +334,10 @@
 
 		contact = frappe.new_doc("Contact")
 		contact.update({
-			"customer": customer.name,
 			"first_name": fullname,
 			"email_id": user
 		})
+		contact.append('links', dict(link_doctype='Customer', link_name=customer.name))
 		contact.flags.ignore_mandatory = True
 		contact.insert(ignore_permissions=True)
 
@@ -366,33 +369,25 @@
 		return debtors_account_name
 
 
-def get_address_docs(doctype=None, txt=None, filters=None, limit_start=0, limit_page_length=20, party=None):
+def get_address_docs(doctype=None, txt=None, filters=None, limit_start=0, limit_page_length=20,
+	party=None):
 	if not party:
 		party = get_party()
 
 	if not party:
 		return []
 
-	address_docs = frappe.db.sql("""select * from `tabAddress`
-		where `{0}`=%s order by name limit {1}, {2}""".format(party.doctype.lower(),
-			limit_start, limit_page_length), party.name,
-		as_dict=True, update={"doctype": "Address"})
+	address_names = frappe.db.get_all('Dynamic Link', fields=('parent'),
+		filters=dict(parenttype='Address', link_doctype=party.doctype, link_name=party.name))
 
-	for address in address_docs:
-		address.display = get_address_display(address)
+	out = []
 
-	return address_docs
+	for a in address_names:
+		address = frappe.get_doc('Address', a.parent)
+		address.display = get_address_display(address.as_dict())
+		out.append(address)
 
-def set_customer_in_address(doc, method=None):
-	if doc.flags.linked:
-		return
-
-	doc.check_if_linked()
-
-	if not doc.flags.linked and (frappe.db.get_value("User", frappe.session.user, "user_type") == "Website User"):
-		# creates a customer if one does not exist
-		get_party()
-		doc.link_address()
+	return out
 
 @frappe.whitelist()
 def apply_shipping_rule(shipping_rule):
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
index b04b427..75880ad 100644
--- a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
@@ -23,6 +23,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Enable Shopping Cart", 
    "length": 0, 
    "no_copy": 0, 
@@ -49,6 +50,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -74,6 +76,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Company", 
    "length": 0, 
    "no_copy": 0, 
@@ -94,6 +97,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "description": "Prices will not be shown if Price List is not set", 
    "fieldname": "price_list", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -101,6 +105,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Price List", 
    "length": 0, 
    "no_copy": 0, 
@@ -112,7 +117,7 @@
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 1, 
+   "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
@@ -129,6 +134,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -155,6 +161,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Default Customer Group", 
    "length": 0, 
    "no_copy": 0, 
@@ -182,6 +189,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Quotation Series", 
    "length": 0, 
    "no_copy": 0, 
@@ -209,6 +217,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Checkout Settings", 
    "length": 0, 
    "no_copy": 0, 
@@ -236,6 +245,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Enable Checkout", 
    "length": 0, 
    "no_copy": 0, 
@@ -265,6 +275,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Payment Success Url", 
    "length": 0, 
    "no_copy": 0, 
@@ -293,6 +304,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -319,6 +331,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Payment Gateway Account", 
    "length": 0, 
    "no_copy": 0, 
@@ -347,7 +360,7 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-03 16:10:33.956822", 
+ "modified": "2017-01-17 05:30:29.333104", 
  "modified_by": "Administrator", 
  "module": "Shopping Cart", 
  "name": "Shopping Cart Settings", 
@@ -379,5 +392,6 @@
  "read_only": 0, 
  "read_only_onload": 0, 
  "sort_order": "ASC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/shopping_cart/test_shopping_cart.py b/erpnext/shopping_cart/test_shopping_cart.py
index 5282231..f221a8a 100644
--- a/erpnext/shopping_cart/test_shopping_cart.py
+++ b/erpnext/shopping_cart/test_shopping_cart.py
@@ -5,6 +5,7 @@
 import unittest
 import frappe
 from erpnext.shopping_cart.cart import _get_cart_quotation, update_cart, get_party
+from erpnext.tests.utils import create_test_contact_and_address
 
 class TestShoppingCart(unittest.TestCase):
 	"""
@@ -13,6 +14,7 @@
 	"""
 	def setUp(self):
 		frappe.set_user("Administrator")
+		create_test_contact_and_address()
 		self.enable_shopping_cart()
 
 	def tearDown(self):
@@ -25,8 +27,8 @@
 		# test if lead is created and quotation with new lead is fetched
 		quotation = _get_cart_quotation()
 		self.assertEquals(quotation.quotation_to, "Customer")
-		self.assertEquals(frappe.db.get_value("Contact", {"customer": quotation.customer}, "email_id"),
-			"test_cart_user@example.com")
+		self.assertEquals(quotation.contact_person,
+			frappe.db.get_value("Contact", dict(email_id="test_cart_user@example.com")))
 		self.assertEquals(quotation.lead, None)
 		self.assertEquals(quotation.contact_email, frappe.session.user)
 
@@ -101,7 +103,7 @@
 		quotation = self.create_quotation()
 
 		from erpnext.accounts.party import set_taxes
-		
+
 		tax_rule_master = set_taxes(quotation.customer, "Customer", \
 			quotation.transaction_date, quotation.company, None, None, \
 			quotation.customer_address, quotation.shipping_address_name, 1)
diff --git a/erpnext/shopping_cart/utils.py b/erpnext/shopping_cart/utils.py
index 50ce5cf..3241234 100644
--- a/erpnext/shopping_cart/utils.py
+++ b/erpnext/shopping_cart/utils.py
@@ -31,12 +31,11 @@
 
 def check_customer_or_supplier():
 	if frappe.session.user:
-		contacts = frappe.get_all("Contact", fields=["customer", "supplier", "email_id"],
-			filters={"email_id": frappe.session.user})
+		contact_name = frappe.get_value("Contact", {"email_id": frappe.session.user})
+		if contact_name:
+			contact = frappe.get_doc('Contact', contact_name)
+			for link in contact.links:
+				if link.link_doctype in ('Customer', 'Supplier'):
+					return link.link_doctype, link.link_name
 
-		customer = [d.customer for d in contacts if d.customer] or None
-		supplier = [d.supplier for d in contacts if d.supplier] or None
-
-		if customer: return 'Customer', customer
-		if supplier : return 'Supplier', supplier
 		return 'Customer', None
\ No newline at end of file
diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py
index 97ef329..6e71769 100644
--- a/erpnext/startup/boot.py
+++ b/erpnext/startup/boot.py
@@ -13,8 +13,6 @@
 	bootinfo.website_settings = frappe.get_doc('Website Settings')
 
 	if frappe.session['user']!='Guest':
-		bootinfo.letter_heads = get_letter_heads()
-
 		update_page_info(bootinfo)
 
 		load_country_and_currency(bootinfo)
@@ -42,12 +40,6 @@
 		number_format, smallest_currency_fraction_value, symbol from tabCurrency
 		where enabled=1""", as_dict=1, update={"doctype":":Currency"})
 
-def get_letter_heads():
-	import frappe
-	ret = frappe.db.sql("""select name, content from `tabLetter Head`
-		where disabled=0""")
-	return dict(ret)
-
 def update_page_info(bootinfo):
 	bootinfo.page_info.update({
 		"Chart of Accounts": {
diff --git a/erpnext/startup/notifications.py b/erpnext/startup/notifications.py
index a1b90f9..554243f 100644
--- a/erpnext/startup/notifications.py
+++ b/erpnext/startup/notifications.py
@@ -11,8 +11,6 @@
 			"Task": {"status": "Overdue"},
 			"Project": {"status": "Open"},
 			"Item": {"total_projected_qty": ("<", 0)},
-			"Customer": {"status": "Open"},
-			"Supplier": {"status": "Open"},
 			"Lead": {"status": "Open"},
 			"Contact": {"status": "Open"},
 			"Opportunity": {"status": "Open"},
@@ -23,11 +21,11 @@
 			},
 			"Journal Entry": {"docstatus": 0},
 			"Sales Invoice": {
-				"outstanding_amount": (">", 0), 
-				"docstatus": ("<", 2) 
+				"outstanding_amount": (">", 0),
+				"docstatus": ("<", 2)
 			},
 			"Purchase Invoice": {
-				"outstanding_amount": (">", 0), 
+				"outstanding_amount": (">", 0),
 				"docstatus": ("<", 2)
 			},
 			"Payment Entry": {"docstatus": 0},
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 204e98a..8f87198 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -137,13 +137,6 @@
 // for backward compatibility: combine new and previous states
 $.extend(cur_frm.cscript, new erpnext.stock.DeliveryNoteController({frm: cur_frm}));
 
-cur_frm.cscript.new_contact = function(){
-	tn = frappe.model.make_new_doc_and_get_name('Contact');
-	locals['Contact'][tn].is_customer = 1;
-	if(doc.customer) locals['Contact'][tn].customer = doc.customer;
-	frappe.set_route('Form', 'Contact', tn);
-}
-
 
 cur_frm.cscript.update_status = function(status) {
 	frappe.ui.form.is_saving = true;
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 1f793d1..03c23d2 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -88,13 +88,13 @@
 	image: function(frm) {
 		refresh_field("image_view");
 	},
-	
+
 	is_fixed_asset: function(frm) {
 		if (frm.doc.is_fixed_asset) {
 			frm.set_value("is_stock_item", 0);
 		}
 	},
-	
+
 	page_name: frappe.utils.warn_page_name_change,
 
 	item_code: function(frm) {
@@ -113,6 +113,12 @@
 
 	has_variants: function(frm) {
 		erpnext.item.toggle_attributes(frm);
+	},
+
+	show_in_website: function(frm) {
+		if (frm.doc.default_warehouse && !frm.doc.website_warehouse){
+			frm.set_value("website_warehouse", frm.doc.default_warehouse);
+		}
 	}
 });
 
@@ -191,15 +197,15 @@
 
 		frm.fields_dict.reorder_levels.grid.get_field("warehouse").get_query = function(doc, cdt, cdn) {
 			var d = locals[cdt][cdn];
-			
+
 			var filters = {
 				"is_group": 0
 			}
-			
+
 			if (d.parent_warehouse) {
 				filters.extend({"parent_warehouse": d.warehouse_group})
 			}
-			
+
 			return {
 				filters: filters
 			}
@@ -212,7 +218,7 @@
 			return;
 
 		frappe.require('assets/js/item-dashboard.min.js', function() {
-			var section = frm.dashboard.add_section('<h5 style="margin-top: 0px;"><a href="#stock-balance">Stock Levels</a></h5>');
+			var section = frm.dashboard.add_section('<h5 style="margin-top: 0px;"><a href="#stock-balance">' + __("Stock Levels") + '</a></h5>');
 			erpnext.item.item_dashboard = new erpnext.stock.ItemDashboard({
 				parent: section,
 				item_code: frm.doc.name
@@ -313,39 +319,38 @@
 
 			$(field.input_area).addClass("ui-front");
 
-			field.$input.autocomplete({
-				minLength: 0,
+			var input = field.$input.get(0);
+			input.awesomplete = new Awesomplete(input, {
 				minChars: 0,
-				autoFocus: true,
-				source: function(request, response) {
+				maxItems: 99,
+				autoFirst: true,
+				list: [],
+			});
+			input.field = field;
+
+			field.$input
+				.on('input', function(e) {
+					var term = e.target.value;
 					frappe.call({
 						method:"frappe.client.get_list",
 						args:{
 							doctype:"Item Attribute Value",
 							filters: [
 								["parent","=", i],
-								["attribute_value", "like", request.term + "%"]
+								["attribute_value", "like", term + "%"]
 							],
 							fields: ["attribute_value"]
 						},
 						callback: function(r) {
 							if (r.message) {
-								response($.map(r.message, function(d) { return d.attribute_value; }));
+								e.target.awesomplete.list = r.message.map(function(d) { return d.attribute_value; });
 							}
 						}
 					});
-				},
-				select: function(event, ui) {
-					field.$input.val(ui.item.value);
-					field.$input.trigger("change");
-				},
-			}).on("focus", function(){
-				setTimeout(function() {
-					if(!field.$input.val()) {
-						field.$input.autocomplete("search", "");
-					}
-				}, 500);
-			});
+				})
+				.on('focus', function(e) {
+					$(e.target).val('').trigger('input');
+				})
 		});
 	},
 	toggle_attributes: function(frm) {
diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json
index 6dfe76e..6de497f 100644
--- a/erpnext/stock/doctype/item/item.json
+++ b/erpnext/stock/doctype/item/item.json
@@ -25,6 +25,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "", 
@@ -54,6 +55,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Series", 
@@ -83,6 +85,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Item Code", 
@@ -114,6 +117,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 1, 
    "label": "Variant Of", 
@@ -142,7 +146,8 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
+   "in_global_search": 1, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Item Name", 
@@ -172,6 +177,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Barcode", 
@@ -199,7 +205,8 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 1, 
    "label": "Item Group", 
@@ -231,6 +238,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Unit of Measure", 
@@ -261,6 +269,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -287,6 +296,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Disabled", 
@@ -317,6 +327,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Maintain Stock", 
@@ -348,6 +359,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Opening Stock", 
@@ -377,6 +389,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Valuation Rate", 
@@ -405,6 +418,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Standard Selling Rate", 
@@ -433,6 +447,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Fixed Asset", 
@@ -462,6 +477,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Asset Category", 
@@ -491,6 +507,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Image", 
@@ -520,6 +537,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Description", 
@@ -548,6 +566,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Brand", 
@@ -578,6 +597,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Description", 
@@ -609,6 +629,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Inventory", 
@@ -640,6 +661,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Warehouse", 
@@ -672,6 +694,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "End of Life", 
@@ -703,6 +726,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Has Batch No", 
@@ -735,7 +759,8 @@
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Has Serial No", 
@@ -768,6 +793,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Serial Number Series", 
@@ -796,6 +822,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Material Request Type", 
@@ -826,6 +853,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -856,6 +884,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Allow over delivery or receipt upto this percent", 
@@ -886,6 +915,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Valuation Method", 
@@ -915,6 +945,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Warranty Period (in days)", 
@@ -946,6 +977,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Net Weight", 
@@ -974,6 +1006,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Weight UOM", 
@@ -1004,6 +1037,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Auto re-order", 
@@ -1034,6 +1068,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Reorder level based on Warehouse", 
@@ -1055,6 +1090,69 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 1, 
+   "columns": 0, 
+   "depends_on": "", 
+   "fieldname": "unit_of_measure_conversion", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Units of Measure", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "depends_on": "", 
+   "description": "Will also apply for variants", 
+   "fieldname": "uoms", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "UOMs", 
+   "length": 0, 
+   "no_copy": 1, 
+   "oldfieldname": "uom_conversion_details", 
+   "oldfieldtype": "Table", 
+   "options": "UOM Conversion Detail", 
+   "permlevel": 0, 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 1, 
    "collapsible_depends_on": "attributes", 
    "columns": 0, 
    "depends_on": "", 
@@ -1064,6 +1162,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Variants", 
@@ -1095,6 +1194,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Has Variants", 
@@ -1125,6 +1225,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Attributes", 
@@ -1154,6 +1255,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Purchase Details", 
@@ -1184,6 +1286,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Purchase Item", 
@@ -1215,6 +1318,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Minimum Order Qty", 
@@ -1244,6 +1348,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Safety Stock", 
@@ -1274,6 +1379,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Lead Time in days", 
@@ -1305,6 +1411,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Buying Cost Center", 
@@ -1337,6 +1444,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Expense Account", 
@@ -1362,73 +1470,13 @@
    "collapsible": 0, 
    "columns": 0, 
    "depends_on": "", 
-   "fieldname": "unit_of_measure_conversion", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Unit of Measure Conversion", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
-   "description": "Will also apply for variants", 
-   "fieldname": "uoms", 
-   "fieldtype": "Table", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "UOMs", 
-   "length": 0, 
-   "no_copy": 1, 
-   "oldfieldname": "uom_conversion_details", 
-   "oldfieldtype": "Table", 
-   "options": "UOM Conversion Detail", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
    "fieldname": "last_purchase_rate", 
    "fieldtype": "Float", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Last Purchase Rate", 
@@ -1459,6 +1507,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Supplier Details", 
@@ -1488,6 +1537,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Supplier", 
@@ -1516,6 +1566,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Delivered by Supplier (Drop Ship)", 
@@ -1545,6 +1596,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Manufacturer", 
@@ -1574,6 +1626,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Manufacturer Part Number", 
@@ -1602,6 +1655,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Item Code for Suppliers", 
@@ -1632,6 +1686,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Supplier Items", 
@@ -1660,6 +1715,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Sales Details", 
@@ -1690,6 +1746,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Is Sales Item", 
@@ -1720,6 +1777,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Publish in Hub", 
@@ -1749,6 +1807,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Synced With Hub", 
@@ -1778,6 +1837,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Income Account", 
@@ -1807,6 +1867,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default Selling Cost Center", 
@@ -1836,6 +1897,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Customer Item Codes", 
@@ -1867,6 +1929,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Customer Items", 
@@ -1896,6 +1959,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Max Discount (%)", 
@@ -1925,6 +1989,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Item Tax", 
@@ -1955,6 +2020,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Taxes", 
@@ -1985,6 +2051,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Inspection Criteria", 
@@ -2015,6 +2082,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Inspection Required before Purchase", 
@@ -2045,6 +2113,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Inspection Required before Delivery", 
@@ -2075,6 +2144,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Quality Parameters", 
@@ -2106,6 +2176,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Manufacturing", 
@@ -2136,6 +2207,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Default BOM", 
@@ -2168,6 +2240,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Supply Raw Materials for Purchase", 
@@ -2198,6 +2271,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2224,7 +2298,8 @@
    "hidden": 1, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
-   "in_filter": 1, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Customer Code", 
@@ -2252,6 +2327,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Website", 
@@ -2281,6 +2357,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Show in Website", 
@@ -2309,6 +2386,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Show in Website (Variant)", 
@@ -2338,6 +2416,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Route", 
@@ -2368,6 +2447,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Weightage", 
@@ -2397,6 +2477,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Slideshow", 
@@ -2427,6 +2508,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Image", 
@@ -2455,6 +2537,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Thumbnail", 
@@ -2483,6 +2566,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "length": 0, 
@@ -2511,6 +2595,7 @@
    "ignore_user_permissions": 1, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Website Warehouse", 
@@ -2541,6 +2626,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Website Item Groups", 
@@ -2571,6 +2657,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Website Specifications", 
@@ -2599,6 +2686,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Copy From Item Group", 
@@ -2627,6 +2715,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Website Specifications", 
@@ -2656,6 +2745,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Website Description", 
@@ -2683,6 +2773,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Total Projected Qty", 
@@ -2713,7 +2804,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 1, 
- "modified": "2017-01-18 17:43:20.262925", 
+ "modified": "2017-02-14 22:49:44.664910", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Item", 
@@ -2729,7 +2820,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 1, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -2750,7 +2840,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -2771,7 +2860,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -2792,7 +2880,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -2813,7 +2900,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -2834,7 +2920,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -2855,7 +2940,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -2876,7 +2960,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -2892,8 +2975,10 @@
  "read_only": 0, 
  "read_only_onload": 0, 
  "search_fields": "item_name,description,item_group,customer_code", 
+ "show_name_in_global_search": 0, 
  "sort_field": "idx desc, modified desc", 
  "sort_order": "DESC", 
  "title_field": "item_name", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/stock/doctype/landed_cost_item/landed_cost_item.json b/erpnext/stock/doctype/landed_cost_item/landed_cost_item.json
index e679054..61c19f0 100644
--- a/erpnext/stock/doctype/landed_cost_item/landed_cost_item.json
+++ b/erpnext/stock/doctype/landed_cost_item/landed_cost_item.json
@@ -9,11 +9,13 @@
  "doctype": "DocType", 
  "document_type": "Document", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "item_code", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -21,6 +23,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Item Code", 
    "length": 0, 
    "no_copy": 0, 
@@ -29,6 +32,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -40,6 +44,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "description", 
    "fieldtype": "Text Editor", 
    "hidden": 0, 
@@ -47,6 +52,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Description", 
    "length": 0, 
    "no_copy": 0, 
@@ -57,6 +63,7 @@
    "print_hide_if_no_value": 0, 
    "print_width": "300px", 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -68,6 +75,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "receipt_document_type", 
    "fieldtype": "Select", 
    "hidden": 0, 
@@ -75,6 +83,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Receipt Document Type", 
    "length": 0, 
    "no_copy": 1, 
@@ -84,6 +93,7 @@
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -94,6 +104,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "receipt_document", 
    "fieldtype": "Dynamic Link", 
    "hidden": 0, 
@@ -101,6 +112,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Receipt Document", 
    "length": 0, 
    "no_copy": 1, 
@@ -110,6 +122,7 @@
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -120,6 +133,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "col_break2", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -127,12 +141,14 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -143,6 +159,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "qty", 
    "fieldtype": "Float", 
    "hidden": 0, 
@@ -150,6 +167,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Qty", 
    "length": 0, 
    "no_copy": 0, 
@@ -157,6 +175,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -167,6 +186,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "rate", 
    "fieldtype": "Currency", 
    "hidden": 0, 
@@ -174,6 +194,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Rate", 
    "length": 0, 
    "no_copy": 0, 
@@ -182,6 +203,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -192,6 +214,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "amount", 
    "fieldtype": "Currency", 
    "hidden": 0, 
@@ -199,6 +222,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Amount", 
    "length": 0, 
    "no_copy": 0, 
@@ -209,6 +233,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -219,6 +244,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "applicable_charges", 
    "fieldtype": "Currency", 
    "hidden": 0, 
@@ -226,6 +252,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Applicable Charges", 
    "length": 0, 
    "no_copy": 0, 
@@ -233,7 +260,8 @@
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 1, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -244,6 +272,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "purchase_receipt_item", 
    "fieldtype": "Data", 
    "hidden": 1, 
@@ -251,6 +280,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Purchase Receipt Item", 
    "length": 0, 
    "no_copy": 1, 
@@ -258,6 +288,7 @@
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
    "read_only": 1, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -275,7 +306,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-11 03:28:01.757912", 
+ "modified": "2016-12-20 04:50:19.785273", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Landed Cost Item", 
diff --git a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json
index b1f5a8c..dbc6a88 100644
--- a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json
+++ b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json
@@ -9,11 +9,13 @@
  "doctype": "DocType", 
  "document_type": "", 
  "editable_grid": 1, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "description", 
    "fieldtype": "Text Editor", 
    "hidden": 0, 
@@ -21,6 +23,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Description", 
    "length": 0, 
    "no_copy": 0, 
@@ -28,6 +31,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -38,6 +42,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "col_break3", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -45,12 +50,14 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -62,6 +69,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "amount", 
    "fieldtype": "Currency", 
    "hidden": 0, 
@@ -69,6 +77,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Amount", 
    "length": 0, 
    "no_copy": 0, 
@@ -77,6 +86,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
    "search_index": 0, 
@@ -94,7 +104,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-11 03:28:01.958276", 
+ "modified": "2016-12-20 05:44:54.700163", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Landed Cost Taxes and Charges", 
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 525853b..b97378f 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
@@ -32,7 +32,7 @@
 
 	},
 
-	refresh: function() {
+	refresh: function(frm) {
 		var help_content = [
 			'<br><br>',
 			'<table class="table table-bordered" style="background-color: #f9f9f9;">',
@@ -70,12 +70,15 @@
 		} else {
 			return this.frm.call({
 				doc: me.frm.doc,
-				method: "get_items_from_purchase_receipts"
+				method: "get_items_from_purchase_receipts",
+				callback: function(r, rt) {
+					me.set_applicable_charges_for_item();
+				}
 			});
 		}
 	},
 
-	amount: function() {
+	amount: function(frm) {
 		this.set_total_taxes_and_charges();
 		this.set_applicable_charges_for_item();
 	},
@@ -90,17 +93,23 @@
 
 	set_applicable_charges_for_item: function() {
 		var me = this;
+
 		if(this.frm.doc.taxes.length) {
+			
 			var total_item_cost = 0.0;
+			var based_on = this.frm.doc.distribute_charges_based_on.toLowerCase();
 			$.each(this.frm.doc.items || [], function(i, d) {
-				total_item_cost += flt(d.amount)
+				total_item_cost += flt(d[based_on])
 			});
 
 			$.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)
+				item.applicable_charges = flt(item[based_on]) * flt(me.frm.doc.total_taxes_and_charges) / flt(total_item_cost)			
 			});
 			refresh_field("items");
 		}
+	},
+	distribute_charges_based_on: function (frm) {
+		this.set_applicable_charges_for_item();
 	}
 
 });
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 227541f..db6e402 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
@@ -10,6 +10,7 @@
  "doctype": "DocType", 
  "document_type": "Document", 
  "editable_grid": 0, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
@@ -101,6 +102,34 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "purchase_receipt_items", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Purchase Receipt Items", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "get_items_from_purchase_receipts", 
    "fieldtype": "Button", 
    "hidden": 0, 
@@ -156,6 +185,35 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "sec_break1", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Additional Charges", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "taxes", 
    "fieldtype": "Table", 
    "hidden": 0, 
@@ -184,7 +242,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "sec_break1", 
+   "fieldname": "section_break_9", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -194,7 +252,6 @@
    "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Simple", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -240,34 +297,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "amended_from", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Amended From", 
-   "length": 0, 
-   "no_copy": 1, 
-   "options": "Landed Cost Voucher", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "col_break1", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -295,7 +324,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "default": "Amount", 
+   "default": "", 
    "fieldname": "distribute_charges_based_on", 
    "fieldtype": "Select", 
    "hidden": 0, 
@@ -325,6 +354,34 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "amended_from", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Amended From", 
+   "length": 0, 
+   "no_copy": 1, 
+   "options": "Landed Cost Voucher", 
+   "permlevel": 0, 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "sec_break2", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -378,7 +435,7 @@
  ], 
  "hide_heading": 0, 
  "hide_toolbar": 0, 
- "icon": "fa fa-usd", 
+ "icon": "icon-usd", 
  "idx": 0, 
  "image_view": 0, 
  "in_create": 0, 
@@ -387,7 +444,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-07 05:09:46.981120", 
+ "modified": "2016-12-21 01:40:13.959409", 
  "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 acb709f..0eaf5ba 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -30,9 +30,6 @@
 					item.receipt_document = pr.receipt_document
 					item.purchase_receipt_item = d.name
 
-		if self.get("taxes"):
-			self.set_applicable_charges_for_item()
-
 	def validate(self):
 		self.check_mandatory()
 		self.validate_purchase_receipts()
@@ -40,15 +37,13 @@
 		if not self.get("items"):
 			self.get_items_from_purchase_receipts()
 		else:
-			self.set_applicable_charges_for_item()
+			self.validate_applicable_charges_for_item()
 
 	def check_mandatory(self):
 		if not self.get("purchase_receipts"):
 			frappe.throw(_("Please enter Receipt Document"))
 
-		if not self.get("taxes"):
-			frappe.throw(_("Please enter Taxes and Charges"))
-
+		
 	def validate_purchase_receipts(self):
 		receipt_documents = []
 		
@@ -68,15 +63,18 @@
 	def set_total_taxes_and_charges(self):
 		self.total_taxes_and_charges = sum([flt(d.amount) for d in self.get("taxes")])
 
-	def set_applicable_charges_for_item(self):
+	def validate_applicable_charges_for_item(self):
 		based_on = self.distribute_charges_based_on.lower()
+		
 		total = sum([flt(d.get(based_on)) for d in self.get("items")])
-
+		
 		if not total:
-			frappe.throw(_("Total {0} for all items is zero, may you should change 'Distribute Charges Based On'").format(based_on))
+			frappe.throw(_("Total {0} for all items is zero, may be you should change 'Distribute Charges Based On'").format(based_on))
+		
+		if self.total_taxes_and_charges != sum([flt(d.applicable_charges) for d in self.get("items")]):
+			frappe.throw(_("Total Applicable Charges in Purchase Receipt Items table must be same as Total Taxes and Charges"))
 
-		for item in self.get("items"):
-			item.applicable_charges = flt(item.get(based_on)) *  flt(self.total_taxes_and_charges) / flt(total)
+
 
 	def on_submit(self):
 		self.update_landed_cost()
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 c58607f..409770e 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
@@ -5,6 +5,7 @@
 from __future__ import unicode_literals
 import unittest
 import frappe
+from frappe.utils import flt
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt \
 	import set_perpetual_inventory, get_gl_entries, test_records as pr_test_records
 from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
@@ -23,7 +24,7 @@
 			},
 			fieldname=["qty_after_transaction", "stock_value"], as_dict=1)
 
-		self.submit_landed_cost_voucher("Purchase Receipt", pr.name)
+		submit_landed_cost_voucher("Purchase Receipt", pr.name)
 
 		pr_lc_value = frappe.db.get_value("Purchase Receipt Item", {"parent": pr.name}, "landed_cost_voucher_amount")
 		self.assertEquals(pr_lc_value, 25.0)
@@ -75,7 +76,7 @@
 			},
 			fieldname=["qty_after_transaction", "stock_value"], as_dict=1)
 
-		self.submit_landed_cost_voucher("Purchase Invoice", pi.name)
+		submit_landed_cost_voucher("Purchase Invoice", pi.name)
 		
 		pi_lc_value = frappe.db.get_value("Purchase Invoice Item", {"parent": pi.name}, 
 			"landed_cost_voucher_amount")
@@ -121,7 +122,7 @@
 
 		serial_no_rate = frappe.db.get_value("Serial No", "SN001", "purchase_rate")
 
-		self.submit_landed_cost_voucher("Purchase Receipt", pr.name)
+		submit_landed_cost_voucher("Purchase Receipt", pr.name)
 
 		serial_no = frappe.db.get_value("Serial No", "SN001",
 			["warehouse", "purchase_rate"], as_dict=1)
@@ -131,27 +132,37 @@
 
 		set_perpetual_inventory(0)
 
-	def submit_landed_cost_voucher(self, receipt_document_type, receipt_document):
-		ref_doc = frappe.get_doc(receipt_document_type, receipt_document)
-		
-		lcv = frappe.new_doc("Landed Cost Voucher")
-		lcv.company = "_Test Company"
-		lcv.set("purchase_receipts", [{
-			"receipt_document_type": receipt_document_type,
-			"receipt_document": receipt_document,
-			"supplier": ref_doc.supplier,
-			"posting_date": ref_doc.posting_date,
-			"grand_total": ref_doc.base_grand_total
-		}])
-		
-		lcv.set("taxes", [{
-			"description": "Insurance Charges",
-			"account": "_Test Account Insurance Charges - _TC",
-			"amount": 50
-		}])
+def submit_landed_cost_voucher(receipt_document_type, receipt_document):
+	ref_doc = frappe.get_doc(receipt_document_type, receipt_document)
+	
+	lcv = frappe.new_doc("Landed Cost Voucher")
+	lcv.company = "_Test Company"
+	lcv.distribute_charges_based_on = 'Amount'
+	
+	lcv.set("purchase_receipts", [{
+		"receipt_document_type": receipt_document_type,
+		"receipt_document": receipt_document,
+		"supplier": ref_doc.supplier,
+		"posting_date": ref_doc.posting_date,
+		"grand_total": ref_doc.base_grand_total
+	}])
+	
+	lcv.set("taxes", [{
+		"description": "Insurance Charges",
+		"account": "_Test Account Insurance Charges - _TC",
+		"amount": 50
+	}])
 
-		lcv.insert()
-		lcv.submit()
-
+	lcv.insert()
+	
+	distribute_landed_cost_on_items(lcv)
+	
+	lcv.submit()
+		
+def distribute_landed_cost_on_items(lcv):
+	based_on = lcv.distribute_charges_based_on.lower()
+	total = sum([flt(d.get(based_on)) for d in lcv.get("items")])
+	for item in lcv.get("items"):
+		item.applicable_charges = flt(item.get(based_on)) * flt(lcv.total_taxes_and_charges) / flt(total)
 
 test_records = frappe.get_test_records('Landed Cost Voucher')
diff --git a/erpnext/stock/doctype/material_request/material_request_list.js b/erpnext/stock/doctype/material_request/material_request_list.js
index eb14930..b6ceeac 100644
--- a/erpnext/stock/doctype/material_request/material_request_list.js
+++ b/erpnext/stock/doctype/material_request/material_request_list.js
@@ -3,10 +3,10 @@
 	get_indicator: function(doc) {
 		if(doc.status=="Stopped") {
 			return [__("Stopped"), "red", "status,=,Stopped"];
-		} else if(doc.docstatus==1 && flt(doc.per_ordered, 2) == 0.00) {
+		} else if(doc.docstatus==1 && flt(doc.per_ordered, 2) == 0) {
 			return [__("Pending"), "orange", "per_ordered,=,0"];
-		} else if(doc.docstatus==1 && flt(doc.per_ordered, 2) < 100) {
-			return [__("Partially Ordered"), "orange", "per_ordered,<,100"];
+		}  else if(doc.docstatus==1 && flt(doc.per_ordered, 2) < 100) {
+			return [__("Partially ordred"), "yellow", "per_ordered,<,100"];
 		} else if(doc.docstatus==1 && flt(doc.per_ordered, 2) == 100) {
 			if (doc.material_request_type == "Purchase") {
 				return [__("Ordered"), "green", "per_ordered,=,100"];
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index 457a7c2..c843d7d 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -26,7 +26,7 @@
 				]
 			}
 		});
-		
+
 	}
 });
 
@@ -122,26 +122,6 @@
 	})
 }
 
-cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters: { 'supplier': doc.supplier}
-	}
-}
-
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-	return {
-		filters: { 'supplier': doc.supplier }
-	}
-}
-
-cur_frm.cscript.new_contact = function() {
-	tn = frappe.model.make_new_doc_and_get_name('Contact');
-	locals['Contact'][tn].is_supplier = 1;
-	if(doc.supplier)
-		locals['Contact'][tn].supplier = doc.supplier;
-	frappe.set_route('Form', 'Contact', tn);
-}
-
 cur_frm.fields_dict['items'].grid.get_field('project').get_query = function(doc, cdt, cdn) {
 	return {
 		filters: [
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index f961cdd..7421e01 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -8,6 +8,7 @@
 import frappe.defaults
 from frappe.utils import cint, flt, cstr, today
 from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
+from erpnext import set_perpetual_inventory
 
 class TestPurchaseReceipt(unittest.TestCase):
 	def test_make_purchase_invoice(self):
@@ -26,10 +27,10 @@
 
 	def test_purchase_receipt_no_gl_entry(self):
 		set_perpetual_inventory(0)
-		
+
 		existing_bin_stock_value = frappe.db.get_value("Bin", {"item_code": "_Test Item",
 			"warehouse": "_Test Warehouse - _TC"}, "stock_value")
-		
+
 		pr = make_purchase_receipt()
 
 		stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
@@ -78,22 +79,22 @@
 
 	def test_subcontracting(self):
 		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
-		
+
 		make_stock_entry(item_code="_Test Item", target="_Test Warehouse 1 - _TC", qty=100, basic_rate=100)
-		make_stock_entry(item_code="_Test Item Home Desktop 100", target="_Test Warehouse 1 - _TC", 
+		make_stock_entry(item_code="_Test Item Home Desktop 100", target="_Test Warehouse 1 - _TC",
 			qty=100, basic_rate=100)
-		
+
 		pr = make_purchase_receipt(item_code="_Test FG Item", qty=10, rate=500, is_subcontracted="Yes")
 		self.assertEquals(len(pr.get("supplied_items")), 2)
-		
+
 		rm_supp_cost = sum([d.amount for d in pr.get("supplied_items")])
 		self.assertEquals(pr.get("items")[0].rm_supp_cost, flt(rm_supp_cost, 2))
 
 	def test_serial_no_supplier(self):
 		pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1)
-		self.assertEquals(frappe.db.get_value("Serial No", pr.get("items")[0].serial_no, "supplier"), 
+		self.assertEquals(frappe.db.get_value("Serial No", pr.get("items")[0].serial_no, "supplier"),
 			pr.supplier)
-		
+
 		pr.cancel()
 		self.assertFalse(frappe.db.get_value("Serial No", pr.get("items")[0].serial_no, "warehouse"))
 
@@ -118,21 +119,21 @@
 		for serial_no in rejected_serial_nos:
 			self.assertEquals(frappe.db.get_value("Serial No", serial_no, "warehouse"),
 				pr.get("items")[0].rejected_warehouse)
-				
+
 	def test_purchase_return(self):
 		set_perpetual_inventory()
-		
+
 		pr = make_purchase_receipt()
-		
+
 		return_pr = make_purchase_receipt(is_return=1, return_against=pr.name, qty=-2)
 
 		# check sle
-		outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Purchase Receipt", 
+		outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Purchase Receipt",
 			"voucher_no": return_pr.name}, "outgoing_rate")
-			
+
 		self.assertEqual(outgoing_rate, 50)
-		
-		
+
+
 		# check gl entries for return
 		gl_entries = get_gl_entries("Purchase Receipt", return_pr.name)
 
@@ -146,7 +147,7 @@
 		for gle in gl_entries:
 			self.assertEquals(expected_values[gle.account][0], gle.debit)
 			self.assertEquals(expected_values[gle.account][1], gle.credit)
-		
+
 		set_perpetual_inventory(0)
 
 	def test_purchase_return_for_rejected_qty(self):
@@ -158,7 +159,7 @@
 
 		actual_qty = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Purchase Receipt",
 			"voucher_no": return_pr.name, 'warehouse': return_pr.items[0].rejected_warehouse}, "actual_qty")
-		
+
 		self.assertEqual(actual_qty, -2)
 
 		set_perpetual_inventory(0)
@@ -168,87 +169,82 @@
 			serial_no = frappe.get_doc("Serial No", serial_no)
 			for field, value in field_values.items():
 				self.assertEquals(cstr(serial_no.get(field)), value)
-		
+
 		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
-		
+
 		pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1)
-		
+
 		serial_no = get_serial_nos(pr.get("items")[0].serial_no)[0]
-		
+
 		_check_serial_no_values(serial_no, {
 			"warehouse": "_Test Warehouse - _TC",
 			"purchase_document_no": pr.name
 		})
-		
-		return_pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=-1, 
+
+		return_pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=-1,
 			is_return=1, return_against=pr.name, serial_no=serial_no)
-			
+
 		_check_serial_no_values(serial_no, {
 			"warehouse": "",
 			"purchase_document_no": pr.name,
 			"delivery_document_no": return_pr.name
 		})
-	
+
 	def test_closed_purchase_receipt(self):
 		from erpnext.stock.doctype.purchase_receipt.purchase_receipt import update_purchase_receipt_status
-		
+
 		pr = make_purchase_receipt(do_not_submit=True)
 		pr.submit()
-		
+
 		update_purchase_receipt_status(pr.name, "Closed")
 		self.assertEquals(frappe.db.get_value("Purchase Receipt", pr.name, "status"), "Closed")
-		
+
 	def test_pr_billing_status(self):
 		# PO -> PR1 -> PI and PO -> PI and PO -> PR2
 		from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
 		from erpnext.buying.doctype.purchase_order.purchase_order \
 			import make_purchase_receipt, make_purchase_invoice as make_purchase_invoice_from_po
-		
+
 		po = create_purchase_order()
-		
+
 		pr1 = make_purchase_receipt(po.name)
 		pr1.posting_date = today()
 		pr1.posting_time = "10:00"
 		pr1.get("items")[0].received_qty = 2
 		pr1.get("items")[0].qty = 2
 		pr1.submit()
-		
+
 		pi1 = make_purchase_invoice(pr1.name)
 		pi1.submit()
-		
+
 		pr1.load_from_db()
 		self.assertEqual(pr1.per_billed, 100)
-		
+
 		pi2 = make_purchase_invoice_from_po(po.name)
 		pi2.get("items")[0].qty = 4
 		pi2.submit()
-		
+
 		pr2 = make_purchase_receipt(po.name)
 		pr2.posting_date = today()
 		pr2.posting_time = "08:00"
 		pr2.get("items")[0].received_qty = 5
 		pr2.get("items")[0].qty = 5
 		pr2.submit()
-		
+
 		pr1.load_from_db()
 		self.assertEqual(pr1.get("items")[0].billed_amt, 1000)
 		self.assertEqual(pr1.per_billed, 100)
 		self.assertEqual(pr1.status, "Completed")
-		
+
 		self.assertEqual(pr2.get("items")[0].billed_amt, 2000)
 		self.assertEqual(pr2.per_billed, 80)
 		self.assertEqual(pr2.status, "To Bill")
-		
+
 def get_gl_entries(voucher_type, voucher_no):
 	return frappe.db.sql("""select account, debit, credit
 		from `tabGL Entry` where voucher_type=%s and voucher_no=%s
 		order by account desc""", (voucher_type, voucher_no), as_dict=1)
 
-def set_perpetual_inventory(enable=1):
-	accounts_settings = frappe.get_doc("Accounts Settings")
-	accounts_settings.auto_accounting_for_stock = enable
-	accounts_settings.save()
-	
 def make_purchase_receipt(**args):
 	pr = frappe.new_doc("Purchase Receipt")
 	args = frappe._dict(args)
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index a5a6ced..cc867a8 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -2,6 +2,188 @@
 
 frappe.provide("erpnext.stock");
 
+frappe.ui.form.on('Stock Entry', {
+	setup: function(frm) {
+		$.extend(frm.cscript, new erpnext.stock.StockEntry({frm: frm}));
+
+		frm.set_query('production_order', function() {
+			return {
+				filters: [
+					['Production Order', 'docstatus', '=', 1],
+					['Production Order', 'qty', '>','`tabProduction Order`.produced_qty'],
+					['Production Order', 'company', '=', frm.doc.company]
+				]
+			}
+		});
+	// },
+	// onload_post_render: function(frm) {
+
+		frm.set_query('batch_no', 'items', function(doc, cdt, cdn) {
+			var item = locals[cdt][cdn];
+			if(!item.item_code) {
+				frappe.throw(__("Please enter Item Code to get Batch Number"));
+			} else {
+				if (in_list(["Material Transfer for Manufacture", "Manufacture", "Repack", "Subcontract"], doc.purpose)) {
+					var filters = {
+						'item_code': item.item_code,
+						'posting_date': frm.doc.posting_date || nowdate()
+					}
+				} else {
+					var filters = {
+						'item_code': item.item_code
+					}
+				}
+
+				if(item.s_warehouse) filters["warehouse"] = item.s_warehouse;
+				return {
+					query : "erpnext.controllers.queries.get_batch_no",
+					filters: filters
+				}
+			}
+		});
+	},
+	refresh: function(frm) {
+		if(!frm.doc.docstatus) {
+			frm.add_custom_button(__('Make Material Request'), function() {
+				frappe.model.with_doctype('Material Request', function() {
+					var mr = frappe.model.get_new_doc('Material Request');
+					var items = frm.get_field('items').grid.get_selected_children();
+					if(!items.length) {
+						items = frm.doc.items;
+					}
+					items.forEach(function(item) {
+						var mr_item = frappe.model.add_child(mr, 'items');
+						mr_item.item_code = item.item_code;
+						mr_item.item_name = item.item_name;
+						mr_item.uom = item.uom;
+						mr_item.item_group = item.item_group;
+						mr_item.description = item.description;
+						mr_item.image = item.image;
+						mr_item.qty = item.qty;
+						mr_item.warehouse = item.s_warehouse;
+						mr_item.required_date = frappe.datetime.nowdate();
+					});
+					frappe.set_route('Form', 'Material Request', mr.name);
+				});
+			});
+		}
+	},
+	purpose: function(frm) {
+		frm.fields_dict.items.grid.refresh();
+		frm.cscript.toggle_related_fields(frm.doc);
+	},
+	company: function(frm) {
+		if(frm.doc.company) {
+			var company_doc = frappe.get_doc(":Company", frm.doc.company);
+			if(company_doc.default_letter_head) {
+				frm.set_value("letter_head", company_doc.default_letter_head);
+			}
+		}
+	},
+	set_serial_no: function(frm, cdt, cdn) {
+		var d = frappe.model.get_doc(cdt, cdn);
+		if(!d.item_code && !d.s_warehouse && !d.qty) return;
+		var	args = {
+			'item_code'	: d.item_code,
+			'warehouse'	: cstr(d.s_warehouse),
+			'qty'		: d.qty
+		};
+		frappe.call({
+			method: "erpnext.stock.get_item_details.get_serial_no",
+			args: {"args": args},
+			callback: function(r) {
+				if (!r.exe){
+					frappe.model.set_value(cdt, cdn, "serial_no", r.message);
+				}
+			}
+		});
+	},
+})
+
+frappe.ui.form.on('Stock Entry Detail', {
+	qty: function(frm, cdt, cdn) {
+		frm.events.set_serial_no(frm, cdt, cdn);
+	},
+
+	s_warehouse: function(frm, cdt, cdn) {
+		frm.events.set_serial_no(frm, cdt, cdn);
+	},
+	barcode: function(doc, cdt, cdn) {
+		var d = locals[cdt][cdn];
+		if (d.barcode) {
+			frappe.call({
+				method: "erpnext.stock.get_item_details.get_item_code",
+				args: {"barcode": d.barcode },
+				callback: function(r) {
+					if (!r.exe){
+						frappe.model.set_value(cdt, cdn, "item_code", r.message);
+					}
+				}
+			});
+		}
+	},
+	uom: function(doc, cdt, cdn) {
+		var d = locals[cdt][cdn];
+		if(d.uom && d.item_code){
+			return frappe.call({
+				method: "erpnext.stock.doctype.stock_entry.stock_entry.get_uom_details",
+				args: {
+					item_code: d.item_code,
+					uom: d.uom,
+					qty: d.qty
+				},
+				callback: function(r) {
+					if(r.message) {
+						frappe.model.set_value(cdt, cdn, r.message);
+					}
+				}
+			});
+		}
+	},
+	item_code: function(frm, cdt, cdn) {
+		var d = locals[cdt][cdn];
+		if(d.item_code) {
+			args = {
+				'item_code'			: d.item_code,
+				'warehouse'			: cstr(d.s_warehouse) || cstr(d.t_warehouse),
+				'transfer_qty'		: d.transfer_qty,
+				'serial_no	'		: d.serial_no,
+				'bom_no'			: d.bom_no,
+				'expense_account'	: d.expense_account,
+				'cost_center'		: d.cost_center,
+				'company'			: frm.doc.company,
+				'qty'				: d.qty
+			};
+			return frappe.call({
+				doc: frm.doc,
+				method: "get_item_details",
+				args: args,
+				callback: function(r) {
+					if(r.message) {
+						var d = locals[cdt][cdn];
+						$.each(r.message, function(k, v) {
+							d[k] = v;
+						});
+						refresh_field("items");
+					}
+				}
+			});
+		}
+	},
+	expense_account: function(frm, cdt, cdn) {
+		erpnext.utils.copy_value_in_all_row(frm.doc, cdt, cdn, "items", "expense_account");
+	},
+	cost_center: function(doc, cdt, cdn) {
+		erpnext.utils.copy_value_in_all_row(frm.doc, cdt, cdn, "items", "cost_center");
+	}
+});
+
+frappe.ui.form.on('Landed Cost Taxes and Charges', {
+	amount: function(frm) {
+		frm.events.calculate_amount();
+	}
+});
+
 erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
 	setup: function() {
 		var me = this;
@@ -41,13 +223,17 @@
 				}
 			}
 		}
+
+		this.frm.set_indicator_formatter('item_code',
+			function(doc) { return (doc.qty<=doc.actual_qty) ? "green" : "orange" })
+
 	},
 
 	onload_post_render: function() {
 		var me = this;
 		this.set_default_account(function() {
 			if(me.frm.doc.__islocal && me.frm.doc.company && !me.frm.doc.amended_from) {
-				cur_frm.script_manager.trigger("company");
+				me.frm.trigger("company");
 			}
 		});
 
@@ -176,7 +362,7 @@
 				excise.voucher_type = 'Excise Entry';
 				frappe.set_route('Form', 'Journal Entry', excise.name);
 			}, __("Make"));
-			cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
+			this.frm.page.set_inner_btn_group_as_primary(__("Make"));
 	},
 
 	items_add: function(doc, cdt, cdn) {
@@ -305,210 +491,32 @@
 
 		this.frm.set_value("total_additional_costs", flt(total_additional_costs, precision("total_additional_costs")));
 	},
-});
 
-cur_frm.script_manager.make(erpnext.stock.StockEntry);
+	toggle_related_fields: function(doc) {
+		this.frm.toggle_enable("from_warehouse", doc.purpose!='Material Receipt');
+		this.frm.toggle_enable("to_warehouse", doc.purpose!='Material Issue');
 
-cur_frm.cscript.toggle_related_fields = function(doc) {
-	cur_frm.toggle_enable("from_warehouse", doc.purpose!='Material Receipt');
-	cur_frm.toggle_enable("to_warehouse", doc.purpose!='Material Issue');
+		this.frm.fields_dict["items"].grid.set_column_disp("s_warehouse", doc.purpose!='Material Receipt');
+		this.frm.fields_dict["items"].grid.set_column_disp("t_warehouse", doc.purpose!='Material Issue');
 
-	cur_frm.fields_dict["items"].grid.set_column_disp("s_warehouse", doc.purpose!='Material Receipt');
-	cur_frm.fields_dict["items"].grid.set_column_disp("t_warehouse", doc.purpose!='Material Issue');
+		this.frm.cscript.toggle_enable_bom();
 
-	cur_frm.cscript.toggle_enable_bom();
-
-	if (doc.purpose == 'Subcontract') {
-		doc.customer = doc.customer_name = doc.customer_address =
-			doc.delivery_note_no = doc.sales_invoice_no = null;
-	} else {
-		doc.customer = doc.customer_name = doc.customer_address =
-			doc.delivery_note_no = doc.sales_invoice_no = doc.supplier =
-			doc.supplier_name = doc.supplier_address = doc.purchase_receipt_no = null;
-	}
-	if(doc.purpose == "Material Receipt") {
-		cur_frm.set_value("from_bom", 0);
-	}
-
-	// Addition costs based on purpose
-	cur_frm.toggle_display(["additional_costs", "total_additional_costs", "additional_costs_section"],
-		doc.purpose!='Material Issue');
-
-	cur_frm.fields_dict["items"].grid.set_column_disp("additional_cost", doc.purpose!='Material Issue');
-}
-
-cur_frm.fields_dict['production_order'].get_query = function(doc) {
-	return {
-		filters: [
-			['Production Order', 'docstatus', '=', 1],
-			['Production Order', 'qty', '>','`tabProduction Order`.produced_qty'],
-			['Production Order', 'company', '=', cur_frm.doc.company]
-		]
-	}
-}
-
-cur_frm.cscript.purpose = function(doc, cdt, cdn) {
-	cur_frm.fields_dict.items.grid.refresh();
-	cur_frm.cscript.toggle_related_fields(doc);
-}
-
-// Overloaded query for link batch_no
-cur_frm.fields_dict['items'].grid.get_field('batch_no').get_query = function(doc, cdt, cdn) {
-	var item = locals[cdt][cdn];
-	if(!item.item_code) {
-		frappe.throw(__("Please enter Item Code to get batch no"));
-	}
-	else {
-		if (in_list(["Material Transfer for Manufacture", "Manufacture", "Repack", "Subcontract"], doc.purpose)) {
-			var filters = {
-				'item_code': item.item_code,
-				'posting_date': me.frm.doc.posting_date || nowdate()
-			}
+		if (doc.purpose == 'Subcontract') {
+			doc.customer = doc.customer_name = doc.customer_address =
+				doc.delivery_note_no = doc.sales_invoice_no = null;
 		} else {
-			var filters = {
-				'item_code': item.item_code
-			}
+			doc.customer = doc.customer_name = doc.customer_address =
+				doc.delivery_note_no = doc.sales_invoice_no = doc.supplier =
+				doc.supplier_name = doc.supplier_address = doc.purchase_receipt_no = null;
+		}
+		if(doc.purpose == "Material Receipt") {
+			this.frm.set_value("from_bom", 0);
 		}
 
+		// Addition costs based on purpose
+		this.frm.toggle_display(["additional_costs", "total_additional_costs", "additional_costs_section"],
+			doc.purpose!='Material Issue');
 
-		if(item.s_warehouse) filters["warehouse"] = item.s_warehouse
-		return {
-			query : "erpnext.controllers.queries.get_batch_no",
-			filters: filters
-		}
+		this.frm.fields_dict["items"].grid.set_column_disp("additional_cost", doc.purpose!='Material Issue');
 	}
-}
-
-cur_frm.cscript.validate = function(doc, cdt, cdn) {
-	cur_frm.cscript.validate_items(doc);
-}
-
-cur_frm.cscript.validate_items = function(doc) {
-	cl = doc.items || [];
-	if (!cl.length) {
-		msgprint(__("Item table can not be blank"));
-		validated = false;
-	}
-}
-
-cur_frm.cscript.expense_account = function(doc, cdt, cdn) {
-	erpnext.utils.copy_value_in_all_row(doc, cdt, cdn, "items", "expense_account");
-}
-
-cur_frm.cscript.cost_center = function(doc, cdt, cdn) {
-	erpnext.utils.copy_value_in_all_row(doc, cdt, cdn, "items", "cost_center");
-}
-
-
-frappe.ui.form.on('Landed Cost Taxes and Charges', {
-	amount: function(frm) {
-		frm.cscript.calculate_amount();
-	}
-})
-
-frappe.ui.form.on('Stock Entry Detail', {
-	qty: function(frm, cdt, cdn) {
-		frm.events.set_serial_no(frm, cdt, cdn);
-	},
-
-	s_warehouse: function(frm, cdt, cdn) {
-		frm.events.set_serial_no(frm, cdt, cdn);
-	},
-	barcode: function(doc, cdt, cdn) {
-		var d = locals[cdt][cdn];
-		if (d.barcode) {
-			frappe.call({
-				method: "erpnext.stock.get_item_details.get_item_code",
-				args: {"barcode": d.barcode },
-				callback: function(r) {
-					if (!r.exe){
-						frappe.model.set_value(cdt, cdn, "item_code", r.message);
-					}
-				}
-			});
-		}
-	},
-	uom: function(doc, cdt, cdn) {
-		var d = locals[cdt][cdn];
-		if(d.uom && d.item_code){
-			arg = {
-					'item_code':d.item_code,
-					'uom':d.uom,
-					'qty':d.qty
-			};
-			return frappe.call({
-				doc: cur_frm.doc,
-				method: "get_uom_details",
-				args: arg,
-				callback: function(r) {
-					if(r.message) {
-						var d = locals[cdt][cdn];
-						$.each(r.message, function(k, v) {
-							d[k] = v;
-						});
-						refresh_field("items");
-					}
-				}
-			});
-		}
-	},
-	item_code: function(doc, cdt, cdn) {
-		var d = locals[cdt][cdn];
-		if(d.item_code) {
-			args = {
-				'item_code'			: d.item_code,
-				'warehouse'			: cstr(d.s_warehouse) || cstr(d.t_warehouse),
-				'transfer_qty'		: d.transfer_qty,
-				'serial_no	'		: d.serial_no,
-				'bom_no'			: d.bom_no,
-				'expense_account'	: d.expense_account,
-				'cost_center'		: d.cost_center,
-				'company'			: cur_frm.doc.company,
-				'qty'				: d.qty
-			};
-			return frappe.call({
-				doc: cur_frm.doc,
-				method: "get_item_details",
-				args: args,
-				callback: function(r) {
-					if(r.message) {
-						var d = locals[cdt][cdn];
-						$.each(r.message, function(k, v) {
-							d[k] = v;
-						});
-						refresh_field("items");
-					}
-				}
-			});
-		}
-	}
-})
-
-frappe.ui.form.on('Stock Entry', {
-	company: function(doc, cdt, cdn) {
-		if(doc.company) {
-			var company_doc = frappe.get_doc(":Company", doc.company);
-			if(company_doc.default_letter_head) {
-				cur_frm.set_value("letter_head", company_doc.default_letter_head);
-			}
-		}
-	},
-	set_serial_no: function(doc, cdt, cdn) {
-		var d = frappe.model.get_doc(cdt, cdn);
-		if(!d.item_code && !d.s_warehouse && !d.qty) return;
-		var	args = {
-				'item_code'	: d.item_code,
-				'warehouse'	: cstr(d.s_warehouse),
-				'qty'		: d.qty
-			};
-			frappe.call({
-				method: "erpnext.stock.get_item_details.get_serial_no",
-				args: {"args": args},
-				callback: function(r) {
-					if (!r.exe){
-						frappe.model.set_value(cdt, cdn, "serial_no", r.message);
-					}
-				}
-			});
-		},
-})
+});
\ No newline at end of file
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 16ae3fc..107c85c 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -233,7 +233,7 @@
 		for d in self.get('items'):
 			transferred_serial_no = frappe.db.get_value("Stock Entry Detail",{"parent": previous_se,
 				"item_code": d.item_code}, "serial_no")
-			
+
 			if transferred_serial_no:
 				d.serial_no = transferred_serial_no
 
@@ -496,7 +496,7 @@
 
 		# update uom
 		if args.get("uom") and for_update:
-			ret.update(self.get_uom_details(args))
+			ret.update(get_uom_details(args.get('item_code'), args.get('uom'), args.get('qty')))
 
 		if not ret["expense_account"]:
 			ret["expense_account"] = frappe.db.get_value("Company", self.company, "stock_adjustment_account")
@@ -509,23 +509,6 @@
 
 		return ret
 
-	def get_uom_details(self, args):
-		"""Returns dict `{"conversion_factor": [value], "transfer_qty": qty * [value]}`
-
-		:param args: dict with `item_code`, `uom` and `qty`"""
-		conversion_factor = get_conversion_factor(args.get("item_code"), args.get("uom")).get("conversion_factor")
-
-		if not conversion_factor:
-			frappe.msgprint(_("UOM coversion factor required for UOM: {0} in Item: {1}")
-				.format(args.get("uom"), args.get("item_code")))
-			ret = {'uom' : ''}
-		else:
-			ret = {
-				'conversion_factor'		: flt(conversion_factor),
-				'transfer_qty'			: flt(args.get("qty")) * flt(conversion_factor)
-			}
-		return ret
-
 	def get_items(self):
 		self.set('items', [])
 		self.validate_production_order()
@@ -559,7 +542,7 @@
 							item["from_warehouse"] = self.pro_doc.wip_warehouse
 
 						item["to_warehouse"] = self.to_warehouse if self.purpose=="Subcontract" else ""
-					
+
 					self.add_to_stock_entry_detail(item_dict)
 
 					scrap_item_dict = self.get_bom_scrap_material(self.fg_completed_qty)
@@ -567,7 +550,7 @@
 						if self.pro_doc and self.pro_doc.scrap_warehouse:
 							item["to_warehouse"] = self.pro_doc.scrap_warehouse
 					self.add_to_stock_entry_detail(scrap_item_dict, bom_no=self.bom_no)
-					
+
 			# fetch the serial_no of the first stock entry for the second stock entry
 			if self.production_order and self.purpose == "Manufacture":
 				self.set_serial_nos(self.production_order)
@@ -632,10 +615,10 @@
 		for item in item_dict.values():
 			item.from_warehouse = self.from_warehouse or item.default_warehouse
 		return item_dict
-	
+
 	def get_bom_scrap_material(self, qty):
 		from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict
-		
+
 		# item dict = { item_code: {qty, description, stock_uom} }
 		item_dict = get_bom_items_as_dict(self.bom_no, self.company, qty=qty,
 			fetch_exploded = 0, fetch_scrap_items = 1)
@@ -643,7 +626,7 @@
 		for item in item_dict.values():
 			item.from_warehouse = ""
 		return item_dict
-	
+
 	def get_transfered_raw_materials(self):
 		transferred_materials = frappe.db.sql("""
 			select
@@ -850,6 +833,24 @@
 	return operating_cost_per_unit
 
 @frappe.whitelist()
+def get_uom_details(item_code, uom, qty):
+	"""Returns dict `{"conversion_factor": [value], "transfer_qty": qty * [value]}`
+
+	:param args: dict with `item_code`, `uom` and `qty`"""
+	conversion_factor = get_conversion_factor(item_code, uom).get("conversion_factor")
+
+	if not conversion_factor:
+		frappe.msgprint(_("UOM coversion factor required for UOM: {0} in Item: {1}")
+			.format(uom, item_code))
+		ret = {'uom' : ''}
+	else:
+		ret = {
+			'conversion_factor'		: flt(conversion_factor),
+			'transfer_qty'			: flt(qty) * flt(conversion_factor)
+		}
+	return ret
+
+@frappe.whitelist()
 def get_warehouse_details(args):
 	if isinstance(args, basestring):
 		args = json.loads(args)
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 2caabee..00e3abe 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -27,9 +27,6 @@
 		self.validate_and_set_fiscal_year()
 		self.block_transactions_against_group_warehouse()
 
-		from erpnext.accounts.utils import validate_fiscal_year
-		validate_fiscal_year(self.posting_date, self.fiscal_year, self.meta.get_label("posting_date"), self)
-
 	def on_submit(self):
 		self.check_stock_frozen_date()
 		self.actual_amt_check()
@@ -117,6 +114,10 @@
 	def validate_and_set_fiscal_year(self):
 		if not self.fiscal_year:
 			self.fiscal_year = get_fiscal_year(self.posting_date, company=self.company)[0]
+		else:
+			from erpnext.accounts.utils import validate_fiscal_year
+			validate_fiscal_year(self.posting_date, self.fiscal_year, self.company, 
+				self.meta.get_label("posting_date"), self)
 
 	def block_transactions_against_group_warehouse(self):
 		from erpnext.stock.utils import is_group_warehouse
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index ba303bb..a7480e8 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -117,6 +117,10 @@
 					if buying_rate:
 						row.valuation_rate = buying_rate
 
+					else:
+						# get valuation rate from Item
+						row.valuation_rate = frappe.get_value('Item', row.item_code, 'valuation_rate')
+
 		# throw all validation messages
 		if self.validation_messages:
 			for msg in self.validation_messages:
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.json b/erpnext/stock/doctype/stock_settings/stock_settings.json
index 6501682..4801d40 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.json
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.json
@@ -8,11 +8,13 @@
  "description": "Settings", 
  "docstatus": 0, 
  "doctype": "DocType", 
+ "editable_grid": 0, 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "default": "Item Code", 
    "fieldname": "item_naming_by", 
    "fieldtype": "Select", 
@@ -21,6 +23,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Item Naming By", 
    "length": 0, 
    "no_copy": 0, 
@@ -29,6 +32,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -39,6 +43,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "description": "", 
    "fieldname": "item_group", 
    "fieldtype": "Link", 
@@ -47,6 +52,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Default Item Group", 
    "length": 0, 
    "no_copy": 0, 
@@ -55,6 +61,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -65,6 +72,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "stock_uom", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -72,6 +80,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
+   "in_standard_filter": 0, 
    "label": "Default Stock UOM", 
    "length": 0, 
    "no_copy": 0, 
@@ -80,6 +89,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -90,6 +100,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "default_warehouse", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -97,6 +108,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Default Warehouse", 
    "length": 0, 
    "no_copy": 0, 
@@ -106,6 +118,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -116,6 +129,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "column_break_4", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -123,12 +137,14 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -139,6 +155,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "valuation_method", 
    "fieldtype": "Select", 
    "hidden": 0, 
@@ -146,6 +163,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Default Valuation Method", 
    "length": 0, 
    "no_copy": 0, 
@@ -154,6 +172,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -164,6 +183,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "description": "Percentage you are allowed to receive or deliver more against the quantity ordered. For example: If you have ordered 100 units. and your Allowance is 10% then you are allowed to receive 110 units.", 
    "fieldname": "tolerance", 
    "fieldtype": "Float", 
@@ -172,13 +192,15 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Allowance Percent", 
+   "in_standard_filter": 0, 
+   "label": "Limit Percent", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -189,6 +211,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "default": "1", 
    "fieldname": "show_barcode_field", 
    "fieldtype": "Check", 
@@ -197,6 +220,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Show Barcode Field", 
    "length": 0, 
    "no_copy": 0, 
@@ -205,6 +229,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -215,6 +240,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "section_break_7", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -222,6 +248,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -229,6 +256,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -239,6 +267,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "auto_insert_price_list_rate_if_missing", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -246,6 +275,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Auto insert Price List rate if missing", 
    "length": 0, 
    "no_copy": 0, 
@@ -254,6 +284,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -264,6 +295,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "allow_negative_stock", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -271,6 +303,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Allow Negative Stock", 
    "length": 0, 
    "no_copy": 0, 
@@ -278,6 +311,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -288,6 +322,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "column_break_10", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -295,6 +330,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -302,6 +338,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -312,6 +349,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "default": "1", 
    "fieldname": "automatically_set_serial_nos_based_on_fifo", 
    "fieldtype": "Check", 
@@ -320,6 +358,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Automatically Set Serial Nos based on FIFO", 
    "length": 0, 
    "no_copy": 0, 
@@ -328,6 +367,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -338,6 +378,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "auto_material_request", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -345,6 +386,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Auto Material Request", 
    "length": 0, 
    "no_copy": 0, 
@@ -352,6 +394,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -362,6 +405,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "auto_indent", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -369,6 +413,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Raise Material Request when stock reaches re-order level", 
    "length": 0, 
    "no_copy": 0, 
@@ -376,6 +421,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -386,6 +432,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "reorder_email_notify", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -393,6 +440,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Notify by Email on creation of automatic Material Request", 
    "length": 0, 
    "no_copy": 0, 
@@ -400,6 +448,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -410,6 +459,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "freeze_stock_entries", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -417,6 +467,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Freeze Stock Entries", 
    "length": 0, 
    "no_copy": 0, 
@@ -424,6 +475,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -434,6 +486,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "stock_frozen_upto", 
    "fieldtype": "Date", 
    "hidden": 0, 
@@ -441,6 +494,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Stock Frozen Upto", 
    "length": 0, 
    "no_copy": 0, 
@@ -448,6 +502,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -458,6 +513,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "stock_frozen_upto_days", 
    "fieldtype": "Int", 
    "hidden": 0, 
@@ -465,6 +521,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Freeze Stocks Older Than [Days]", 
    "length": 0, 
    "no_copy": 0, 
@@ -472,6 +529,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -482,6 +540,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "stock_auth_role", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -489,6 +548,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
+   "in_standard_filter": 0, 
    "label": "Role Allowed to edit frozen stock", 
    "length": 0, 
    "no_copy": 0, 
@@ -497,6 +557,7 @@
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
+   "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -506,15 +567,16 @@
  ], 
  "hide_heading": 0, 
  "hide_toolbar": 0, 
- "icon": "fa fa-cog", 
+ "icon": "icon-cog", 
  "idx": 1, 
+ "image_view": 0, 
  "in_create": 0, 
  "in_dialog": 0, 
  "is_submittable": 0, 
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-05-12 12:28:29.374452", 
+ "modified": "2016-12-16 02:18:58.187847", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Stock Settings", 
@@ -530,6 +592,7 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
+   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.py b/erpnext/stock/doctype/warehouse/test_warehouse.py
index edc5400..ec64bdd 100644
--- a/erpnext/stock/doctype/warehouse/test_warehouse.py
+++ b/erpnext/stock/doctype/warehouse/test_warehouse.py
@@ -4,59 +4,64 @@
 from frappe.model.rename_doc import rename_doc
 from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
 from frappe.utils import cint
-from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
+from erpnext import set_perpetual_inventory
+from frappe.test_runner import make_test_records
 
 import frappe
 import unittest
 test_records = frappe.get_test_records('Warehouse')
 
 class TestWarehouse(unittest.TestCase):
+	def setUp(self):
+		if not frappe.get_value('Item', '_Test Item'):
+			make_test_records('Item')
+
 	def test_parent_warehouse(self):
 		parent_warehouse = frappe.get_doc("Warehouse", "_Test Warehouse Group - _TC")
 		self.assertEquals(parent_warehouse.is_group, 1)
-		
+
 	def test_warehouse_hierarchy(self):
 		p_warehouse = frappe.get_doc("Warehouse", "_Test Warehouse Group - _TC")
-		
+
 		child_warehouses =  frappe.db.sql("""select name, is_group, parent_warehouse from `tabWarehouse` wh
 			where wh.lft > %s and wh.rgt < %s""", (p_warehouse.lft, p_warehouse.rgt), as_dict=1)
-		
+
 		for child_warehouse in child_warehouses:
 			self.assertEquals(p_warehouse.name, child_warehouse.parent_warehouse)
 			self.assertEquals(child_warehouse.is_group, 0)
-	
+
 	def test_warehouse_renaming(self):
 		set_perpetual_inventory(1)
 		create_warehouse("Test Warehouse for Renaming 1")
-		
+
 		self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Renaming 1 - _TC"))
-		self.assertTrue(frappe.db.get_value("Account", 
+		self.assertTrue(frappe.db.get_value("Account",
 			filters={"warehouse": "Test Warehouse for Renaming 1 - _TC"}))
-		
+
 		# Rename with abbr
 		if frappe.db.exists("Warehouse", "Test Warehouse for Renaming 2 - _TC"):
 			frappe.delete_doc("Warehouse", "Test Warehouse for Renaming 2 - _TC")
 		rename_doc("Warehouse", "Test Warehouse for Renaming 1 - _TC", "Test Warehouse for Renaming 2 - _TC")
-		
+
 		self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Renaming 2 - _TC"))
-		self.assertTrue(frappe.db.get_value("Account", 
+		self.assertTrue(frappe.db.get_value("Account",
 			filters={"warehouse": "Test Warehouse for Renaming 2 - _TC"}))
-			
+		self.assertFalse(frappe.db.get_value("Account",
+			filters={"warehouse": "Test Warehouse for Renaming 1 - _TC"}))
+
 		# Rename without abbr
 		if frappe.db.exists("Warehouse", "Test Warehouse for Renaming 3 - _TC"):
 			frappe.delete_doc("Warehouse", "Test Warehouse for Renaming 3 - _TC")
-		
+
 		rename_doc("Warehouse", "Test Warehouse for Renaming 2 - _TC", "Test Warehouse for Renaming 3")
-		
+
 		self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Renaming 3 - _TC"))
-		self.assertTrue(frappe.db.get_value("Account", 
+		self.assertTrue(frappe.db.get_value("Account",
 			filters={"warehouse": "Test Warehouse for Renaming 3 - _TC"}))
-			
-		set_perpetual_inventory(0)
-		
+
 	def test_warehouse_merging(self):
 		set_perpetual_inventory(1)
-		
+
 		create_warehouse("Test Warehouse for Merging 1")
 		create_warehouse("Test Warehouse for Merging 2")
 
@@ -64,31 +69,29 @@
 			qty=1, rate=100)
 		make_stock_entry(item_code="_Test Item", target="Test Warehouse for Merging 2 - _TC",
 			qty=1, rate=100)
-			
+
 		existing_bin_qty = (
-			cint(frappe.db.get_value("Bin", 
+			cint(frappe.db.get_value("Bin",
 				{"item_code": "_Test Item", "warehouse": "Test Warehouse for Merging 1 - _TC"}, "actual_qty"))
-			+ cint(frappe.db.get_value("Bin", 
+			+ cint(frappe.db.get_value("Bin",
 				{"item_code": "_Test Item", "warehouse": "Test Warehouse for Merging 2 - _TC"}, "actual_qty"))
 		)
 
-		rename_doc("Warehouse", "Test Warehouse for Merging 1 - _TC", 
+		rename_doc("Warehouse", "Test Warehouse for Merging 1 - _TC",
 			"Test Warehouse for Merging 2 - _TC", merge=True)
 
 		self.assertFalse(frappe.db.exists("Warehouse", "Test Warehouse for Merging 1 - _TC"))
 
 		bin_qty = frappe.db.get_value("Bin",
 			{"item_code": "_Test Item", "warehouse": "Test Warehouse for Merging 2 - _TC"}, "actual_qty")
-			
+
 		self.assertEqual(bin_qty, existing_bin_qty)
-		
+
 		self.assertFalse(frappe.db.exists("Account", "Test Warehouse for Merging 1 - _TC"))
 		self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Merging 2 - _TC"))
-		self.assertTrue(frappe.db.get_value("Account", 
+		self.assertTrue(frappe.db.get_value("Account",
 			filters={"warehouse": "Test Warehouse for Merging 2 - _TC"}))
-			
-		set_perpetual_inventory(0)
-		
+
 def create_warehouse(warehouse_name):
 	if not frappe.db.exists("Warehouse", warehouse_name + " - _TC"):
 		w = frappe.new_doc("Warehouse")
@@ -96,5 +99,7 @@
 		w.parent_warehouse = "_Test Warehouse Group - _TC"
 		w.company = "_Test Company"
 		w.save()
-	
-	
\ No newline at end of file
+
+	if not frappe.get_value('Account', dict(warehouse=warehouse_name + ' - _TC')):
+		print 'Warehouse {0} not linked'.format(warehouse_name)
+
diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json
index a7556bd..477041f 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.json
+++ b/erpnext/stock/doctype/warehouse/warehouse.json
@@ -253,7 +253,7 @@
    "in_filter": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Email Id", 
+   "label": "Email Address", 
    "length": 0, 
    "no_copy": 0, 
    "oldfieldname": "email_id", 
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 5fa300f..d99cdf6 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -2,7 +2,7 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
 from frappe.utils import cint, validate_email_add
 from frappe import throw, msgprint, _
 from frappe.utils.nestedset import NestedSet
@@ -53,6 +53,8 @@
 		self.update_nsm_model()
 
 	def create_account_head(self):
+		'''Create new account head if there is no account linked to this Warehouse'''
+		from erpnext.accounts.doctype.account.account import BalanceMismatchError
 		if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")):
 			if not self.get_account():
 				if self.get("__islocal") or not frappe.db.get_value(
@@ -74,12 +76,14 @@
 					ac_doc.flags.ignore_mandatory = True
 					try:
 						ac_doc.insert()
-						msgprint(_("Account head {0} created").format(ac_doc.name))
+						msgprint(_("Account head {0} created").format(ac_doc.name), indicator='green', alert=True)
 
-					except frappe.DuplicateEntryError, e:
-						if not (e.args and e.args[0]=='Account'):
-							# if this is not due to creation of Account
-							raise
+					except frappe.DuplicateEntryError:
+						msgprint(_("Please create an Account for this Warehouse and link it. This cannot be done automatically as an account with name {0} already exists").format(frappe.bold(self.name)),
+							indicator='orange')
+
+					except BalanceMismatchError:
+						msgprint(_("Cannot automatically create Account as there is already stock balance in the Account. You must create a matching account before you can make an entry on this warehouse"))
 
 	def validate_parent_account(self):
 		if not self.company:
@@ -111,7 +115,7 @@
 			else:
 				frappe.db.sql("delete from `tabBin` where name = %s", d['name'])
 
-		warehouse_account = self.get_account(self.name)
+		warehouse_account = self.get_account()
 		if warehouse_account:
 			frappe.delete_doc("Account", warehouse_account)
 
@@ -131,10 +135,9 @@
 		return frappe.db.sql("""select name from `tabWarehouse`
 			where parent_warehouse = %s""", self.name)
 
-	def before_rename(self, olddn, newdn, merge=False):
+	def before_rename(self, old_name, new_name, merge=False):
 		# Add company abbr if not provided
-		from erpnext.setup.doctype.company.company import get_name_with_abbr
-		new_warehouse = get_name_with_abbr(newdn, self.company)
+		new_warehouse = erpnext.encode_company_abbr(new_name, self.company)
 
 		if merge:
 			if not frappe.db.exists("Warehouse", new_warehouse):
@@ -143,64 +146,54 @@
 			if self.company != frappe.db.get_value("Warehouse", new_warehouse, "company"):
 				frappe.throw(_("Both Warehouse must belong to same Company"))
 
-		self.rename_account_for(olddn, new_warehouse, merge)
+		self.rename_account_for(old_name, new_warehouse, merge)
 
 		return new_warehouse
 
-	def rename_account_for(self, olddn, newdn, merge):
-		if self.is_group:
-			old_account = self.get_account()
-		else:
-			old_account = self.get_account(olddn)
+	def rename_account_for(self, old_name, new_name, merge):
+		old_account_name = frappe.get_value('Account', dict(warehouse=old_name))
 
-		if old_account:
-			new_account = None
+		if old_account_name:
 			if not merge:
-				if old_account == self.add_abbr_if_missing(olddn):
-					new_account = frappe.rename_doc("Account", old_account, newdn)
+				# old account name is same as old name, so rename the account too
+				if old_account_name == erpnext.encode_company_abbr(old_name, self.company):
+					frappe.rename_doc("Account", old_account_name, new_name)
 			else:
-				existing_new_account = self.get_account(newdn)
-				new_account = frappe.rename_doc("Account", old_account,
-					existing_new_account or newdn, merge=True if existing_new_account else False)
+				# merge
+				target_account = frappe.get_value('Account', dict(warehouse=new_name))
+				if target_account:
+					# target warehouse has account, merge into target account
+					frappe.rename_doc("Account", old_account_name,
+						target_account, merge=True)
+				else:
+					# target warehouse does not have account, use this account
+					frappe.rename_doc("Account", old_account_name,
+						new_name, merge=False)
 
-			frappe.db.set_value("Account", new_account or old_account, "warehouse", newdn)
+					# rename link
+					frappe.db.set_value('Account', new_name, 'warehouse', new_name)
 
-	def add_abbr_if_missing(self, dn):
-		from erpnext.setup.doctype.company.company import get_name_with_abbr
-		return get_name_with_abbr(dn, self.company)
+	def get_account(self):
+		return frappe.get_value('Account', dict(warehouse=self.name))
 
-	def get_account(self, warehouse=None):
-		filters = {
-			"account_type": "Stock",
-			"company": self.company,
-			"is_group": self.is_group
-		}
-
-		if warehouse:
-			filters.update({"warehouse": warehouse})
-		else:
-			filters.update({"account_name": self.warehouse_name})
-
-		return frappe.db.get_value("Account", filters)
-
-	def after_rename(self, olddn, newdn, merge=False):
+	def after_rename(self, old_name, new_name, merge=False):
 		if merge:
-			self.recalculate_bin_qty(newdn)
+			self.recalculate_bin_qty(new_name)
 
-	def recalculate_bin_qty(self, newdn):
+	def recalculate_bin_qty(self, new_name):
 		from erpnext.stock.stock_balance import repost_stock
 		frappe.db.auto_commit_on_many_writes = 1
 		existing_allow_negative_stock = frappe.db.get_value("Stock Settings", None, "allow_negative_stock")
 		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
-		repost_stock_for_items = frappe.db.sql_list("""select distinct item_code 
-			from tabBin where warehouse=%s""", newdn)
-		
+		repost_stock_for_items = frappe.db.sql_list("""select distinct item_code
+			from tabBin where warehouse=%s""", new_name)
+
 		# Delete all existing bins to avoid duplicate bins for the same item and warehouse
-		frappe.db.sql("delete from `tabBin` where warehouse=%s", newdn)
+		frappe.db.sql("delete from `tabBin` where warehouse=%s", new_name)
 
 		for item_code in repost_stock_for_items:
-			repost_stock(item_code, newdn)
+			repost_stock(item_code, new_name)
 
 		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock)
 		frappe.db.auto_commit_on_many_writes = 0
@@ -231,7 +224,7 @@
 		if self.check_if_sle_exists():
 			throw(_("Warehouses with existing transaction can not be converted to group."))
 		else:
-			account_name = self.get_account(self.name)
+			account_name = self.get_account()
 			if account_name:
 				doc = frappe.get_doc("Account", account_name)
 				doc.flags.exclude_account_type_check = True
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index b21cc3b..b9b11a8 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -73,7 +73,7 @@
 
 	out.update(get_pricing_rule_for_item(args))
 
-	if args.get("doctype") in ("Sales Invoice", "Delivery Note"):
+	if args.get("doctype") in ("Sales Invoice", "Delivery Note") and out.qty > 0:
 		out.serial_no = get_serial_no(out)
 
 	if args.transaction_date and item.lead_time_days:
@@ -239,7 +239,7 @@
 		if frappe.has_permission("Item Price", "write"):
 			price_list_rate = args.rate / args.conversion_factor \
 				if args.get("conversion_factor") else args.rate
-		
+
 			item_price = frappe.get_doc({
 				"doctype": "Item Price",
 				"price_list": args.price_list,
@@ -247,16 +247,16 @@
 				"currency": args.currency,
 				"price_list_rate": price_list_rate
 			})
-			
+
 			name = frappe.db.get_value('Item Price', {'item_code': args.item_code, 'price_list': args.price_list, 'currency': args.currency}, 'name')
-			
+
 			if name:
 				item_price = frappe.get_doc('Item Price', name)
 				item_price.price_list_rate = price_list_rate
-				item_price.save()	
+				item_price.save()
 				frappe.msgprint(_("Item Price updated for {0} in Price List {1}").format(args.item_code,
 					args.price_list))
-			else:	
+			else:
 				item_price.insert()
 				frappe.msgprint(_("Item Price added for {0} in Price List {1}").format(args.item_code,
 					args.price_list))
@@ -269,7 +269,7 @@
 	if args.get("price_list"):
 		if not frappe.db.get_value("Price List",
 			{"name": args.price_list, args.transaction_type: 1, "enabled": 1}):
-			throw(_("Price List {0} is disabled").format(args.price_list))
+			throw(_("Price List {0} is disabled or does not exist").format(args.price_list))
 	else:
 		throw(_("Price List not selected"))
 
@@ -382,12 +382,13 @@
 	args = frappe._dict({"item_code":item_code, "warehouse":warehouse, "qty":qty, "serial_no":serial_no})
 	serial_no = get_serial_no(args)
 	return {'serial_no': serial_no}
-	
+
 @frappe.whitelist()
 def get_bin_details_and_serial_nos(item_code, warehouse, qty=None, serial_no=None):
 	bin_details_and_serial_nos = {}
 	bin_details_and_serial_nos.update(get_bin_details(item_code, warehouse))
-	bin_details_and_serial_nos.update(get_serial_no_details(item_code, warehouse, qty, serial_no))
+	if qty > 0:
+		bin_details_and_serial_nos.update(get_serial_no_details(item_code, warehouse, qty, serial_no))
 	return bin_details_and_serial_nos
 
 @frappe.whitelist()
@@ -468,7 +469,7 @@
 			"enabled": 1}, ["name", "currency"], as_dict=True)
 
 		if not result:
-			throw(_("Price List {0} is disabled").format(price_list))
+			throw(_("Price List {0} is disabled or does not exist").format(price_list))
 
 		return result.currency
 
@@ -482,7 +483,7 @@
 	if (not plc_conversion_rate) or (price_list_currency and args.price_list_currency \
 		and price_list_currency != args.price_list_currency):
         # cksgb 19/09/2016: added args.transaction_date as posting_date argument for get_exchange_rate
-			plc_conversion_rate = get_exchange_rate(price_list_currency, args.currency, 
+			plc_conversion_rate = get_exchange_rate(price_list_currency, args.currency,
 				args.transaction_date) or plc_conversion_rate
 
 	return frappe._dict({
@@ -533,7 +534,7 @@
 		args = frappe._dict(args)
 
 	if args.get('warehouse') and args.get('qty') and args.get('item_code'):
-		
+
 		if frappe.get_value('Item', {'item_code': args.item_code}, "has_serial_no") == 1:
 			args = json.dumps({"item_code": args.get('item_code'),"warehouse": args.get('warehouse'),"qty": args.get('qty')})
 			args = process_args(args)
diff --git a/erpnext/fleet_management/report/vehicle_expenses/__init__.py b/erpnext/stock/report/batch_item_expiry_status/__init__.py
similarity index 100%
copy from erpnext/fleet_management/report/vehicle_expenses/__init__.py
copy to erpnext/stock/report/batch_item_expiry_status/__init__.py
diff --git a/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.js b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.js
new file mode 100644
index 0000000..eeeb9ad
--- /dev/null
+++ b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.js
@@ -0,0 +1,21 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.query_reports["Batch Item Expiry Status"] = {
+	"filters": [
+		{
+			"fieldname":"from_date",
+			"label": __("From Date"),
+			"fieldtype": "Date",
+			"width": "80",
+			"default": sys_defaults.year_start_date,
+		},
+		{
+			"fieldname":"to_date",
+			"label": __("To Date"),
+			"fieldtype": "Date",
+			"width": "80",
+			"default": frappe.datetime.get_today()
+		}
+	]
+}
diff --git a/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.json b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.json
new file mode 100644
index 0000000..d5d23ba
--- /dev/null
+++ b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.json
@@ -0,0 +1,18 @@
+{
+ "add_total_row": 0, 
+ "apply_user_permissions": 1, 
+ "creation": "2016-12-21 11:29:01.884436", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 0, 
+ "is_standard": "Yes", 
+ "modified": "2016-12-21 11:29:01.884436", 
+ "modified_by": "Administrator", 
+ "module": "Stock", 
+ "name": "Batch Item Expiry Status", 
+ "owner": "Administrator", 
+ "ref_doctype": "Stock Ledger Entry", 
+ "report_name": "Batch Item Expiry Status", 
+ "report_type": "Script Report"
+}
\ No newline at end of file
diff --git a/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py
new file mode 100644
index 0000000..7354eee
--- /dev/null
+++ b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py
@@ -0,0 +1,94 @@
+# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.utils import flt, cint, getdate
+
+def execute(filters=None):
+	if not filters: filters = {}
+
+	float_precision = cint(frappe.db.get_default("float_precision")) or 3
+
+	columns = get_columns(filters)
+	item_map = get_item_details(filters)
+	iwb_map = get_item_warehouse_batch_map(filters, float_precision)
+
+	data = []
+	for item in sorted(iwb_map):
+		for wh in sorted(iwb_map[item]):
+			for batch in sorted(iwb_map[item][wh]):
+				qty_dict = iwb_map[item][wh][batch]
+
+				data.append([item, item_map[item]["item_name"], item_map[item]["description"], wh, batch,
+					frappe.db.get_value('Batch', batch, 'expiry_date'), qty_dict.expiry_status
+				])
+			
+
+	return columns, data
+
+def get_columns(filters):
+	"""return columns based on filters"""
+
+	columns = [_("Item") + ":Link/Item:100"] + [_("Item Name") + "::150"] + [_("Description") + "::150"] + \
+	[_("Warehouse") + ":Link/Warehouse:100"] + [_("Batch") + ":Link/Batch:100"] + [_("Expires On") + ":Date:90"] + \
+	[_("Expiry (In Days)") + ":Int:120"]
+
+	return columns
+
+def get_conditions(filters):
+	conditions = ""
+	if not filters.get("from_date"):
+		frappe.throw(_("'From Date' is required"))
+
+	if filters.get("to_date"):
+		conditions += " and posting_date <= '%s'" % filters["to_date"]
+	else:
+		frappe.throw(_("'To Date' is required"))
+
+	return conditions
+
+def get_stock_ledger_entries(filters):
+	conditions = get_conditions(filters)
+	return frappe.db.sql("""select item_code, batch_no, warehouse,
+		posting_date, actual_qty
+		from `tabStock Ledger Entry`
+		where docstatus < 2 and ifnull(batch_no, '') != '' %s order by item_code, warehouse""" %
+		conditions, as_dict=1)
+
+def get_item_warehouse_batch_map(filters, float_precision):
+	sle = get_stock_ledger_entries(filters)
+	iwb_map = {}
+
+	from_date = getdate(filters["from_date"])
+	to_date = getdate(filters["to_date"])
+
+	for d in sle:
+		iwb_map.setdefault(d.item_code, {}).setdefault(d.warehouse, {})\
+			.setdefault(d.batch_no, frappe._dict({
+				"expires_on": None, "expiry_status": None}))
+
+		qty_dict = iwb_map[d.item_code][d.warehouse][d.batch_no]
+		
+		expiry_date_unicode = frappe.db.get_value('Batch', d.batch_no, 'expiry_date')
+		qty_dict.expires_on = expiry_date_unicode
+
+		exp_date = frappe.utils.data.getdate(expiry_date_unicode)
+		qty_dict.expires_on = exp_date
+
+		expires_in_days = (exp_date - frappe.utils.datetime.date.today()).days
+
+		if expires_in_days > 0:
+			qty_dict.expiry_status = expires_in_days
+		else:
+			qty_dict.expiry_status = 0
+
+	return iwb_map
+
+def get_item_details(filters):
+	item_map = {}
+	for d in frappe.db.sql("select name, item_name, description from tabItem", as_dict=1):
+		item_map.setdefault(d.name, d)
+
+	return item_map
diff --git a/erpnext/stock/report/serial_no_status/serial_no_status.json b/erpnext/stock/report/serial_no_status/serial_no_status.json
index cb4e70d..99b99f7 100644
--- a/erpnext/stock/report/serial_no_status/serial_no_status.json
+++ b/erpnext/stock/report/serial_no_status/serial_no_status.json
@@ -7,8 +7,8 @@
  "doctype": "Report", 
  "idx": 1, 
  "is_standard": "Yes", 
- "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.name\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"warehouse\", \"Serial No\"], [\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"], [\"purchase_document_no\", \"Serial No\"], [\"purchase_date\", \"Serial No\"], [\"customer\", \"Serial No\"], [\"customer_name\", \"Serial No\"], [\"purchase_rate\", \"Serial No\"], [\"delivery_document_no\", \"Serial No\"], [\"delivery_date\", \"Serial No\"], [\"supplier\", \"Serial No\"], [\"supplier_name\", \"Serial No\"]]}", 
- "modified": "2016-12-05 18:49:31.424300", 
+ "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.name\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"warehouse\", \"Serial No\"], [\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"], [\"purchase_document_type\", \"Serial No\"], [\"purchase_document_no\", \"Serial No\"], [\"purchase_date\", \"Serial No\"], [\"customer\", \"Serial No\"], [\"customer_name\", \"Serial No\"], [\"purchase_rate\", \"Serial No\"], [\"delivery_document_type\", \"Serial No\"], [\"delivery_document_no\", \"Serial No\"], [\"delivery_date\", \"Serial No\"], [\"supplier\", \"Serial No\"], [\"supplier_name\", \"Serial No\"]]}", 
+ "modified": "2017-02-14 18:50:31.424300", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Serial No Status", 
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 6797f8e..fd1ece2 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -45,6 +45,7 @@
 		
 	return sum(sle_map.values())
 
+@frappe.whitelist()
 def get_stock_balance(item_code, warehouse, posting_date=None, posting_time=None, with_valuation_rate=False):
 	"""Returns stock balance quantity at given warehouse on given posting date or current date.
 
@@ -191,4 +192,4 @@
 def is_group_warehouse(warehouse):
 	if frappe.db.get_value("Warehouse", warehouse, "is_group"):
 		frappe.throw(_("Group node warehouse is not allowed to select for transactions"))
-	
\ No newline at end of file
+	
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index 36d0876..2798f70 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -33,11 +33,11 @@
 			if not self.lead:
 				self.lead = frappe.db.get_value("Lead", {"email_id": email_id})
 			if not self.contact:
-				values = frappe.db.get_value("Contact",
-					{"email_id": email_id}, ("name", "customer"))
+				self.contact = frappe.db.get_value("Contact", {"email_id": email_id})
 
-				if values:
-					self.contact, self.customer = values
+				if self.contact:
+					contact = frappe.get_doc('Contact', self.contact)
+					self.customer = contact.get_link_for('Customer')
 
 			if not self.company:
 				self.company = frappe.db.get_value("Lead", self.lead, "company") or \
@@ -81,9 +81,14 @@
 	st.save()
 
 def auto_close_tickets():
-	frappe.db.sql("""update `tabIssue` set status = 'Closed'
-		where status = 'Replied'
-		and date_sub(curdate(),interval 15 Day) > modified""")
+	""" auto close the replied support tickets after 7 days """
+	issues = frappe.db.sql(""" select name from tabIssue where status='Replied' and
+		modified<DATE_SUB(CURDATE(), INTERVAL 7 DAY) """, as_dict=True)
+
+	for issue in issues:
+		doc = frappe.get_doc("Issue", issue.get("name"))
+		doc.status = "Closed"
+		doc.save(ignore_permissions=True)
 
 @frappe.whitelist()
 def set_multiple_status(names, status):
diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.js b/erpnext/support/doctype/warranty_claim/warranty_claim.js
index 9fed265..2369a8a 100644
--- a/erpnext/support/doctype/warranty_claim/warranty_claim.js
+++ b/erpnext/support/doctype/warranty_claim/warranty_claim.js
@@ -4,6 +4,10 @@
 frappe.provide("erpnext.support");
 
 frappe.ui.form.on("Warranty Claim", {
+	setup: function(frm) {
+		frm.set_query('contact_person', erpnext.queries.contact_query);
+		frm.set_query('customer_address', erpnext.queries.address_query);
+	},
 	customer: function(frm) {
 		erpnext.utils.get_party_details(frm);
 	},
@@ -17,6 +21,8 @@
 
 erpnext.support.WarrantyClaim = frappe.ui.form.Controller.extend({
 	refresh: function() {
+		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
+
 		if(!cur_frm.doc.__islocal &&
 			(cur_frm.doc.status=='Open' || cur_frm.doc.status == 'Work In Progress')) {
 			cur_frm.add_custom_button(__('Maintenance Visit'),
@@ -40,18 +46,6 @@
 		set_multiple(cdt,cdn,{status:'Open'});
 }
 
-cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) {
-	return{
-		filters:{ 'customer': doc.customer}
-	}
-}
-
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-	return{
-		filters:{ 'customer': doc.customer}
-	}
-}
-
 cur_frm.fields_dict['serial_no'].get_query = function(doc, cdt, cdn) {
 	var cond = [];
 	var filter = [
diff --git a/erpnext/templates/emails/recurring_document_failed.html b/erpnext/templates/emails/recurring_document_failed.html
index 56d8b80..9b88731 100644
--- a/erpnext/templates/emails/recurring_document_failed.html
+++ b/erpnext/templates/emails/recurring_document_failed.html
@@ -1,7 +1,7 @@
 <h2>Recurring {{ type }} Failed</h2>
 
 <p>An error occured while creating recurring {{ type }} <b>{{ name }}</b> for <b>{{ party }}</b>.</p>
-<p>This could be because of some invalid email ids in the {{ type }}.</p>
+<p>This could be because of some invalid Email Addresses in the {{ type }}.</p>
 <p>To stop sending repetitive error notifications from the system, we have unchecked
 "Convert into Recurring" field in the {{ type }} {{ name }}.</p>
 <p><b>Please correct the {{ type }} and make the {{ type }} recurring again.</b></p>
diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html
index 19dc204..f027644 100644
--- a/erpnext/templates/generators/item_group.html
+++ b/erpnext/templates/generators/item_group.html
@@ -6,7 +6,7 @@
  	<ul class="breadcrumb">
  		<li>
  			<span class="fa fa-angle-left"></span>
- 			<a href="/me">My Account</a>
+ 			<a href="/me">{{ _("My Account") }}</a>
  		</li>
  	</ul>
  </div>
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index a25f313..675b7af 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -13,7 +13,9 @@
 {% macro product_image(website_image, css_class="") %}
     <div class="product-image {% if not website_image -%} missing-image {%- endif %} {{ css_class }}">
     	{% if website_image -%}
-    		<img itemprop="image" src="{{ frappe.utils.quoted(website_image) | abs_url }}" class="img-responsive">
+			<a href="{{ frappe.utils.quoted(website_image) }}">
+				<img itemprop="image" src="{{ frappe.utils.quoted(website_image) | abs_url }}" class="img-responsive">
+			</a>
     	{%- endif %}
     </div>
 {% endmacro %}
diff --git a/erpnext/templates/includes/salary_slip_log.html b/erpnext/templates/includes/salary_slip_log.html
new file mode 100644
index 0000000..107df51
--- /dev/null
+++ b/erpnext/templates/includes/salary_slip_log.html
@@ -0,0 +1,19 @@
+<table class='table table-bordered'>
+	<caption>{{title}}</caption>
+	<thead>
+		<tr>
+		{% for key in keys %}
+			<th {% if key == "Total Pay"%} style="text-align: right;" {% endif %}> {{ key }} </th>
+		{% endfor %}
+		</tr>
+	</thead>
+	<tbody>
+		{% for ss_dict in ss_list %}
+			<tr>
+			{% for key, value in ss_dict.iteritems()|sort %}
+				<td {% if key == "Total Pay"%} align = "right" {% endif %}> {{value}} </td>
+			{% endfor %}
+			</tr>
+		{% endfor %}
+	</tbody>
+</table>
\ No newline at end of file
diff --git a/erpnext/templates/pages/announcements.html b/erpnext/templates/pages/announcements.html
deleted file mode 100644
index d6e0d73..0000000
--- a/erpnext/templates/pages/announcements.html
+++ /dev/null
@@ -1,20 +0,0 @@
-{% extends "templates/web.html" %}
-
-{% block header %}
-	<h1> {{doc.subject}} </h1>
-{% endblock %}
-
-{% block page_content %}
-
-<p class="post-description"> {{doc.description}} </p>
-<p class="post-by text-muted small">
-	{% for file in attached_files%}
-		<a href="{{file.file_url}}" target="_new">{{file.file_name}}</a>
-		<br>
-	{% endfor %}
-	<br>
-	<i>{{ doc.posted_by }}</i>
-	<i class="blog-dot"></i> {{ frappe.format_date(doc.modified) }}
-</p>
-
-{% endblock %}
\ No newline at end of file
diff --git a/erpnext/templates/pages/announcements.py b/erpnext/templates/pages/announcements.py
deleted file mode 100644
index 4a61fc8..0000000
--- a/erpnext/templates/pages/announcements.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-def get_context(context):
-	announcement = frappe.get_doc('Announcement', frappe.form_dict.announcement)
-	context.no_cache = 1
-	context.show_sidebar = True
-	announcement.has_permission('read')
-	context.doc = announcement
-	attachments = frappe.db.sql("""select file_url, file_name from tabFile as file
-								where file.attached_to_name=%s """,(announcement.name), as_dict = True)
-
-	context.attached_files = attachments
-
-
diff --git a/erpnext/templates/pages/courses.py b/erpnext/templates/pages/courses.py
index 5b1410e..c80d8e7 100644
--- a/erpnext/templates/pages/courses.py
+++ b/erpnext/templates/pages/courses.py
@@ -15,14 +15,6 @@
 	course = frappe.get_doc('Course', frappe.form_dict.course)
 	course.has_permission('read')
 	context.doc = course
-	portal_items = [{'reference_doctype': u'Topic', 'route': u"/topic?course=" + str(course.name), 'show_always': 0L, 'title': u'Topics'},
-				{'reference_doctype': u'Discussion', 'route': u"/discussion?course=" + str(course.name), 'show_always': 0L, 'title': u'Discussions'},
-
-	]
-
-	context.sidebar_items = portal_items
-
 	context.sidebar_title = sidebar_title
-
 	context.intro = course.course_intro
 
diff --git a/erpnext/templates/pages/demo.html b/erpnext/templates/pages/demo.html
index 8db6ad2..108319f 100644
--- a/erpnext/templates/pages/demo.html
+++ b/erpnext/templates/pages/demo.html
@@ -48,23 +48,23 @@
 {% endblock %}
 
 {% block page_content %}
+<div class='page-card'>
 
-<!-- no-header -->
-<div class="page-hero text-center">
-	<img src="/assets/erpnext/images/erp-icon.svg" style="max-width: 100px; max-height: 100px;">
-	<h1>ERPNext Demo</h1>
-	<p style="margin-top: 60px;">
-		<input id="lead-email" type="email"
-			class="form-control" placeholder="Your Email Id (optional)"
-			style="width: 75%; max-width: 400px; margin: auto;">
-	</p>
-
-	<button type="submit" id="login_btn" class="btn btn-default">Launch Demo</button>
-
-	<hr style="margin: 60px 0px;">
-	<p class="text-muted small">Some functionality is disabled for the demo app. The demo data will be cleared regulary.
-		<br class="hidden-xs">
-		To start your free ERPNext account, <a href="https://erpnext.com/signup?plan=Free-Solo">click here</a></p>
+	<div class='page-card-head'>
+		<span class='indicator blue'>
+			{{ _("ERPNext Demo") }}</span>
+	</div>
+	<!-- <img src="/assets/erpnext/images/erp-icon.svg" style="max-width: 40px; max-height: 40px;"> -->
+	<p>Some functionality is disabled for the demo and the data will be cleared regulary.</p>
+	<div><button type="submit" id="login_btn" class="btn btn-primary btn-sm">Launch Demo</button></div>
 </div>
 
+
+<p class='text-muted text-center small' style='margin-top: -20px;'><a href="https://erpnext.com/signup?plan=Free-Solo">Sign up for a Free ERPNext.com account here</a>
+</p>
+<style>
+html, body {
+	background-color: #f5f7fa;
+}
+</style>
 {% endblock %}
diff --git a/erpnext/templates/pages/discussions.html b/erpnext/templates/pages/discussions.html
deleted file mode 100644
index 28eb01f..0000000
--- a/erpnext/templates/pages/discussions.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "templates/web.html" %}
-
-{% block header %}
-	<h2> {{doc.subject}} </h2>
-	<p> {{doc.description}} </p>
-	<p class="text-muted small">Started by: {{doc.owner}} </p>
-{% endblock %}
-
-{% block page_content %}
-
-<div>
-	{% include 'templates/includes/comments/comments.html' %}
-</div>
-
-{% endblock %}
diff --git a/erpnext/templates/pages/discussions.py b/erpnext/templates/pages/discussions.py
deleted file mode 100644
index 22a1bef..0000000
--- a/erpnext/templates/pages/discussions.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.website.utils import get_comment_list
-
-def get_context(context):
-	context.doc = frappe.get_doc('Discussion', frappe.form_dict.discussion)
-	portal_items = [{'reference_doctype': u'Topic', 'route': u"/topic?course=" + str(context.doc.course), 'show_always': 0L, 'title': u'Topics'},
-				{'reference_doctype': u'Discussion', 'route': u"/discussion?course=" + str(context.doc.course), 'show_always': 0L, 'title': u'Discussions'},
-
-	]
-	context.show_sidebar = True
-	context.sidebar_items = portal_items
-	context.no_cache = 1
-	context.doc.has_permission('read')
-	context.sidebar_title = context.doc.course
-	context.reference_doctype = "Discussion"
-	context.reference_name = context.doc.name
-	context.comment_list = get_comment_list(context.doc.doctype,context.doc.name)
\ No newline at end of file
diff --git a/erpnext/templates/pages/projects.html b/erpnext/templates/pages/projects.html
index aeee602..765e43f 100644
--- a/erpnext/templates/pages/projects.html
+++ b/erpnext/templates/pages/projects.html
@@ -24,7 +24,7 @@
 
 <div class="clearfix">
   <h4 style="float: left;">{{ _("Tasks") }}</h4>
-  <a class="btn btn-secondary btn-default btn-sm" style="float: right; position: relative; top: 10px;" href='/tasks?new=1&project={{ doc.project_name }}'>New task</a>
+  <a class="btn btn-secondary btn-default btn-sm" style="float: right; position: relative; top: 10px;" href='/tasks?new=1&project={{ doc.project_name }}'>{{ _("New task") }}</a>
 </div>
 
 <p>
@@ -39,7 +39,7 @@
 		<p><a id= 'more-task' style='display: none;' class='more-tasks small underline'>{{ _("More") }}</a><p>
 	</div>
 {% else %}
-	<p class="text-muted">No tasks</p>
+	<p class="text-muted">{{ _("No tasks") }}</p>
 {% endif %}
 
 
@@ -55,7 +55,7 @@
 		<p><a class='more-timelogs small underline'>{{ _("More") }}</a><p>
 	{% endif %}
 {% else %}
-	<p class="text-muted">No time sheets</p>
+	<p class="text-muted">{{ _("No time sheets") }}</p>
 {% endif %}
 </div>
 
diff --git a/erpnext/templates/pages/task_info.html b/erpnext/templates/pages/task_info.html
index 7cc5594..f386ce8 100644
--- a/erpnext/templates/pages/task_info.html
+++ b/erpnext/templates/pages/task_info.html
@@ -86,7 +86,8 @@
 	<h3>Comments</h3>
 	<div class="no-comment">
 		{% for comment in comments %}
-			<p class="text-muted">{{comment.sender_full_name}} : {{comment.subject}} on 									   									{{comment.communication_date.strftime('%Y-%m-%d')}}</p>
+			<p class="text-muted">{{comment.sender_full_name}}:
+				{{comment.subject}} on 									   				{{comment.creation.strftime('%Y-%m-%d')}}</p>
 		{% endfor %}
 	</div>
 	<div class="comment-form-wrapper">
diff --git a/erpnext/templates/pages/topics.html b/erpnext/templates/pages/topics.html
deleted file mode 100644
index 94d7a17..0000000
--- a/erpnext/templates/pages/topics.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "templates/web.html" %}
-
-
-{% block header %}
-	<h2> {{ doc.introduction }} </h1>
-{% endblock %}
-
-{% block page_content %}
-
-<p class="post-description"> {{ doc.content }} </p>
-
-{% endblock %}
\ No newline at end of file
diff --git a/erpnext/templates/pages/topics.py b/erpnext/templates/pages/topics.py
deleted file mode 100644
index 8a55b64..0000000
--- a/erpnext/templates/pages/topics.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-
-def get_context(context):
-	topic = frappe.get_doc('Topic', frappe.form_dict.topic)
-	context.no_cache = 1
-	context.show_sidebar = True
-	context.doc = topic
-	attachments = frappe.db.sql("""select file_url, file_name from tabFile as file
-								where file.attached_to_name=%s """,(topic.name), as_dict = True)
-
-	context.attached_files = attachments
diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py
index 94f9242..c1405c3 100644
--- a/erpnext/templates/utils.py
+++ b/erpnext/templates/utils.py
@@ -34,6 +34,8 @@
 
 	if customer:
 		opportunity.customer = customer
+	elif lead:
+		opportunity.lead = lead
 	else:
 		opportunity.lead = new_lead.name
 
diff --git a/erpnext/tests/utils.py b/erpnext/tests/utils.py
new file mode 100644
index 0000000..7024b0d
--- /dev/null
+++ b/erpnext/tests/utils.py
@@ -0,0 +1,36 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+
+def create_test_contact_and_address():
+	frappe.db.sql('delete from tabContact')
+	frappe.db.sql('delete from tabAddress')
+	frappe.db.sql('delete from `tabDynamic Link`')
+
+	frappe.get_doc(dict(
+		doctype='Address',
+		address_title='_Test Address for Customer',
+		address_type='Office',
+		address_line1='Station Road',
+		city='_Test City',
+		state='Test State',
+		country='India',
+		links = [dict(
+			link_doctype='Customer',
+			link_name='_Test Customer'
+		)]
+	)).insert()
+
+	frappe.get_doc(dict(
+		doctype='Contact',
+		email_id='test_contact_customer@example.com',
+		phone='+91 0000000000',
+		first_name='_Test Contact for _Test Customer',
+		links = [dict(
+			link_doctype='Customer',
+			link_name='_Test Customer'
+		)]
+	)).insert()
diff --git a/erpnext/translations/am.csv b/erpnext/translations/am.csv
index 845f0b1..192bdef 100644
--- a/erpnext/translations/am.csv
+++ b/erpnext/translations/am.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,መጠን መቀነስ በኋላ
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,መጪ የቀን መቁጠሪያ ክስተቶች
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,ወር እና ዓመት ይምረጡ
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","በኮማ የተለዩ ያስገቡ የኢሜይል መታወቂያ, መጠየቂያ የተወሰነ ቀን ላይ በራስ-ሰር በፖስታ ቤት ይሆናል"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","በኮማ የተለዩ ያስገቡ የኢሜይል መታወቂያ, መጠየቂያ የተወሰነ ቀን ላይ በራስ-ሰር በፖስታ ቤት ይሆናል"
 DocType: Employee,Company Email,የኩባንያ ኢሜይል
 DocType: GL Entry,Debit Amount in Account Currency,መለያ ምንዛሬ ውስጥ ዴት መጠን
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,ፓርቲ ላይ ወይም የውስጥ ለማስተላለፍ ባንክ / ጥሬ ገንዘብ ግብይቶች
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,ቅድመ-የቀጣሪ
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,መለያ {0} በርካታ ጊዜ ገብቷል ታይቷል
 DocType: Account,Expenses Included In Valuation,ወጪዎች ግምቱ ውስጥ ተካቷል
-DocType: Employee,Provide email id registered in company,ኩባንያ ውስጥ የተመዘገበ የኢሜይል መታወቂያ መስጠት
+DocType: Employee,Provide Email Address registered in company,ኩባንያ ውስጥ የተመዘገበ የኢሜይል መታወቂያ መስጠት
 DocType: Hub Settings,Seller City,ሻጭ ከተማ
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,አንድ ተማሪ ቡድን እባክዎ ይምረጡ
 ,Absent Student Report,ብርቅ የተማሪ ሪፖርት
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ሰማያዊ
 DocType: Purchase Invoice,Is Return,መመለሻ ነው
 DocType: Price List Country,Price List Country,የዋጋ ዝርዝር አገር
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,የኢሜይል መታወቂያ ማዘጋጀት እባክዎ
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,የኢሜይል መታወቂያ ማዘጋጀት እባክዎ
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} ንጥል ትክክለኛ ተከታታይ ቁጥሮች {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,ንጥል ኮድ መለያ ቁጥር ሊቀየር አይችልም
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,ተግባር ላይ ይመረኮዛል
 DocType: Supplier Quotation,Opportunity,ዕድል
 ,Completed Production Orders,ተጠናቋል የምርት ትዕዛዞች
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,ረድፍ {0}: አቅራቢ ለማግኘት {0} የኢሜይል መታወቂያ ኢሜይል መላክ ያስፈልጋል
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,ረድፍ {0}: አቅራቢ ለማግኘት {0} የኢሜይል መታወቂያ ኢሜይል መላክ ያስፈልጋል
 DocType: Operation,Default Workstation,ነባሪ ከገቢር
 DocType: Notification Control,Expense Claim Approved Message,ወጪ የይገባኛል ጥያቄ ፀድቋል መልዕክት
 DocType: Payment Entry,Deductions or Loss,ቅናሽ ወይም ማጣት
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,የመተግበሪያ ክፍለ ጊዜ ሁለት alocation መዝገቦች ላይ መሆን አይችልም
 DocType: Item Group,Default Expense Account,ነባሪ የወጪ መለያ
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,የተማሪ ባች ወይም የትምህርት ፕሮግራም የግዴታ ነው
-DocType: Student,Student Email ID,የተማሪ የኢሜይል መታወቂያ
+DocType: Student,Student Email Address,የተማሪ የኢሜይል መታወቂያ
 DocType: Employee,Notice (days),ማስታወቂያ (ቀናት)
 DocType: Tax Rule,Sales Tax Template,የሽያጭ ግብር አብነት
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ወደ መጠየቂያ ለማስቀመጥ ንጥሎችን ምረጥ
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,ይመልከቱ እርሳሶች
 DocType: Program Enrollment Tool,New Program,አዲስ ፕሮግራም
 DocType: Item Attribute Value,Attribute Value,ዋጋ ይስጡ
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","የኢሜይል መታወቂያ አስቀድሞ ስለ አለ, ልዩ መሆን አለበት {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","የኢሜይል መታወቂያ አስቀድሞ ስለ አለ, ልዩ መሆን አለበት {0}"
 ,Itemwise Recommended Reorder Level,Itemwise አስይዝ ደረጃ የሚመከር
 DocType: Salary Detail,Salary Detail,ደመወዝ ዝርዝር
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,በመጀመሪያ {0} እባክዎ ይምረጡ
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,የፕሮጀክት እንቅስቃሴ / ተግባር.
 DocType: Vehicle Log,Refuelling Details,Refuelling ዝርዝሮች
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,ደመወዝ ቡቃያ አመንጭ
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,ቀጣይ የእውቂያ በ ቀዳሚ የኢሜይል መታወቂያ ጋር ተመሳሳይ ሊሆን አይችልም
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,ቀጣይ የእውቂያ በ ቀዳሚ የኢሜይል መታወቂያ ጋር ተመሳሳይ ሊሆን አይችልም
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","የሚመለከታቸው ያህል ሆኖ ተመርጧል ከሆነ መግዛትና, ምልክት መደረግ አለበት {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ቅናሽ ከ 100 መሆን አለበት
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,የመጨረሻው የግዢ መጠን አልተገኘም
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,ንጥል ግብር
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,አቅራቢው ቁሳዊ
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,ኤክሳይስ ደረሰኝ
-DocType: Expense Claim,Employees Email Id,ሰራተኞች ኢሜይል መታወቂያ
+DocType: Expense Claim,Employees Email Address,ሰራተኞች ኢሜይል መታወቂያ
 DocType: Employee Attendance Tool,Marked Attendance,ምልክት ተደርጎበታል ክትትል
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,የቅርብ ግዜ አዳ
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,የመገናኛ ኤስ የእርስዎን እውቂያዎች ላክ
diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv
index ce395d8..1ed21ea 100644
--- a/erpnext/translations/ar.csv
+++ b/erpnext/translations/ar.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,المبلغ بعد الاستهلاك
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,الأحداث القادمة
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,الرجاء اختيار الشهر والسنة
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",أدخل البريد الإلكتروني معرف مفصولة بفواصل، سوف ترسل الفاتورة تلقائيا على تاريخ معين
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",أدخل البريد الإلكتروني معرف مفصولة بفواصل، سوف ترسل الفاتورة تلقائيا على تاريخ معين
 DocType: Employee,Company Email,شركة البريد الإلكتروني
 DocType: GL Entry,Debit Amount in Account Currency,مقدار الخصم في حساب العملات
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,المعاملات المصرفية / النقدية ضد طرف أو لنقل الداخلي
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,معاينة زلة الراتب
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,الحساب {0} تم إدخاله عدة مرات
 DocType: Account,Expenses Included In Valuation,النفقات المشملة في التقييم
-DocType: Employee,Provide email id registered in company,توفير معرف البريد الإلكتروني المسجلة في الشركة
+DocType: Employee,Provide Email Address registered in company,توفير معرف البريد الإلكتروني المسجلة في الشركة
 DocType: Hub Settings,Seller City,مدينة البائع
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,الرجاء اختيار المجموعة الطلابية
 ,Absent Student Report,تقرير الطالب غائب
@@ -1129,7 +1129,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,أزرق
 DocType: Purchase Invoice,Is Return,هو العائد
 DocType: Price List Country,Price List Country,قائمة الأسعار البلد
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,الرجاء تعيين ID البريد الإلكتروني
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,الرجاء تعيين ID البريد الإلكتروني
 DocType: Item,UOMs,وحدات القياس
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} أرقام متسلسلة صالحة للصنف {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,لا يمكن تغيير رمز المدينة لل رقم التسلسلي
@@ -2220,7 +2220,7 @@
 DocType: Task Depends On,Task Depends On,المهمة تعتمد على
 DocType: Supplier Quotation,Opportunity,فرصة
 ,Completed Production Orders,أوامر الإنتاج المنتهية
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,صف {0}: بالنسبة للمورد مطلوب {0} معرف البريد الإلكتروني لإرسال البريد الإلكتروني
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,صف {0}: بالنسبة للمورد مطلوب {0} معرف البريد الإلكتروني لإرسال البريد الإلكتروني
 DocType: Operation,Default Workstation,محطة العمل الافتراضية
 DocType: Notification Control,Expense Claim Approved Message,المطالبة حساب المعتمدة رسالة
 DocType: Payment Entry,Deductions or Loss,الخصومات أو الخسارة
@@ -3700,7 +3700,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,فترة التطبيق لا يمكن أن يكون عبر اثنين من السجلات alocation
 DocType: Item Group,Default Expense Account,حساب النفقات الإفتراضي
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,دفعة الطالب أو الجدول الدراسي إلزامي
-DocType: Student,Student Email ID,طالب معرف البريد الإلكتروني
+DocType: Student,Student Email Address,طالب معرف البريد الإلكتروني
 DocType: Employee,Notice (days),إشعار (أيام )
 DocType: Tax Rule,Sales Tax Template,قالب ضريبة المبيعات
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,تحديد عناصر لحفظ الفاتورة
@@ -3851,7 +3851,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,مشاهدة العروض
 DocType: Program Enrollment Tool,New Program,برنامج جديد
 DocType: Item Attribute Value,Attribute Value,السمة القيمة
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",يجب أن يكون البريد الإلكتروني معرف فريد ، موجود بالفعل ل {0}
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",يجب أن يكون البريد الإلكتروني معرف فريد ، موجود بالفعل ل {0}
 ,Itemwise Recommended Reorder Level,يوصى به Itemwise إعادة ترتيب مستوى
 DocType: Salary Detail,Salary Detail,تفاصيل الراتب
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,الرجاء اختيار {0} الأولى
@@ -4053,7 +4053,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,مشروع النشاط / المهمة.
 DocType: Vehicle Log,Refuelling Details,تفاصيل إعادة التزود بالوقود
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,إنشاء زلات الراتب
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,التالي اتصل بنا عن طريق لا يمكن أن يكون نفس معرف البريد الإلكتروني الرصاص
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,التالي اتصل بنا عن طريق لا يمكن أن يكون نفس معرف البريد الإلكتروني الرصاص
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",يجب أن يتم التحقق الشراء، إذا تم تحديد مطبق للك {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,يجب أن يكون الخصم أقل من 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,آخر سعر شراء لم يتم العثور على
@@ -4349,7 +4349,7 @@
 DocType: Item,Item Tax,البند الضرائب
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,المواد للمورد ل
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,المكوس الفاتورة
-DocType: Expense Claim,Employees Email Id,موظف البريد الإلكتروني معرف
+DocType: Expense Claim,Employees Email Address,موظف البريد الإلكتروني معرف
 DocType: Employee Attendance Tool,Marked Attendance,الحضور ملحوظ
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,الخصوم الحالية
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,إرسال SMS الشامل لجهات الاتصال الخاصة بك
diff --git a/erpnext/translations/bg.csv b/erpnext/translations/bg.csv
index 57df48a..fd4655b 100644
--- a/erpnext/translations/bg.csv
+++ b/erpnext/translations/bg.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Сума след амортизация
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Предстоящи Календар на събитията
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Моля, изберете месец и година"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Въведете имейл ID разделени със запетаи, фактура ще бъде изпратено автоматично на определена дата"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Въведете имейл ID разделени със запетаи, фактура ще бъде изпратено автоматично на определена дата"
 DocType: Employee,Company Email,Фирма Email
 DocType: GL Entry,Debit Amount in Account Currency,Debit Сума в Account валути
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Касови операции срещу партия или за вътрешно прехвърляне
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Преглед Заплата Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Сметка {0} е била въведена на няколко пъти
 DocType: Account,Expenses Included In Valuation,"Разходи, включени в остойностяване"
-DocType: Employee,Provide email id registered in company,Осигуряване на имейл ID регистриран в компания
+DocType: Employee,Provide Email Address registered in company,Осигуряване на имейл ID регистриран в компания
 DocType: Hub Settings,Seller City,Продавач City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Моля, изберете Student Group"
 ,Absent Student Report,Отсъства Student Доклад
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Син
 DocType: Purchase Invoice,Is Return,Дали Return
 DocType: Price List Country,Price List Country,Ценоразпис Country
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,"Моля, задайте Email ID"
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,"Моля, задайте Email Address"
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} валидни серийни номера за Артикул {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Код не може да се променя за Serial No.
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Task зависи от
 DocType: Supplier Quotation,Opportunity,Opportunity
 ,Completed Production Orders,Изпълнени поръчки
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: За доставчика {0} имейл ID е необходимо да изпратите имейл
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: За доставчика {0} имейл ID е необходимо да изпратите имейл
 DocType: Operation,Default Workstation,Default Workstation
 DocType: Notification Control,Expense Claim Approved Message,Expense претенция Одобрен Message
 DocType: Payment Entry,Deductions or Loss,Удръжки или загуба
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Срок за кандидатстване не може да бъде в два alocation записи
 DocType: Item Group,Default Expense Account,Default Expense Account
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch или Course График е задължително
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Известие (дни)
 DocType: Tax Rule,Sales Tax Template,Данъка върху продажбите Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Изберете, за да пести фактурата"
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Вижте Leads
 DocType: Program Enrollment Tool,New Program,Нова програма
 DocType: Item Attribute Value,Attribute Value,Атрибут Стойност
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email ID трябва да бъде уникален, вече съществува за {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address трябва да бъде уникален, вече съществува за {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Препоръчано Пренареждане Level
 DocType: Salary Detail,Salary Detail,Заплата Подробности
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Моля изберете {0} първия
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Дейността на проект / задача.
 DocType: Vehicle Log,Refuelling Details,зареждане с гориво Детайли
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Генериране на заплатите фишове
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Следваща Контакт не може да бъде същата като на Водещия Email ID
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Следваща Контакт не може да бъде същата като на Водещия Email Address
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Изкупуването трябва да се провери, ако има такива се избира като {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Отстъпка трябва да е по-малко от 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Последно процент покупка не е намерен
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Позиция Tax
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Материал на доставчик
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Акцизите Invoice
-DocType: Expense Claim,Employees Email Id,Служители Email Id
+DocType: Expense Claim,Employees Email Address,Служители Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Маркирана Присъствие
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Текущи задължения
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Изпратете маса SMS към вашите контакти
diff --git a/erpnext/translations/bn.csv b/erpnext/translations/bn.csv
index 40c2a5c..dd661d2 100644
--- a/erpnext/translations/bn.csv
+++ b/erpnext/translations/bn.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,পরিমাণ অবচয় পর
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,আসন্ন ক্যালেন্ডার ইভেন্টস
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,মাস এবং বছর নির্বাচন করুন
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","কমা দ্বারা পৃথকীকৃত লিখুন ইমেইল আইডি, চালান নির্দিষ্ট তারিখে স্বয়ংক্রিয়ভাবে পাঠানো হবে"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","কমা দ্বারা পৃথকীকৃত লিখুন ইমেইল আইডি, চালান নির্দিষ্ট তারিখে স্বয়ংক্রিয়ভাবে পাঠানো হবে"
 DocType: Employee,Company Email,কোম্পানি ইমেইল
 DocType: GL Entry,Debit Amount in Account Currency,অ্যাকাউন্টের মুদ্রা ডেবিট পরিমাণ
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,ব্যাংক / ক্যাশ দলের বিরুদ্ধে বা অভ্যন্তরীণ স্থানান্তরের জন্য লেনদেন
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,প্রি বেতন স্লিপ
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,অ্যাকাউন্ট {0} একাধিক বার প্রবেশ করানো হয়েছে
 DocType: Account,Expenses Included In Valuation,খরচ মূল্যনির্ধারণ অন্তর্ভুক্ত
-DocType: Employee,Provide email id registered in company,কোম্পানি নিবন্ধিত ইমেইল আইডি প্রদান
+DocType: Employee,Provide Email Address registered in company,কোম্পানি নিবন্ধিত ইমেইল আইডি প্রদান
 DocType: Hub Settings,Seller City,বিক্রেতা সিটি
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,একটি শিক্ষার্থীর গ্রুপ নির্বাচন করুন
 ,Absent Student Report,অনুপস্থিত শিক্ষার্থীর প্রতিবেদন
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,নীল
 DocType: Purchase Invoice,Is Return,ফিরে যেতে হবে
 DocType: Price List Country,Price List Country,মূল্যতালিকা দেশ
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ইমেইল আইডি সেট করুন
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ইমেইল আইডি সেট করুন
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} আইটেম জন্য বৈধ সিরিয়াল আমরা {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,আইটেম কোড সিরিয়াল নং জন্য পরিবর্তন করা যাবে না
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,কাজের উপর নির্ভর করে
 DocType: Supplier Quotation,Opportunity,সুযোগ
 ,Completed Production Orders,সম্পূর্ণ উৎপাদন আদেশ
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,সারি {0}: সরবরাহকারী জন্য {0} ইমেইল আইডি ইমেল পাঠাতে প্রয়োজন বোধ করা হয়
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,সারি {0}: সরবরাহকারী জন্য {0} ইমেইল আইডি ইমেল পাঠাতে প্রয়োজন বোধ করা হয়
 DocType: Operation,Default Workstation,ডিফল্ট ওয়ার্কস্টেশন
 DocType: Notification Control,Expense Claim Approved Message,ব্যয় দাবি অনুমোদিত পাঠান
 DocType: Payment Entry,Deductions or Loss,Deductions বা হ্রাস
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,আবেদনের সময় দুই alocation রেকর্ড জুড়ে হতে পারে না
 DocType: Item Group,Default Expense Account,ডিফল্ট ব্যায়ের অ্যাকাউন্ট
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,ছাত্র ব্যাচ বা কোর্সের সময়সূচী বাধ্যতামূলক
-DocType: Student,Student Email ID,স্টুডেন্ট ইমেইল আইডি
+DocType: Student,Student Email Address,স্টুডেন্ট ইমেইল আইডি
 DocType: Employee,Notice (days),নোটিশ (দিন)
 DocType: Tax Rule,Sales Tax Template,সেলস ট্যাক্স টেমপ্লেট
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,চালান সংরক্ষণ আইটেম নির্বাচন করুন
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,দেখুন বাড়ে
 DocType: Program Enrollment Tool,New Program,নতুন প্রোগ্রাম
 DocType: Item Attribute Value,Attribute Value,মূল্য গুন
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ইমেইল আইডি ইতিমধ্যে বিদ্যমান নেই, অনন্য হওয়া আবশ্যক {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ইমেইল আইডি ইতিমধ্যে বিদ্যমান নেই, অনন্য হওয়া আবশ্যক {0}"
 ,Itemwise Recommended Reorder Level,Itemwise রেকর্ডার শ্রেনী প্রস্তাবিত
 DocType: Salary Detail,Salary Detail,বেতন বিস্তারিত
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,প্রথম {0} দয়া করে নির্বাচন করুন
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,প্রকল্পের কার্যকলাপ / টাস্ক.
 DocType: Vehicle Log,Refuelling Details,ফুয়েলিং বিস্তারিত
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,বেতন Slips নির্মাণ
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,পরবর্তী সংস্পর্শের মাধ্যমে লিড ইমেল আইডি একই হতে পারে না
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,পরবর্তী সংস্পর্শের মাধ্যমে লিড ইমেল আইডি একই হতে পারে না
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","প্রযোজ্য হিসাবে নির্বাচিত করা হয় তাহলে কেনার, চেক করা আবশ্যক {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,বাট্টা কম 100 হতে হবে
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,সর্বশেষ ক্রয় হার পাওয়া যায়নি
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,আইটেমটি ট্যাক্স
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,সরবরাহকারী উপাদান
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,আবগারি চালান
-DocType: Expense Claim,Employees Email Id,এমপ্লয়িজ ইমেইল আইডি
+DocType: Expense Claim,Employees Email Address,এমপ্লয়িজ ইমেইল আইডি
 DocType: Employee Attendance Tool,Marked Attendance,চিহ্নিত এ্যাটেনডেন্স
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,বর্তমান দায়
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ভর এসএমএস আপনার পরিচিতি পাঠান
diff --git a/erpnext/translations/bs.csv b/erpnext/translations/bs.csv
index 15d0a07..06b64e0 100644
--- a/erpnext/translations/bs.csv
+++ b/erpnext/translations/bs.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Iznos nakon Amortizacija
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Najave Kalendar događanja
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Molimo odaberite mjesec i godinu
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Unesite e-mail ID odvojena zarezima, račun će automatski biti poslan na određeni datum"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Unesite e-mail ID odvojena zarezima, račun će automatski biti poslan na određeni datum"
 DocType: Employee,Company Email,Zvanični e-mail
 DocType: GL Entry,Debit Amount in Account Currency,Debit Iznos u računu valuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,transakcije protiv stranke ili za internu Transakcija / Cash
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Plaća Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Račun {0} je ušao više puta
 DocType: Account,Expenses Included In Valuation,Troškovi uključeni u vrednovanje
-DocType: Employee,Provide email id registered in company,Osigurati e id registriran u tvrtki
+DocType: Employee,Provide Email Address registered in company,Osigurati e id registriran u tvrtki
 DocType: Hub Settings,Seller City,Prodavač City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Molimo odaberite Student Group
 ,Absent Student Report,Odsutan Student Report
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Plava boja
 DocType: Purchase Invoice,Is Return,Je li povratak
 DocType: Price List Country,Price List Country,Cijena Lista država
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Molimo podesite mail ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Molimo podesite mail ID
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} valjani serijski broj za artikal {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kod artikla ne može se mijenjati za serijski broj.
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Zadatak ovisi o
 DocType: Supplier Quotation,Opportunity,Prilika (Opportunity)
 ,Completed Production Orders,Završeni Radni nalozi
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Red {0}: Za dobavljač {0} email id je potrebna za slanje e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Red {0}: Za dobavljač {0} Email Address je potrebna za slanje e-mail
 DocType: Operation,Default Workstation,Uobičajeno Workstation
 DocType: Notification Control,Expense Claim Approved Message,Rashodi Zahtjev Odobren poruku
 DocType: Payment Entry,Deductions or Loss,Smanjenja ili gubitak
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Period aplikacija ne može biti na dva alocation Records
 DocType: Item Group,Default Expense Account,Zadani račun rashoda
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch ili Terminski plan je obavezno
-DocType: Student,Student Email ID,Student-mail ID
+DocType: Student,Student Email Address,Student-mail ID
 DocType: Employee,Notice (days),Obavijest (dani )
 DocType: Tax Rule,Sales Tax Template,Porez na promet Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Odaberite stavke za spremanje fakture
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Pogledaj potencijalne kupce
 DocType: Program Enrollment Tool,New Program,novi program
 DocType: Item Attribute Value,Attribute Value,Vrijednost atributa
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email ID mora biti jedinstven , već postoji za {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address mora biti jedinstven , već postoji za {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Preporučio redoslijeda Level
 DocType: Salary Detail,Salary Detail,Plaća Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Odaberite {0} Prvi
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projektna aktivnost / zadatak.
 DocType: Vehicle Log,Refuelling Details,Dopuna goriva Detalji
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generiranje plaće gaćice
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Sljedeća kontaktirati putem ne može biti isti kao Lead-mail id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Sljedeća kontaktirati putem ne može biti isti kao Lead-mail id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Kupnja treba provjeriti, ako je primjenjivo za odabrano kao {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Rabatt mora biti manji od 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Zadnje kupovinu stopa nije pronađen
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,Porez artikla
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materijal dobavljaču
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Akcizama Račun
-DocType: Expense Claim,Employees Email Id,Zaposlenici Email ID
+DocType: Expense Claim,Employees Email Address,Zaposlenici Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Označena Posjeta
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kratkoročne obveze
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Pošalji masovne SMS poruke svojim kontaktima
diff --git a/erpnext/translations/ca.csv b/erpnext/translations/ca.csv
index 7db01d7..2448cf5 100644
--- a/erpnext/translations/ca.csv
+++ b/erpnext/translations/ca.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Després quantitat Depreciació
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Calendari d&#39;Esdeveniments Pròxims
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Selecciona el mes i l'any
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Introduïu correu electrònic d'identificació separades per comes, la factura serà enviada automàticament en particular, la data"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Introduïu correu electrònic d'identificació separades per comes, la factura serà enviada automàticament en particular, la data"
 DocType: Employee,Company Email,Email de l'empresa
 DocType: GL Entry,Debit Amount in Account Currency,Suma Dèbit en Compte moneda
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Operacions bancàries / efectiu contra la part que pertanyin a
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Salari vista prèvia de lliscament
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Compte {0} s&#39;ha introduït diverses vegades
 DocType: Account,Expenses Included In Valuation,Despeses incloses en la valoració
-DocType: Employee,Provide email id registered in company,Provide email id registered in company
+DocType: Employee,Provide Email Address registered in company,Provide Email Address registered in company
 DocType: Hub Settings,Seller City,Ciutat del venedor
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Seleccioneu un grup d&#39;alumnes
 ,Absent Student Report,Informe de l&#39;alumne absent
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blau
 DocType: Purchase Invoice,Is Return,És la tornada
 DocType: Price List Country,Price List Country,Preu de llista País
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Si us plau ajust ID de correu electrònic
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Si us plau ajust ID de correu electrònic
 DocType: Item,UOMs,UOMS
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} amb números de sèrie vàlids per Punt {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,El Codi de l'article no es pot canviar de número de sèrie
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Tasca Depèn de
 DocType: Supplier Quotation,Opportunity,Oportunitat
 ,Completed Production Orders,Ordres de fabricació completades
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Fila {0}: Per proveïdor es requereix {0} id de correu electrònic per enviar correu electrònic
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Fila {0}: Per proveïdor es requereix {0} id de correu electrònic per enviar correu electrònic
 DocType: Operation,Default Workstation,Per defecte l'estació de treball
 DocType: Notification Control,Expense Claim Approved Message,Missatge Reclamació d'aprovació de Despeses
 DocType: Payment Entry,Deductions or Loss,Deduccions o Pèrdua
@@ -3699,7 +3699,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Període d&#39;aplicació no pot ser a través de dos registres alocation
 DocType: Item Group,Default Expense Account,Compte de Despeses predeterminat
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Lot estudiant o Horari del curs és obligatòria
-DocType: Student,Student Email ID,Estudiant ID de correu electrònic
+DocType: Student,Student Email Address,Estudiant ID de correu electrònic
 DocType: Employee,Notice (days),Avís (dies)
 DocType: Tax Rule,Sales Tax Template,Plantilla d&#39;Impost a les Vendes
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Seleccioneu articles per estalviar la factura
@@ -3850,7 +3850,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Veure ofertes
 DocType: Program Enrollment Tool,New Program,nou Programa
 DocType: Item Attribute Value,Attribute Value,Atribut Valor
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","L'adreça de correu electrònic ha de ser única, ja existeix per {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","L'adreça de correu electrònic ha de ser única, ja existeix per {0}"
 ,Itemwise Recommended Reorder Level,Nivell d'articles recomanat per a tornar a passar comanda
 DocType: Salary Detail,Salary Detail,Detall de sous
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Seleccioneu {0} primer
@@ -4052,7 +4052,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Activitat del projecte / tasca.
 DocType: Vehicle Log,Refuelling Details,Detalls de repostatge
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generar Salari Slips
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Per següent Contacte no pot ser la mateixa que la de plom correu electrònic d&#39;identificació
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Per següent Contacte no pot ser la mateixa que la de plom correu electrònic d&#39;identificació
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Compra de comprovar, si es selecciona aplicable Perquè {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Descompte ha de ser inferior a 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,taxa de compra d&#39;última no trobat
@@ -4348,7 +4348,7 @@
 DocType: Item,Item Tax,Impost d'article
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materials de Proveïdor
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Impostos Especials Factura
-DocType: Expense Claim,Employees Email Id,Empleats Identificació de l'email
+DocType: Expense Claim,Employees Email Address,Empleats Identificació de l'email
 DocType: Employee Attendance Tool,Marked Attendance,assistència marcada
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Passiu exigible
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Enviar SMS massiu als seus contactes
diff --git a/erpnext/translations/cs.csv b/erpnext/translations/cs.csv
index 9ee886d..9cd43be 100644
--- a/erpnext/translations/cs.csv
+++ b/erpnext/translations/cs.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Částka po odpisech
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Nadcházející Události v kalendáři
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Vyberte měsíc a rok
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Zadejte e-mail id odděleny čárkami, bude faktura bude zaslán automaticky na určité datum"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Zadejte e-mail id odděleny čárkami, bude faktura bude zaslán automaticky na určité datum"
 DocType: Employee,Company Email,Společnost E-mail
 DocType: GL Entry,Debit Amount in Account Currency,Debetní Částka v měně účtu
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Banka / Hotovostní operace proti osobě nebo pro interní převod
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview výplatní pásce
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Účet {0} byl zadán vícekrát
 DocType: Account,Expenses Included In Valuation,Náklady ceně oceňování
-DocType: Employee,Provide email id registered in company,Poskytnout e-mail id zapsané ve firmě
+DocType: Employee,Provide Email Address registered in company,Poskytnout e-mail id zapsané ve firmě
 DocType: Hub Settings,Seller City,Prodejce City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Prosím, vyberte si studentská skupina"
 ,Absent Student Report,Absent Student Report
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Modrý
 DocType: Purchase Invoice,Is Return,Je Return
 DocType: Price List Country,Price List Country,Ceník Země
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Prosím nastavte e-mail ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Prosím nastavte e-mail ID
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} platí pořadová čísla pro položky {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kód položky nemůže být změněn pro Serial No.
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Úkol je závislá na
 DocType: Supplier Quotation,Opportunity,Příležitost
 ,Completed Production Orders,Dokončené Výrobní zakázky
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Řádek {0}: Pro dodavatele je zapotřebí {0} e-mail id poslat e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Řádek {0}: Pro dodavatele je zapotřebí {0} e-mail id poslat e-mail
 DocType: Operation,Default Workstation,Výchozí Workstation
 DocType: Notification Control,Expense Claim Approved Message,Zpráva o schválení úhrady výdajů
 DocType: Payment Entry,Deductions or Loss,Odpočty nebo ztráta
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Období pro podávání žádostí nemůže být na dvou alokace záznamy
 DocType: Item Group,Default Expense Account,Výchozí výdajového účtu
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch nebo rozvrh je povinné
-DocType: Student,Student Email ID,Student ID e-mailu
+DocType: Student,Student Email Address,Student ID e-mailu
 DocType: Employee,Notice (days),Oznámení (dny)
 DocType: Tax Rule,Sales Tax Template,Daň z prodeje Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Vyberte položky, které chcete uložit fakturu"
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Zobrazit Vodítka
 DocType: Program Enrollment Tool,New Program,nový program
 DocType: Item Attribute Value,Attribute Value,Hodnota atributu
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-mail id musí být jedinečný, již existuje {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-mail id musí být jedinečný, již existuje {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Doporučené Změna pořadí Level
 DocType: Salary Detail,Salary Detail,plat Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Prosím, nejprve vyberte {0}"
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projektová činnost / úkol.
 DocType: Vehicle Log,Refuelling Details,Tankovací Podrobnosti
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generování výplatních páskách
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Následující Kontakt Tím nemůže být stejná jako Lead ID e-mailu
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Následující Kontakt Tím nemůže být stejná jako Lead ID e-mailu
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Nákup musí být zkontrolováno, v případě potřeby pro vybrán jako {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Sleva musí být menší než 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Poslední cena při platbě nebyl nalezen
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,Daň Položky
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiál Dodavateli
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Spotřební Faktura
-DocType: Expense Claim,Employees Email Id,Zaměstnanci Email Id
+DocType: Expense Claim,Employees Email Address,Zaměstnanci Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Výrazná Návštěvnost
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Krátkodobé závazky
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Posílat hromadné SMS vašim kontaktům
diff --git a/erpnext/translations/da.csv b/erpnext/translations/da.csv
index f28154f..97424f3 100644
--- a/erpnext/translations/da.csv
+++ b/erpnext/translations/da.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Beløb efter afskrivninger
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Kommende Kalender Events
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Vælg måned og år
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Indtast email id adskilt af kommaer, vil faktura blive sendt automatisk på bestemt dato"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Indtast Email Address adskilt af kommaer, vil faktura blive sendt automatisk på bestemt dato"
 DocType: Employee,Company Email,Firma Email
 DocType: GL Entry,Debit Amount in Account Currency,Debet Beløb i Konto Valuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Cash transaktioner mod fest eller til intern overførsel
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Eksempel lønseddel
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Konto {0} er indtastet flere gange
 DocType: Account,Expenses Included In Valuation,Udgifter inkluderet i Værdiansættelse
-DocType: Employee,Provide email id registered in company,Giv email id er registreret i selskab
+DocType: Employee,Provide Email Address registered in company,Giv Email Address er registreret i selskab
 DocType: Hub Settings,Seller City,Sælger By
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Vælg Student Group
 ,Absent Student Report,Fraværende Student Report
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blå
 DocType: Purchase Invoice,Is Return,Er Return
 DocType: Price List Country,Price List Country,Prisliste Land
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Venligst sæt E-mail-id
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Venligst sæt E-mail-id
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} gyldige løbenr for vare {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Item Code kan ikke ændres for Serial No.
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Task Afhænger On
 DocType: Supplier Quotation,Opportunity,Mulighed
 ,Completed Production Orders,Afsluttede produktionsordrer
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Række {0}: For leverandør {0} email id er påkrævet for at sende e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Række {0}: For leverandør {0} Email Address er påkrævet for at sende e-mail
 DocType: Operation,Default Workstation,Standard Workstation
 DocType: Notification Control,Expense Claim Approved Message,Expense krav Godkendt Message
 DocType: Payment Entry,Deductions or Loss,Fradrag eller Tab
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Ansøgningsperiode kan ikke være på tværs af to alocation optegnelser
 DocType: Item Group,Default Expense Account,Standard udgiftskonto
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch eller kursusplan er obligatorisk
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Varsel (dage)
 DocType: Tax Rule,Sales Tax Template,Sales Tax Skabelon
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Vælg elementer for at gemme fakturaen
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Se Leads
 DocType: Program Enrollment Tool,New Program,nyt Program
 DocType: Item Attribute Value,Attribute Value,Attribut Værdi
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id skal være unikt, der allerede eksisterer for {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address skal være unikt, der allerede eksisterer for {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Anbefalet genbestillings Level
 DocType: Salary Detail,Salary Detail,Løn Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Vælg {0} først
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projektaktivitet / opgave.
 DocType: Vehicle Log,Refuelling Details,Brændstofpåfyldningsforbindelser Detaljer
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generer lønsedler
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Næste Kontakt By kan ikke være det samme som Lead Email id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Næste Kontakt By kan ikke være det samme som Lead Email Address
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Opkøb skal kontrolleres, om nødvendigt er valgt som {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Rabat skal være mindre end 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Sidste købskurs ikke fundet
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Item Skat
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiale til leverandøren
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Skattestyrelsen Faktura
-DocType: Expense Claim,Employees Email Id,Medarbejdere Email Id
+DocType: Expense Claim,Employees Email Address,Medarbejdere Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Markant Deltagelse
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kortfristede forpligtelser
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Send masse SMS til dine kontakter
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 6aaedd7..abb0651 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Betrag nach Abschreibungen
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Die nächsten Kalender Ereignisse
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Bitte Monat und Jahr auswählen
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",E-Mail-IDs durch Kommas getrennt eingeben; Rechnung wird automatisch an einem bestimmten Rechnungsdatum abgeschickt
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",E-Mail-IDs durch Kommas getrennt eingeben; Rechnung wird automatisch an einem bestimmten Rechnungsdatum abgeschickt
 DocType: Employee,Company Email,Email-Adresse der Firma
 DocType: GL Entry,Debit Amount in Account Currency,Soll-Betrag in Kontowährung
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Geldgeschäfte gegen Partei oder für die interne Übertragung
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Vorschau Gehaltsabrechnung
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Konto {0} wurde mehrmals eingegeben
 DocType: Account,Expenses Included In Valuation,In der Bewertung enthaltene Aufwendungen
-DocType: Employee,Provide email id registered in company,Geben Sie die in der Firma registrierte E-Mail-ID an
+DocType: Employee,Provide Email Address registered in company,Geben Sie die in der Firma registrierte E-Mail-ID an
 DocType: Hub Settings,Seller City,Stadt des Verkäufers
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Bitte wählen Sie ein Student Group
 ,Absent Student Report,Abwesend Student Report
@@ -1126,7 +1126,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blau
 DocType: Purchase Invoice,Is Return,Ist Rückgabe
 DocType: Price List Country,Price List Country,Preisliste Land
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Bitte E-Mail-ID eingeben
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Bitte E-Mail-ID eingeben
 DocType: Item,UOMs,Maßeinheiten
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} gültige Seriennummern für Artikel {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Artikelnummer kann nicht für Seriennummer geändert werden
@@ -2215,7 +2215,7 @@
 DocType: Task Depends On,Task Depends On,Aufgabe hängt davon ab
 DocType: Supplier Quotation,Opportunity,Chance
 ,Completed Production Orders,Abgeschlossene Fertigungsaufträge
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: Für Anbieter {0} E-Mail-ID ist erforderlich E-Mail senden
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: Für Anbieter {0} E-Mail-ID ist erforderlich E-Mail senden
 DocType: Operation,Default Workstation,Standard-Arbeitsplatz
 DocType: Notification Control,Expense Claim Approved Message,Benachrichtigung über genehmigte Aufwandsabrechnung
 DocType: Payment Entry,Deductions or Loss,Abzüge oder Verlust
@@ -3692,7 +3692,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Beantragter Zeitraum kann sich nicht über zwei Antragsdatensätze erstrecken
 DocType: Item Group,Default Expense Account,Standardaufwandskonto
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch oder Kursplan ist obligatorisch
-DocType: Student,Student Email ID,Studenten E-Mail-ID
+DocType: Student,Student Email Address,Studenten E-Mail-ID
 DocType: Employee,Notice (days),Meldung(s)(-Tage)
 DocType: Tax Rule,Sales Tax Template,Umsatzsteuer-Vorlage
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Wählen Sie Elemente, um die Rechnung zu speichern"
@@ -3843,7 +3843,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Leads anzeigen
 DocType: Program Enrollment Tool,New Program,Neues Programm
 DocType: Item Attribute Value,Attribute Value,Attributwert
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",E-Mail-ID muss einmalig sein; diese E-Mail-ID existiert bereits für {0}
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",E-Mail-ID muss einmalig sein; diese E-Mail-ID existiert bereits für {0}
 ,Itemwise Recommended Reorder Level,Empfohlener artikelbezogener Meldebestand
 DocType: Salary Detail,Salary Detail,Gehalt Details
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Bitte zuerst {0} auswählen
@@ -4045,7 +4045,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projektaktivität/Aufgabe
 DocType: Vehicle Log,Refuelling Details,Betankungs Einzelheiten
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Gehaltsabrechnungen generieren
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Weiter Kontakt Durch nicht als Lead E-Mail-ID gleich sein
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Weiter Kontakt Durch nicht als Lead E-Mail-ID gleich sein
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Einkauf muss ausgewählt sein, wenn ""Anwenden auf"" auf {0} gesetzt wurde"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Discount muss kleiner als 100 sein
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Zuletzt Kaufrate nicht gefunden
@@ -4341,7 +4341,7 @@
 DocType: Item,Item Tax,Artikelsteuer
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Material an den Lieferanten
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Verbrauch Rechnung
-DocType: Expense Claim,Employees Email Id,E-Mail-ID des Mitarbeiters
+DocType: Expense Claim,Employees Email Address,E-Mail-ID des Mitarbeiters
 DocType: Employee Attendance Tool,Marked Attendance,Marked Teilnahme
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kurzfristige Verbindlichkeiten
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Massen-SMS an Kontakte versenden
diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv
index b7d2564..0637889 100644
--- a/erpnext/translations/el.csv
+++ b/erpnext/translations/el.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Ποσό μετά την απόσβεση
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Επερχόμενες Ημερολόγιο Εκδηλώσεων
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Παρακαλώ επιλέξτε μήνα και έτος
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Πληκτρολογήστε το αναγνωριστικό email, διαχωρισμένο με κόμματα, το τιμολόγιο θα αποσταλεί αυτόματα την συγκεκριμένη ημερομηνία"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Πληκτρολογήστε το αναγνωριστικό email, διαχωρισμένο με κόμματα, το τιμολόγιο θα αποσταλεί αυτόματα την συγκεκριμένη ημερομηνία"
 DocType: Employee,Company Email,Email εταιρείας
 DocType: GL Entry,Debit Amount in Account Currency,Χρεωστικό ποσό στο λογαριασμό Νόμισμα
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Τράπεζα / Ταμειακές συναλλαγές κατά μέρος ή για εσωτερική μεταφορά
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Μισθός Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Ο λογαριασμός {0} έχει τεθεί πολλές φορές
 DocType: Account,Expenses Included In Valuation,Δαπάνες που περιλαμβάνονται στην αποτίμηση
-DocType: Employee,Provide email id registered in company,Παρέχετε ένα email ID εγγεγραμμένο στην εταιρεία
+DocType: Employee,Provide Email Address registered in company,Παρέχετε ένα Email Address εγγεγραμμένο στην εταιρεία
 DocType: Hub Settings,Seller City,Πόλη πωλητή
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Επιλέξτε μια Ομάδα Φοιτητών
 ,Absent Student Report,Απών Έκθεση Φοιτητών
@@ -1126,7 +1126,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Μπλε
 DocType: Purchase Invoice,Is Return,Είναι η επιστροφή
 DocType: Price List Country,Price List Country,Τιμοκατάλογος Χώρα
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Παρακαλούμε να ορίσετε ID Email
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Παρακαλούμε να ορίσετε ID Email
 DocType: Item,UOMs,Μ.Μ.
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} Έγκυροι σειριακοί αριθμοί για το είδος {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Ο κωδικός είδους δεν μπορεί να αλλάξει για τον σειριακό αριθμό
@@ -2215,7 +2215,7 @@
 DocType: Task Depends On,Task Depends On,Εργασία Εξαρτάται από
 DocType: Supplier Quotation,Opportunity,Ευκαιρία
 ,Completed Production Orders,Ολοκλήρωση εντολών παραγωγής
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Σειρά {0}: Για τον προμηθευτή {0} ταυτότητα ηλεκτρονικού ταχυδρομείου είναι απαραίτητη για την αποστολή e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Σειρά {0}: Για τον προμηθευτή {0} ταυτότητα ηλεκτρονικού ταχυδρομείου είναι απαραίτητη για την αποστολή e-mail
 DocType: Operation,Default Workstation,Προεπιλογμένος σταθμός εργασίας
 DocType: Notification Control,Expense Claim Approved Message,Μήνυμα έγκρισης αξίωσης δαπανών
 DocType: Payment Entry,Deductions or Loss,Μειώσεις ή Ζημία
@@ -3693,7 +3693,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Περίοδος υποβολής των αιτήσεων δεν μπορεί να είναι σε δύο εγγραφές alocation
 DocType: Item Group,Default Expense Account,Προεπιλεγμένος λογαριασμός δαπανών
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Μαζική φοιτητής ή Πρόγραμμα μαθημάτων είναι υποχρεωτική
-DocType: Student,Student Email ID,Φοιτητής Email ID
+DocType: Student,Student Email Address,Φοιτητής Email Address
 DocType: Employee,Notice (days),Ειδοποίηση (ημέρες)
 DocType: Tax Rule,Sales Tax Template,Φόρος επί των πωλήσεων Πρότυπο
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Επιλέξτε αντικείμενα για να σώσει το τιμολόγιο
@@ -3844,7 +3844,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Δείτε τις απαγωγές
 DocType: Program Enrollment Tool,New Program,νέο Πρόγραμμα
 DocType: Item Attribute Value,Attribute Value,Χαρακτηριστικό αξία
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email ID, όπου ένας υποψήφιος θα αποστείλει email π.Χ. 'jobs@example.Com'"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address, όπου ένας υποψήφιος θα αποστείλει email π.Χ. 'jobs@example.Com'"
 ,Itemwise Recommended Reorder Level,Προτεινόμενο επίπεδο επαναπαραγγελίας ανά είδος
 DocType: Salary Detail,Salary Detail,μισθός Λεπτομέρειες
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Παρακαλώ επιλέξτε {0} πρώτα
@@ -4046,7 +4046,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Δραστηριότητες / εργασίες έργου
 DocType: Vehicle Log,Refuelling Details,Λεπτομέρειες ανεφοδιασμού
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Δημιουργία βεβαιώσεων αποδοχών
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Επόμενο Επικοινωνία Με το να μην μπορεί να είναι ίδιο με το Lead id Email
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Επόμενο Επικοινωνία Με το να μην μπορεί να είναι ίδιο με το Lead id Email
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",Η επιλογή αγορά πρέπει να οριστεί αν είναι επιλεγμένο το πεδίο 'εφαρμοστέο σε' ως {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Η έκπτωση πρέπει να είναι μικρότερη από 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Τελευταία ποσοστό αγορά δεν βρέθηκε
@@ -4341,7 +4341,7 @@
 DocType: Item,Item Tax,Φόρος είδους
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Υλικό Προμηθευτή
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Των ειδικών φόρων κατανάλωσης Τιμολόγιο
-DocType: Expense Claim,Employees Email Id,Email ID υπαλλήλων
+DocType: Expense Claim,Employees Email Address,Email Address υπαλλήλων
 DocType: Employee Attendance Tool,Marked Attendance,Αισθητή Συμμετοχή
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Βραχυπρόθεσμες υποχρεώσεις
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Αποστολή μαζικών SMS στις επαφές σας
diff --git a/erpnext/translations/es-PE.csv b/erpnext/translations/es-PE.csv
index 7e2c624..6a3c73b 100644
--- a/erpnext/translations/es-PE.csv
+++ b/erpnext/translations/es-PE.csv
@@ -97,7 +97,7 @@
 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +831,Delivery Note,Notas de Entrega
 apps/erpnext/erpnext/stock/doctype/item/item.py +445,{0} entered twice in Item Tax,{0} ingresado dos veces en el Impuesto del producto
 DocType: Workstation,Rent Cost,Renta Costo
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Introduzca ID de correo electrónico separados por comas, la factura será enviada automáticamente en una fecha determinada"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Introduzca ID de correo electrónico separados por comas, la factura será enviada automáticamente en una fecha determinada"
 DocType: Employee,Company Email,Correo de la compañía
 apps/erpnext/erpnext/stock/doctype/item/item.js +51,This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set,Este artículo es una plantilla y no se puede utilizar en las transacciones. Atributos artículo se copiarán en las variantes menos que se establece 'No Copy'
 apps/erpnext/erpnext/config/hr.py +197,"Employee designation (e.g. CEO, Director etc.).","Cargo del empleado ( por ejemplo, director general, director , etc.)"
@@ -175,7 +175,7 @@
 DocType: Purchase Receipt,Other Details,Otros Datos
 DocType: Account,Accounts,Contabilidad
 DocType: Account,Expenses Included In Valuation,Gastos dentro de la valoración
-DocType: Employee,Provide email id registered in company,Proporcionar correo electrónico de identificación registrado en la compañía
+DocType: Employee,Provide Email Address registered in company,Proporcionar correo electrónico de identificación registrado en la compañía
 DocType: Hub Settings,Seller City,Ciudad del vendedor
 DocType: Email Digest,Next email will be sent on:,Siguiente correo electrónico será enviado el:
 DocType: Offer Letter Term,Offer Letter Term,Término de carta de oferta
@@ -1024,7 +1024,7 @@
 DocType: Maintenance Visit Purpose,Maintenance Visit Purpose,Propósito de la Visita de Mantenimiento
 apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.js +18,General Ledger,Libro Mayor
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Ver ofertas
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Identificación del E-mail debe ser único , ya existe para {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Identificación del E-mail debe ser único , ya existe para {0}"
 ,Itemwise Recommended Reorder Level,Nivel recomendado de re-ordenamiento de producto
 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +93,Warehouse not found in the system,Almacén no se encuentra en el sistema
 DocType: Quality Inspection Reading,Quality Inspection Reading,Lectura de Inspección de Calidad
@@ -1159,7 +1159,7 @@
 DocType: POS Profile,POS Profile,Perfiles POS
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.py +31,Net pay cannot be negative,Salario neto no puede ser negativo
 DocType: Item,Item Tax,Impuesto del artículo
-DocType: Expense Claim,Employees Email Id,Empleados Email Id
+DocType: Expense Claim,Employees Email Address,Empleados Email Address
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Pasivo Corriente
 apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +60,Actual Qty is mandatory,Cantidad actual es obligatoria
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +139,Credit Card,Tarjeta de Crédito
diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv
index a74ac9b..539ff86 100644
--- a/erpnext/translations/es.csv
+++ b/erpnext/translations/es.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Después cantidad Depreciación
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Calendario de Eventos Próximos
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Por favor seleccione el mes y el año
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Introduzca los IDs de correo electrónico separados por comas, la factura será enviada automáticamente en una fecha determinada"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Introduzca los IDs de correo electrónico separados por comas, la factura será enviada automáticamente en una fecha determinada"
 DocType: Employee,Company Email,Email de la compañía
 DocType: GL Entry,Debit Amount in Account Currency,Importe debitado con la divisa
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Transacciones de Banco/Efectivo contra Empresa o transferencia interna
@@ -684,7 +684,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Salario previsualización de deslizamiento
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Cuenta {0} se ha introducido varias veces
 DocType: Account,Expenses Included In Valuation,GASTOS DE VALORACIÓN
-DocType: Employee,Provide email id registered in company,Proporcione el correo electrónico registrado en la compañía
+DocType: Employee,Provide Email Address registered in company,Proporcione el correo electrónico registrado en la compañía
 DocType: Hub Settings,Seller City,Ciudad de vendedor
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Por favor, seleccione un grupo de alumnos"
 ,Absent Student Report,Informe del alumno ausente
@@ -1127,7 +1127,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Azul
 DocType: Purchase Invoice,Is Return,Es un retorno
 DocType: Price List Country,Price List Country,Lista de precios del país
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Por favor ajuste ID de correo electrónico
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Por favor ajuste ID de correo electrónico
 DocType: Item,UOMs,UdM
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} núms. de serie válidos para el artículo {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,El código del producto no se puede cambiar por un número de serie
@@ -2216,7 +2216,7 @@
 DocType: Task Depends On,Task Depends On,Tarea depende de
 DocType: Supplier Quotation,Opportunity,Oportunidad
 ,Completed Production Orders,Órdenes de producción (OP) completadas
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Fila {0}: Por proveedor se requiere {0} id de correo electrónico para enviar correo electrónico
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Fila {0}: Por proveedor se requiere {0} id de correo electrónico para enviar correo electrónico
 DocType: Operation,Default Workstation,Estación de Trabajo por defecto
 DocType: Notification Control,Expense Claim Approved Message,Mensaje de reembolso de gastos
 DocType: Payment Entry,Deductions or Loss,Deducciones o Pérdida
@@ -3693,7 +3693,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Período de aplicación no puede ser a través de dos registros alocation
 DocType: Item Group,Default Expense Account,Cuenta de gastos por defecto
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Lote estudiante o Horario del curso es obligatoria
-DocType: Student,Student Email ID,Estudiante ID de correo electrónico
+DocType: Student,Student Email Address,Estudiante ID de correo electrónico
 DocType: Employee,Notice (days),Aviso (días)
 DocType: Tax Rule,Sales Tax Template,Plantilla de impuesto sobre ventas
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Seleccione artículos para ahorrar la factura
@@ -3844,7 +3844,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Ver iniciativas
 DocType: Program Enrollment Tool,New Program,nuevo Programa
 DocType: Item Attribute Value,Attribute Value,Valor del Atributo
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","El Email debe ser único,  {0} ya existe"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","El Email debe ser único,  {0} ya existe"
 ,Itemwise Recommended Reorder Level,Nivel recomendado de reabastecimiento de producto
 DocType: Salary Detail,Salary Detail,Detalle de sueldos
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Por favor, seleccione primero {0}"
@@ -4046,7 +4046,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Actividad del proyecto / tarea.
 DocType: Vehicle Log,Refuelling Details,Detalles de repostaje
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generar nóminas salariales
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Por siguiente Contacto no puede ser la misma que la de plomo correo electrónico de identificación
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Por siguiente Contacto no puede ser la misma que la de plomo correo electrónico de identificación
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","'Compras' debe ser seleccionada, si la opción: 'Aplicable para' esta seleccionado como {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,El descuento debe ser inferior a 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,tasa de compra de última no encontrado
@@ -4342,7 +4342,7 @@
 DocType: Item,Item Tax,Impuestos del producto
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiales de Proveedor
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Impuestos Especiales Factura
-DocType: Expense Claim,Employees Email Id,ID de Email de empleados
+DocType: Expense Claim,Employees Email Address,ID de Email de empleados
 DocType: Employee Attendance Tool,Marked Attendance,Asistencia Marcada
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Pasivo circulante
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Enviar mensajes SMS masivos a sus contactos
diff --git a/erpnext/translations/et.csv b/erpnext/translations/et.csv
index 7c422f2..b9bfde8 100644
--- a/erpnext/translations/et.csv
+++ b/erpnext/translations/et.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Summa pärast amortisatsiooni
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Sündmuste kalender
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Palun valige kuu ja aasta
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Sisesta e-posti id komadega eraldatult, arve saadetakse automaatselt teatud kuupäeva"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Sisesta e-posti id komadega eraldatult, arve saadetakse automaatselt teatud kuupäeva"
 DocType: Employee,Company Email,Ettevõte Email
 DocType: GL Entry,Debit Amount in Account Currency,Deebetkaart Summa konto Valuuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Raha vastu tehing poole või sisene ülekanne
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Eelvaade palgatõend
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Konto {0} on sisestatud mitu korda
 DocType: Account,Expenses Included In Valuation,Kulud sisalduvad Hindamine
-DocType: Employee,Provide email id registered in company,Pakkuda email id registreeritud ettevõte
+DocType: Employee,Provide Email Address registered in company,Pakkuda Email Address registreeritud ettevõte
 DocType: Hub Settings,Seller City,Müüja City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Palun valige Student Group
 ,Absent Student Report,Puudub Student Report
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blue
 DocType: Purchase Invoice,Is Return,Kas Tagasi
 DocType: Price List Country,Price List Country,Hinnakiri Riik
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Palun määra Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Palun määra Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} kehtiv serial-numbrid Punkt {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kood ei saa muuta Serial No.
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Task sõltub
 DocType: Supplier Quotation,Opportunity,Võimalus
 ,Completed Production Orders,Valmistoodanguladu Tellimused
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Rida {0}: tarnija {0} e-posti id on vaja saata e-posti
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Rida {0}: tarnija {0} e-posti id on vaja saata e-posti
 DocType: Operation,Default Workstation,Vaikimisi Workstation
 DocType: Notification Control,Expense Claim Approved Message,Kuluhüvitussüsteeme Kinnitatud Message
 DocType: Payment Entry,Deductions or Loss,Mahaarvamisi või kaotus
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Taotlemise tähtaeg ei või olla üle kahe alocation arvestust
 DocType: Item Group,Default Expense Account,Vaikimisi ärikohtumisteks
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Partii või Kursuse ajakava on kohustuslik
-DocType: Student,Student Email ID,Student E-ID
+DocType: Student,Student Email Address,Student E-ID
 DocType: Employee,Notice (days),Teade (päeva)
 DocType: Tax Rule,Sales Tax Template,Sales Tax Mall
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Valige objekt, et salvestada arve"
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Vaata Leads
 DocType: Program Enrollment Tool,New Program,New Program
 DocType: Item Attribute Value,Attribute Value,Omadus Value
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id peab olema unikaalne, juba olemas {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address peab olema unikaalne, juba olemas {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Soovitatav Reorder Level
 DocType: Salary Detail,Salary Detail,palk Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Palun valige {0} Esimene
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projekti tegevus / ülesanne.
 DocType: Vehicle Log,Refuelling Details,tankimine detailid
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Loo palgalehed
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Järgmine kontakteeruda ei saa olla sama Lead E id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Järgmine kontakteeruda ei saa olla sama Lead E id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Ostmine tuleb kontrollida, kui need on kohaldatavad valitakse {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Soodustus peab olema väiksem kui 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Viimati ostu määr ei leitud
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Punkt Maksu-
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materjal Tarnija
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Aktsiisi Arve
-DocType: Expense Claim,Employees Email Id,Töötajad Post Id
+DocType: Expense Claim,Employees Email Address,Töötajad Post Id
 DocType: Employee Attendance Tool,Marked Attendance,Märkimisväärne osavõtt
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Lühiajalised kohustused
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Saada mass SMS oma kontaktid
diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv
index 732a3b3..f9c55d9 100644
--- a/erpnext/translations/fa.csv
+++ b/erpnext/translations/fa.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,مقدار پس از استهلاک
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,تقویم رویدادهای آینده
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,لطفا ماه و سال را انتخاب کنید
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",را وارد کنید ایمیل ID با کاما جدا شده، فاکتور به صورت خودکار در تاریخ خاص فرستاده
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",را وارد کنید ایمیل ID با کاما جدا شده، فاکتور به صورت خودکار در تاریخ خاص فرستاده
 DocType: Employee,Company Email,شرکت پست الکترونیک
 DocType: GL Entry,Debit Amount in Account Currency,مقدار بدهی در حساب ارز
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,معاملات بانک / پول نقد در برابر حزب و یا برای انتقال داخلی
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,پیش نمایش لغزش حقوق
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,حساب {0} وارد شده است چندین بار
 DocType: Account,Expenses Included In Valuation,هزینه های موجود در ارزش گذاری
-DocType: Employee,Provide email id registered in company,ارائه ایمیل شناسه ثبت شده در شرکت
+DocType: Employee,Provide Email Address registered in company,ارائه ایمیل شناسه ثبت شده در شرکت
 DocType: Hub Settings,Seller City,فروشنده شهر
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,لطفا یک گروه دانشجویی را انتخاب کنید
 ,Absent Student Report,وجود ندارد گزارش دانشجو
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ابی
 DocType: Purchase Invoice,Is Return,آیا بازگشت
 DocType: Price List Country,Price List Country,لیست قیمت کشور
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,لطفا ایمیل ID تنظیم
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,لطفا ایمیل ID تنظیم
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} NOS سریال معتبر برای مورد {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,کد مورد می تواند برای شماره سریال نمی تواند تغییر
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,کار بستگی به
 DocType: Supplier Quotation,Opportunity,فرصت
 ,Completed Production Orders,سفارشات تولید تکمیل
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,ردیف {0}: عرضه کننده {0} شناسه ایمیل مورد نیاز برای ارسال ایمیل
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,ردیف {0}: عرضه کننده {0} شناسه ایمیل مورد نیاز برای ارسال ایمیل
 DocType: Operation,Default Workstation,به طور پیش فرض ایستگاه کاری
 DocType: Notification Control,Expense Claim Approved Message,پیام ادعای هزینه تایید
 DocType: Payment Entry,Deductions or Loss,کسر یا از دست دادن
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,دوره نرم افزار نمی تواند در سراسر دو رکورد alocation شود
 DocType: Item Group,Default Expense Account,حساب پیش فرض هزینه
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,دسته ای دانش آموز و یا برنامه های آموزشی الزامی است
-DocType: Student,Student Email ID,دانشجو ID ایمیل
+DocType: Student,Student Email Address,دانشجو ID ایمیل
 DocType: Employee,Notice (days),مقررات (روز)
 DocType: Tax Rule,Sales Tax Template,قالب مالیات بر فروش
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,انتخاب آیتم ها برای صرفه جویی در فاکتور
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,مشخصات آگهی
 DocType: Program Enrollment Tool,New Program,برنامه جدید
 DocType: Item Attribute Value,Attribute Value,موجودیت مقدار
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",شناسه ایمیل باید منحصر به فرد، در حال حاضر وجود دارد برای {0}
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",شناسه ایمیل باید منحصر به فرد، در حال حاضر وجود دارد برای {0}
 ,Itemwise Recommended Reorder Level,Itemwise توصیه ترتیب مجدد سطح
 DocType: Salary Detail,Salary Detail,جزئیات حقوق و دستمزد
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,لطفا انتخاب کنید {0} برای اولین بار
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,فعالیت پروژه / وظیفه.
 DocType: Vehicle Log,Refuelling Details,اطلاعات سوختگیری
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,تولید حقوق و دستمزد ورقه
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,بعد تماس با نمی تواند مانند شناسه ایمیل سرب
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,بعد تماس با نمی تواند مانند شناسه ایمیل سرب
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",خرید باید بررسی شود، اگر قابل استفاده برای عنوان انتخاب شده {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,تخفیف باید کمتر از 100 باشد
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,آخرین نرخ خرید یافت نشد
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,مالیات مورد
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,مواد به کننده
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,فاکتور مالیات کالاهای داخلی
-DocType: Expense Claim,Employees Email Id,کارکنان پست الکترونیکی شناسه
+DocType: Expense Claim,Employees Email Address,کارکنان پست الکترونیکی شناسه
 DocType: Employee Attendance Tool,Marked Attendance,حضور و غیاب مشخص شده
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,بدهی های جاری
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ارسال اس ام اس انبوه به مخاطبین خود
diff --git a/erpnext/translations/fi.csv b/erpnext/translations/fi.csv
index b1f2612..37c8787 100644
--- a/erpnext/translations/fi.csv
+++ b/erpnext/translations/fi.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Määrä jälkeen Poistot
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Tulevia kalenteritapahtumia
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Ole hyvä ja valitse kuukausi ja vuosi
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","syötä sähköpostiosoitteet pilkulla erotettuina, lasku lähetetään automaattisesti määritettynä päivänä"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","syötä sähköpostiosoitteet pilkulla erotettuina, lasku lähetetään automaattisesti määritettynä päivänä"
 DocType: Employee,Company Email,yrityksen sähköposti
 DocType: GL Entry,Debit Amount in Account Currency,Debit Määrä tilini Valuutta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Pankki / Cash liiketoimien vastaan osapuolelle tai sisäinen siirto
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Palkka Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Tili {0} on syötetty useita kertoja
 DocType: Account,Expenses Included In Valuation,"kulut, jotka sisältyy arvoon"
-DocType: Employee,Provide email id registered in company,Tarkista sähköpostitunnuksen rekisteröinti yritykselle
+DocType: Employee,Provide Email Address registered in company,Tarkista sähköpostitunnuksen rekisteröinti yritykselle
 DocType: Hub Settings,Seller City,Myyjä kaupunki
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Valitse Student Group
 ,Absent Student Report,Absent Student Report
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,sininen
 DocType: Purchase Invoice,Is Return,on palautus
 DocType: Price List Country,Price List Country,Hinnasto Maa
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Aseta sähköpostiosoite
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Aseta sähköpostiosoite
 DocType: Item,UOMs,Mittayksiköt
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} oikea sarjanumero (nos) tuotteelle {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,sarjanumeron tuotekoodia ei voi vaihtaa
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Tehtävä riippuu
 DocType: Supplier Quotation,Opportunity,Myyntimahdollisuus
 ,Completed Production Orders,valmiit tuotannon tilaukset
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Rivi {0}: Sähköpostin lähettäminen toimittajalle {0} vaatii sähköpostiosoitteen
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Rivi {0}: Sähköpostin lähettäminen toimittajalle {0} vaatii sähköpostiosoitteen
 DocType: Operation,Default Workstation,oletus työpiste
 DocType: Notification Control,Expense Claim Approved Message,viesti kulukorvauksen hyväksymisestä
 DocType: Payment Entry,Deductions or Loss,Vähennykset tai Loss
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Hakuaika ei voi yli kaksi alocation kirjaa
 DocType: Item Group,Default Expense Account,oletus kulutili
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Opiskelija Erä tai Course aikataulu on pakollinen
-DocType: Student,Student Email ID,Opiskelijan Sähköposti ID
+DocType: Student,Student Email Address,Opiskelijan Sähköposti ID
 DocType: Employee,Notice (days),Ilmoitus (päivää)
 DocType: Tax Rule,Sales Tax Template,Sales Tax Malline
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Valitse kohteita tallentaa laskun
@@ -3794,7 +3794,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Näytä vihjeet
 DocType: Program Enrollment Tool,New Program,uusi ohjelma
 DocType: Item Attribute Value,Attribute Value,"tuntomerkki, arvo"
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","sähköpostitunnus tulee olla uniikki, tunnus on jo olemassa {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","sähköpostitunnus tulee olla uniikki, tunnus on jo olemassa {0}"
 ,Itemwise Recommended Reorder Level,Tuotekohtainen suositeltu täydennystilaustaso
 DocType: Salary Detail,Salary Detail,Palkka Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Ole hyvä ja valitse {0} Ensimmäinen
@@ -3985,7 +3985,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Tehtävä
 DocType: Vehicle Log,Refuelling Details,Tankkaaminen tiedot
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Tuota palkkalaskelmat
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Seuraava Ota By voi olla sama kuin Lead sähköposti id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Seuraava Ota By voi olla sama kuin Lead sähköposti id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",osto tulee täpätä mikälisovellus on valittu {0}:na
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,alennus on oltava alle 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Viimeisin osto korko ei löytynyt
@@ -4280,7 +4280,7 @@
 DocType: Item,Item Tax,Tuotteen vero
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiaalin Toimittaja
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Valmistevero Lasku
-DocType: Expense Claim,Employees Email Id,työntekijän sähköpostiosoite
+DocType: Expense Claim,Employees Email Address,työntekijän sähköpostiosoite
 DocType: Employee Attendance Tool,Marked Attendance,Merkitty Läsnäolo
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,lyhytaikaiset vastattavat
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Lähetä massatekstiviesti yhteystiedoillesi
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index 0c855a4..91f3727 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Montant Après amortissement
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Prochains événements de calendrier
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,S&#39;il vous plaît sélectionner le mois et l&#39;année
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Entrez Identifiant courriels séparé par des virgules, la facture sera envoyée automatiquement à la date particulière"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Entrez Identifiant courriels séparé par des virgules, la facture sera envoyée automatiquement à la date particulière"
 DocType: Employee,Company Email,E-mail société
 DocType: GL Entry,Debit Amount in Account Currency,Montant de débit en compte Devises
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,transactions Banque / Trésorerie contre partie ou pour le transfert interne
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Aperçu Salaire Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Le compte {0} a été entré plusieurs fois
 DocType: Account,Expenses Included In Valuation,Frais inclus dans la valorisation
-DocType: Employee,Provide email id registered in company,Fournir E-mail enregistrée dans la société
+DocType: Employee,Provide Email Address registered in company,Fournir E-mail enregistrée dans la société
 DocType: Hub Settings,Seller City,Ville du vendeur
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,S&#39;il vous plaît sélectionner un groupe d&#39;étudiants
 ,Absent Student Report,Absent Rapport étudiant
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Bleu
 DocType: Purchase Invoice,Is Return,Est de retour
 DocType: Price List Country,Price List Country,Pays de la Liste des Prix
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,S'il vous plaît définissez ID Email
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,S'il vous plaît définissez ID Email
 DocType: Item,UOMs,Unités de mesure
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} numéro de série valide pour l'objet {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Code de l'article ne peut pas être modifié pour le Numéro de Série
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Tâches dépendent de
 DocType: Supplier Quotation,Opportunity,Occasion
 ,Completed Production Orders,Ordre de production terminés
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: Pour le fournisseur {0} email id est nécessaire pour envoyer un courriel
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: Pour le fournisseur {0} Email Address est nécessaire pour envoyer un courriel
 DocType: Operation,Default Workstation,Station de travail par défaut
 DocType: Notification Control,Expense Claim Approved Message,Note de Frais Approuvée message
 DocType: Payment Entry,Deductions or Loss,Déductions ou perte
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Période d&#39;application ne peut pas être sur deux dossiers de alocation
 DocType: Item Group,Default Expense Account,Compte de dépenses
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch étudiant ou Horaire de cours est obligatoire
-DocType: Student,Student Email ID,Étudiant Email ID
+DocType: Student,Student Email Address,Étudiant Email Address
 DocType: Employee,Notice (days),Avis ( jours )
 DocType: Tax Rule,Sales Tax Template,Modèle de la taxe de vente
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Sélectionnez les articles pour sauvegarder la facture
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Voir Prospects
 DocType: Program Enrollment Tool,New Program,Nouveau programme
 DocType: Item Attribute Value,Attribute Value,Attribut Valeur
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ID E-mail doit être unique , existe déjà pour {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ID E-mail doit être unique , existe déjà pour {0}"
 ,Itemwise Recommended Reorder Level,Seuil de renouvellement des commandes (par Article)
 DocType: Salary Detail,Salary Detail,Salaire Détail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,S'il vous plaît sélectionnez {0} en premier
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Activité du projet / tâche.
 DocType: Vehicle Log,Refuelling Details,Refuelling Détails
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Générer les bulletins de salaire
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Suivant Contactez En ne peut pas être le même que le plomb Email id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Suivant Contactez En ne peut pas être le même que le plomb Email Address
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Achat doit être vérifiée, si pour Applicable est sélectionné comme {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,La remise doit être inférieure à 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Dernier Taux d'achat introuvable
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,Taxe sur l'Article
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Matériel au fournisseur
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Accise facture
-DocType: Expense Claim,Employees Email Id,Identifiants E-mail des employés
+DocType: Expense Claim,Employees Email Address,Identifiants E-mail des employés
 DocType: Employee Attendance Tool,Marked Attendance,Présence marquée
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Dette courante
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Envoyer un SMS en masse à vos contacts
diff --git a/erpnext/translations/gu.csv b/erpnext/translations/gu.csv
index bad3994..8ae9f3b 100644
--- a/erpnext/translations/gu.csv
+++ b/erpnext/translations/gu.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,રકમ અવમૂલ્યન પછી
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,આગામી કેલેન્ડર ઘટનાઓ
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,મહિનો અને વર્ષ પસંદ કરો
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","અલ્પવિરામ દ્વારા અલગ દાખલ ઇમેઇલ ને, ભરતિયું ચોક્કસ તારીખ પર આપોઆપ મોકલવામાં આવશે"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","અલ્પવિરામ દ્વારા અલગ દાખલ ઇમેઇલ ને, ભરતિયું ચોક્કસ તારીખ પર આપોઆપ મોકલવામાં આવશે"
 DocType: Employee,Company Email,કંપની ઇમેઇલ
 DocType: GL Entry,Debit Amount in Account Currency,એકાઉન્ટ કરન્સી ડેબિટ રકમ
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,બેન્ક / રોકડ પક્ષ સામે અથવા આંતરિક ટ્રાન્સફર માટે વ્યવહારો
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,પૂર્વદર્શન પગાર કાપલી
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,એકાઉન્ટ {0} ઘણી વખત દાખલ કરવામાં આવી છે
 DocType: Account,Expenses Included In Valuation,ખર્ચ વેલ્યુએશનમાં સમાવાયેલ
-DocType: Employee,Provide email id registered in company,કંપની રજીસ્ટર ઇમેઇલ ને પૂરી પાડો
+DocType: Employee,Provide Email Address registered in company,કંપની રજીસ્ટર ઇમેઇલ ને પૂરી પાડો
 DocType: Hub Settings,Seller City,વિક્રેતા સિટી
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,એક વિદ્યાર્થી જૂથ પસંદ કરો
 ,Absent Student Report,ગેરહાજર વિદ્યાર્થી રિપોર્ટ
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,બ્લુ
 DocType: Purchase Invoice,Is Return,વળતર છે
 DocType: Price List Country,Price List Country,ભાવ યાદી દેશ
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ઇમેઇલ ને સુયોજિત કરો
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ઇમેઇલ ને સુયોજિત કરો
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} વસ્તુ માટે માન્ય સીરીયલ અમે {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,વસ્તુ કોડ સીરીયલ નંબર માટે બદલી શકાતું નથી
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,કાર્ય પર આધાર રાખે છે
 DocType: Supplier Quotation,Opportunity,તક
 ,Completed Production Orders,પૂર્ણ ઉત્પાદન ઓર્ડર્સ
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,રો {0}: સપ્લાયર માટે {0} ઇમેઇલ ID ને ઇમેઇલ મોકલવા માટે જરૂરી છે
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,રો {0}: સપ્લાયર માટે {0} ઇમેઇલ ID ને ઇમેઇલ મોકલવા માટે જરૂરી છે
 DocType: Operation,Default Workstation,મૂળભૂત વર્કસ્ટેશન
 DocType: Notification Control,Expense Claim Approved Message,ખર્ચ દાવો મંજૂર સંદેશ
 DocType: Payment Entry,Deductions or Loss,કપાત અથવા નુકસાન
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,એપ્લિકેશન સમયગાળા બે alocation રેકોર્ડ તરફ ન હોઈ શકે
 DocType: Item Group,Default Expense Account,મૂળભૂત ખર્ચ એકાઉન્ટ
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,વિદ્યાર્થી બેચ અથવા કોર્સ શેડ્યૂલ ફરજિયાત છે
-DocType: Student,Student Email ID,વિદ્યાર્થી ઇમેઇલ ને
+DocType: Student,Student Email Address,વિદ્યાર્થી ઇમેઇલ ને
 DocType: Employee,Notice (days),સૂચના (દિવસ)
 DocType: Tax Rule,Sales Tax Template,સેલ્સ ટેક્સ ઢાંચો
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ભરતિયું સેવ આઇટમ્સ પસંદ કરો
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,જુઓ તરફ દોરી જાય છે
 DocType: Program Enrollment Tool,New Program,નવા કાર્યક્રમ
 DocType: Item Attribute Value,Attribute Value,લક્ષણની કિંમત
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ઇમેઇલ ID ને પહેલાથી જ અસ્તિત્વમાં છે, અનન્ય હોવો જોઈએ {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ઇમેઇલ ID ને પહેલાથી જ અસ્તિત્વમાં છે, અનન્ય હોવો જોઈએ {0}"
 ,Itemwise Recommended Reorder Level,મુદ્દાવાર પુનઃક્રમાંકિત કરો સ્તર ભલામણ
 DocType: Salary Detail,Salary Detail,પગાર વિગતવાર
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,પ્રથમ {0} પસંદ કરો
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,પ્રોજેક્ટ પ્રવૃત્તિ / કાર્ય.
 DocType: Vehicle Log,Refuelling Details,Refuelling વિગતો
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,પગાર સ્લિપ બનાવો
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,આગામી સંપર્ક આગેવાની ઇમેઇલ આઈડી તરીકે જ ન હોઈ શકે
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,આગામી સંપર્ક આગેવાની ઇમેઇલ આઈડી તરીકે જ ન હોઈ શકે
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","માટે લાગુ તરીકે પસંદ કરેલ છે તે ખરીદી, ચકાસાયેલ જ હોવું જોઈએ {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ડિસ્કાઉન્ટ કરતાં ઓછી 100 હોવી જ જોઈએ
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,છેલ્લા ખરીદી દર મળી નથી
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,વસ્તુ ટેક્સ
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,સપ્લાયર સામગ્રી
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,એક્સાઇઝ ભરતિયું
-DocType: Expense Claim,Employees Email Id,કર્મચારીઓ ઇમેઇલ આઈડી
+DocType: Expense Claim,Employees Email Address,કર્મચારીઓ ઇમેઇલ આઈડી
 DocType: Employee Attendance Tool,Marked Attendance,માર્કડ એટેન્ડન્સ
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,વર્તમાન જવાબદારીઓ
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,સામૂહિક એસએમએસ તમારા સંપર્કો મોકલો
diff --git a/erpnext/translations/he.csv b/erpnext/translations/he.csv
index 7f3b509..69ac736 100644
--- a/erpnext/translations/he.csv
+++ b/erpnext/translations/he.csv
@@ -330,7 +330,7 @@
 DocType: Workstation,Rent Cost,עלות השכרה
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,הסכום לאחר פחת
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,אנא בחר חודש והשנה
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","id הדוא""ל של הזן מופרד על ידי פסיקים, חשבונית תישלח באופן אוטומטי על תאריך מסוים"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","id הדוא""ל של הזן מופרד על ידי פסיקים, חשבונית תישלח באופן אוטומטי על תאריך מסוים"
 DocType: Employee,Company Email,"חברת דוא""ל"
 DocType: GL Entry,Debit Amount in Account Currency,סכום חיוב במטבע חשבון
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,עסקות בנק / מזומנים נגד מפלגה או עבור העברה פנימית
@@ -621,7 +621,7 @@
 apps/erpnext/erpnext/controllers/accounts_controller.py +551,Row #{0}: Asset {1} does not linked to Item {2},# שורה {0}: Asset {1} אינו קשור פריט {2}
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,חשבון {0} הוזן מספר פעמים
 DocType: Account,Expenses Included In Valuation,הוצאות שנכללו בהערכת שווי
-DocType: Employee,Provide email id registered in company,"לספק id הדוא""ל רשום בחברה"
+DocType: Employee,Provide Email Address registered in company,"לספק id הדוא""ל רשום בחברה"
 DocType: Hub Settings,Seller City,מוכר עיר
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,בחר סטודנטי קבוצה
 DocType: Email Digest,Next email will be sent on:,"הדוא""ל הבא יישלח על:"
@@ -1011,7 +1011,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,כחול
 DocType: Purchase Invoice,Is Return,האם חזרה
 DocType: Price List Country,Price List Country,מחיר מחירון מדינה
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,אנא הגדר מזהה דוא&quot;ל
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,אנא הגדר מזהה דוא&quot;ל
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} nos סדרתי תקף עבור פריט {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,קוד פריט לא ניתן לשנות למס 'סידורי
@@ -2005,7 +2005,7 @@
 DocType: Task Depends On,Task Depends On,המשימה תלויה ב
 DocType: Supplier Quotation,Opportunity,הזדמנות
 ,Completed Production Orders,הזמנות ייצור שהושלמו
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,שורת {0}: לקבלת ספק {0} id הדוא&quot;ל נדרש כדי לשלוח דואר אלקטרוני
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,שורת {0}: לקבלת ספק {0} id הדוא&quot;ל נדרש כדי לשלוח דואר אלקטרוני
 DocType: Operation,Default Workstation,Workstation ברירת המחדל
 DocType: Notification Control,Expense Claim Approved Message,הודעת תביעת הוצאות שאושרה
 DocType: Payment Entry,Deductions or Loss,ניכויים או הפסד
@@ -3327,7 +3327,7 @@
 ,Cash Flow,תזרים מזומנים
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,תקופת יישום לא יכולה להיות על פני שתי רשומות alocation
 DocType: Item Group,Default Expense Account,חשבון הוצאות ברירת המחדל
-DocType: Student,Student Email ID,מזהה אימייל סטודנטים
+DocType: Student,Student Email Address,מזהה אימייל סטודנטים
 DocType: Employee,Notice (days),הודעה (ימים)
 DocType: Tax Rule,Sales Tax Template,תבנית מס מכירות
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,בחר פריטים כדי לשמור את החשבונית
@@ -3463,7 +3463,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,צפייה בלידים
 DocType: Program Enrollment Tool,New Program,תוכנית חדשה
 DocType: Item Attribute Value,Attribute Value,תכונה ערך
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","id דוא""ל חייב להיות ייחודי, כבר קיים עבור {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","id דוא""ל חייב להיות ייחודי, כבר קיים עבור {0}"
 ,Itemwise Recommended Reorder Level,Itemwise מומלץ להזמנה חוזרת רמה
 DocType: Salary Detail,Salary Detail,פרטי שכר
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,אנא בחר {0} ראשון
@@ -3907,7 +3907,7 @@
 DocType: Item,Item Tax,מס פריט
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,חומר לספקים
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,בלו חשבונית
-DocType: Expense Claim,Employees Email Id,"דוא""ל עובדי זיהוי"
+DocType: Expense Claim,Employees Email Address,"דוא""ל עובדי זיהוי"
 DocType: Employee Attendance Tool,Marked Attendance,נוכחות בולטת
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,התחייבויות שוטפות
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,שלח SMS המוני לאנשי הקשר שלך
diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv
index 7943dfa..b8c2f34 100644
--- a/erpnext/translations/hi.csv
+++ b/erpnext/translations/hi.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,राशि मूल्यह्रास के बाद
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,आगामी कैलेंडर घटनाओं
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,माह और वर्ष का चयन करें
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","अल्पविराम के द्वारा अलग ईमेल आईडी दर्ज करें, चालान विशेष तिथि पर स्वचालित रूप से भेज दिया जाएगा"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","अल्पविराम के द्वारा अलग ईमेल आईडी दर्ज करें, चालान विशेष तिथि पर स्वचालित रूप से भेज दिया जाएगा"
 DocType: Employee,Company Email,कंपनी ईमेल
 DocType: GL Entry,Debit Amount in Account Currency,खाते की मुद्रा में डेबिट राशि
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,बैंक / नकद पार्टी के खिलाफ या आंतरिक स्थानांतरण के लिए लेनदेन
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,पूर्वावलोकन वेतन पर्ची
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,खाता {0} कई बार दर्ज किया गया है
 DocType: Account,Expenses Included In Valuation,व्यय मूल्यांकन में शामिल
-DocType: Employee,Provide email id registered in company,कंपनी में पंजीकृत ईमेल आईडी प्रदान
+DocType: Employee,Provide Email Address registered in company,कंपनी में पंजीकृत ईमेल आईडी प्रदान
 DocType: Hub Settings,Seller City,विक्रेता सिटी
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,एक छात्र समूह का चयन करें
 ,Absent Student Report,अनुपस्थित छात्र की रिपोर्ट
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,नीला
 DocType: Purchase Invoice,Is Return,वापसी है
 DocType: Price List Country,Price List Country,मूल्य सूची देश
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ईमेल आईडी सेट करें
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ईमेल आईडी सेट करें
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},आइटम के लिए {0} वैध धारावाहिक नग {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,मद कोड सीरियल नंबर के लिए बदला नहीं जा सकता
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,काम पर निर्भर करता है
 DocType: Supplier Quotation,Opportunity,अवसर
 ,Completed Production Orders,पूरे किए उत्पादन के आदेश
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,पंक्ति {0}: आपूर्तिकर्ता के लिए {0} ईमेल आईडी ईमेल भेजने के लिए आवश्यक है
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,पंक्ति {0}: आपूर्तिकर्ता के लिए {0} ईमेल आईडी ईमेल भेजने के लिए आवश्यक है
 DocType: Operation,Default Workstation,मूलभूत वर्कस्टेशन
 DocType: Notification Control,Expense Claim Approved Message,व्यय दावा संदेश स्वीकृत
 DocType: Payment Entry,Deductions or Loss,कटौती या घटाने
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,आवेदन की अवधि दो alocation अभिलेखों के पार नहीं किया जा सकता
 DocType: Item Group,Default Expense Account,डिफ़ॉल्ट व्यय खाते
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,छात्र बैच या पाठ्यक्रम अनुसूची अनिवार्य है
-DocType: Student,Student Email ID,छात्र ईमेल आईडी
+DocType: Student,Student Email Address,छात्र ईमेल आईडी
 DocType: Employee,Notice (days),सूचना (दिन)
 DocType: Tax Rule,Sales Tax Template,सेल्स टैक्स खाका
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,चालान बचाने के लिए आइटम का चयन करें
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,देखें बिक्रीसूत्र
 DocType: Program Enrollment Tool,New Program,नए कार्यक्रम
 DocType: Item Attribute Value,Attribute Value,मान बताइए
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ईमेल आईडी अद्वितीय होना चाहिए , पहले से ही मौजूद है {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ईमेल आईडी अद्वितीय होना चाहिए , पहले से ही मौजूद है {0}"
 ,Itemwise Recommended Reorder Level,Itemwise पुनःक्रमित स्तर की सिफारिश की
 DocType: Salary Detail,Salary Detail,वेतन विस्तार
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,पहला {0} का चयन करें
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,परियोजना / कार्य कार्य.
 DocType: Vehicle Log,Refuelling Details,ईंधन भराई विवरण
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,वेतन स्लिप्स उत्पन्न
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,अगले संपर्क के द्वारा सीसा ईमेल आईडी के रूप में ही नहीं किया जा सकता
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,अगले संपर्क के द्वारा सीसा ईमेल आईडी के रूप में ही नहीं किया जा सकता
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","लागू करने के लिए के रूप में चुना जाता है तो खरीदना, जाँच की जानी चाहिए {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,सबसे कम से कम 100 होना चाहिए
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,अंतिम खरीद दर नहीं मिला
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,आइटम टैक्स
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,प्रदायक के लिए सामग्री
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,आबकारी चालान
-DocType: Expense Claim,Employees Email Id,ईमेल आईडी कर्मचारी
+DocType: Expense Claim,Employees Email Address,ईमेल आईडी कर्मचारी
 DocType: Employee Attendance Tool,Marked Attendance,उल्लेखनीय उपस्थिति
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,वर्तमान देयताएं
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,अपने संपर्कों के लिए बड़े पैमाने पर एसएमएस भेजें
diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv
index 8889392..245f62d 100644
--- a/erpnext/translations/hr.csv
+++ b/erpnext/translations/hr.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Iznos nakon amortizacije
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Nadolazeći Kalendar događanja
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Molimo odaberite mjesec i godinu
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Unesite e-mail ID odvojena zarezima, račun će automatski biti poslan na određeni datum"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Unesite e-mail ID odvojena zarezima, račun će automatski biti poslan na određeni datum"
 DocType: Employee,Company Email,tvrtka E-mail
 DocType: GL Entry,Debit Amount in Account Currency,Debitna Iznos u valuti računa
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Banka / Novac transakcije protiv stranke ili za internog transfera
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Pregled Plaća proklizavanja
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Račun {0} unesen više puta
 DocType: Account,Expenses Included In Valuation,Troškovi uključeni u vrednovanje
-DocType: Employee,Provide email id registered in company,Osigurati e id registriran u tvrtki
+DocType: Employee,Provide Email Address registered in company,Osigurati e id registriran u tvrtki
 DocType: Hub Settings,Seller City,Prodavač Grad
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Odaberite grupe studenata
 ,Absent Student Report,Odsutni Student Report
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Plava
 DocType: Purchase Invoice,Is Return,Je li povratak
 DocType: Price List Country,Price List Country,Država cjenika
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Molimo postavite e-ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Molimo postavite e-ID
 DocType: Item,UOMs,J. MJ.
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} valjani serijski nos za Stavka {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kod proizvoda ne može se mijenjati za serijski broj.
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Zadatak ovisi o
 DocType: Supplier Quotation,Opportunity,Prilika
 ,Completed Production Orders,Završeni Radni nalozi
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Red {0}: Za dobavljača {0} email id potrebna za slanje e-pošte
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Red {0}: Za dobavljača {0} Email Address potrebna za slanje e-pošte
 DocType: Operation,Default Workstation,Zadana Workstation
 DocType: Notification Control,Expense Claim Approved Message,Rashodi Zahtjev Odobren poruku
 DocType: Payment Entry,Deductions or Loss,Odbitaka ili gubitak
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Razdoblje zahtjev ne može biti preko dva alocation zapisa
 DocType: Item Group,Default Expense Account,Zadani račun rashoda
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Studentski Batch ili kolegija Raspored je obavezno
-DocType: Student,Student Email ID,Student ID e-pošte
+DocType: Student,Student Email Address,Student ID e-pošte
 DocType: Employee,Notice (days),Obavijest (dani)
 DocType: Tax Rule,Sales Tax Template,Porez Predložak
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Odaberite stavke za spremanje račun
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Pogledaj vodi
 DocType: Program Enrollment Tool,New Program,Novi program
 DocType: Item Attribute Value,Attribute Value,Vrijednost atributa
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email ID mora biti jedinstven , već postoji za {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address mora biti jedinstven , već postoji za {0}"
 ,Itemwise Recommended Reorder Level,Itemwise - preporučena razina ponovne narudžbe
 DocType: Salary Detail,Salary Detail,Plaća Detalj
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Odaberite {0} Prvi
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projekt aktivnost / zadatak.
 DocType: Vehicle Log,Refuelling Details,Punjenje Detalji
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generiranje plaće gaćice
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Sljedeća Kontakt Po ne može biti ista kao što je vodeći e-mail id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Sljedeća Kontakt Po ne može biti ista kao što je vodeći e-mail id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Nabava mora biti provjerena, ako je primjenjivo za odabrano kao {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Popust mora biti manji od 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Posljednja stopa kupnju nije pronađen
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,Porez proizvoda
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materijal za dobavljača
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Trošarine Račun
-DocType: Expense Claim,Employees Email Id,Zaposlenici Email ID
+DocType: Expense Claim,Employees Email Address,Zaposlenici Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Označena posjećenost
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kratkoročne obveze
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Pošalji grupne SMS poruke svojim kontaktima
diff --git a/erpnext/translations/hu.csv b/erpnext/translations/hu.csv
index 5d0422b..1eb3bd5 100644
--- a/erpnext/translations/hu.csv
+++ b/erpnext/translations/hu.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Összeg az értékcsökkenési leírás után
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Közelgő naptári események
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Kérjük, válasszon hónapot és évet"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Vesszővel elválasztva kell felsorolni az emailcímeket, ahova a számla automatikusan elküldésre kerül az adott időpontban"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Vesszővel elválasztva kell felsorolni az emailcímeket, ahova a számla automatikusan elküldésre kerül az adott időpontban"
 DocType: Employee,Company Email,Vaállakozás E-mail címe
 DocType: GL Entry,Debit Amount in Account Currency,Tartozik összeg a számla pénznemében
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank/készpénz tranzakciókat ügyfélfél vagy belső átutalás szerint
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Bérpapír előnézet
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,A {0} számlát már többször bevitték
 DocType: Account,Expenses Included In Valuation,Költségek beleértve a készletértékelésbe
-DocType: Employee,Provide email id registered in company,Adja meg a vállalathoz bejegyzett email id azonosítót
+DocType: Employee,Provide Email Address registered in company,Adja meg a vállalathoz bejegyzett Email Address azonosítót
 DocType: Hub Settings,Seller City,Eladó városa
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Kérjük, válasszon ki egy diákcsoportot"
 ,Absent Student Report,Hiányzik Student Report
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Kék
 DocType: Purchase Invoice,Is Return,Ez visszárú
 DocType: Price List Country,Price List Country,Árlista Ország
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,"Kérjük, állítsa be az E-mail ID azonosítót"
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,"Kérjük, állítsa be az E-mail ID azonosítót"
 DocType: Item,UOMs,Mértékegységek
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},"{0} érvényes sorozatszámok, a(z) {1} tételhez"
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Tételkódot nem lehet lecserélni Széria számmá
@@ -2197,7 +2197,7 @@
 DocType: Task Depends On,Task Depends On,A feladat ettől függ:
 DocType: Supplier Quotation,Opportunity,Lehetőség
 ,Completed Production Orders,Befejezett gyártási rendelések
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,"Sor {0}: A beszállító {0} e-mail id szükséges, email küldéshez"
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,"Sor {0}: A beszállító {0} e-mail id szükséges, email küldéshez"
 DocType: Operation,Default Workstation,Alapértelmezett Munkaállomás
 DocType: Notification Control,Expense Claim Approved Message,Jóváhagyott igény indoklása
 DocType: Payment Entry,Deductions or Loss,Levonások vagy veszteségek
@@ -3642,7 +3642,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Jelentkezési időszak nem lehet két elhelyezett bejegyzés között
 DocType: Item Group,Default Expense Account,Alapértelmezett Kiadás számla
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch vagy Course Schedule kötelező
-DocType: Student,Student Email ID,Tanuló e-mail azonosító
+DocType: Student,Student Email Address,Tanuló e-mail azonosító
 DocType: Employee,Notice (days),Felmondás (nap(ok))
 DocType: Tax Rule,Sales Tax Template,Forgalmi adó Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Válassza ki a tételeket a számla mentéséhez
@@ -3793,7 +3793,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Érdeklődések megtekintése
 DocType: Program Enrollment Tool,New Program,Új program
 DocType: Item Attribute Value,Attribute Value,Jellemzők értéke
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id-nek egyedinek kell lennie, ez már létezik: {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address-nek egyedinek kell lennie, ez már létezik: {0}"
 ,Itemwise Recommended Reorder Level,Tételenkénti Ajánlott újrarendelési szint
 DocType: Salary Detail,Salary Detail,Bér részletei
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Kérjük, válassza ki a {0} először"
@@ -3984,7 +3984,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projekt téma feladatok / tevékenységek.
 DocType: Vehicle Log,Refuelling Details,Tankolás Részletek
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Bérpapír generálása
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,"Tovább Kapcsolat nem lehet ugyanaz, mint a vezető E-mail azonosító"
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,"Tovább Kapcsolat nem lehet ugyanaz, mint a vezető E-mail azonosító"
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Vásárlást ellenőrizni kell, amennyiben alkalmazható erre a kiválasztottra: {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,"Kedvezménynek kisebbnek kell lennie, mint 100"
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Utolsó vételi ár nem található
@@ -4279,7 +4279,7 @@
 DocType: Item,Item Tax,Tétel adójának típusa
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Anyag beszállítóhoz
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Jövedéki számla
-DocType: Expense Claim,Employees Email Id,Alkalmazott emailcíme
+DocType: Expense Claim,Employees Email Address,Alkalmazott emailcíme
 DocType: Employee Attendance Tool,Marked Attendance,jelzett Nézőszám
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Rövid lejáratú kötelezettségek
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Küldjön tömeges SMS-t a kapcsolatainak
diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv
index 3bfe9ba..d03b17d 100644
--- a/erpnext/translations/id.csv
+++ b/erpnext/translations/id.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Jumlah Setelah Penyusutan
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Mendatang Kalender Acara
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Silakan pilih bulan dan tahun
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Entrikan id email dipisahkan dengan koma, invoice akan dikirimkan secara otomatis pada tanggal tertentu"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Entrikan id email dipisahkan dengan koma, invoice akan dikirimkan secara otomatis pada tanggal tertentu"
 DocType: Employee,Company Email,Email Perusahaan
 DocType: GL Entry,Debit Amount in Account Currency,Jumlah Debit di Akun Mata Uang
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Transaksi Bank / Cash terhadap partai atau untuk internal transfer
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Slip Gaji Preview
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Akun {0} telah dimasukkan beberapa kali
 DocType: Account,Expenses Included In Valuation,Biaya Termasuk di Dalam Penilaian Barang
-DocType: Employee,Provide email id registered in company,Menyediakan email id yang terdaftar di perusahaan
+DocType: Employee,Provide Email Address registered in company,Menyediakan Email Address yang terdaftar di perusahaan
 DocType: Hub Settings,Seller City,Kota Penjual
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Silakan pilih Grup Pelajar
 ,Absent Student Report,Laporan Siswa Absen
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Biru
 DocType: Purchase Invoice,Is Return,Retur Barang
 DocType: Price List Country,Price List Country,Negara Daftar Harga
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Silahkan mengatur ID Email
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Silahkan mengatur ID Email
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} nomor seri berlaku untuk Item {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Item Code tidak dapat diubah untuk Serial Number
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Tugas Tergantung Pada
 DocType: Supplier Quotation,Opportunity,Peluang
 ,Completed Production Orders,Order Produksi Selesai
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: Untuk pemasok {0} email id diperlukan untuk mengirim email
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: Untuk pemasok {0} Email Address diperlukan untuk mengirim email
 DocType: Operation,Default Workstation,Standar Workstation
 DocType: Notification Control,Expense Claim Approved Message,Beban Klaim Disetujui Pesan
 DocType: Payment Entry,Deductions or Loss,Pemotongan atau Rugi
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Periode aplikasi tidak bisa di dua catatan alokasi
 DocType: Item Group,Default Expense Account,Beban standar Akun
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Mahasiswa Batch atau Jadwal Course adalah wajib
-DocType: Student,Student Email ID,Mahasiswa ID Email
+DocType: Student,Student Email Address,Mahasiswa ID Email
 DocType: Employee,Notice (days),Notice (hari)
 DocType: Tax Rule,Sales Tax Template,Template Pajak Penjualan
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Pilih item untuk menyimpan faktur
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Lihat Kesempatan
 DocType: Program Enrollment Tool,New Program,Program baru
 DocType: Item Attribute Value,Attribute Value,Nilai Atribut
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id harus unik, sudah ada untuk {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address harus unik, sudah ada untuk {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Rekomendasi Reorder Tingkat
 DocType: Salary Detail,Salary Detail,Detil gaji
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Silahkan pilih {0} terlebih dahulu
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Kegiatan proyek / tugas.
 DocType: Vehicle Log,Refuelling Details,Detail Pengisian
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Buat Slip Gaji
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Berikutnya Hubungi Dengan tidak bisa sama dengan Timbal Email id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Berikutnya Hubungi Dengan tidak bisa sama dengan Timbal Email Address
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Membeli harus dicentang, jika ""Berlaku Untuk"" dipilih sebagai {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Diskon harus kurang dari 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Tingkat pembelian terakhir tidak ditemukan
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,Pajak Stok Barang
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Bahan untuk Supplier
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Cukai Faktur
-DocType: Expense Claim,Employees Email Id,Karyawan Email Id
+DocType: Expense Claim,Employees Email Address,Karyawan Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Absensi Terdaftar
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Piutang Lancar
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Kirim SMS massal ke kontak Anda
diff --git a/erpnext/translations/is.csv b/erpnext/translations/is.csv
index c6dc148..3d056d2 100644
--- a/erpnext/translations/is.csv
+++ b/erpnext/translations/is.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Upphæð Eftir Afskriftir
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Næstu Dagbókaratriði
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Vinsamlegast veldu mánuði og ár
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Sláðu email persónuskilríki aðskilin með kommum, reikningur verður sent sjálfkrafa tilteknum degi"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Sláðu email persónuskilríki aðskilin með kommum, reikningur verður sent sjálfkrafa tilteknum degi"
 DocType: Employee,Company Email,fyrirtæki Email
 DocType: GL Entry,Debit Amount in Account Currency,Debit Upphæð í Account Gjaldmiðill
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / reiðufé gagnvart aðila eða fyrir innra flytja
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Laun Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Reikningur {0} hefur verið slegið mörgum sinnum
 DocType: Account,Expenses Included In Valuation,Kostnaður í Verðmat
-DocType: Employee,Provide email id registered in company,Gefðu email persónuskilríki skráð í félaginu
+DocType: Employee,Provide Email Address registered in company,Gefðu email persónuskilríki skráð í félaginu
 DocType: Hub Settings,Seller City,Seljandi City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Vinsamlegast veldu Student Group
 ,Absent Student Report,Absent Student Report
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blue
 DocType: Purchase Invoice,Is Return,er aftur
 DocType: Price List Country,Price List Country,Verðskrá Country
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Vinsamlegast settu Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Vinsamlegast settu Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} gild raðnúmer nos fyrir lið {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Item Code er ekki hægt að breyta fyrir Raðnúmer
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Verkefni veltur á
 DocType: Supplier Quotation,Opportunity,tækifæri
 ,Completed Production Orders,Lokið Framleiðsla Pantanir
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: Fyrir birgja {0} email persónuskilríki er nauðsynlegt að senda tölvupóst
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: Fyrir birgja {0} email persónuskilríki er nauðsynlegt að senda tölvupóst
 DocType: Operation,Default Workstation,Sjálfgefið Workstation
 DocType: Notification Control,Expense Claim Approved Message,Kostnað Krafa Samþykkt skilaboð
 DocType: Payment Entry,Deductions or Loss,Frádráttur eða tap
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Umsókn tímabil getur ekki verið á tveimur alocation færslur
 DocType: Item Group,Default Expense Account,Sjálfgefið kostnað reiknings
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Námsmaður Hópur eða Course Dagskrá er nauðsynlegur
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Tilkynning (dagar)
 DocType: Tax Rule,Sales Tax Template,Söluskattur Snið
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Veldu atriði til að bjarga reikning
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Skoða Vísbendingar
 DocType: Program Enrollment Tool,New Program,ný Program
 DocType: Item Attribute Value,Attribute Value,eigindi gildi
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id verður að vera einstakt, þegar til fyrir {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address verður að vera einstakt, þegar til fyrir {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Mælt Uppröðun Level
 DocType: Salary Detail,Salary Detail,laun Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Vinsamlegast veldu {0} fyrst
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Project virkni / verkefni.
 DocType: Vehicle Log,Refuelling Details,Eldsneytisstöðvar Upplýsingar
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Búa Laun laumar
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Næsta Samband með getur ekki verið sama og Lead email id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Næsta Samband með getur ekki verið sama og Lead Email Address
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Kaup verður að vera merkt, ef við á er valið sem {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Afsláttur verður að vera minna en 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Síðustu kaup hlutfall fannst ekki
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Liður Tax
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Efni til Birgir
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,vörugjöld Invoice
-DocType: Expense Claim,Employees Email Id,Starfsmenn Netfang Id
+DocType: Expense Claim,Employees Email Address,Starfsmenn Netfang Id
 DocType: Employee Attendance Tool,Marked Attendance,Marked Aðsókn
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,núverandi Skuldir
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Senda massa SMS til þinn snerting
diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv
index 1a6c183..b01cad5 100644
--- a/erpnext/translations/it.csv
+++ b/erpnext/translations/it.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Importo Dopo ammortamento
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Prossimi eventi del calendario
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Si prega di selezionare mese e anno
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Inserisci email separate da virgola, le fatture saranno inviate automaticamente in una data particolare"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Inserisci email separate da virgola, le fatture saranno inviate automaticamente in una data particolare"
 DocType: Employee,Company Email,azienda Email
 DocType: GL Entry,Debit Amount in Account Currency,Importo Debito Account Valuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Banca / Cash transazioni contro festa o per il trasferimento interno
@@ -684,7 +684,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Anteprima foglio paga
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Account {0} è stato inserito più volte
 DocType: Account,Expenses Included In Valuation,Spese incluse nella valutazione
-DocType: Employee,Provide email id registered in company,Fornire id-mail registrato in azienda
+DocType: Employee,Provide Email Address registered in company,Fornire id-mail registrato in azienda
 DocType: Hub Settings,Seller City,Città Venditore
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Si prega di selezionare un gruppo di studenti
 ,Absent Student Report,Assente Student Report
@@ -1126,7 +1126,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blu
 DocType: Purchase Invoice,Is Return,È Return
 DocType: Price List Country,Price List Country,Listino Prezzi Nazione
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Si prega di impostare ID e-mail
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Si prega di impostare ID e-mail
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} numeri di serie validi per l'articolo {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Codice Articolo non può essere modificato per N. di Serie
@@ -2217,7 +2217,7 @@
 DocType: Task Depends On,Task Depends On,Attività dipende
 DocType: Supplier Quotation,Opportunity,Opportunità
 ,Completed Production Orders,Completati gli ordini di produzione
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Riga {0}: Per il fornitore {0} id-mail è tenuto ad inviare e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Riga {0}: Per il fornitore {0} id-mail è tenuto ad inviare e-mail
 DocType: Operation,Default Workstation,Workstation predefinita
 DocType: Notification Control,Expense Claim Approved Message,Messaggio Rimborso Spese Approvato
 DocType: Payment Entry,Deductions or Loss,Deduzioni o la perdita
@@ -3695,7 +3695,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Periodo di applicazione non può essere tra due record alocation
 DocType: Item Group,Default Expense Account,Conto spese predefinito
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch studente o orario del corso è obbligatoria
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Avviso ( giorni )
 DocType: Tax Rule,Sales Tax Template,Sales Tax Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Selezionare gli elementi per salvare la fattura
@@ -3846,7 +3846,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Visualizza Contatti
 DocType: Program Enrollment Tool,New Program,Nuovo programma
 DocType: Item Attribute Value,Attribute Value,Valore Attributo
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id deve essere unico, esiste già per {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address deve essere unico, esiste già per {0}"
 ,Itemwise Recommended Reorder Level,Itemwise consigliata riordino Livello
 DocType: Salary Detail,Salary Detail,stipendio Dettaglio
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Si prega di selezionare {0} prima
@@ -4048,7 +4048,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Attività / attività del progetto.
 DocType: Vehicle Log,Refuelling Details,Dettagli di rifornimento
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generare buste paga
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Avanti Contatto Con non può essere lo stesso come il piombo e-mail id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Avanti Contatto Con non può essere lo stesso come il piombo e-mail id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","L'acquisto deve essere controllato, se ""applicabile per"" bisogna selezionarlo come {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Sconto deve essere inferiore a 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Ultimo tasso di acquisto non trovato
@@ -4343,7 +4343,7 @@
 DocType: Item,Item Tax,Tax articolo
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiale da Fornitore
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Accise Fattura
-DocType: Expense Claim,Employees Email Id,Email Dipendenti
+DocType: Expense Claim,Employees Email Address,Email Dipendenti
 DocType: Employee Attendance Tool,Marked Attendance,Partecipazione Marcato
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Passività correnti
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Invia SMS di massa ai tuoi contatti
diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv
index 5a206ac..6cfcbc0 100644
--- a/erpnext/translations/ja.csv
+++ b/erpnext/translations/ja.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,減価償却後の金額
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,今後のカレンダーイベント
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,月と年を選択してください
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",カンマで区切られたメールアドレスを入力すると、請求が特定の日に自動的に送信されます
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",カンマで区切られたメールアドレスを入力すると、請求が特定の日に自動的に送信されます
 DocType: Employee,Company Email,会社の電子メール
 DocType: GL Entry,Debit Amount in Account Currency,アカウント通貨での借方金額
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,当事者に対してまたは内部転送のための銀行/現金取引
@@ -686,7 +686,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,プレビュー給与スリップ
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,アカウント{0}を複数回入力されました
 DocType: Account,Expenses Included In Valuation,評価中経費
-DocType: Employee,Provide email id registered in company,会社に登録されたメールアドレスを提供
+DocType: Employee,Provide Email Address registered in company,会社に登録されたメールアドレスを提供
 DocType: Hub Settings,Seller City,販売者の市区町村
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,学生グループを選択してください
 ,Absent Student Report,不在学生レポート
@@ -1138,7 +1138,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,青
 DocType: Purchase Invoice,Is Return,返品
 DocType: Price List Country,Price List Country,価格表内の国
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,メールアドレスを設定してください
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,メールアドレスを設定してください
 DocType: Item,UOMs,数量単位
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},アイテム {1} の有効なシリアル番号 {0}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,アイテムコードはシリアル番号に付け替えることができません
@@ -2234,7 +2234,7 @@
 DocType: Task Depends On,Task Depends On,依存するタスク
 DocType: Supplier Quotation,Opportunity,機会
 ,Completed Production Orders,完成した製造指示
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,行{0}:サプライヤーのために{0}電子メールIDは、電子メールを送信するために必要とされます
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,行{0}:サプライヤーのために{0}電子メールIDは、電子メールを送信するために必要とされます
 DocType: Operation,Default Workstation,デフォルト作業所
 DocType: Notification Control,Expense Claim Approved Message,経費請求を承認メッセージ
 DocType: Payment Entry,Deductions or Loss,控除または損失
@@ -3718,7 +3718,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,申請期間は2つの割当レコードを横断することはできません
 DocType: Item Group,Default Expense Account,デフォルト経費
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,学生バッチまたはコーススケジュールは必須です
-DocType: Student,Student Email ID,学生メールID
+DocType: Student,Student Email Address,学生メールID
 DocType: Employee,Notice (days),お知らせ(日)
 DocType: Tax Rule,Sales Tax Template,販売税テンプレート
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,請求書を保存する項目を選択します
@@ -3869,7 +3869,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,リードを表示
 DocType: Program Enrollment Tool,New Program,新しいプログラム
 DocType: Item Attribute Value,Attribute Value,属性値
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",メールアドレスは重複できません。すでに{0}に存在しています
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",メールアドレスは重複できません。すでに{0}に存在しています
 ,Itemwise Recommended Reorder Level,アイテムごとに推奨される再注文レベル
 DocType: Salary Detail,Salary Detail,給与詳細
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,{0}を選択してください
@@ -4071,7 +4071,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,プロジェクト活動/タスク
 DocType: Vehicle Log,Refuelling Details,給油の詳細
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,給与明細を生成
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,次の接触によっては、リードメールIDを同じにすることはできません
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,次の接触によっては、リードメールIDを同じにすることはできません
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",適用のためには次のように選択されている場合の購入は、チェックする必要があります{0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,割引は100未満でなければなりません
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,最後の購入率が見つかりません
@@ -4368,7 +4368,7 @@
 DocType: Item,Item Tax,アイテムごとの税
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,サプライヤー用資材
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,消費税の請求書
-DocType: Expense Claim,Employees Email Id,従業員メールアドレス
+DocType: Expense Claim,Employees Email Address,従業員メールアドレス
 DocType: Employee Attendance Tool,Marked Attendance,マークされた出席
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,流動負債
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,連絡先にまとめてSMSを送信
diff --git a/erpnext/translations/km.csv b/erpnext/translations/km.csv
index c38ba61..ad64036 100644
--- a/erpnext/translations/km.csv
+++ b/erpnext/translations/km.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,ចំនួនទឹកប្រាក់បន្ទាប់ពីការរំលស់
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,ព្រឹត្តិការណ៍ដែលនឹងមកដល់
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,សូមជ្រើសខែនិងឆ្នាំ
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","បញ្ចូលលេខសម្គាល់អ៊ីម៉ែលដែលបំបែកដោយសញ្ញាក្បៀស, វិក័យប័ត្រដែលនឹងត្រូវបានផ្ញើដោយស្វ័យប្រវត្តិនៅលើកាលបរិច្ឆេទជាក់លាក់"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","បញ្ចូលលេខសម្គាល់អ៊ីម៉ែលដែលបំបែកដោយសញ្ញាក្បៀស, វិក័យប័ត្រដែលនឹងត្រូវបានផ្ញើដោយស្វ័យប្រវត្តិនៅលើកាលបរិច្ឆេទជាក់លាក់"
 DocType: Employee,Company Email,ក្រុមហ៊ុនអ៊ីម៉ែល
 DocType: GL Entry,Debit Amount in Account Currency,ចំនួនឥណពន្ធរូបិយប័ណ្ណគណនី
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,ប្រតិបតិ្តការធនាគារ / សាច់ប្រាក់ប្រឆាំងនឹងគណបក្សឬសម្រាប់ការផ្ទេរផ្ទៃក្នុង
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,គ្រូពេទ្យប្រហែលជាប្រាក់ខែការមើលជាមុន
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,គណនី {0} ត្រូវបានបញ្ចូលច្រើនដង
 DocType: Account,Expenses Included In Valuation,ការចំណាយដែលបានរួមបញ្ចូលនៅក្នុងការវាយតម្លៃ
-DocType: Employee,Provide email id registered in company,ផ្តល់ជូននូវលេខសម្គាល់នៅក្នុងក្រុមហ៊ុនអ៊ីម៉ែលដែលបានចុះឈ្មោះ
+DocType: Employee,Provide Email Address registered in company,ផ្តល់ជូននូវលេខសម្គាល់នៅក្នុងក្រុមហ៊ុនអ៊ីម៉ែលដែលបានចុះឈ្មោះ
 DocType: Hub Settings,Seller City,ទីក្រុងអ្នកលក់
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,សូមជ្រើសក្រុមសិស្ស
 ,Absent Student Report,របាយការណ៍សិស្សអវត្តមាន
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ពណ៌ខៀវ
 DocType: Purchase Invoice,Is Return,តើការវិលត្រឡប់
 DocType: Price List Country,Price List Country,បញ្ជីតម្លៃប្រទេស
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,សូមកំណត់លេខសម្គាល់អ៊ីម៉ែល
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,សូមកំណត់លេខសម្គាល់អ៊ីម៉ែល
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} បាន NOS សម្គាល់ត្រឹមត្រូវសម្រាប់ធាតុ {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,ក្រមធាតុមិនអាចត្រូវបានផ្លាស់ប្តូរសម្រាប់លេខស៊េរី
@@ -2194,7 +2194,7 @@
 DocType: Task Depends On,Task Depends On,ភារកិច្ចអាស្រ័យលើ
 DocType: Supplier Quotation,Opportunity,ឱកាសការងារ
 ,Completed Production Orders,បានបញ្ចប់លើការបញ្ជាទិញផលិតកម្ម
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,ជួរដេក {0}: សម្រាប់ផ្គត់ផ្គង់ {0} លេខសម្គាល់អ៊ីម៉ែលត្រូវបានទាមទារដើម្បីផ្ញើអ៊ីម៉ែល
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,ជួរដេក {0}: សម្រាប់ផ្គត់ផ្គង់ {0} លេខសម្គាល់អ៊ីម៉ែលត្រូវបានទាមទារដើម្បីផ្ញើអ៊ីម៉ែល
 DocType: Operation,Default Workstation,ស្ថានីយការងារលំនាំដើម
 DocType: Notification Control,Expense Claim Approved Message,សារពាក្យបណ្តឹងលើការចំណាយបានអនុម័ត
 DocType: Payment Entry,Deductions or Loss,ការកាត់ឬការបាត់បង់
@@ -3638,7 +3638,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,រយៈពេលប្រើប្រាស់មិនអាចមាននៅទូទាំងកំណត់ត្រា alocation ទាំងពីរនាក់
 DocType: Item Group,Default Expense Account,ចំណាយតាមគណនីលំនាំដើម
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,វគ្គសិក្សានិស្សិតបាច់តារាងគឺជាការចាំបាច់
-DocType: Student,Student Email ID,លេខសម្គាល់អ៊ីមែលរបស់សិស្ស
+DocType: Student,Student Email Address,លេខសម្គាល់អ៊ីមែលរបស់សិស្ស
 DocType: Employee,Notice (days),សេចក្តីជូនដំណឹង (ថ្ងៃ)
 DocType: Tax Rule,Sales Tax Template,ទំព័រគំរូពន្ធលើការលក់
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ជ្រើសធាតុដើម្បីរក្សាទុកការវិក្ក័យប័ត្រ
@@ -3789,7 +3789,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,មើលតែងតែនាំឱ្យមាន
 DocType: Program Enrollment Tool,New Program,កម្មវិធីថ្មី
 DocType: Item Attribute Value,Attribute Value,តម្លៃគុណលក្ខណៈ
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","លេខសម្គាល់អ៊ីមែលត្រូវតែមានតែមួយគត់, រួចហើយសម្រាប់ {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","លេខសម្គាល់អ៊ីមែលត្រូវតែមានតែមួយគត់, រួចហើយសម្រាប់ {0}"
 ,Itemwise Recommended Reorder Level,Itemwise ផ្ដល់អនុសាសន៍រៀបចំវគ្គ
 DocType: Salary Detail,Salary Detail,លំអិតប្រាក់ខែ
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,សូមជ្រើស {0} ដំបូង
@@ -3979,7 +3979,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,សកម្មភាពរបស់គម្រោង / ភារកិច្ច។
 DocType: Vehicle Log,Refuelling Details,សេចក្ដីលម្អិតចាក់ប្រេង
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,បង្កើតប្រាក់ខែគ្រូពេទ្យប្រហែលជា
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,បន្ទាប់ទំនាក់ទំនងដោយមិនអាចជាដូចគ្នាលេខសម្គាល់អ៊ីម៉ែលដែលនាំមុខ
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,បន្ទាប់ទំនាក់ទំនងដោយមិនអាចជាដូចគ្នាលេខសម្គាល់អ៊ីម៉ែលដែលនាំមុខ
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",ទិញត្រូវតែត្រូវបានធីកបើកម្មវិធីសម្រាប់ការត្រូវបានជ្រើសរើសជា {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ការបញ្ចុះតម្លៃត្រូវតែមានតិចជាង 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,រកមិនឃើញអត្រាទិញមុនបាន
@@ -4273,7 +4273,7 @@
 DocType: Item,Item Tax,ការប្រមូលពន្ធលើធាតុ
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,សម្ភារៈដើម្បីផ្គត់ផ្គង់
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,រដ្ឋាករវិក័យប័ត្រ
-DocType: Expense Claim,Employees Email Id,និយោជិអ៊ីម៉ែលលេខសម្គាល់
+DocType: Expense Claim,Employees Email Address,និយោជិអ៊ីម៉ែលលេខសម្គាល់
 DocType: Employee Attendance Tool,Marked Attendance,វត្តមានដែលបានសម្គាល់
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,បំណុលនាពេលបច្ចុប្បន្ន
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ផ្ញើសារជាអក្សរដ៏ធំមួយដើម្បីទំនាក់ទំនងរបស់អ្នក
diff --git a/erpnext/translations/kn.csv b/erpnext/translations/kn.csv
index 861354a..d72ca6d 100644
--- a/erpnext/translations/kn.csv
+++ b/erpnext/translations/kn.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,ಪ್ರಮಾಣ ಸವಕಳಿ ನಂತರ
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,ಮುಂಬರುವ ಕ್ಯಾಲೆಂಡರ್ ಕ್ರಿಯೆಗಳು
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,ತಿಂಗಳು ವರ್ಷದ ಆಯ್ಕೆಮಾಡಿ
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",ಬೇರ್ಪಡಿಸಲಾಗಿರುತ್ತದೆ ಇಮೇಲ್ ಐಡಿ ಯನ್ನು ಸರಕುಪಟ್ಟಿ ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮೇಲ್ ಆಗುತ್ತದೆ
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",ಬೇರ್ಪಡಿಸಲಾಗಿರುತ್ತದೆ ಇಮೇಲ್ ಐಡಿ ಯನ್ನು ಸರಕುಪಟ್ಟಿ ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮೇಲ್ ಆಗುತ್ತದೆ
 DocType: Employee,Company Email,ಕಂಪನಿ ಇಮೇಲ್
 DocType: GL Entry,Debit Amount in Account Currency,ಖಾತೆ ಕರೆನ್ಸಿ ಡೆಬಿಟ್ ಪ್ರಮಾಣ
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,ಪಕ್ಷದ ವಿರುದ್ಧ ಅಥವಾ ಆಂತರಿಕ ವರ್ಗಾವಣೆ ಬ್ಯಾಂಕ್ / ನಗದು ವ್ಯವಹಾರಗಳನ್ನು
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,ಮುನ್ನೋಟ ಸಂಬಳ ಸ್ಲಿಪ್
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,ಖಾತೆ {0} ಅನೇಕ ಬಾರಿ ನಮೂದಿಸಲಾದ
 DocType: Account,Expenses Included In Valuation,ವೆಚ್ಚಗಳು ಮೌಲ್ಯಾಂಕನ ಸೇರಿಸಲಾಗಿದೆ
-DocType: Employee,Provide email id registered in company,ಕಂಪನಿಗಳು ನೋಂದಣಿ ಇಮೇಲ್ ಐಡಿ ಒದಗಿಸಿ
+DocType: Employee,Provide Email Address registered in company,ಕಂಪನಿಗಳು ನೋಂದಣಿ ಇಮೇಲ್ ಐಡಿ ಒದಗಿಸಿ
 DocType: Hub Settings,Seller City,ಮಾರಾಟಗಾರ ಸಿಟಿ
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,ವಿದ್ಯಾರ್ಥಿ ಗುಂಪು ಆಯ್ಕೆಮಾಡಿ
 ,Absent Student Report,ಆಬ್ಸೆಂಟ್ ವಿದ್ಯಾರ್ಥಿ ವರದಿ
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ಬ್ಲೂ
 DocType: Purchase Invoice,Is Return,ಮರಳುವುದು
 DocType: Price List Country,Price List Country,ದರ ಪಟ್ಟಿ ಕಂಟ್ರಿ
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ಈಮೇಲ್ ಅಡ್ರೆಸ್ ಹೊಂದಿಸಿ
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ಈಮೇಲ್ ಅಡ್ರೆಸ್ ಹೊಂದಿಸಿ
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},ಐಟಂ {0} ಮಾನ್ಯ ಸರಣಿ ಸೂಲ {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,ಐಟಂ ಕೋಡ್ ನೆಯ ಬದಲಾಗಿದೆ ಸಾಧ್ಯವಿಲ್ಲ .
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,ಟಾಸ್ಕ್ ಅವಲಂಬಿಸಿರುತ್ತದೆ
 DocType: Supplier Quotation,Opportunity,ಅವಕಾಶ
 ,Completed Production Orders,ಪೂರ್ಣಗೊಂಡಿದೆ ಉತ್ಪಾದನೆ ಆರ್ಡರ್ಸ್
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,ರೋ {0}: ಪೂರೈಕೆದಾರ ಫಾರ್ {0} ಇಮೇಲ್ ಐಡಿ ಇಮೇಲ್ ಕಳುಹಿಸಲು ಅಗತ್ಯವಿದೆ
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,ರೋ {0}: ಪೂರೈಕೆದಾರ ಫಾರ್ {0} ಇಮೇಲ್ ಐಡಿ ಇಮೇಲ್ ಕಳುಹಿಸಲು ಅಗತ್ಯವಿದೆ
 DocType: Operation,Default Workstation,ಡೀಫಾಲ್ಟ್ ವರ್ಕ್ಸ್ಟೇಷನ್
 DocType: Notification Control,Expense Claim Approved Message,ಖರ್ಚು ಹಕ್ಕು ಅನುಮೋದನೆ ಸಂದೇಶ
 DocType: Payment Entry,Deductions or Loss,ಕಳೆಯುವಿಕೆಗಳು ಅಥವಾ ನಷ್ಟ
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,ಅಪ್ಲಿಕೇಶನ್ ಅವಧಿಯಲ್ಲಿ ಎರಡು alocation ದಾಖಲೆಗಳನ್ನು ಅಡ್ಡಲಾಗಿ ಸಾಧ್ಯವಿಲ್ಲ
 DocType: Item Group,Default Expense Account,ಡೀಫಾಲ್ಟ್ ಖರ್ಚು ಖಾತೆ
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,ವಿದ್ಯಾರ್ಥಿ ಬ್ಯಾಚ್ ಅಥವಾ ಕೋರ್ಸ್ ಶೆಡ್ಯೂಲ್ ಕಡ್ಡಾಯ
-DocType: Student,Student Email ID,ವಿದ್ಯಾರ್ಥಿ ಈಮೇಲ್ ಅಡ್ರೆಸ್
+DocType: Student,Student Email Address,ವಿದ್ಯಾರ್ಥಿ ಈಮೇಲ್ ಅಡ್ರೆಸ್
 DocType: Employee,Notice (days),ಎಚ್ಚರಿಕೆ ( ದಿನಗಳು)
 DocType: Tax Rule,Sales Tax Template,ಮಾರಾಟ ತೆರಿಗೆ ಟೆಂಪ್ಲೇಟು
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ಸರಕುಪಟ್ಟಿ ಉಳಿಸಲು ಐಟಂಗಳನ್ನು ಆಯ್ಕೆ
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,ವೀಕ್ಷಿಸಿ ಕಾರಣವಾಗುತ್ತದೆ
 DocType: Program Enrollment Tool,New Program,ಹೊಸ ಕಾರ್ಯಕ್ರಮದಲ್ಲಿ
 DocType: Item Attribute Value,Attribute Value,ಮೌಲ್ಯ ಲಕ್ಷಣ
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ಇಮೇಲ್ ಐಡಿ ಅನನ್ಯ ಇರಬೇಕು , ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ಇಮೇಲ್ ಐಡಿ ಅನನ್ಯ ಇರಬೇಕು , ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ {0}"
 ,Itemwise Recommended Reorder Level,Itemwise ಮರುಕ್ರಮಗೊಳಿಸಿ ಮಟ್ಟ ಶಿಫಾರಸು
 DocType: Salary Detail,Salary Detail,ಸಂಬಳ ವಿವರ
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,ಮೊದಲ {0} ಆಯ್ಕೆ ಮಾಡಿ
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,ಪ್ರಾಜೆಕ್ಟ್ ಚಟುವಟಿಕೆ / ಕೆಲಸ .
 DocType: Vehicle Log,Refuelling Details,Refuelling ವಿವರಗಳು
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,ಸಂಬಳ ಚೂರುಗಳನ್ನು ರಚಿಸಿ
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,ಮುಂದಿನ ಮೂಲಕ ಸಂಪರ್ಕಿಸಿ ಲೀಡ್ ಇಮೇಲ್ ಐಡಿ ಅದೇ ಸಾಧ್ಯವಿಲ್ಲ
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,ಮುಂದಿನ ಮೂಲಕ ಸಂಪರ್ಕಿಸಿ ಲೀಡ್ ಇಮೇಲ್ ಐಡಿ ಅದೇ ಸಾಧ್ಯವಿಲ್ಲ
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","ಅನ್ವಯಿಸುವ ಹಾಗೆ ಆರಿಸಿದರೆ ಖರೀದಿ, ಪರೀಕ್ಷಿಸಬೇಕು {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ರಿಯಾಯಿತಿ ಕಡಿಮೆ 100 ಇರಬೇಕು
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,ಕೊನೆಯ ಖರೀದಿ ಕಂಡುಬಂದಿಲ್ಲ
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,ಐಟಂ ತೆರಿಗೆ
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,ಸರಬರಾಜುದಾರ ವಸ್ತು
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,ಅಬಕಾರಿ ಸರಕುಪಟ್ಟಿ
-DocType: Expense Claim,Employees Email Id,ನೌಕರರು ಇಮೇಲ್ ಐಡಿ
+DocType: Expense Claim,Employees Email Address,ನೌಕರರು ಇಮೇಲ್ ಐಡಿ
 DocType: Employee Attendance Tool,Marked Attendance,ಗುರುತು ಅಟೆಂಡೆನ್ಸ್
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,ಪ್ರಸಕ್ತ ಹಣಕಾಸಿನ ಹೊಣೆಗಾರಿಕೆಗಳು
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಿಗೆ ಸಾಮೂಹಿಕ SMS ಕಳುಹಿಸಿ
diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv
index c4ca2fa..2fb49f0 100644
--- a/erpnext/translations/ko.csv
+++ b/erpnext/translations/ko.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,금액 감가 상각 후
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,다가오는 일정 이벤트
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,월 및 연도를 선택하세요
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","쉼표로 구분 된 전자 메일 ID를 입력, 송장은 특정 날짜에 자동으로 발송됩니다"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","쉼표로 구분 된 전자 메일 ID를 입력, 송장은 특정 날짜에 자동으로 발송됩니다"
 DocType: Employee,Company Email,회사 이메일
 DocType: GL Entry,Debit Amount in Account Currency,계정 통화에서 직불 금액
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,자에 대하여 또는 내부 전송을위한 은행 / 현금 거래
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,미리보기 연봉 슬립
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,계정 {0} 여러 번 입력 된
 DocType: Account,Expenses Included In Valuation,비용은 평가에 포함
-DocType: Employee,Provide email id registered in company,이메일 ID는 회사에 등록 제공
+DocType: Employee,Provide Email Address registered in company,이메일 ID는 회사에 등록 제공
 DocType: Hub Settings,Seller City,판매자 도시
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,학생 그룹을 선택하세요
 ,Absent Student Report,결석 한 학생 보고서
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,푸른
 DocType: Purchase Invoice,Is Return,돌아가요
 DocType: Price List Country,Price List Country,가격 목록 나라
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,이메일 ID를 설정하십시오
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,이메일 ID를 설정하십시오
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},항목에 대한 {0} 유효한 일련 NOS {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,상품 코드 일련 번호 변경할 수 없습니다
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,작업에 따라 다릅니다
 DocType: Supplier Quotation,Opportunity,기회
 ,Completed Production Orders,완료 생산 주문
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,행 {0} : 공급 업체 {0} 이메일 ID는 이메일을 보낼 필요
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,행 {0} : 공급 업체 {0} 이메일 ID는 이메일을 보낼 필요
 DocType: Operation,Default Workstation,기본 워크 스테이션
 DocType: Notification Control,Expense Claim Approved Message,경비 청구서 승인 메시지
 DocType: Payment Entry,Deductions or Loss,공제 또는 손실
@@ -3697,7 +3697,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,신청 기간은 2 alocation 기록을 통해 할 수 없습니다
 DocType: Item Group,Default Expense Account,기본 비용 계정
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,학생 배치 또는 코스 예약은 필수입니다
-DocType: Student,Student Email ID,학생 이메일 ID
+DocType: Student,Student Email Address,학생 이메일 ID
 DocType: Employee,Notice (days),공지 사항 (일)
 DocType: Tax Rule,Sales Tax Template,판매 세 템플릿
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,송장을 저장하는 항목을 선택
@@ -3848,7 +3848,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,보기 오퍼
 DocType: Program Enrollment Tool,New Program,새 프로그램
 DocType: Item Attribute Value,Attribute Value,속성 값
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","이메일 ID가 고유해야합니다, 이미 존재 {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","이메일 ID가 고유해야합니다, 이미 존재 {0}"
 ,Itemwise Recommended Reorder Level,Itemwise는 재주문 수준에게 추천
 DocType: Salary Detail,Salary Detail,급여 세부 정보
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,먼저 {0}를 선택하세요
@@ -4050,7 +4050,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,프로젝트 활동 / 작업.
 DocType: Vehicle Log,Refuelling Details,급유 세부 사항
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,급여 전표 생성
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,다음으로 연락으로는 리드 이메일 ID와 동일 할 수 없습니다
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,다음으로 연락으로는 리드 이메일 ID와 동일 할 수 없습니다
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",해당 법령에가로 선택된 경우 구매 확인해야합니다 {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,할인 100 미만이어야합니다
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,마지막 구매 비율을 찾을 수 없습니다
@@ -4346,7 +4346,7 @@
 DocType: Item,Item Tax,상품의 세금
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,공급 업체에 소재
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,소비세 송장
-DocType: Expense Claim,Employees Email Id,직원 이드 이메일
+DocType: Expense Claim,Employees Email Address,직원 이드 이메일
 DocType: Employee Attendance Tool,Marked Attendance,표시된 출석
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,유동 부채
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,상대에게 대량 SMS를 보내기
diff --git a/erpnext/translations/ku.csv b/erpnext/translations/ku.csv
index c578ab7..726dc6c 100644
--- a/erpnext/translations/ku.csv
+++ b/erpnext/translations/ku.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Şêwaz Piştî Farhad.
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Calendar Upcoming Events
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Ji kerema xwe re meha û sala hilbijêre
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Enter id email ji hev biqetîne, fatûra wê were li ser date taybetî bêt"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Enter id email ji hev biqetîne, fatûra wê were li ser date taybetî bêt"
 DocType: Employee,Company Email,Company Email
 DocType: GL Entry,Debit Amount in Account Currency,Şêwaz Debit li Account Exchange
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,muamele Bank / Cash dijî partî an jî ji bo veguhestina navxweyî
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Bikini Salary
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Account {0} hatiye bicihkirin çend caran
 DocType: Account,Expenses Included In Valuation,Mesrefên di nav Valuation
-DocType: Employee,Provide email id registered in company,Ne id email qeydkirî li şîrketa
+DocType: Employee,Provide Email Address registered in company,Ne id email qeydkirî li şîrketa
 DocType: Hub Settings,Seller City,Seller City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Ji kerema xwe re Komeleya Xwendekarên hilbijêre
 ,Absent Student Report,Absent Report Student
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Şîn
 DocType: Purchase Invoice,Is Return,e Return
 DocType: Price List Country,Price List Country,List Price Country
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Ji kerema xwe ve set Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Ji kerema xwe ve set Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} nos serial derbasdar e ji bo vî babetî {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Code babete dikarin ji bo No. Serial ne bê guhertin
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Task Dimîne li ser
 DocType: Supplier Quotation,Opportunity,Fersend
 ,Completed Production Orders,Ordênên Production Qediya
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: Ji bo dabînkerê {0} email id pêwîst e ji bo şandina email
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: Ji bo dabînkerê {0} Email Address pêwîst e ji bo şandina email
 DocType: Operation,Default Workstation,Default Workstation
 DocType: Notification Control,Expense Claim Approved Message,Message mesrefan Pejirandin
 DocType: Payment Entry,Deductions or Loss,Daşikandinên an Loss
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,dema Application ne dikarin li seranserî du records alocation be
 DocType: Item Group,Default Expense Account,Account Default Expense
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch Student an Cedwela Kurs wêneke e
-DocType: Student,Student Email ID,Xwendekarên ID Email
+DocType: Student,Student Email Address,Xwendekarên ID Email
 DocType: Employee,Notice (days),Notice (rojan)
 DocType: Tax Rule,Sales Tax Template,Şablon firotina Bacê
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Select tomar bo rizgarkirina fatûra
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,View Leads
 DocType: Program Enrollment Tool,New Program,Program New
 DocType: Item Attribute Value,Attribute Value,nirxê taybetmendiyê
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id, divê yekta be, ji niha ve ji bo heye {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address, divê yekta be, ji niha ve ji bo heye {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Baştir DIRTYHERTZ Level
 DocType: Salary Detail,Salary Detail,Detail meaş
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Ji kerema xwe {0} hilbijêre yekem
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,çalakiyên Project / erka.
 DocType: Vehicle Log,Refuelling Details,Details Refuelling
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Çêneke Salary Slips
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Next Contact By nikare bibe wek id Email Lead
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Next Contact By nikare bibe wek id Email Lead
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Kirîn, divê werin kontrolkirin, eger Ji bo serlêdanê ya ku weke hilbijartî {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Discount gerek kêmtir ji 100 be
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Ev rûpel cara rêjeya kirîn nehate dîtin
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Bacê babetî
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Madî ji bo Supplier
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,baca bi fatûreyên
-DocType: Expense Claim,Employees Email Id,Karmendên Email Id
+DocType: Expense Claim,Employees Email Address,Karmendên Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Beşdariyê nîşankirin
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Deynên niha:
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Send SMS girseyî ji bo têkiliyên xwe
diff --git a/erpnext/translations/lo.csv b/erpnext/translations/lo.csv
index 07108b8..c5f9612 100644
--- a/erpnext/translations/lo.csv
+++ b/erpnext/translations/lo.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,ຈໍານວນເງິນຫຼັງຈາກຄ່າເສື່ອມລາຄາ
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,ທີ່ຈະເກີດຂຶ້ນປະຕິທິນເຫດການ
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,ກະລຸນາເລືອກເດືອນແລະປີ
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","ກະລຸນາໃສ່ອີເມວຂັ້ນດ້ວຍຈໍ້າຈຸດ, ໃບແຈ້ງຫນີ້ຈະໄດ້ຮັບການສົ່ງອັດຕະໂນມັດໃນວັນທີສະເພາະໃດຫນຶ່ງ"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","ກະລຸນາໃສ່ອີເມວຂັ້ນດ້ວຍຈໍ້າຈຸດ, ໃບແຈ້ງຫນີ້ຈະໄດ້ຮັບການສົ່ງອັດຕະໂນມັດໃນວັນທີສະເພາະໃດຫນຶ່ງ"
 DocType: Employee,Company Email,Email ບໍລິສັດ
 DocType: GL Entry,Debit Amount in Account Currency,ຈໍານວນເງິນ Debit ໃນສະກຸນເງິນບັນຊີ
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,ເຮັດທຸລະກໍາທະນາຄານ / ເງິນສົດຕໍ່ຕ້ານພັກຫຼືສໍາລັບການຍົກຍ້າຍພາຍໃນ
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,ສະແດງຄວາມຜິດພາດພຽງເງິນເດືອນ
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,ບັນຊີ {0} ໄດ້ຮັບການປ້ອນເວລາຫຼາຍ
 DocType: Account,Expenses Included In Valuation,ຄ່າໃຊ້ຈ່າຍລວມຢູ່ໃນການປະເມີນຄ່າ
-DocType: Employee,Provide email id registered in company,ໃຫ້ id ອີເມລຈົດທະບຽນໃນບໍລິສັດ
+DocType: Employee,Provide Email Address registered in company,ໃຫ້ id ອີເມລຈົດທະບຽນໃນບໍລິສັດ
 DocType: Hub Settings,Seller City,ຜູ້ຂາຍເມືອງ
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,ກະລຸນາເລືອກກຸ່ມນັກສຶກສາ
 ,Absent Student Report,ບົດລາຍງານນັກສຶກສາບໍ່
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,blue
 DocType: Purchase Invoice,Is Return,ແມ່ນກັບຄືນ
 DocType: Price List Country,Price List Country,ລາຄາປະເທດ
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ກະລຸນາຕັ້ງ ID Email
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ກະລຸນາຕັ້ງ ID Email
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} ພວກເຮົາອະນຸກົມທີ່ຖືກຕ້ອງສໍາລັບລາຍການ {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,ລະຫັດສິນຄ້າບໍ່ສາມາດມີການປ່ຽນແປງສໍາລັບການສະບັບເລກທີ Serial
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,ວຽກງານຂຶ້ນໃນ
 DocType: Supplier Quotation,Opportunity,ໂອກາດ
 ,Completed Production Orders,ສໍາເລັດໃບສັ່ງຜະລິດ
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,ຕິດຕໍ່ກັນ {0}: ສໍາລັບຜູ້ສະຫນອງ {0} id ອີເມລ໌ທີ່ຈໍາເປັນຕ້ອງສົ່ງອີເມວ
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,ຕິດຕໍ່ກັນ {0}: ສໍາລັບຜູ້ສະຫນອງ {0} id ອີເມລ໌ທີ່ຈໍາເປັນຕ້ອງສົ່ງອີເມວ
 DocType: Operation,Default Workstation,Workstation ມາດຕະຖານ
 DocType: Notification Control,Expense Claim Approved Message,Message ຄ່າໃຊ້ຈ່າຍການຮ້ອງຂໍອະນຸມັດ
 DocType: Payment Entry,Deductions or Loss,ຫັກຄ່າໃຊ້ຈ່າຍຫຼືການສູນເສຍ
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,ໄລຍະເວລາການນໍາໃຊ້ບໍ່ສາມາດຈະທົ່ວທັງສອງບັນທຶກ alocation
 DocType: Item Group,Default Expense Account,ບັນຊີມາດຕະຖານຄ່າໃຊ້ຈ່າຍ
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch ນັກສຶກສາຫຼືຈັດຕາຕະລາງລາຍວິຊາແມ່ນບັງຄັບ
-DocType: Student,Student Email ID,ID Email ນັກສຶກສາ
+DocType: Student,Student Email Address,ID Email ນັກສຶກສາ
 DocType: Employee,Notice (days),ຫນັງສືແຈ້ງການ (ວັນ)
 DocType: Tax Rule,Sales Tax Template,ແມ່ແບບພາສີການຂາຍ
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ເລືອກລາຍການທີ່ຈະຊ່ວຍປະຢັດໃບເກັບເງິນ
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,View Leads
 DocType: Program Enrollment Tool,New Program,ໂຄງການໃຫມ່
 DocType: Item Attribute Value,Attribute Value,ສະແດງມູນຄ່າ
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id ຕ້ອງເປັນເອກະລັກ, ລາຄາສໍາລັບ {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address ຕ້ອງເປັນເອກະລັກ, ລາຄາສໍາລັບ {0}"
 ,Itemwise Recommended Reorder Level,Itemwise ແນະນໍາຈັດລໍາດັບລະດັບ
 DocType: Salary Detail,Salary Detail,ຂໍ້ມູນເງິນເດືອນ
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,ກະລຸນາເລືອກ {0} ທໍາອິດ
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,ກິດຈະກໍາໂຄງການ / ວຽກງານ.
 DocType: Vehicle Log,Refuelling Details,ລາຍລະອຽດເຊື້ອເພີງ
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,ສ້າງເງິນເດືອນ Slips
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,ຖັດໄປໂດຍບໍ່ສາມາດເຊັ່ນດຽວກັນກັບ id Email Lead
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,ຖັດໄປໂດຍບໍ່ສາມາດເຊັ່ນດຽວກັນກັບ id Email Lead
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","ການຊື້ຕ້ອງໄດ້ຮັບການກວດສອບ, ຖ້າຫາກວ່າສາມາດນໍາໃຊ້ສໍາລັບການໄດ້ຖືກຄັດເລືອກເປັນ {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ສ່ວນລົດຕ້ອງຫນ້ອຍກ່ວາ 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,ບໍ່ພົບອັດຕາການຊື້ຫຼ້າສຸດ
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,ພາສີລາຍ
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,ອຸປະກອນການຜະລິດ
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,ອາກອນຊົມໃຊ້ໃບເກັບເງິນ
-DocType: Expense Claim,Employees Email Id,Id ພະນັກງານ Email
+DocType: Expense Claim,Employees Email Address,Id ພະນັກງານ Email
 DocType: Employee Attendance Tool,Marked Attendance,ຜູ້ເຂົ້າຮ່ວມການເຮັດເຄື່ອງຫມາຍ
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,ຫນີ້ສິນໃນປະຈຸບັນ
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ສົ່ງ SMS ມະຫາຊົນເພື່ອຕິດຕໍ່ພົວພັນຂອງທ່ານ
diff --git a/erpnext/translations/lt.csv b/erpnext/translations/lt.csv
index 9ef1e94..7b5d182 100644
--- a/erpnext/translations/lt.csv
+++ b/erpnext/translations/lt.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Suma po nusidėvėjimo
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Artimiausi Kalendoriaus įvykiai
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Prašome pasirinkti mėnesį ir metus
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Įveskite el.pašto tapatybės atskirti kableliais, sąskaitos faktūros bus išsiųstas automatiškai konkrečią datą"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Įveskite el.pašto tapatybės atskirti kableliais, sąskaitos faktūros bus išsiųstas automatiškai konkrečią datą"
 DocType: Employee,Company Email,Įmonės paštas
 DocType: GL Entry,Debit Amount in Account Currency,Debeto Suma sąskaitos valiuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bankas / Grynųjų pinigų operacijos nuo šalies arba dėl vidinio pervedimo
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Peržiūrėti darbo užmokestį
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Sąskaita {0} buvo įrašytas kelis kartus
 DocType: Account,Expenses Included In Valuation,"Sąnaudų, įtrauktų Vertinimo"
-DocType: Employee,Provide email id registered in company,Pateikite registruota bendrovė pašto ID
+DocType: Employee,Provide Email Address registered in company,Pateikite registruota bendrovė pašto ID
 DocType: Hub Settings,Seller City,Pardavėjo Miestas
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Pasirinkite studentų grupę
 ,Absent Student Report,Nėra studento ataskaitos
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,mėlynas
 DocType: Purchase Invoice,Is Return,Ar Grįžti
 DocType: Price List Country,Price List Country,Kainų sąrašas Šalis
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Prašome nustatyti elektroninio pašto numeris
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Prašome nustatyti elektroninio pašto numeris
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} galioja eilės numeriai už prekę {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Prekės kodas negali būti keičiamas Serial No.
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Užduotis Priklauso nuo
 DocType: Supplier Quotation,Opportunity,galimybė
 ,Completed Production Orders,Užbaigtos gamybos užsakymus
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Eilutės {0}: Dėl tiekėjo {0} siųsti tapatybės privalo siųsti laišką
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Eilutės {0}: Dėl tiekėjo {0} siųsti tapatybės privalo siųsti laišką
 DocType: Operation,Default Workstation,numatytasis Workstation
 DocType: Notification Control,Expense Claim Approved Message,Kompensuojamos Pretenzija Patvirtinta pranešimas
 DocType: Payment Entry,Deductions or Loss,Atskaitymai arba nuostolis
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Taikymo laikotarpis negali būti per du alocation įrašų
 DocType: Item Group,Default Expense Account,Numatytasis išlaidų sąskaita
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Studentų partijos ar užsiėmimų tvarkaraštis yra privalomi
-DocType: Student,Student Email ID,Studentų E-mail ID
+DocType: Student,Student Email Address,Studentų E-mail ID
 DocType: Employee,Notice (days),Pranešimas (dienų)
 DocType: Tax Rule,Sales Tax Template,Pardavimo mokestis Šablono
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Pasirinkite elementus išsaugoti sąskaitą faktūrą
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Peržiūrėti laidai
 DocType: Program Enrollment Tool,New Program,nauja programa
 DocType: Item Attribute Value,Attribute Value,Pavadinimas Reikšmė
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Paštas tapatybės turi būti unikalus, jau egzistuoja {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Paštas tapatybės turi būti unikalus, jau egzistuoja {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Rekomenduojama Pertvarkyti lygis
 DocType: Salary Detail,Salary Detail,Pajamos detalės
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Prašome pasirinkti {0} pirmas
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projekto veikla / užduotis.
 DocType: Vehicle Log,Refuelling Details,Degalų detalės
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Sukurti apie atlyginimų
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,"Kitas Susisiekti negali būti toks pat, kaip pagrindiniam elektroninio pašto numeris"
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,"Kitas Susisiekti negali būti toks pat, kaip pagrindiniam elektroninio pašto numeris"
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Ieško turi būti patikrinta, jei taikoma pasirinkta kaip {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Nuolaida turi būti mažesnis nei 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Paskutinis pirkinys norma nerastas
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Prekė Mokesčių
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,"Medžiaga, iš Tiekėjui"
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,akcizo Sąskaita
-DocType: Expense Claim,Employees Email Id,Darbuotojai elektroninio pašto numeris
+DocType: Expense Claim,Employees Email Address,Darbuotojai elektroninio pašto numeris
 DocType: Employee Attendance Tool,Marked Attendance,Pažymėti Lankomumas
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Dabartiniai įsipareigojimai
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Siųsti masės SMS į jūsų kontaktus
diff --git a/erpnext/translations/lv.csv b/erpnext/translations/lv.csv
index 8c95eaf..ce6e307 100644
--- a/erpnext/translations/lv.csv
+++ b/erpnext/translations/lv.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Summa Pēc nolietojums
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Gaidāmie Kalendāra notikumi
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Lūdzu, izvēlieties mēnesi un gadu"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Ievadiet e-pasta id atdalīti ar komatiem, rēķins tiks nosūtīts automātiski konkrētā datumā"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Ievadiet e-pasta id atdalīti ar komatiem, rēķins tiks nosūtīts automātiski konkrētā datumā"
 DocType: Employee,Company Email,Uzņēmuma e-pasts
 DocType: GL Entry,Debit Amount in Account Currency,Debeta summa konta valūtā
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Skaidras naudas darījumi pret pusi vai iekšējai pārskaitījumu
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Alga Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Konts {0} ir ievadīts vairākas reizes
 DocType: Account,Expenses Included In Valuation,Izdevumi iekļauts vērtēšanā
-DocType: Employee,Provide email id registered in company,Nodrošināt e-pasta id reģistrēts uzņēmums
+DocType: Employee,Provide Email Address registered in company,Nodrošināt e-pasta id reģistrēts uzņēmums
 DocType: Hub Settings,Seller City,Pārdevējs City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Lūdzu, izvēlieties skolēnu grupas"
 ,Absent Student Report,Nekonstatē Student pārskats
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Zils
 DocType: Purchase Invoice,Is Return,Vai Return
 DocType: Price List Country,Price List Country,Cenrādis Valsts
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Lūdzu iestatīt e-pasta ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Lūdzu iestatīt e-pasta ID
 DocType: Item,UOMs,Mērvienības
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} derīgas sērijas nos postenim {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Postenis kodekss nevar mainīt Serial Nr
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Uzdevums Atkarīgs On
 DocType: Supplier Quotation,Opportunity,Iespējas
 ,Completed Production Orders,Aizpildītas pasūtījumu
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,"Rinda {0}: piegādātājs {0} e-pasta id ir nepieciešams, lai nosūtītu e-pastu"
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,"Rinda {0}: piegādātājs {0} e-pasta id ir nepieciešams, lai nosūtītu e-pastu"
 DocType: Operation,Default Workstation,Default Workstation
 DocType: Notification Control,Expense Claim Approved Message,Izdevumu Pretenzija Apstiprināts Message
 DocType: Payment Entry,Deductions or Loss,Samazinājumus vai zaudēšana
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Pieteikumu iesniegšanas termiņš nevar būt pa diviem alocation ierakstiem
 DocType: Item Group,Default Expense Account,Default Izdevumu konts
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Partijas vai Kursu grafiks ir obligāta
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Paziņojums (dienas)
 DocType: Tax Rule,Sales Tax Template,Sales Tax Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Izvēlētos objektus, lai saglabātu rēķinu"
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Skatīt Leads
 DocType: Program Enrollment Tool,New Program,jaunā programma
 DocType: Item Attribute Value,Attribute Value,Atribūta vērtība
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-pasta id ir unikāls, kas jau pastāv {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-pasta id ir unikāls, kas jau pastāv {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Ieteicams Pārkārtot Level
 DocType: Salary Detail,Salary Detail,alga Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Lūdzu, izvēlieties {0} pirmais"
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projekta aktivitāte / uzdevums.
 DocType: Vehicle Log,Refuelling Details,Degvielas uzpildes Details
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Izveidot algas lapas
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Nākamais Kontaktinformācija Ar nevar būt tāda pati kā vadošais e-pasta id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Nākamais Kontaktinformācija Ar nevar būt tāda pati kā vadošais e-pasta id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Pirkšana jāpārbauda, ja nepieciešams, par ir izvēlēts kā {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Atlaide jābūt mazāk nekā 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Pēdējā pirkuma likmes nav atrasts
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Postenis Nodokļu
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiāls piegādātājam
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Akcīzes Invoice
-DocType: Expense Claim,Employees Email Id,Darbinieki e-pasta ID
+DocType: Expense Claim,Employees Email Address,Darbinieki e-pasta ID
 DocType: Employee Attendance Tool,Marked Attendance,ievērojama apmeklējums
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Tekošo saistību
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Sūtīt masu SMS saviem kontaktiem
diff --git a/erpnext/translations/mk.csv b/erpnext/translations/mk.csv
index 63c79f0..5f317da 100644
--- a/erpnext/translations/mk.csv
+++ b/erpnext/translations/mk.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Износ по амортизација
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Претстојните Календар на настани
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Ве молиме изберете месец и година
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Внесете е-мејл проект одделени со запирки, фактура ќе бидат испратени автоматски на одреден датум"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Внесете е-мејл проект одделени со запирки, фактура ќе бидат испратени автоматски на одреден датум"
 DocType: Employee,Company Email,Компанија е-мејл
 DocType: GL Entry,Debit Amount in Account Currency,Дебитна Износ во валута на сметка
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Банка / Готовински трансакции од страна или за внатрешен трансфер
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Преглед Плата фиш
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Сметка {0} е внесен повеќе пати
 DocType: Account,Expenses Included In Valuation,Трошоци Вклучени Во Вреднување
-DocType: Employee,Provide email id registered in company,Обезбеди мејл ID регистрирани во компанијата
+DocType: Employee,Provide Email Address registered in company,Обезбеди мејл ID регистрирани во компанијата
 DocType: Hub Settings,Seller City,Продавачот на градот
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Ве молиме одберете Група на студенти
 ,Absent Student Report,Отсутни Студентски извештај
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blue
 DocType: Purchase Invoice,Is Return,Е враќање
 DocType: Price List Country,Price List Country,Ценовник Земја
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Ве молиме да се постави е-мејл ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Ве молиме да се постави е-мејл ID
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} валидна сериски броеви за ставката {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Точка законик не може да се промени за Сериски број
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Задача зависи од
 DocType: Supplier Quotation,Opportunity,Можност
 ,Completed Production Orders,Завршено Производство Нарачка
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Ред {0}: За снабдувач {0} мејл ID е потребно да се испрати е-маил
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Ред {0}: За снабдувач {0} мејл ID е потребно да се испрати е-маил
 DocType: Operation,Default Workstation,Стандардно Workstation
 DocType: Notification Control,Expense Claim Approved Message,Сметка Тврдат Одобрени порака
 DocType: Payment Entry,Deductions or Loss,Одбивања или загуба
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Период апликација не може да биде во две alocation евиденција
 DocType: Item Group,Default Expense Account,Стандардно сметка сметка
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Студентски серијата или Курс Распоред е задолжително
-DocType: Student,Student Email ID,Студент e-mail проект
+DocType: Student,Student Email Address,Студент e-mail проект
 DocType: Employee,Notice (days),Известување (во денови)
 DocType: Tax Rule,Sales Tax Template,Данок на промет Шаблон
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Изберете предмети за да се спаси фактура
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Прикажи ги Потенцијалните клиенти
 DocType: Program Enrollment Tool,New Program,нова програма
 DocType: Item Attribute Value,Attribute Value,Вредноста на атрибутот
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-mail проект мора да биде уникатен, веќе постои за {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-mail проект мора да биде уникатен, веќе постои за {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Препорачани Пренареждане ниво
 DocType: Salary Detail,Salary Detail,плата детали
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Ве молиме изберете {0} Првиот
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Проектна активност / задача.
 DocType: Vehicle Log,Refuelling Details,Полнење Детали
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Генерирање на исплатните листи
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Следна Контакт Со тоа што не може да биде ист како олово-мејл ID
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Следна Контакт Со тоа што не може да биде ист како олово-мејл ID
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Купување мора да се провери, ако е применливо за е избран како {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Попуст смее да биде помал од 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Последните купување стапка не е пронајден
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Точка Данок
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Материјал на Добавувачот
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Акцизни Фактура
-DocType: Expense Claim,Employees Email Id,Вработените-пошта Id
+DocType: Expense Claim,Employees Email Address,Вработените-пошта Id
 DocType: Employee Attendance Tool,Marked Attendance,означени Публика
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Тековни обврски
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Испрати маса SMS порака на вашите контакти
diff --git a/erpnext/translations/ml.csv b/erpnext/translations/ml.csv
index aa4c382..8c2a3a4 100644
--- a/erpnext/translations/ml.csv
+++ b/erpnext/translations/ml.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,മൂല്യത്തകർച്ച ശേഷം തുക
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,വരാനിരിക്കുന്ന കലണ്ടർ ഇവന്റുകൾ
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,മാസം വർഷം തിരഞ്ഞെടുക്കുക
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","കോമകളാൽ വേർതിരിച്ച ഇമെയിൽ ഐഡി നൽകുക, ഇൻവോയ്സ് പ്രത്യേക തീയതി സ്വയം മെയിൽ ചെയ്യപ്പെടും"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","കോമകളാൽ വേർതിരിച്ച ഇമെയിൽ ഐഡി നൽകുക, ഇൻവോയ്സ് പ്രത്യേക തീയതി സ്വയം മെയിൽ ചെയ്യപ്പെടും"
 DocType: Employee,Company Email,കമ്പനി ഇമെയിൽ
 DocType: GL Entry,Debit Amount in Account Currency,അക്കൗണ്ട് കറൻസി ഡെബിറ്റ് തുക
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,പാർട്ടി വിരുദ്ധ അല്ലെങ്കിൽ ആന്തരിക കൈമാറ്റം ബാങ്ക് / ക്യാഷ് ഇടപാടുകൾ
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,പ്രിവ്യൂ ശമ്പളം ജി
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,അക്കൗണ്ട് {0} ഒന്നിലധികം തവണ നൽകിയിട്ടുണ്ടെന്നും
 DocType: Account,Expenses Included In Valuation,മൂലധനം ഉൾപ്പെടുത്തിയിട്ടുണ്ട് ചിലവുകൾ
-DocType: Employee,Provide email id registered in company,കമ്പനിയുടെ രജിസ്റ്റർ ഇമെയിൽ ഐഡി നൽകുക
+DocType: Employee,Provide Email Address registered in company,കമ്പനിയുടെ രജിസ്റ്റർ ഇമെയിൽ ഐഡി നൽകുക
 DocType: Hub Settings,Seller City,വില്പനക്കാരന്റെ സിറ്റി
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,ഒരു വിദ്യാർത്ഥി ഗ്രൂപ്പ് തിരഞ്ഞെടുക്കുക
 ,Absent Student Report,നിലവില്ല വിദ്യാർത്ഥി റിപ്പോർട്ട്
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ബ്ലൂ
 DocType: Purchase Invoice,Is Return,മടക്കം
 DocType: Price List Country,Price List Country,വില പട്ടിക രാജ്യം
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ഇമെയിൽ ഐഡി സജ്ജീകരിക്കുക
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ഇമെയിൽ ഐഡി സജ്ജീകരിക്കുക
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},ഇനം {1} വേണ്ടി {0} സാധുവായ സീരിയൽ എണ്ണം
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,ഇനം കോഡ് സീരിയൽ നമ്പർ വേണ്ടി മാറ്റാൻ കഴിയില്ല
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,ടാസ്ക് ആശ്രയിച്ചിരിക്കുന്നു
 DocType: Supplier Quotation,Opportunity,അവസരം
 ,Completed Production Orders,പൂർത്തിയാക്കി പ്രൊഡക്ഷൻ ഓർഡറുകൾ
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,വരി {0}: വിതരണക്കാരൻ വേണ്ടി {0} ഇമെയിൽ ഐഡി ഇമെയിൽ അയയ്ക്കാൻ ആവശ്യമാണ്
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,വരി {0}: വിതരണക്കാരൻ വേണ്ടി {0} ഇമെയിൽ ഐഡി ഇമെയിൽ അയയ്ക്കാൻ ആവശ്യമാണ്
 DocType: Operation,Default Workstation,സ്ഥിരസ്ഥിതി വർക്ക്സ്റ്റേഷൻ
 DocType: Notification Control,Expense Claim Approved Message,ചിലവിടൽ ക്ലെയിം അംഗീകരിച്ചു സന്ദേശം
 DocType: Payment Entry,Deductions or Loss,പൂർണമായും അല്ലെങ്കിൽ നഷ്ടം
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,അപേക്ഷാ കാലയളവിൽ രണ്ട് alocation രേഖകള് ഉടനീളം ആകാൻ പാടില്ല
 DocType: Item Group,Default Expense Account,സ്ഥിരസ്ഥിതി ചിലവേറിയ
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,സ്റ്റുഡന്റ് ബാച്ച് അല്ലെങ്കിൽ കോഴ്സ് ഷെഡ്യൂൾ നിര്ബന്ധമാണ്
-DocType: Student,Student Email ID,വിദ്യാർത്ഥിയുടെ ഇമെയിൽ ഐഡി
+DocType: Student,Student Email Address,വിദ്യാർത്ഥിയുടെ ഇമെയിൽ ഐഡി
 DocType: Employee,Notice (days),അറിയിപ്പ് (ദിവസം)
 DocType: Tax Rule,Sales Tax Template,സെയിൽസ് ടാക്സ് ഫലകം
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ഇൻവോയ്സ് സംരക്ഷിക്കാൻ ഇനങ്ങൾ തിരഞ്ഞെടുക്കുക
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,കാണുക നയിക്കുന്നു
 DocType: Program Enrollment Tool,New Program,പുതിയ പ്രോഗ്രാം
 DocType: Item Attribute Value,Attribute Value,ന്റെതിരച്ചറിവിനു്തെറ്റായധാര്മ്മികമൂല്യം
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ഇമെയിൽ ഐഡി അതുല്യമായ ആയിരിക്കണം, ഇതിനകം {0} നിലവിലുണ്ട്"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ഇമെയിൽ ഐഡി അതുല്യമായ ആയിരിക്കണം, ഇതിനകം {0} നിലവിലുണ്ട്"
 ,Itemwise Recommended Reorder Level,Itemwise പുനഃക്രമീകരിക്കുക ലെവൽ ശുപാർശിത
 DocType: Salary Detail,Salary Detail,ശമ്പള വിശദാംശം
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,ആദ്യം {0} തിരഞ്ഞെടുക്കുക
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,പ്രോജക്ട് പ്രവർത്തനം / ചുമതല.
 DocType: Vehicle Log,Refuelling Details,Refuelling വിശദാംശങ്ങൾ
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,ശമ്പളം സ്ലിപ്പിൽ ജനറേറ്റുചെയ്യൂ
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,അടുത്തത് ബന്ധപ്പെടുക നയിക്കുന്നത് ഇമെയിൽ id അതേ പാടില്ല
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,അടുത്തത് ബന്ധപ്പെടുക നയിക്കുന്നത് ഇമെയിൽ id അതേ പാടില്ല
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","ബാധകമായ വേണ്ടി {0} തിരഞ്ഞെടുക്കപ്പെട്ടു എങ്കിൽ വാങ്ങൽ, ചെക്ക് ചെയ്തിരിക്കണം"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ഡിസ്കൗണ്ട് 100 താഴെ ആയിരിക്കണം
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,അവസാനം വാങ്ങൽ നിരക്ക് കണ്ടെത്തിയില്ല
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,ഇനം നികുതി
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,വിതരണക്കാരൻ വരെ മെറ്റീരിയൽ
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,എക്സൈസ് ഇൻവോയിസ്
-DocType: Expense Claim,Employees Email Id,എംപ്ലോയീസ് ഇമെയിൽ ഐഡി
+DocType: Expense Claim,Employees Email Address,എംപ്ലോയീസ് ഇമെയിൽ ഐഡി
 DocType: Employee Attendance Tool,Marked Attendance,അടയാളപ്പെടുത്തിയിരിക്കുന്ന ഹാജർ
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,നിലവിലുള്ള ബാധ്യതകൾ
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,സമ്പർക്കങ്ങളിൽ പിണ്ഡം എസ്എംഎസ് അയയ്ക്കുക
diff --git a/erpnext/translations/mr.csv b/erpnext/translations/mr.csv
index 7d2c979..e41b7af 100644
--- a/erpnext/translations/mr.csv
+++ b/erpnext/translations/mr.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,घसारा केल्यानंतर रक्कम
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,आगामी कॅलेंडर इव्हेंट
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,कृपया महिना आणि वर्ष निवडा
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","स्वल्पविरामाने विभक्त केलेल्या प्रविष्ट करा ई-मेल आयडी, चलन विशिष्ट तारखेला आपोआप पाठविले जाईल"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","स्वल्पविरामाने विभक्त केलेल्या प्रविष्ट करा ई-मेल आयडी, चलन विशिष्ट तारखेला आपोआप पाठविले जाईल"
 DocType: Employee,Company Email,कंपनी ईमेल
 DocType: GL Entry,Debit Amount in Account Currency,खाते चलनात डेबिट रक्कम
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,बँक / रोख पक्ष विरोधात किंवा अंतर्गत हस्तांतरण व्यवहार
@@ -684,7 +684,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,पूर्वावलोकन पगाराच्या स्लिप्स
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,खाते {0} अनेक वेळा प्रविष्ट केले गेले आहे
 DocType: Account,Expenses Included In Valuation,खर्च मूल्यांकन मध्ये समाविष्ट
-DocType: Employee,Provide email id registered in company,कंपनी मध्ये नोंदणीकृत ई-मेल आयडी द्या
+DocType: Employee,Provide Email Address registered in company,कंपनी मध्ये नोंदणीकृत ई-मेल आयडी द्या
 DocType: Hub Settings,Seller City,विक्रेता सिटी
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,कृपया एक विद्यार्थी गट निवडा
 ,Absent Student Report,अनुपस्थित विद्यार्थी अहवाल
@@ -1108,7 +1108,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ब्लू
 DocType: Purchase Invoice,Is Return,परत आहे
 DocType: Price List Country,Price List Country,किंमत यादी देश
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ईमेल आयडी सेट करा
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ईमेल आयडी सेट करा
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} हा आयटम {1} साठी वैध सिरीयल क्रमांक आहे
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,आयटम कोड सिरियल क्रमांकासाठी  बदलला  जाऊ शकत नाही
@@ -2197,7 +2197,7 @@
 DocType: Task Depends On,Task Depends On,कार्य अवलंबून असते
 DocType: Supplier Quotation,Opportunity,संधी
 ,Completed Production Orders,उत्पादन ऑर्डर पूर्ण झाला
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,सलग {0}: पुरवठादार साठी {0} ई-मेल आयडी ई-मेल पाठवण्यासाठी आवश्यक आहे
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,सलग {0}: पुरवठादार साठी {0} ई-मेल आयडी ई-मेल पाठवण्यासाठी आवश्यक आहे
 DocType: Operation,Default Workstation,मुलभूत वर्कस्टेशन
 DocType: Notification Control,Expense Claim Approved Message,खर्च क्लेम मंजूर संदेश
 DocType: Payment Entry,Deductions or Loss,कपात किंवा कमी होणे
@@ -3642,7 +3642,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,अर्ज कालावधी दोन alocation रेकॉर्ड ओलांडून असू शकत नाही
 DocType: Item Group,Default Expense Account,मुलभूत खर्च खाते
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,विद्यार्थी बॅच किंवा कोर्स वेळापत्रक अनिवार्य आहे
-DocType: Student,Student Email ID,विद्यार्थी ईमेल आयडी
+DocType: Student,Student Email Address,विद्यार्थी ईमेल आयडी
 DocType: Employee,Notice (days),सूचना (दिवस)
 DocType: Tax Rule,Sales Tax Template,विक्री कर साचा
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,अशी यादी तयार करणे जतन करण्यासाठी आयटम निवडा
@@ -3793,7 +3793,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,पहा निष्पन्न
 DocType: Program Enrollment Tool,New Program,नवीन कार्यक्रम
 DocType: Item Attribute Value,Attribute Value,मूल्य विशेषता
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ईमेल आयडी अद्वितीय असणे आवश्यक आहे ,आधीच अस्तित्वात आहे ,  {0} साठी"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ईमेल आयडी अद्वितीय असणे आवश्यक आहे ,आधीच अस्तित्वात आहे ,  {0} साठी"
 ,Itemwise Recommended Reorder Level,Itemwise पुनर्क्रमित स्तर शिफारस
 DocType: Salary Detail,Salary Detail,पगार तपशील
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,कृपया प्रथम {0} निवडा
@@ -3984,7 +3984,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,प्रकल्प क्रियाकलाप / कार्य.
 DocType: Vehicle Log,Refuelling Details,Refuelling तपशील
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,पगार Slips तयार  करा
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,पुढील संपर्क होऊ ईमेल id सारखाच असू शकत नाही
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,पुढील संपर्क होऊ ईमेल id सारखाच असू शकत नाही
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","पाञ म्हणून निवडले आहे, तर खरेदी, चेक करणे आवश्यक आहे {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,सवलत 100 पेक्षा कमी असणे आवश्यक आहे
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,गेल्या खरेदी दर आढळले नाही
@@ -4279,7 +4279,7 @@
 DocType: Item,Item Tax,आयटम कर
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,पुरवठादार साहित्य
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,उत्पादन शुल्क चलन
-DocType: Expense Claim,Employees Email Id,कर्मचारी ई मेल आयडी
+DocType: Expense Claim,Employees Email Address,कर्मचारी ई मेल आयडी
 DocType: Employee Attendance Tool,Marked Attendance,चिन्हांकित उपस्थिती
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,वर्तमान दायित्व
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,आपले संपर्क वस्तुमान एसएमएस पाठवा
diff --git a/erpnext/translations/ms.csv b/erpnext/translations/ms.csv
index d74d506..6298602 100644
--- a/erpnext/translations/ms.csv
+++ b/erpnext/translations/ms.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Jumlah Selepas Susutnilai
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Akan Datang Kalendar Acara
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Sila pilih bulan dan tahun
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Masukkan id e-mel yang dipisahkan oleh koma, invois akan dihantar secara automatik pada tarikh tertentu"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Masukkan id e-mel yang dipisahkan oleh koma, invois akan dihantar secara automatik pada tarikh tertentu"
 DocType: Employee,Company Email,Syarikat E-mel
 DocType: GL Entry,Debit Amount in Account Currency,Jumlah debit dalam Mata Wang Akaun
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,transaksi Bank / Tunai terhadap pihak atau untuk pemindahan dalaman
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Slip Gaji
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Akaun {0} telah dibuat beberapa kali
 DocType: Account,Expenses Included In Valuation,Perbelanjaan Termasuk Dalam Penilaian
-DocType: Employee,Provide email id registered in company,Menyediakan id e-mel yang berdaftar dalam syarikat
+DocType: Employee,Provide Email Address registered in company,Menyediakan id e-mel yang berdaftar dalam syarikat
 DocType: Hub Settings,Seller City,Penjual City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Sila pilih Kumpulan Pelajar
 ,Absent Student Report,Tidak hadir Laporan Pelajar
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blue
 DocType: Purchase Invoice,Is Return,Tempat kembalinya
 DocType: Price List Country,Price List Country,Senarai harga Negara
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Sila menetapkan ID E-mel
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Sila menetapkan ID E-mel
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} nombor siri sah untuk Perkara {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kod Item tidak boleh ditukar untuk No. Siri
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Petugas Bergantung Pada
 DocType: Supplier Quotation,Opportunity,Peluang
 ,Completed Production Orders,Pesanan Pengeluaran selesai
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: Untuk pembekal {0} id e-mel diperlukan untuk menghantar e-mel
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: Untuk pembekal {0} id e-mel diperlukan untuk menghantar e-mel
 DocType: Operation,Default Workstation,Workstation Default
 DocType: Notification Control,Expense Claim Approved Message,Mesej perbelanjaan Tuntutan Diluluskan
 DocType: Payment Entry,Deductions or Loss,Potongan atau Kehilangan
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Tempoh permohonan tidak boleh di dua rekod alocation
 DocType: Item Group,Default Expense Account,Akaun Perbelanjaan Default
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch Pelajar atau Jadual Kursus adalah wajib
-DocType: Student,Student Email ID,Pelajar Email ID
+DocType: Student,Student Email Address,Pelajar Email Address
 DocType: Employee,Notice (days),Notis (hari)
 DocType: Tax Rule,Sales Tax Template,Template Cukai Jualan
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Pilih item untuk menyelamatkan invois
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Lihat Leads
 DocType: Program Enrollment Tool,New Program,Program baru
 DocType: Item Attribute Value,Attribute Value,Atribut Nilai
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Id e-mel mestilah unik, telah wujud untuk {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Id e-mel mestilah unik, telah wujud untuk {0}"
 ,Itemwise Recommended Reorder Level,Itemwise lawatan Reorder Level
 DocType: Salary Detail,Salary Detail,Detail gaji
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Sila pilih {0} pertama
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Aktiviti projek / tugasan.
 DocType: Vehicle Log,Refuelling Details,Refuelling Butiran
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Menjana Gaji Slip
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Seterusnya Hubungi Dengan tidak boleh menjadi sama seperti id E-mel Lead
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Seterusnya Hubungi Dengan tidak boleh menjadi sama seperti id E-mel Lead
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Membeli hendaklah disemak, jika Terpakai Untuk dipilih sebagai {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Diskaun mesti kurang daripada 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Kadar pembelian seluruh dunia: terdapat
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Perkara Cukai
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Bahan kepada Pembekal
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Cukai Invois
-DocType: Expense Claim,Employees Email Id,Id Pekerja E-mel
+DocType: Expense Claim,Employees Email Address,Id Pekerja E-mel
 DocType: Employee Attendance Tool,Marked Attendance,Kehadiran ketara
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Liabiliti Semasa
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Hantar SMS massa ke kenalan anda
diff --git a/erpnext/translations/my.csv b/erpnext/translations/my.csv
index aa9563a..4c14232 100644
--- a/erpnext/translations/my.csv
+++ b/erpnext/translations/my.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,တန်ဖိုးပြီးနောက်ပမာဏ
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,လာမည့်ပြက္ခဒိန်ပွဲများ
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,လနှင့်တစ်နှစ်ကို select ကျေးဇူးပြု.
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",ကော်မာကွဲကွာအီးမေးလ်က id ကိုထည့်ငွေတောင်းခံလွှာအထူးသဖြင့်နေ့စွဲအပေါ်ကိုအလိုအလျောက်ပေးပို့လိမ့်မည်
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",ကော်မာကွဲကွာအီးမေးလ်က id ကိုထည့်ငွေတောင်းခံလွှာအထူးသဖြင့်နေ့စွဲအပေါ်ကိုအလိုအလျောက်ပေးပို့လိမ့်မည်
 DocType: Employee,Company Email,ကုမ္ပဏီအီးမေးလ်
 DocType: GL Entry,Debit Amount in Account Currency,အကောင့်ကိုငွေကြေးစနစ်အတွက် debit ပမာဏ
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,ပါတီဆန့်ကျင်သို့မဟုတ်ပြည်တွင်းရေးလွှဲပြောင်းဘို့ဘဏ် / ငွေကြေးအရောင်းအဝယ်ပြုလုပ်
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,ကို Preview လစာစလစ်ဖြတ်ပိုင်းပုံစံ
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,အကောင့် {0} အကြိမ်ပေါင်းများစွာသို့ဝင်ခဲ့
 DocType: Account,Expenses Included In Valuation,အကောက်ခွန်တန်ဖိုးသတ်မှတ်မည်တွင်ထည့်သွင်းကုန်ကျစရိတ်
-DocType: Employee,Provide email id registered in company,ကုမ္ပဏီမှတ်ပုံတင်အီးမေးလ်က id ပေး
+DocType: Employee,Provide Email Address registered in company,ကုမ္ပဏီမှတ်ပုံတင်အီးမေးလ်က id ပေး
 DocType: Hub Settings,Seller City,ရောင်းချသူစီးတီး
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,တစ်ကျောင်းသားအုပ်စုကို select လုပ်ပါကျေးဇူးပြုပြီး
 ,Absent Student Report,ပျက်ကွက်ကျောင်းသားအစီရင်ခံစာ
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ပြာသော
 DocType: Purchase Invoice,Is Return,သို့ပြန်သွားသည်ဖြစ်ပါသည်
 DocType: Price List Country,Price List Country,စျေးနှုန်းကိုစာရင်းနိုင်ငံ
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,အီးမေးလ် ID ကိုသတ်မှတ် ကျေးဇူးပြု.
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,အီးမေးလ် ID ကိုသတ်မှတ် ကျေးဇူးပြု.
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},Item {1} သည် {0} တရားဝင် serial nos
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,item Code ကို Serial နံပါတ်သည်ပြောင်းလဲမပြနိုင်
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Task အပေါ်မူတည်
 DocType: Supplier Quotation,Opportunity,အခွင့်အရေး
 ,Completed Production Orders,ပြီးစီးထုတ်လုပ်မှုအမိန့်
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,အတန်း {0}: ပေးသွင်းများအတွက် {0} အီးမေးလ်ကို id သည်ကိုအီးမေးလ်ပေးပို့ဖို့လိုအပ်ပါသည်
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,အတန်း {0}: ပေးသွင်းများအတွက် {0} အီးမေးလ်ကို id သည်ကိုအီးမေးလ်ပေးပို့ဖို့လိုအပ်ပါသည်
 DocType: Operation,Default Workstation,default Workstation နှင့်
 DocType: Notification Control,Expense Claim Approved Message,စရိတ်တောင်းဆိုမှုများ Approved Message
 DocType: Payment Entry,Deductions or Loss,ဖြတ်တောက်ခြင်းများကိုသို့မဟုတ်ပျောက်ဆုံးခြင်း
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,ပလီကေးရှင်းကာလအတွင်းနှစ်ဦး alocation မှတ်တမ်းများကိုဖြတ်ပြီးမဖွစျနိုငျ
 DocType: Item Group,Default Expense Account,default သုံးစွဲမှုအကောင့်
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,ကျောင်းသားအသုတ်လိုက်သို့မဟုတ်သင်တန်းအမှတ်စဥ်ဇယားမဖြစ်မနေဖြစ်ပါသည်
-DocType: Student,Student Email ID,ကျောင်းသားသမဂ္ဂအီးမေးလ် ID ကို
+DocType: Student,Student Email Address,ကျောင်းသားသမဂ္ဂအီးမေးလ် ID ကို
 DocType: Employee,Notice (days),အသိပေးစာ (ရက်)
 DocType: Tax Rule,Sales Tax Template,အရောင်းခွန် Template ကို
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ငွေတောင်းခံလွှာကိုကယ်တင်ပစ္စည်းများကို Select လုပ်ပါ
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,ကြည့်ရန်ခဲ
 DocType: Program Enrollment Tool,New Program,နယူးအစီအစဉ်
 DocType: Item Attribute Value,Attribute Value,attribute Value တစ်ခု
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","အီးမေးလ်က id ထူးခြားသောဖြစ်ရမည်, ပြီးသား {0} သည်တည်ရှိ"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","အီးမေးလ်က id ထူးခြားသောဖြစ်ရမည်, ပြီးသား {0} သည်တည်ရှိ"
 ,Itemwise Recommended Reorder Level,Itemwise Reorder အဆင့်အကြံပြုထား
 DocType: Salary Detail,Salary Detail,လစာ Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,ပထမဦးဆုံး {0} ကို select ကျေးဇူးပြု.
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,စီမံကိန်းလှုပ်ရှားမှု / အလုပ်တစ်ခုကို။
 DocType: Vehicle Log,Refuelling Details,ဆီဖြည့အသေးစိတ်
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,လစာစလစ် Generate
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Next ကိုဆကျသှယျရနျအားဖြင့်ခဲအီးမေးလ် id သည်အဖြစ်အတူတူပင်မဖွစျနိုငျ
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Next ကိုဆကျသှယျရနျအားဖြင့်ခဲအီးမေးလ် id သည်အဖြစ်အတူတူပင်မဖွစျနိုငျ
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","application များအတွက် {0} အဖြစ်ရွေးချယ်မယ်ဆိုရင်ဝယ်, checked ရမည်"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,လျော့စျေးက 100 ထက်လျော့နည်းဖြစ်ရမည်
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,ပြီးခဲ့သည့်ဝယ်ယူနှုန်းကိုမတွေ့ရှိ
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,item ခွန်
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,ပေးသွင်းဖို့ material
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,ယစ်မျိုးပြေစာ
-DocType: Expense Claim,Employees Email Id,န်ထမ်းအီးမေးလ် Id
+DocType: Expense Claim,Employees Email Address,န်ထမ်းအီးမေးလ် Id
 DocType: Employee Attendance Tool,Marked Attendance,တခုတ်တရတက်ရောက်
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,လက်ရှိမှုစိစစ်
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,သင့်ရဲ့အဆက်အသွယ်မှအစုလိုက်အပြုံလိုက် SMS ပို့
diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv
index 5cf2f73..fecc1a3 100644
--- a/erpnext/translations/nl.csv
+++ b/erpnext/translations/nl.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Bedrag na afschrijvingen
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Aankomende Gebeurtenissen
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Selecteer maand en jaar
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Vul e-mail ID in, gescheiden door komma's. De factuur zal automatisch worden gemaild op specifieke datum"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Vul e-mail ID in, gescheiden door komma's. De factuur zal automatisch worden gemaild op specifieke datum"
 DocType: Employee,Company Email,Bedrijf e-mail
 DocType: GL Entry,Debit Amount in Account Currency,Debet Bedrag in account Valuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Cash-transacties tegen de partij of voor interne overplaatsing
@@ -684,7 +684,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Voorbeschouwing loonstrook
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Account {0} is meerdere keren ingevoerd
 DocType: Account,Expenses Included In Valuation,Kosten inbegrepen in waardering
-DocType: Employee,Provide email id registered in company,Zorg voor een bedrijfs e-mail ID
+DocType: Employee,Provide Email Address registered in company,Zorg voor een bedrijfs e-mail ID
 DocType: Hub Settings,Seller City,Verkoper Stad
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Selecteer een Student Group
 ,Absent Student Report,Absent Student Report
@@ -1127,7 +1127,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blauw
 DocType: Purchase Invoice,Is Return,Is Return
 DocType: Price List Country,Price List Country,Prijslijst Land
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Stel Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Stel Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} geldig serienummers voor Artikel {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Artikelcode kan niet worden gewijzigd voor Serienummer
@@ -2218,7 +2218,7 @@
 DocType: Task Depends On,Task Depends On,Taak Hangt On
 DocType: Supplier Quotation,Opportunity,Opportunity
 ,Completed Production Orders,Voltooide productieorders
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Rij {0}: Voor leverancier {0} e-id is vereist om e-mail te sturen
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Rij {0}: Voor leverancier {0} e-id is vereist om e-mail te sturen
 DocType: Operation,Default Workstation,Standaard Werkstation
 DocType: Notification Control,Expense Claim Approved Message,Kostendeclaratie Goedgekeurd Bericht
 DocType: Payment Entry,Deductions or Loss,Aftrek of verlies
@@ -3697,7 +3697,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Aanvraagperiode kan niet over twee alocation platen
 DocType: Item Group,Default Expense Account,Standaard Kostenrekening
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch of Course Schedule is verplicht
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Kennisgeving ( dagen )
 DocType: Tax Rule,Sales Tax Template,Sales Tax Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Selecteer items om de factuur te slaan
@@ -3848,7 +3848,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Bekijk Leads
 DocType: Program Enrollment Tool,New Program,nieuw programma
 DocType: Item Attribute Value,Attribute Value,Eigenschap Waarde
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-mail ID moet uniek zijn, bestaat al voor {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-mail ID moet uniek zijn, bestaat al voor {0}"
 ,Itemwise Recommended Reorder Level,Artikelgebaseerde Aanbevolen Bestelniveau
 DocType: Salary Detail,Salary Detail,salaris Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Selecteer eerst {0}
@@ -4050,7 +4050,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Project activiteit / taak.
 DocType: Vehicle Log,Refuelling Details,Tanken Details
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Genereer Salarisstroken
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Volgende Contact Door het kan niet hetzelfde zijn als de Lead e-mail-ID
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Volgende Contact Door het kan niet hetzelfde zijn als de Lead e-mail-ID
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Aankopen moeten worden gecontroleerd, indien ""VAN TOEPASSING VOOR"" is geselecteerd als {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Korting moet minder dan 100 zijn
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Laatste aankoop tarief niet gevonden
@@ -4345,7 +4345,7 @@
 DocType: Item,Item Tax,Artikel Belasting
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiaal aan Leverancier
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Accijnzen Factuur
-DocType: Expense Claim,Employees Email Id,Medewerkers E-mail ID
+DocType: Expense Claim,Employees Email Address,Medewerkers E-mail ID
 DocType: Employee Attendance Tool,Marked Attendance,Gemarkeerde Attendance
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kortlopende Schulden
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Stuur massa SMS naar uw contacten
diff --git a/erpnext/translations/no.csv b/erpnext/translations/no.csv
index dbe08ef..275adde 100644
--- a/erpnext/translations/no.csv
+++ b/erpnext/translations/no.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Mengde etter avskrivninger
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Kommende kalenderhendelser
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Velg måned og år
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Skriv inn e-ID atskilt med komma, vil fakturaen bli sendt automatisk på bestemt dato"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Skriv inn e-ID atskilt med komma, vil fakturaen bli sendt automatisk på bestemt dato"
 DocType: Employee,Company Email,Selskapet E-post
 DocType: GL Entry,Debit Amount in Account Currency,Debet beløp på kontoen Valuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / kontanter transaksjoner mot part eller for intern overføring
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Forhåndsvisning Lønn Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Konto {0} er angitt flere ganger
 DocType: Account,Expenses Included In Valuation,Kostnader som inngår i verdivurderings
-DocType: Employee,Provide email id registered in company,Gi e-id registrert i selskap
+DocType: Employee,Provide Email Address registered in company,Gi e-id registrert i selskap
 DocType: Hub Settings,Seller City,Selger by
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Velg en studentgruppe
 ,Absent Student Report,Fraværende Student Rapporter
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blå
 DocType: Purchase Invoice,Is Return,Er Return
 DocType: Price List Country,Price List Country,Prisliste Land
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Vennligst sett Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Vennligst sett Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} gyldig serie nos for Element {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Elementkode kan ikke endres for Serial No.
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Task Avhenger
 DocType: Supplier Quotation,Opportunity,Opportunity
 ,Completed Production Orders,Fullførte produksjonsordrer
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Rad {0}: For Leverandøren pålegges {0} e-id for å sende e-post
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Rad {0}: For Leverandøren pålegges {0} e-id for å sende e-post
 DocType: Operation,Default Workstation,Standard arbeidsstasjon
 DocType: Notification Control,Expense Claim Approved Message,Expense krav Godkjent melding
 DocType: Payment Entry,Deductions or Loss,Fradrag eller tap
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Tegningsperioden kan ikke være over to alocation poster
 DocType: Item Group,Default Expense Account,Standard kostnadskonto
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch eller kursplanen er obligatorisk
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Varsel (dager)
 DocType: Tax Rule,Sales Tax Template,Merverdiavgift Mal
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Velg elementer for å lagre fakturaen
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Vis Leads
 DocType: Program Enrollment Tool,New Program,nytt program
 DocType: Item Attribute Value,Attribute Value,Attributtverdi
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-id må være unikt, finnes allerede for {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-id må være unikt, finnes allerede for {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Anbefalt Omgjøre nivå
 DocType: Salary Detail,Salary Detail,lønn Detalj
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Vennligst velg {0} først
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Prosjektet aktivitet / oppgave.
 DocType: Vehicle Log,Refuelling Details,Fylle drivstoff Detaljer
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generere lønnsslipper
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Neste Kontakt By kan ikke være det samme som Lead e-id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Neste Kontakt By kan ikke være det samme som Lead e-id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Kjøper må sjekkes, hvis dette gjelder for er valgt som {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Rabatt må være mindre enn 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Siste kjøp sats ikke funnet
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Sak Skatte
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiale til Leverandør
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Vesenet Faktura
-DocType: Expense Claim,Employees Email Id,Ansatte Email Id
+DocType: Expense Claim,Employees Email Address,Ansatte Email Address
 DocType: Employee Attendance Tool,Marked Attendance,merket Oppmøte
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kortsiktig gjeld
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Sende masse SMS til kontaktene dine
diff --git a/erpnext/translations/pl.csv b/erpnext/translations/pl.csv
index 475d168..5bcc530 100644
--- a/erpnext/translations/pl.csv
+++ b/erpnext/translations/pl.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Kwota po amortyzacji
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Nadchodzące wydarzenia kalendarzowe
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Wybierz miesiąc i rok
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Wpisz Email ID oddzielone przecinkami, faktura zostanie wysłana automatycznie określonego dnia"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Wpisz Email Address oddzielone przecinkami, faktura zostanie wysłana automatycznie określonego dnia"
 DocType: Employee,Company Email,Email do firmy
 DocType: GL Entry,Debit Amount in Account Currency,Kwota debetową w walucie rachunku
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Transakcje Bank / Gotówka przeciwko osobie lub do przenoszenia wewnętrznego
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Podgląd Zarobki Slip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Konto {0} została wprowadzona wielokrotnie
 DocType: Account,Expenses Included In Valuation,Zaksięgowane wydatki w wycenie
-DocType: Employee,Provide email id registered in company,Wprowadź ID adresu email zarejestrowanego w firmie
+DocType: Employee,Provide Email Address registered in company,Wprowadź ID adresu email zarejestrowanego w firmie
 DocType: Hub Settings,Seller City,Sprzedawca Miasto
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Proszę wybrać grupy studentów
 ,Absent Student Report,Nieobecny Raport Student
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Niebieski
 DocType: Purchase Invoice,Is Return,Czy Wróć
 DocType: Price List Country,Price List Country,Cena Kraj
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Proszę ustawić Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Proszę ustawić Email Address
 DocType: Item,UOMs,Jednostki miary
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} prawidłowe numery seryjne dla Pozycji {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kod przedmiotu nie może być zmieniony na podstawie numeru seryjnego
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Zadanie Zależy od
 DocType: Supplier Quotation,Opportunity,Oferta
 ,Completed Production Orders,Zakończone Zamówienia Produkcyjne
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Wiersz {0}: Dla dostawcy {0} id e-mail jest wymagany do wysyłania wiadomości e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Wiersz {0}: Dla dostawcy {0} id e-mail jest wymagany do wysyłania wiadomości e-mail
 DocType: Operation,Default Workstation,Domyślne Miejsce Pracy
 DocType: Notification Control,Expense Claim Approved Message,Widomość o zwrotach kosztów zatwierdzona
 DocType: Payment Entry,Deductions or Loss,Odliczenia lub strata
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Okres aplikacja nie może być w dwóch zapisów alocation
 DocType: Item Group,Default Expense Account,Domyślne konto rozchodów
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch student lub zajęć jest obowiązkowe
-DocType: Student,Student Email ID,Student ID email
+DocType: Student,Student Email Address,Student ID email
 DocType: Employee,Notice (days),Wymówienie (dni)
 DocType: Tax Rule,Sales Tax Template,Szablon Podatek od sprzedaży
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Wybierz elementy, aby zapisać fakturę"
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Zobacz Tropy
 DocType: Program Enrollment Tool,New Program,Nowy program
 DocType: Item Attribute Value,Attribute Value,Wartość atrybutu
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email ID nie może się powtarzać, ten już zajęty dla {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address nie może się powtarzać, ten już zajęty dla {0}"
 ,Itemwise Recommended Reorder Level,Pozycja Zalecany poziom powtórnego zamówienia
 DocType: Salary Detail,Salary Detail,Wynagrodzenie Szczegóły
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Proszę najpierw wybrać {0}
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Czynność / zadanie projektu
 DocType: Vehicle Log,Refuelling Details,Szczegóły tankowania
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Utwórz Paski Wypłaty
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Następnie Kontakt By nie może być taka sama jak Lead id e-mail
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Następnie Kontakt By nie może być taka sama jak Lead id e-mail
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Zakup musi być sprawdzona, jeśli dotyczy wybrano jako {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Zniżka musi wynosić mniej niż 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Ostatni kurs kupna nie został znaleziony
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,Podatek dla tej pozycji
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiał do Dostawcy
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Akcyza Faktura
-DocType: Expense Claim,Employees Email Id,Email ID pracownika
+DocType: Expense Claim,Employees Email Address,Email Address pracownika
 DocType: Employee Attendance Tool,Marked Attendance,Zaznaczona Obecność
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Bieżące Zobowiązania
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Wyślij zbiorczo sms do swoich kontaktów
diff --git a/erpnext/translations/ps.csv b/erpnext/translations/ps.csv
index 6504ad1..091fb7d 100644
--- a/erpnext/translations/ps.csv
+++ b/erpnext/translations/ps.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,اندازه د استهالک وروسته
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,راتلونکو جنتري پیښې
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,لطفا مياشت او کال وټاکئ
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",وليکئ بريښناليک پېژند جلا شوي commas، صورتحساب به د ځانګړې نېټې په اتوماتيک ډول ولیږدول شي
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",وليکئ بريښناليک پېژند جلا شوي commas، صورتحساب به د ځانګړې نېټې په اتوماتيک ډول ولیږدول شي
 DocType: Employee,Company Email,شرکت دبرېښنا ليک
 DocType: GL Entry,Debit Amount in Account Currency,په حساب د اسعارو ډیبیټ مقدار
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,بانک / د نقدو پیسو د ګوند پر وړاندې او یا د داخلي د لیږد لپاره د معاملو
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,د مخکتنې معاش ټوټه
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,ګڼون {0} په څو ځله داخل شوي دي
 DocType: Account,Expenses Included In Valuation,لګښتونه شامل په ارزښت
-DocType: Employee,Provide email id registered in company,ایمیل پېژند په شرکت ثبت برابرول
+DocType: Employee,Provide Email Address registered in company,ایمیل پېژند په شرکت ثبت برابرول
 DocType: Hub Settings,Seller City,پلورونکی ښار
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,مهرباني غوره زده کوونکو د ګروپ
 ,Absent Student Report,غیر حاضر زده کوونکو راپور
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,آبي
 DocType: Purchase Invoice,Is Return,آیا بیرته
 DocType: Price List Country,Price List Country,بیې په لېست کې د هېواد
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,لطفا جوړ دبرېښنا ليک ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,لطفا جوړ دبرېښنا ليک ID
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} لپاره د قالب د اعتبار وړ سریال ترانسفارمرونو د {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,د قالب قانون د سریال شمیره بدلون نه شي کولای
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,کاري پورې تړلی دی د
 DocType: Supplier Quotation,Opportunity,فرصت
 ,Completed Production Orders,بشپړ تولید امر
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,د کتارونو تر {0}: د عرضه {0} برېښليک پېژند ته اړتيا ده ترڅو ایمیل واستوي
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,د کتارونو تر {0}: د عرضه {0} برېښليک پېژند ته اړتيا ده ترڅو ایمیل واستوي
 DocType: Operation,Default Workstation,default Workstation
 DocType: Notification Control,Expense Claim Approved Message,اخراجاتو ادعا تصویب پيغام
 DocType: Payment Entry,Deductions or Loss,د مجرايي او يا له لاسه ورکول
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,کاریال موده نه شي کولای په ټول دوه alocation اسناد وي
 DocType: Item Group,Default Expense Account,Default اخراجاتو اکانټ
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,د زده کونکو د دسته یا کورس ویش الزامی دی
-DocType: Student,Student Email ID,د زده کونکو د ليک ID
+DocType: Student,Student Email Address,د زده کونکو د ليک ID
 DocType: Employee,Notice (days),خبرتیا (ورځې)
 DocType: Tax Rule,Sales Tax Template,خرڅلاو د مالياتو د کينډۍ
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,توکي چې د صورتحساب د ژغورلو وټاکئ
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,محتویات ياه
 DocType: Program Enrollment Tool,New Program,د نوي پروګرام
 DocType: Item Attribute Value,Attribute Value,منسوب ارزښت
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",Email پېژند باید بې سارې وي، له پخوا لپاره موجود {0}
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",Email پېژند باید بې سارې وي، له پخوا لپاره موجود {0}
 ,Itemwise Recommended Reorder Level,نورتسهیالت وړانديز شوي ترمیمي د ليول
 DocType: Salary Detail,Salary Detail,معاش تفصیلي
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,مهرباني غوره {0} په لومړي
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,د پروژې د فعاليت / دنده.
 DocType: Vehicle Log,Refuelling Details,Refuelling نورولوله
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,معاش ټوټه تولید
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,بل د تماس By نه شي کولای د سرب د ليک پېژند په توګه ورته وي
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,بل د تماس By نه شي کولای د سرب د ليک پېژند په توګه ورته وي
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",د خريداري باید وکتل شي، که د تطبیق لپاره د ده په توګه وټاکل {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,تخفیف باید څخه کم 100 وي
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,تېره اخیستلو کچه ونه موندل شو
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,د قالب د مالياتو
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,ته عرضه مواد
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,وسیله صورتحساب
-DocType: Expense Claim,Employees Email Id,د کارکوونکو دبرېښنا ليک Id
+DocType: Expense Claim,Employees Email Address,د کارکوونکو دبرېښنا ليک Id
 DocType: Employee Attendance Tool,Marked Attendance,د پام وړ د حاضرۍ
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,اوسني مسؤلیتونه
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ستاسو د تماس ډله SMS وليږئ
diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv
index f8bcd19..c18d521 100644
--- a/erpnext/translations/pt-BR.csv
+++ b/erpnext/translations/pt-BR.csv
@@ -217,7 +217,7 @@
 apps/erpnext/erpnext/stock/doctype/item/item.py +445,{0} entered twice in Item Tax,{0} entrou duas vezes no Imposto do Item
 DocType: Workstation,Rent Cost,Custo do Aluguel
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Selecione mês e ano
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Digite os endereços de email separados por vírgulas, a fatura será enviada automaticamente na data determinada"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Digite os endereços de email separados por vírgulas, a fatura será enviada automaticamente na data determinada"
 DocType: GL Entry,Debit Amount in Account Currency,Montante Débito em Conta de moeda
 apps/erpnext/erpnext/config/hr.py +197,"Employee designation (e.g. CEO, Director etc.).","Designação do colaborador (por exemplo, CEO, Diretor, etc.)"
 apps/erpnext/erpnext/controllers/recurring_document.py +220,Please enter 'Repeat on Day of Month' field value,"Por favor, digite 'Repeat no Dia do Mês ' valor do campo"
@@ -418,7 +418,7 @@
 DocType: Purchase Receipt Item Supplied,Current Stock,Estoque Atual
 apps/erpnext/erpnext/controllers/accounts_controller.py +551,Row #{0}: Asset {1} does not linked to Item {2},Linha # {0}: Ativo {1} não vinculado ao item {2}
 DocType: Account,Expenses Included In Valuation,Despesas Incluídas na Avaliação
-DocType: Employee,Provide email id registered in company,Fornecer Endereço de email registrado na empresa
+DocType: Employee,Provide Email Address registered in company,Fornecer Endereço de email registrado na empresa
 DocType: Hub Settings,Seller City,Cidade do Vendedor
 DocType: Email Digest,Next email will be sent on:,Próximo email será enviado em:
 DocType: Offer Letter Term,Offer Letter Term,Termos da Carta de Oferta
@@ -673,7 +673,7 @@
 DocType: Salary Slip,Net Pay (in words) will be visible once you save the Salary Slip.,Pagamento líquido (por extenso) será visível quando você salvar a folha de pagamento.
 DocType: Purchase Invoice,Is Return,É Devolução
 DocType: Price List Country,Price List Country,Preço da lista País
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,"Por favor, defina-mail ID"
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,"Por favor, defina-mail ID"
 DocType: Item,UOMs,Unidades de Medida
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} números de série válidos para o item {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Código do item não pode ser alterado para o nº de série.
@@ -1368,7 +1368,7 @@
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +785,Item or Warehouse for row {0} does not match Material Request,Item ou Armazén na linha {0} não corresponde à Requisição de Material
 DocType: Fiscal Year,Year End Date,Data final do ano
 ,Completed Production Orders,Ordens Produzidas
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Linha {0}:  É necessário ID de email de fornecedor {0} para poder enviar o email
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Linha {0}:  É necessário ID de email de fornecedor {0} para poder enviar o email
 DocType: Operation,Default Workstation,Estação de Trabalho Padrão
 DocType: Notification Control,Expense Claim Approved Message,Mensagem de aprovação do Pedido de Reembolso de Despesas
 DocType: Payment Entry,Deductions or Loss,Dedução ou Perda
@@ -2379,7 +2379,7 @@
 apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.js +18,General Ledger,Livro Razão
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Veja os Clientes em Potencial
 DocType: Item Attribute Value,Attribute Value,Atributo Valor
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ID de email deve ser único, já existente para {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ID de email deve ser único, já existente para {0}"
 ,Itemwise Recommended Reorder Level,Níves de Reposição Recomendados por Item
 DocType: Salary Detail,Salary Detail,Detalhes de salário
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Por favor seleccione {0} primeiro
@@ -2708,7 +2708,7 @@
 DocType: Item,Item Tax,Imposto do Item
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Material a Fornecedor
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Excise Invoice
-DocType: Expense Claim,Employees Email Id,Endereços de Email dos Colaboradores
+DocType: Expense Claim,Employees Email Address,Endereços de Email dos Colaboradores
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Passivo Circulante
 DocType: Purchase Taxes and Charges,Consider Tax or Charge for,Considere Imposto ou Encargo para
 apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +60,Actual Qty is mandatory,Quant. Real é obrigatória
diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv
index 1add76d..754ee72 100644
--- a/erpnext/translations/pt.csv
+++ b/erpnext/translations/pt.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Montante Após Depreciação
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Próximos eventos de calendário
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Por favor, selecione o mês e o ano"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",Digite o ID de email separado por vírgulas. A fatura será enviada automaticamente em determinada data
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",Digite o ID de email separado por vírgulas. A fatura será enviada automaticamente em determinada data
 DocType: Employee,Company Email,Email da Empresa
 DocType: GL Entry,Debit Amount in Account Currency,Montante de Débito na Moeda da Conta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Transações Bancárias/Dinheiro em terceiros ou em transferências internas
@@ -684,7 +684,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Pré-visualizar Folha de Pagamento
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,A conta {0} foi inserida várias vezes
 DocType: Account,Expenses Included In Valuation,Despesas Incluídos na Estimativa
-DocType: Employee,Provide email id registered in company,Forneça o ID do email registado na empresa
+DocType: Employee,Provide Email Address registered in company,Forneça o ID do email registado na empresa
 DocType: Hub Settings,Seller City,Vendedor Cidade
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Por favor, selecione um Grupo de Estudantes"
 ,Absent Student Report,Ausente Relatório do Estudante
@@ -1127,7 +1127,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Azul
 DocType: Purchase Invoice,Is Return,É um Retorno
 DocType: Price List Country,Price List Country,País da Lista de Preços
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,"Por favor, defina a ID do Email"
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,"Por favor, defina a ID do Email"
 DocType: Item,UOMs,UOMS
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},Nº de série válido {0} para o Item {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,O Código de Item não pode ser alterado por um Nº de Serie.
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Tarefa depende de
 DocType: Supplier Quotation,Opportunity,Oportunidade
 ,Completed Production Orders,Pedidos de Produção Concluídos
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Linha Row {0}:  É necessárioo ID de email de fornecedor {0} para poder enviar o email
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Linha Row {0}:  É necessárioo ID de email de fornecedor {0} para poder enviar o email
 DocType: Operation,Default Workstation,Posto de Trabalho Padrão
 DocType: Notification Control,Expense Claim Approved Message,Mensagem de Reembolso de Despesas Aprovado
 DocType: Payment Entry,Deductions or Loss,Deduções ou Perdas
@@ -3697,7 +3697,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,O período do pedido não pode ser entre dois registos de atribuição
 DocType: Item Group,Default Expense Account,Conta Despesa Padrão
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch estudante ou Calendário de Cursos é obrigatória
-DocType: Student,Student Email ID,Student E-mail ID
+DocType: Student,Student Email Address,Student E-mail ID
 DocType: Employee,Notice (days),Aviso (dias)
 DocType: Tax Rule,Sales Tax Template,Template Imposto sobre Vendas
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Selecione os itens para salvar a fatura
@@ -3848,7 +3848,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Veja Leads
 DocType: Program Enrollment Tool,New Program,Novo Programa
 DocType: Item Attribute Value,Attribute Value,Valor do Atributo
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","O ID de Email deve ser único, já existe para {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","O ID de Email deve ser único, já existe para {0}"
 ,Itemwise Recommended Reorder Level,Nível de Reposição de Item Recomendado Inteligente
 DocType: Salary Detail,Salary Detail,Detalhe salário
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Por favor, seleccione primeiro {0}"
@@ -4050,7 +4050,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Atividade / tarefa do projeto.
 DocType: Vehicle Log,Refuelling Details,Detalhes de reabastecimento
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Gerar Folhas de Vencimento
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Próximo Contactar por não pode ser o mesmo que o chumbo-mail id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Próximo Contactar por não pode ser o mesmo que o chumbo-mail id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","A compra deve ser verificada, se for Aplicável Para é selecionada como {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,O Desconto deve ser inferior a 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,A Taxa de Última Compra não foi encontrada
@@ -4345,7 +4345,7 @@
 DocType: Item,Item Tax,Taxa do Item
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Material para o Fornecedor
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Fatura de Imposto Especial
-DocType: Expense Claim,Employees Email Id,ID de Email de Funcionários
+DocType: Expense Claim,Employees Email Address,ID de Email de Funcionários
 DocType: Employee Attendance Tool,Marked Attendance,Presença Marcada
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Passivo a Curto Prazo
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Enviar SMS em massa para seus contatos
diff --git a/erpnext/translations/ro.csv b/erpnext/translations/ro.csv
index 09feb45..4c4449c 100644
--- a/erpnext/translations/ro.csv
+++ b/erpnext/translations/ro.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Suma după amortizare
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Evenimente viitoare Calendar
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Vă rugăm selectați luna și anul
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Introduceți ID-uri de email separate prin virgule, factura va fi trimisa prin email automat la o anumită dată"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Introduceți ID-uri de email separate prin virgule, factura va fi trimisa prin email automat la o anumită dată"
 DocType: Employee,Company Email,E-mail Companie
 DocType: GL Entry,Debit Amount in Account Currency,Suma debit în contul valutar
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,tranzacții bancare / numerar contra partidului sau pentru transfer intern
@@ -684,7 +684,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Previzualizare Salariu alunecare
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Contul {0} a fost introdus de mai multe ori
 DocType: Account,Expenses Included In Valuation,Cheltuieli Incluse în Evaluare
-DocType: Employee,Provide email id registered in company,Furnizarea id-ul de e-mail înregistrată în societate
+DocType: Employee,Provide Email Address registered in company,Furnizarea id-ul de e-mail înregistrată în societate
 DocType: Hub Settings,Seller City,Vânzător oraș
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Vă rugăm să selectați un grup Student
 ,Absent Student Report,Raport de student absent
@@ -1127,7 +1127,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Albastru
 DocType: Purchase Invoice,Is Return,Este de returnare
 DocType: Price List Country,Price List Country,Lista de preturi Țară
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Vă rugăm să setați Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Vă rugăm să setați Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} numere de serie valabile pentru articolul {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Cod articol nu pot fi schimbate pentru Serial No.
@@ -2212,7 +2212,7 @@
 DocType: Task Depends On,Task Depends On,Sarcina Depinde
 DocType: Supplier Quotation,Opportunity,Oportunitate
 ,Completed Production Orders,Comenzi de Producție Finalizate
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Rândul {0}: furnizor {0} e-mail id-ul este necesar pentru a trimite e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Rândul {0}: furnizor {0} e-mail id-ul este necesar pentru a trimite e-mail
 DocType: Operation,Default Workstation,Implicit Workstation
 DocType: Notification Control,Expense Claim Approved Message,Mesaj Aprobare Revendicare Cheltuieli
 DocType: Payment Entry,Deductions or Loss,Deducerile sau Pierdere
@@ -3687,7 +3687,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Perioada de aplicare nu poate fi peste două înregistrări alocation
 DocType: Item Group,Default Expense Account,Cont de Cheltuieli Implicit
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Lot de student sau un curs Program este obligatoriu
-DocType: Student,Student Email ID,ID-ul de student e-mail
+DocType: Student,Student Email Address,ID-ul de student e-mail
 DocType: Employee,Notice (days),Preaviz (zile)
 DocType: Tax Rule,Sales Tax Template,Format impozitul pe vânzări
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Selectați elemente pentru a salva factura
@@ -3838,7 +3838,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Vezi Oportunitati
 DocType: Program Enrollment Tool,New Program,programul nou
 DocType: Item Attribute Value,Attribute Value,Valoare Atribut
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Id Email trebuie să fie unic, există deja pentru {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Id Email trebuie să fie unic, există deja pentru {0}"
 ,Itemwise Recommended Reorder Level,Nivel de Reordonare Recomandat al Articolului-Awesome
 DocType: Salary Detail,Salary Detail,Detalii salariu
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Vă rugăm selectați 0} {întâi
@@ -4040,7 +4040,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Activitatea de proiect / sarcină.
 DocType: Vehicle Log,Refuelling Details,Detalii de realimentare
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generează fluturașe de salariu
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,În continuare Contact Prin faptul că nu poate fi la fel ca id-ul de e-mail Plumb
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,În continuare Contact Prin faptul că nu poate fi la fel ca id-ul de e-mail Plumb
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Destinat Cumpărării trebuie să fie bifat, dacă Se Aplica Pentru este selectat ca şi {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Reducerea trebuie să fie mai mică de 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Rata Ultima achiziție nu a fost găsit
@@ -4336,7 +4336,7 @@
 DocType: Item,Item Tax,Taxa Articol
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Material de Furnizor
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Accize factură
-DocType: Expense Claim,Employees Email Id,Id Email Angajat
+DocType: Expense Claim,Employees Email Address,Id Email Angajat
 DocType: Employee Attendance Tool,Marked Attendance,Participarea marcat
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Raspunderi Curente
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Trimite SMS-uri în masă a persoanelor de contact
diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv
index 238d39e..c98e266 100644
--- a/erpnext/translations/ru.csv
+++ b/erpnext/translations/ru.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Сумма после амортизации
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Предстоящие Календарь событий
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Пожалуйста, выберите месяц и год"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Введите электронный идентификатор разделенных запятыми, счет будет автоматически отправлен на определенную дату"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Введите электронный идентификатор разделенных запятыми, счет будет автоматически отправлен на определенную дату"
 DocType: Employee,Company Email,Email предприятия
 DocType: GL Entry,Debit Amount in Account Currency,Дебет Сумма в валюте счета
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Банк / Кассовые операции против партии или для внутренней передачи
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Просмотр Зарплата скольжению
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Счет {0} был введен несколько раз
 DocType: Account,Expenses Included In Valuation,"Затрат, включаемых в оценке"
-DocType: Employee,Provide email id registered in company,Обеспечить электронный идентификатор зарегистрирован в компании
+DocType: Employee,Provide Email Address registered in company,Обеспечить электронный идентификатор зарегистрирован в компании
 DocType: Hub Settings,Seller City,Продавец Город
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Пожалуйста, выберите группу Student"
 ,Absent Student Report,Отсутствует Student Report
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Синий
 DocType: Purchase Invoice,Is Return,Является Вернуться
 DocType: Price List Country,Price List Country,Цены Страна
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,"Пожалуйста, установите Email ID"
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,"Пожалуйста, установите Email Address"
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} действительные серийные NOS для позиции {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Код товара не может быть изменен для серийный номер
@@ -2217,7 +2217,7 @@
 DocType: Task Depends On,Task Depends On,Задачи зависит от
 DocType: Supplier Quotation,Opportunity,Возможность
 ,Completed Production Orders,Завершенные Производственные заказы
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Строка {0}: Для поставщика {0} электронный идентификатор требуется для отправки электронной почты
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Строка {0}: Для поставщика {0} электронный идентификатор требуется для отправки электронной почты
 DocType: Operation,Default Workstation,По умолчанию Workstation
 DocType: Notification Control,Expense Claim Approved Message,Расходов претензии Утверждено Сообщение
 DocType: Payment Entry,Deductions or Loss,Отчисления или убыток
@@ -3695,7 +3695,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Срок подачи заявлений не может быть по двум alocation записей
 DocType: Item Group,Default Expense Account,По умолчанию расходов счета
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Пакетный или Расписание курса является обязательным
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Уведомление (дней)
 DocType: Tax Rule,Sales Tax Template,Шаблон Налога с продаж
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Выберите элементы для сохранения счета-фактуры
@@ -3846,7 +3846,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Посмотреть покупка
 DocType: Program Enrollment Tool,New Program,Новая программа
 DocType: Item Attribute Value,Attribute Value,Значение атрибута
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ID электронной почты должен быть уникальным, уже существует для {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ID электронной почты должен быть уникальным, уже существует для {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Рекомендуем изменить порядок Уровень
 DocType: Salary Detail,Salary Detail,Заработная плата: Подробности
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Пожалуйста, выберите {0} первый"
@@ -4048,7 +4048,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Проектная деятельность / задачи.
 DocType: Vehicle Log,Refuelling Details,Заправочные Подробнее
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Создать зарплат Slips
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,"Следующая Контактные К не может быть такой же, как ведущего идентификатор электронной почты"
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,"Следующая Контактные К не может быть такой же, как ведущего идентификатор электронной почты"
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Покупка должна быть проверена, если выбран Применимо для как {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Скидка должна быть меньше 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Последний курс покупки не найден
@@ -4344,7 +4344,7 @@
 DocType: Item,Item Tax,Пункт Налоговый
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Материал Поставщику
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Акцизный Счет
-DocType: Expense Claim,Employees Email Id,Сотрудники Email ID
+DocType: Expense Claim,Employees Email Address,Сотрудники Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Выраженное Посещаемость
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Текущие обязательства
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Отправить массовый SMS в список контактов
diff --git a/erpnext/translations/si.csv b/erpnext/translations/si.csv
index 896ab0a..4a894f0 100644
--- a/erpnext/translations/si.csv
+++ b/erpnext/translations/si.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,ක්ෂය පසු ප්රමාණය
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,ඉදිරියට එන දින දසුන සිදුවීම්
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,කරුණාකර වසර සහ මාසය තෝරා
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","කොමාවකින් වෙන් ඊ-තැපැල් id ඇතුලත් කරන්න, ඉන්වොයිසි විශේෂයෙන් දිනය ස්වයංක්රීයව තැපැල් කරනු"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","කොමාවකින් වෙන් ඊ-තැපැල් id ඇතුලත් කරන්න, ඉන්වොයිසි විශේෂයෙන් දිනය ස්වයංක්රීයව තැපැල් කරනු"
 DocType: Employee,Company Email,සමාගම විද්යුත්
 DocType: GL Entry,Debit Amount in Account Currency,ගිණුම ව්යවහාර මුදල් ඩෙබිට් මුදල
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,පක්ෂයට එරෙහිව හෝ අභ්යන්තර ස්ථාන මාරු සඳහා බැංකුව / මුදල් ගනුෙදනු
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,පෙරදසුන වැටුප කුවිතාන්සියක්
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,ගිණුම {0} වාර කිහිපයක් ඇතුලත් කර ඇත
 DocType: Account,Expenses Included In Valuation,ඇතුලත් තක්සේරු දී වියදම්
-DocType: Employee,Provide email id registered in company,සමාගම ලියාපදිංචි ඊ id ලබා
+DocType: Employee,Provide Email Address registered in company,සමාගම ලියාපදිංචි ඊ id ලබා
 DocType: Hub Settings,Seller City,විකුණන්නා සිටි
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,කරුණාකර ශිෂ්ය සමූහය තෝරා
 ,Absent Student Report,නැති කල ශිෂ්ය වාර්තාව
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,නිල්
 DocType: Purchase Invoice,Is Return,ප්රතිලාභ වේ
 DocType: Price List Country,Price List Country,මිල ලැයිස්තුව රට
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,විද්යුත් හැඳුනුම්පත සකස් කරන්න
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,විද්යුත් හැඳුනුම්පත සකස් කරන්න
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},විෂය {1} සඳහා {0} වලංගු අනුක්රමික අංක
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,අයිතමය සංග්රහයේ අනු අංකය වෙනස් කළ නොහැකි
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,කාර්ය සාධක මත රඳා පවතී
 DocType: Supplier Quotation,Opportunity,අවස්ථාවක්
 ,Completed Production Orders,සම්පූර්ණ කරන ලද නිෂ්පාදන නියෝග
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,ෙරෝ {0}: සැපයුම්කරු සඳහා {0} ඊ-තැපැල් id ඊ-තැපැල් යැවීමට අවශ්ය වේ
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,ෙරෝ {0}: සැපයුම්කරු සඳහා {0} ඊ-තැපැල් id ඊ-තැපැල් යැවීමට අවශ්ය වේ
 DocType: Operation,Default Workstation,පෙරනිමි වර්ක්ස්ටේෂන්
 DocType: Notification Control,Expense Claim Approved Message,වියදම් හිමිකම් අනුමත පණිවුඩය
 DocType: Payment Entry,Deductions or Loss,අඩු කිරීම් හෝ අඞු කිරීමට
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,අයදුම් කාලය alocation වාර්තා දෙක හරහා විය නොහැකි
 DocType: Item Group,Default Expense Account,පෙරනිමි ගෙවීමේ ගිණුම්
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,ශිෂ්ය කණ්ඩායම හෝ පාඨමාලා කාලසටහන අනිවාර්ය වේ
-DocType: Student,Student Email ID,ශිෂ්ය විද්යුත් හැඳුනුම්පත
+DocType: Student,Student Email Address,ශිෂ්ය විද්යුත් හැඳුනුම්පත
 DocType: Employee,Notice (days),නිවේදනය (දින)
 DocType: Tax Rule,Sales Tax Template,විකුණුම් බදු සැකිල්ල
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ඉන්වොයිස් බේරා ගැනීමට භාණ්ඩ තෝරන්න
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,ආදර්ශ දැක්ම
 DocType: Program Enrollment Tool,New Program,නව වැඩසටහන
 DocType: Item Attribute Value,Attribute Value,ගති ලක්ෂණය අගය
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","විද්යුත් id අනන්ය විය යුතුය, දැනටමත් {0} සඳහා පවතී"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","විද්යුත් id අනන්ය විය යුතුය, දැනටමත් {0} සඳහා පවතී"
 ,Itemwise Recommended Reorder Level,Itemwise සීරුමාරු කිරීමේ පෙළ නිර්දේශිත
 DocType: Salary Detail,Salary Detail,වැටුප් විස්තර
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,කරුණාකර පළමු {0} තෝරා
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,ව්යාපෘති ක්රියාකාරකම් / කටයුත්තක්.
 DocType: Vehicle Log,Refuelling Details,Refuelling විස්තර
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,වැටුප ලංකා අන්තර් බැංකු ගෙවීම් පද්ධතිය උත්පාදනය
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,ඊළඟට අප අමතන්න කිරීම පෙරමුණ විද්යුත් id ලෙස සමාන විය නොහැකි
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,ඊළඟට අප අමතන්න කිරීම පෙරමුණ විද්යුත් id ලෙස සමාන විය නොහැකි
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","අදාළ සඳහා {0} ලෙස තෝරා ගන්නේ නම් මිලට ගැනීම, පරීක්ෂා කළ යුතු"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,වට්ටමක් 100 කට වඩා අඩු විය යුතු
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,පසුගිය මිලදී අනුපාතය සොයාගත නොහැකි
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,අයිතමය බදු
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,සැපයුම්කරු ද්රව්යමය
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,සුරාබදු ඉන්වොයිසිය
-DocType: Expense Claim,Employees Email Id,සේවක විද්යුත් අංකය
+DocType: Expense Claim,Employees Email Address,සේවක විද්යුත් අංකය
 DocType: Employee Attendance Tool,Marked Attendance,කැපී පෙනෙන පැමිණීම
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,ජංගම වගකීම්
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ඔබගේ සම්බන්ධතා මහජන SMS යවන්න
diff --git a/erpnext/translations/sk.csv b/erpnext/translations/sk.csv
index 5ffb31f..cf1c18d 100644
--- a/erpnext/translations/sk.csv
+++ b/erpnext/translations/sk.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Suma po odpisoch
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Nadchádzajúce Udalosti v kalendári
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Vyberte měsíc a rok
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Zadejte e-mail id odděleny čárkami, bude faktura bude zaslán automaticky na určité datum"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Zadejte e-mail id odděleny čárkami, bude faktura bude zaslán automaticky na určité datum"
 DocType: Employee,Company Email,E-mail spoločnosti
 DocType: GL Entry,Debit Amount in Account Currency,Debetné Čiastka v mene účtu
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Banka / Hotovostné operácie proti osobe alebo pre interný prevod
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview výplatnej páske
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Účet {0} bol zadaný viackrát
 DocType: Account,Expenses Included In Valuation,Náklady ceně oceňování
-DocType: Employee,Provide email id registered in company,Poskytnout e-mail id zapsané ve firmě
+DocType: Employee,Provide Email Address registered in company,Poskytnout e-mail id zapsané ve firmě
 DocType: Hub Settings,Seller City,Prodejce City
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Prosím, vyberte si študentská skupina"
 ,Absent Student Report,Absent Študent Report
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Modrý
 DocType: Purchase Invoice,Is Return,Je Return
 DocType: Price List Country,Price List Country,Cenník Krajina
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Prosím nastavte e-mail ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Prosím nastavte e-mail ID
 DocType: Item,UOMs,Merné Jednotky
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} platné sériové čísla pre položky {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kód položky nemůže být změněn pro Serial No.
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,Úloha je závislá na
 DocType: Supplier Quotation,Opportunity,Příležitost
 ,Completed Production Orders,Dokončené Výrobní zakázky
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Riadok {0}: Pre dodávateľov je potrebná {0} e-mail id poslať e-mail
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Riadok {0}: Pre dodávateľov je potrebná {0} e-mail id poslať e-mail
 DocType: Operation,Default Workstation,Výchozí Workstation
 DocType: Notification Control,Expense Claim Approved Message,Správa o schválení úhrady výdavkov
 DocType: Payment Entry,Deductions or Loss,Odpočty alebo strata
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Obdobie podávania žiadostí nemôže byť na dvoch alokácie záznamy
 DocType: Item Group,Default Expense Account,Výchozí výdajového účtu
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Študent Batch alebo rozvrh je povinné
-DocType: Student,Student Email ID,Študent ID e-mailu
+DocType: Student,Student Email Address,Študent ID e-mailu
 DocType: Employee,Notice (days),Oznámenie (dni)
 DocType: Tax Rule,Sales Tax Template,Daň z predaja Template
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Vyberte položky, ktoré chcete uložiť faktúru"
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Zobraziť Obchodné iniciatívy
 DocType: Program Enrollment Tool,New Program,nový program
 DocType: Item Attribute Value,Attribute Value,Hodnota atributu
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-mail id musí být jedinečný, již existuje {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-mail id musí být jedinečný, již existuje {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Doporučené Změna pořadí Level
 DocType: Salary Detail,Salary Detail,plat Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Prosím, nejprve vyberte {0}"
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projektová činnost / úkol.
 DocType: Vehicle Log,Refuelling Details,tankovacie Podrobnosti
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generování výplatních páskách
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Nasledujúce Kontakt Tým nemôže byť rovnaká ako Lead ID e-mailu
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Nasledujúce Kontakt Tým nemôže byť rovnaká ako Lead ID e-mailu
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Nákup musí být zkontrolováno, v případě potřeby pro vybrán jako {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Sleva musí být menší než 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Posledná cena pri platbe nebol nájdený
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,Daň Položky
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiál Dodávateľovi
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Spotrebný Faktúra
-DocType: Expense Claim,Employees Email Id,Zaměstnanci Email Id
+DocType: Expense Claim,Employees Email Address,Zaměstnanci Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Výrazná Návštevnosť
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Krátkodobé závazky
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Posílat hromadné SMS vašim kontaktům
diff --git a/erpnext/translations/sl.csv b/erpnext/translations/sl.csv
index 610e00f..0b7d869 100644
--- a/erpnext/translations/sl.csv
+++ b/erpnext/translations/sl.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Znesek Po amortizacijo
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Prihajajoči Koledar dogodkov
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Prosimo, izberite mesec in leto"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Vnesite email id ločeni z vejicami, bo račun avtomatično poslali na določen datum"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Vnesite Email Address ločeni z vejicami, bo račun avtomatično poslali na določen datum"
 DocType: Employee,Company Email,Družba E-pošta
 DocType: GL Entry,Debit Amount in Account Currency,Debetno Znesek v Valuta računa
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / denarni posli proti osebi ali za notranjo prerazporeditvijo
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Predogled Plača listek
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Račun {0} je bil vpisan večkrat
 DocType: Account,Expenses Included In Valuation,Stroški Vključeno v vrednotenju
-DocType: Employee,Provide email id registered in company,"Zagotovite email id, registrirano v družbi"
+DocType: Employee,Provide Email Address registered in company,"Zagotovite Email Address, registrirano v družbi"
 DocType: Hub Settings,Seller City,Prodajalec Mesto
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Izberite skupino študentsko
 ,Absent Student Report,Odsoten Student Report
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Modra
 DocType: Purchase Invoice,Is Return,Je Return
 DocType: Price List Country,Price List Country,Cenik Država
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,"Prosim, nastavite e-ID"
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,"Prosim, nastavite e-ID"
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} veljavna serijski nos za postavko {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Oznaka se ne more spremeniti za Serial No.
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Naloga je odvisna od
 DocType: Supplier Quotation,Opportunity,Priložnost
 ,Completed Production Orders,Zaključeni Proizvodne Naročila
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Vrstica {0}: Za dobavitelja je potrebno {0} email id za pošiljanje e-pošte
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Vrstica {0}: Za dobavitelja je potrebno {0} Email Address za pošiljanje e-pošte
 DocType: Operation,Default Workstation,Privzeto Workstation
 DocType: Notification Control,Expense Claim Approved Message,Expense Zahtevek Odobreno Sporočilo
 DocType: Payment Entry,Deductions or Loss,Odbitki ali izguba
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Prijavni rok ne more biti čez dve Razporejanje zapisov
 DocType: Item Group,Default Expense Account,Privzeto Expense račun
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Študent serije ali tečaj Urnik je obvezna
-DocType: Student,Student Email ID,Študent Email ID
+DocType: Student,Student Email Address,Študent Email Address
 DocType: Employee,Notice (days),Obvestilo (dni)
 DocType: Tax Rule,Sales Tax Template,Sales Tax Predloga
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,"Izberite predmete, da shranite račun"
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Poglej ponudbe
 DocType: Program Enrollment Tool,New Program,Nov program
 DocType: Item Attribute Value,Attribute Value,Vrednosti atributa
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email id mora biti edinstven, že obstaja za {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address mora biti edinstven, že obstaja za {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Priporočena Preureditev Raven
 DocType: Salary Detail,Salary Detail,plača Podrobnosti
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Prosimo, izberite {0} najprej"
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projektna dejavnost / naloga.
 DocType: Vehicle Log,Refuelling Details,Oskrba z gorivom Podrobnosti
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Ustvarjajo plače kombineže
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Naslednja Kontakt Po ne more biti enaka kot vodilni Email id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Naslednja Kontakt Po ne more biti enaka kot vodilni Email Address
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Odkup je treba preveriti, če se uporablja za izbrana kot {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,"Popust, mora biti manj kot 100"
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Zadnja stopnja nakup ni bilo mogoče najti
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Postavka Tax
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Material za dobavitelja
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Trošarina Račun
-DocType: Expense Claim,Employees Email Id,Zaposleni Email Id
+DocType: Expense Claim,Employees Email Address,Zaposleni Email Address
 DocType: Employee Attendance Tool,Marked Attendance,markirana Udeležba
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kratkoročne obveznosti
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Pošlji množično SMS vaših stikov
diff --git a/erpnext/translations/sq.csv b/erpnext/translations/sq.csv
index 667753f..69f961b 100644
--- a/erpnext/translations/sq.csv
+++ b/erpnext/translations/sq.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Shuma Pas Zhvlerësimi
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Ardhshme Ngjarje Kalendari
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Ju lutem, përzgjidhni muaji dhe viti"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Shkruani id email ndara me presje, fatura do të postohet automatikisht në datën e caktuar"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Shkruani id email ndara me presje, fatura do të postohet automatikisht në datën e caktuar"
 DocType: Employee,Company Email,Kompania Email
 DocType: GL Entry,Debit Amount in Account Currency,Shuma Debi në llogarinë në valutë
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Cash transaksionet kundër partisë apo për transferimin e brendshëm
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Preview Paga Shqip
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Llogaria {0} ka hyrë disa herë
 DocType: Account,Expenses Included In Valuation,Shpenzimet e përfshira në Vlerësimit
-DocType: Employee,Provide email id registered in company,Sigurojë id mail regjistruar në kompaninë
+DocType: Employee,Provide Email Address registered in company,Sigurojë id mail regjistruar në kompaninë
 DocType: Hub Settings,Seller City,Shitës qytetit
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Ju lutem, përzgjidhni një Grup Student"
 ,Absent Student Report,Mungon Raporti Student
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blu
 DocType: Purchase Invoice,Is Return,Është Kthimi
 DocType: Price List Country,Price List Country,Lista e Çmimeve Vendi
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Ju lutem plotësoni Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Ju lutem plotësoni Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} nos vlefshme serik për Item {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Kodi artikull nuk mund të ndryshohet për të Serial Nr
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Detyra varet
 DocType: Supplier Quotation,Opportunity,Mundësi
 ,Completed Production Orders,Urdhërat përfunduar prodhimit
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0} Për të furnizuesit {0} email id është e nevojshme për të dërguar një email
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0} Për të furnizuesit {0} Email Address është e nevojshme për të dërguar një email
 DocType: Operation,Default Workstation,Gabim Workstation
 DocType: Notification Control,Expense Claim Approved Message,Shpenzim Kërkesa Miratuar mesazh
 DocType: Payment Entry,Deductions or Loss,Zbritjet apo Humbje
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Periudha e aplikimit nuk mund të jetë në dy regjistrave alokimin
 DocType: Item Group,Default Expense Account,Llogaria e albumit shpenzimeve
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Batch Student ose Course Orari është i detyrueshëm
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Njoftim (ditë)
 DocType: Tax Rule,Sales Tax Template,Template Sales Tax
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Zgjidhni artikuj për të shpëtuar faturën
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Shiko kryeson
 DocType: Program Enrollment Tool,New Program,Program i ri
 DocType: Item Attribute Value,Attribute Value,Atribut Vlera
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Email ID duhet të jetë unike, tashmë ekziston për {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Email Address duhet të jetë unike, tashmë ekziston për {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Recommended reorder Niveli
 DocType: Salary Detail,Salary Detail,Paga Detail
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Ju lutem, përzgjidhni {0} parë"
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Aktiviteti i projekt / detyra.
 DocType: Vehicle Log,Refuelling Details,Details Rimbushja
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generate paga rrëshqet
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Next Contact By nuk mund të jetë i njëjtë si Lead Email id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Next Contact By nuk mund të jetë i njëjtë si Lead Email Address
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Blerja duhet të kontrollohet, nëse është e aplikueshme për të është zgjedhur si {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Discount duhet të jetë më pak se 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Shkalla e fundit e blerjes nuk u gjet
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Tatimi i artikullit
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Materiale për Furnizuesin
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Akciza Faturë
-DocType: Expense Claim,Employees Email Id,Punonjësit Email Id
+DocType: Expense Claim,Employees Email Address,Punonjësit Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Pjesëmarrja e shënuar
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Detyrimet e tanishme
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Dërgo SMS në masë për kontaktet tuaja
diff --git a/erpnext/translations/sr.csv b/erpnext/translations/sr.csv
index 2ca1979..1087450 100644
--- a/erpnext/translations/sr.csv
+++ b/erpnext/translations/sr.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Износ Након Амортизација
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Предстојеће догађаје из календара
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Изаберите месец и годину
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Унесите ид е раздвојених зарезима, фактура ће аутоматски бити послат на одређени датум"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Унесите ид е раздвојених зарезима, фактура ће аутоматски бити послат на одређени датум"
 DocType: Employee,Company Email,Компанија Е-маил
 DocType: GL Entry,Debit Amount in Account Currency,Дебитна Износ у валути рачуна
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Банка / Новчане трансакције против странке или за интерни трансфер
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Преглед плата Слип
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Рачун {0} је ушла више пута
 DocType: Account,Expenses Included In Valuation,Трошкови укључени у процене
-DocType: Employee,Provide email id registered in company,Обезбедити ид е регистрован у предузећу
+DocType: Employee,Provide Email Address registered in company,Обезбедити ид е регистрован у предузећу
 DocType: Hub Settings,Seller City,Продавац Град
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Изаберите Студент Гроуп
 ,Absent Student Report,Абсент Студентски Извештај
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Плава
 DocType: Purchase Invoice,Is Return,Да ли је Повратак
 DocType: Price List Country,Price List Country,Ценовник Земља
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Молимо поставите Емаил ИД
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Молимо поставите Емаил ИД
 DocType: Item,UOMs,УОМс
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} действительные серийные NOS для Пункт {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Шифра не може се мењати за серијским бројем
@@ -2218,7 +2218,7 @@
 DocType: Task Depends On,Task Depends On,Задатак Дубоко У
 DocType: Supplier Quotation,Opportunity,Прилика
 ,Completed Production Orders,Завршени Продуцтион Поруџбине
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Ред {0}: За добављача {0} е-маил ид је неопходан за слање е-маил
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Ред {0}: За добављача {0} е-маил ид је неопходан за слање е-маил
 DocType: Operation,Default Workstation,Уобичајено Воркстатион
 DocType: Notification Control,Expense Claim Approved Message,Расходи потраживање Одобрено поруку
 DocType: Payment Entry,Deductions or Loss,Дедуцтионс или губитак
@@ -3696,7 +3696,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Период примене не могу бити на два намјена евиденције
 DocType: Item Group,Default Expense Account,Уобичајено Трошкови налога
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Студент партије или Термински план је обавезан
-DocType: Student,Student Email ID,Студент-маил ИД
+DocType: Student,Student Email Address,Студент-маил ИД
 DocType: Employee,Notice (days),Обавештење ( дана )
 DocType: Tax Rule,Sales Tax Template,Порез на промет Шаблон
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Изабрали ставке да спасе фактуру
@@ -3847,7 +3847,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Погледај Леадс
 DocType: Program Enrollment Tool,New Program,Нови програм
 DocType: Item Attribute Value,Attribute Value,Вредност атрибута
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Удостоверение личности электронной почты должен быть уникальным , уже существует для {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Удостоверение личности электронной почты должен быть уникальным , уже существует для {0}"
 ,Itemwise Recommended Reorder Level,Препоручени ниво Итемвисе Реордер
 DocType: Salary Detail,Salary Detail,плата Детаљ
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Изаберите {0} први
@@ -4048,7 +4048,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Пројекат активност / задатак.
 DocType: Vehicle Log,Refuelling Details,Рефуеллинг Детаљи
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Генериши стаје ПЛАТА
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Следећа контактирати путем не може бити исти као водећи Емаил ИД
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Следећа контактирати путем не може бити исти као водећи Емаил ИД
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Куповина се мора проверити, ако је применљиво Јер је изабрана као {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Скидка должна быть меньше 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Последња куповина стопа није пронађен
@@ -4344,7 +4344,7 @@
 DocType: Item,Item Tax,Ставка Пореска
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Материјал за добављача
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Акцизе фактура
-DocType: Expense Claim,Employees Email Id,Запослени Емаил ИД
+DocType: Expense Claim,Employees Email Address,Запослени Емаил ИД
 DocType: Employee Attendance Tool,Marked Attendance,Приметан Присуство
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Текущие обязательства
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Пошаљи СМС масовне вашим контактима
diff --git a/erpnext/translations/sv.csv b/erpnext/translations/sv.csv
index 6774b37..23a1627 100644
--- a/erpnext/translations/sv.csv
+++ b/erpnext/translations/sv.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Belopp efter avskrivningar
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Kommande kalenderhändelser
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Välj månad och år
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Ange e-post-id åtskilda med kommatecken, kommer fakturan att skickas automatiskt på visst datum"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Ange e-post-id åtskilda med kommatecken, kommer fakturan att skickas automatiskt på visst datum"
 DocType: Employee,Company Email,Företagets e-post
 DocType: GL Entry,Debit Amount in Account Currency,Betal-Belopp i konto Valuta
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Bank / Cash transaktioner mot partiet eller för intern överföring
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Förhandsvisning lönebesked
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Konto {0} har angetts flera gånger
 DocType: Account,Expenses Included In Valuation,Kostnader ingår i rapporten
-DocType: Employee,Provide email id registered in company,Ange E-post ID registrerat i bolaget
+DocType: Employee,Provide Email Address registered in company,Ange E-post ID registrerat i bolaget
 DocType: Hub Settings,Seller City,Säljaren stad
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Välj en studentgrupp
 ,Absent Student Report,Frånvarande Student Rapport
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Blå
 DocType: Purchase Invoice,Is Return,Är Returnerad
 DocType: Price List Country,Price List Country,Prislista Land
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Ställ in e-ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Ställ in e-ID
 DocType: Item,UOMs,UOM
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} giltigt serienummer för punkt {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Produkt kod kan inte ändras för serienummer
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,Uppgift Beror på
 DocType: Supplier Quotation,Opportunity,Möjlighet
 ,Completed Production Orders,Genomförda produktionsorder
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Rad {0}: För leverantören {0} e-id som krävs för att skicka e-post
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Rad {0}: För leverantören {0} e-id som krävs för att skicka e-post
 DocType: Operation,Default Workstation,Standard arbetsstation
 DocType: Notification Control,Expense Claim Approved Message,Räkningen Godkänd Meddelande
 DocType: Payment Entry,Deductions or Loss,Avdrag eller förlust
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Ansökningstiden kan inte vara över två alocation register
 DocType: Item Group,Default Expense Account,Standardutgiftskonto
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Batch eller kurs schema är obligatorisk
-DocType: Student,Student Email ID,Student E ID
+DocType: Student,Student Email Address,Student E ID
 DocType: Employee,Notice (days),Observera (dagar)
 DocType: Tax Rule,Sales Tax Template,Moms Mall
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Välj objekt för att spara fakturan
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Se prospekts
 DocType: Program Enrollment Tool,New Program,nytt program
 DocType: Item Attribute Value,Attribute Value,Attribut Värde
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-post ID måste vara unikt, finns redan för {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-post ID måste vara unikt, finns redan för {0}"
 ,Itemwise Recommended Reorder Level,Produktvis Rekommenderad Ombeställningsnivå
 DocType: Salary Detail,Salary Detail,lön Detalj
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Välj {0} först
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Projektverksamhet / uppgift.
 DocType: Vehicle Log,Refuelling Details,Tanknings Detaljer
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generera lönebesked
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Next Kontakt Genom kan inte vara densamma som den ledande e-id
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Next Kontakt Genom kan inte vara densamma som den ledande e-id
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Köp måste anges, i förekommande fall väljs som {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Rabatt måste vara mindre än 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Sista köpkurs hittades inte
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,Produkt Skatt
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Material till leverantören
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Punkt Faktura
-DocType: Expense Claim,Employees Email Id,Anställdas E-post Id
+DocType: Expense Claim,Employees Email Address,Anställdas E-post Id
 DocType: Employee Attendance Tool,Marked Attendance,Marked Närvaro
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Nuvarande Åtaganden
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Skicka mass SMS till dina kontakter
diff --git a/erpnext/translations/ta.csv b/erpnext/translations/ta.csv
index 29dad5e..cf9f0aa 100644
--- a/erpnext/translations/ta.csv
+++ b/erpnext/translations/ta.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,தொகை தேய்மானம் பிறகு
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,எதிர்வரும் நாட்காட்டி நிகழ்வுகள்
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,மாதம் மற்றும் ஆண்டு தேர்ந்தெடுக்கவும்
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","பிரிக்கப்பட்ட மின்னஞ்சல் ஐடியை உள்ளிடுக, விலைப்பட்டியல் குறிப்பிட்ட தேதியில் தானாக அஞ்சலிடப்படும்"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","பிரிக்கப்பட்ட மின்னஞ்சல் ஐடியை உள்ளிடுக, விலைப்பட்டியல் குறிப்பிட்ட தேதியில் தானாக அஞ்சலிடப்படும்"
 DocType: Employee,Company Email,நிறுவனத்தின் மின்னஞ்சல்
 DocType: GL Entry,Debit Amount in Account Currency,கணக்கு நாணய பற்று தொகை
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,வங்கி / பண கட்சிக்கு எதிராக அல்லது உள் பரிமாற்ற பரிவர்த்தனைகள்
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,முன்னோட்டம் சம்பளம் ஸ்லிப்
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,கணக்கு {0} பல முறை உள்ளிட்ட வருகிறது
 DocType: Account,Expenses Included In Valuation,செலவுகள் மதிப்பீட்டு சேர்க்கப்பட்டுள்ளது
-DocType: Employee,Provide email id registered in company,நிறுவனத்தின் பதிவு மின்னஞ்சல் ஐடி வழங்கும்
+DocType: Employee,Provide Email Address registered in company,நிறுவனத்தின் பதிவு மின்னஞ்சல் ஐடி வழங்கும்
 DocType: Hub Settings,Seller City,விற்பனையாளர் நகரத்தை
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,ஒரு மாணவர் குழு தேர்ந்தெடுக்கவும்
 ,Absent Student Report,இல்லாத மாணவர் அறிக்கை
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,ப்ளூ
 DocType: Purchase Invoice,Is Return,திரும்பி இருக்கிறது
 DocType: Price List Country,Price List Country,விலை பட்டியல் நாடு
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,மின்னஞ்சல் ஐடி அமைக்கவும்
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,மின்னஞ்சல் ஐடி அமைக்கவும்
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},உருப்படி {0} செல்லுபடியாகும் தொடர் இலக்கங்கள் {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,பொருள் கோட் சீரியல் எண் மாற்றப்பட கூடாது
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,பணி பொறுத்தது
 DocType: Supplier Quotation,Opportunity,சந்தர்ப்பம்
 ,Completed Production Orders,இதன் தயாரிப்பு நிறைவடைந்தது ஆணைகள்
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,ரோ {0}: விநியோகித்து {0} மின்னஞ்சல் ஐடி மின்னஞ்சல் அனுப்ப வேண்டும்
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,ரோ {0}: விநியோகித்து {0} மின்னஞ்சல் ஐடி மின்னஞ்சல் அனுப்ப வேண்டும்
 DocType: Operation,Default Workstation,இயல்புநிலை வேலைநிலையங்களின்
 DocType: Notification Control,Expense Claim Approved Message,இழப்பில் கோரிக்கை செய்தி அங்கீகரிக்கப்பட்ட
 DocType: Payment Entry,Deductions or Loss,விலக்கிற்கு அல்லது இழப்பு
@@ -3698,7 +3698,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,விண்ணப்ப காலம் இரண்டு alocation பதிவுகள் முழுவதும் இருக்க முடியாது
 DocType: Item Group,Default Expense Account,முன்னிருப்பு செலவு கணக்கு
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,மாணவர் தொகுதி அல்லது பாட அட்டவணை அத்தியாவசியமானதாகும்
-DocType: Student,Student Email ID,மாணவர் மின்னஞ்சல் ஐடி
+DocType: Student,Student Email Address,மாணவர் மின்னஞ்சல் ஐடி
 DocType: Employee,Notice (days),அறிவிப்பு ( நாட்கள்)
 DocType: Tax Rule,Sales Tax Template,விற்பனை வரி டெம்ப்ளேட்
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,விலைப்பட்டியல் காப்பாற்ற பொருட்களை தேர்வு
@@ -3849,7 +3849,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,காண்க லீட்ஸ்
 DocType: Program Enrollment Tool,New Program,புதிய திட்டம்
 DocType: Item Attribute Value,Attribute Value,மதிப்பு பண்பு
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","மின்னஞ்சல் அடையாள தனிப்பட்ட இருக்க வேண்டும் , ஏற்கனவே உள்ளது {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","மின்னஞ்சல் அடையாள தனிப்பட்ட இருக்க வேண்டும் , ஏற்கனவே உள்ளது {0}"
 ,Itemwise Recommended Reorder Level,இனவாரியாக நிலை மறுவரிசைப்படுத்துக பரிந்துரைக்கப்பட்ட
 DocType: Salary Detail,Salary Detail,சம்பளம் விபரம்
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,முதல் {0} தேர்வு செய்க
@@ -4051,7 +4051,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,திட்ட செயல்பாடு / பணி.
 DocType: Vehicle Log,Refuelling Details,Refuelling விபரங்கள்
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,சம்பளம் தவறிவிடும் உருவாக்க
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,அடுத்த தொடர்பு மூலம் முன்னணி மின்னஞ்சல் ஐடி அதே இருக்க முடியாது
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,அடுத்த தொடர்பு மூலம் முன்னணி மின்னஞ்சல் ஐடி அதே இருக்க முடியாது
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","பொருந்துகின்ற என தேர்வு என்றால் வாங்குதல், சரிபார்க்கப்பட வேண்டும் {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,தள்ளுபடி 100 க்கும் குறைவான இருக்க வேண்டும்
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,கடைசியாக கொள்முதல் விகிதம் இல்லை
@@ -4347,7 +4347,7 @@
 DocType: Item,Item Tax,உருப்படியை வரி
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,சப்ளையர் பொருள்
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,கலால் விலைப்பட்டியல்
-DocType: Expense Claim,Employees Email Id,ஊழியர்கள் மின்னஞ்சல் விலாசம்
+DocType: Expense Claim,Employees Email Address,ஊழியர்கள் மின்னஞ்சல் விலாசம்
 DocType: Employee Attendance Tool,Marked Attendance,அடையாளமிட்ட வருகை
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,நடப்பு பொறுப்புகள்
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,உங்கள் தொடர்புகள் வெகுஜன எஸ்எம்எஸ் அனுப்ப
diff --git a/erpnext/translations/te.csv b/erpnext/translations/te.csv
index ee1eb0e..35e9a0c 100644
--- a/erpnext/translations/te.csv
+++ b/erpnext/translations/te.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,మొత్తం అరుగుదల తరువాత
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,రాబోయే క్యాలెండర్ ఈవెంట్స్
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,నెల మరియు సంవత్సరం దయచేసి ఎంచుకోండి
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","కామాలతో వేరు ఎంటర్ ఇమెయిల్ ఐడి, ఇన్వాయిస్ ప్రత్యేక తేదీ స్వయంచాలకంగా కఠోర ఉంటుంది"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","కామాలతో వేరు ఎంటర్ ఇమెయిల్ ఐడి, ఇన్వాయిస్ ప్రత్యేక తేదీ స్వయంచాలకంగా కఠోర ఉంటుంది"
 DocType: Employee,Company Email,కంపెనీ ఇమెయిల్
 DocType: GL Entry,Debit Amount in Account Currency,ఖాతా కరెన్సీ లో డెబిట్ మొత్తం
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,బ్యాంకు / క్యాష్ పార్టీకి వ్యతిరేకంగా లేదా అంతర్గత బదిలీ లావాదేవీల
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,ప్రివ్యూ వేతనం స్లిప్
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,ఖాతా {0} అనేకసార్లు నమోదు చేసిన
 DocType: Account,Expenses Included In Valuation,ఖర్చులు విలువలో
-DocType: Employee,Provide email id registered in company,సంస్థ నమోదు టపా అందించండి
+DocType: Employee,Provide Email Address registered in company,సంస్థ నమోదు టపా అందించండి
 DocType: Hub Settings,Seller City,అమ్మకాల సిటీ
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,దయచేసి ఒక స్టూడెంట్ గ్రూప్ ఎంచుకోండి
 ,Absent Student Report,కరువవడంతో విద్యార్థి నివేదిక
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,బ్లూ
 DocType: Purchase Invoice,Is Return,రాబడి
 DocType: Price List Country,Price List Country,ధర జాబితా దేశం
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ఇమెయిల్ ID సెట్ చెయ్యండి
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ఇమెయిల్ ID సెట్ చెయ్యండి
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} అంశం చెల్లుబాటు సీరియల్ nos {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Item కోడ్ సీరియల్ నం కోసం మారలేదు
@@ -2196,7 +2196,7 @@
 DocType: Task Depends On,Task Depends On,టాస్క్ ఆధారపడి
 DocType: Supplier Quotation,Opportunity,అవకాశం
 ,Completed Production Orders,పూర్తి అయ్యింది ఆర్డర్స్
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,రో {0}: సరఫరాదారు కోసం {0} టపా ఇమెయిల్ పంపించవలసిన అవసరం ఉంది
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,రో {0}: సరఫరాదారు కోసం {0} టపా ఇమెయిల్ పంపించవలసిన అవసరం ఉంది
 DocType: Operation,Default Workstation,డిఫాల్ట్ కార్యక్షేత్ర
 DocType: Notification Control,Expense Claim Approved Message,ఖర్చు చెప్పడం ఆమోదించబడింది సందేశం
 DocType: Payment Entry,Deductions or Loss,తగ్గింపులకు లేదా నష్టం
@@ -3641,7 +3641,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,అప్లికేషన్ కాలం రెండు alocation రికార్డులు అంతటా ఉండకూడదు
 DocType: Item Group,Default Expense Account,డిఫాల్ట్ వ్యయం ఖాతా
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,స్టూడెంట్ బ్యాచ్ లేదా కోర్సు షెడ్యూల్ తప్పనిసరి
-DocType: Student,Student Email ID,స్టూడెంట్ అడ్రెస్
+DocType: Student,Student Email Address,స్టూడెంట్ అడ్రెస్
 DocType: Employee,Notice (days),నోటీసు (రోజులు)
 DocType: Tax Rule,Sales Tax Template,సేల్స్ టాక్స్ మూస
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,ఇన్వాయిస్ సేవ్ చెయ్యడానికి ఐటమ్లను ఎంచుకోండి
@@ -3792,7 +3792,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,చూడండి దారితీస్తుంది
 DocType: Program Enrollment Tool,New Program,కొత్త ప్రోగ్రామ్
 DocType: Item Attribute Value,Attribute Value,విలువ లక్షణం
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","ఇమెయిల్ ఐడి ఇప్పటికే ఉనికిలో ఉంది, ప్రత్యేకంగా ఉండాలి {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","ఇమెయిల్ ఐడి ఇప్పటికే ఉనికిలో ఉంది, ప్రత్యేకంగా ఉండాలి {0}"
 ,Itemwise Recommended Reorder Level,Itemwise క్రమాన్ని స్థాయి సిఫార్సు
 DocType: Salary Detail,Salary Detail,జీతం వివరాలు
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,ముందుగా {0} దయచేసి ఎంచుకోండి
@@ -3983,7 +3983,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,ప్రాజెక్టు చర్య / పని.
 DocType: Vehicle Log,Refuelling Details,Refuelling వివరాలు
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,జీతం స్లిప్స్ రూపొందించండి
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,తదుపరి సంప్రదించండి ద్వారా లీడ్ ఇమెయిల్ ఐడి అదే ఉండకూడదు
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,తదుపరి సంప్రదించండి ద్వారా లీడ్ ఇమెయిల్ ఐడి అదే ఉండకూడదు
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",వర్తించే ఎంపిక ఉంది ఉంటే కొనుగోలు తనిఖీ చెయ్యాలి {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,డిస్కౌంట్ 100 కంటే తక్కువ ఉండాలి
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,గత కొనుగోలు రేటు దొరకలేదు
@@ -4278,7 +4278,7 @@
 DocType: Item,Item Tax,అంశం పన్ను
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,సరఫరాదారు మెటీరియల్
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,ఎక్సైజ్ వాయిస్
-DocType: Expense Claim,Employees Email Id,ఉద్యోగులు ఇమెయిల్ ఐడి
+DocType: Expense Claim,Employees Email Address,ఉద్యోగులు ఇమెయిల్ ఐడి
 DocType: Employee Attendance Tool,Marked Attendance,గుర్తించ హాజరు
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,ప్రస్తుత బాధ్యతలు
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,మాస్ SMS మీ పరిచయాలను పంపండి
diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv
index df327e5..017a66b 100644
--- a/erpnext/translations/th.csv
+++ b/erpnext/translations/th.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,จำนวนเงินหลังจากที่ค่าเสื่อมราคา
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,ที่จะเกิดขึ้นปฏิทินเหตุการณ์
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,กรุณาเลือกเดือนและปี
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",ใส่หมายเลขอีเมลคั่นด้วยเครื่องหมายจุลภาคใบแจ้งหนี้จะถูกส่งโดยอัตโนมัติในวันที่เจาะจง
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",ใส่หมายเลขอีเมลคั่นด้วยเครื่องหมายจุลภาคใบแจ้งหนี้จะถูกส่งโดยอัตโนมัติในวันที่เจาะจง
 DocType: Employee,Company Email,อีเมล์ บริษัท
 DocType: GL Entry,Debit Amount in Account Currency,จำนวนเงินเดบิตในสกุลเงินในบัญชี
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,การทำธุรกรรมธนาคาร / เงินสดกับบุคคลหรือสำหรับการถ่ายโอนภายใน
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,ดูตัวอย่างสลิปเงินเดือน
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,บัญชี {0} ได้รับการป้อนหลายครั้ง
 DocType: Account,Expenses Included In Valuation,ค่าใช้จ่ายรวมอยู่ในการประเมินมูลค่า
-DocType: Employee,Provide email id registered in company,ให้ ID อีเมลที่ลงทะเบียนใน บริษัท
+DocType: Employee,Provide Email Address registered in company,ให้ ID อีเมลที่ลงทะเบียนใน บริษัท
 DocType: Hub Settings,Seller City,ผู้ขายเมือง
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,โปรดเลือกกลุ่มนักศึกษา
 ,Absent Student Report,รายงานนักศึกษาขาด
@@ -1128,7 +1128,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,สีฟ้า
 DocType: Purchase Invoice,Is Return,คือการกลับมา
 DocType: Price List Country,Price List Country,ราคาประเทศ
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,กรุณาตั้งค่าอีเมล์ ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,กรุณาตั้งค่าอีเมล์ ID
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} กัดกร่อน แบบอนุกรม ที่ถูกต้องสำหรับ รายการ {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,รหัสสินค้า ไม่สามารถ เปลี่ยนเป็น เลข อนุกรม
@@ -2219,7 +2219,7 @@
 DocType: Task Depends On,Task Depends On,ขึ้นอยู่กับงาน
 DocType: Supplier Quotation,Opportunity,โอกาส
 ,Completed Production Orders,เสร็จสิ้นการ สั่งซื้อ การผลิต
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,แถว {0}: สำหรับผู้จัดจำหน่าย {0} รหัสอีเมลจะต้องส่งอีเมล
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,แถว {0}: สำหรับผู้จัดจำหน่าย {0} รหัสอีเมลจะต้องส่งอีเมล
 DocType: Operation,Default Workstation,เวิร์คสเตชั่เริ่มต้น
 DocType: Notification Control,Expense Claim Approved Message,เรียกร้องค่าใช้จ่ายที่ได้รับอนุมัติข้อความ
 DocType: Payment Entry,Deductions or Loss,การหักเงินหรือการสูญเสีย
@@ -3697,7 +3697,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,รับสมัครไม่สามารถบันทึกในสอง alocation
 DocType: Item Group,Default Expense Account,บัญชีค่าใช้จ่ายเริ่มต้น
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,ชุดนักเรียนหรือตารางเรียนมีผลบังคับใช้
-DocType: Student,Student Email ID,อีเมล์ ID นักศึกษา
+DocType: Student,Student Email Address,อีเมล์ ID นักศึกษา
 DocType: Employee,Notice (days),แจ้งให้ทราบล่วงหน้า (วัน)
 DocType: Tax Rule,Sales Tax Template,แม่แบบภาษีการขาย
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,เลือกรายการที่จะบันทึกในใบแจ้งหนี้
@@ -3848,7 +3848,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,ดูนำ
 DocType: Program Enrollment Tool,New Program,โปรแกรมใหม่
 DocType: Item Attribute Value,Attribute Value,ค่าแอตทริบิวต์
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",id อีเมล ต้องไม่ซ้ำกัน อยู่ แล้วสำหรับ {0}
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",id อีเมล ต้องไม่ซ้ำกัน อยู่ แล้วสำหรับ {0}
 ,Itemwise Recommended Reorder Level,แนะนำ Itemwise Reorder ระดับ
 DocType: Salary Detail,Salary Detail,รายละเอียดเงินเดือน
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,กรุณาเลือก {0} ครั้งแรก
@@ -4050,7 +4050,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,กิจกรรมของโครงการ / งาน
 DocType: Vehicle Log,Refuelling Details,รายละเอียดเชื้อเพลิง
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,สร้าง Slips เงินเดือน
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,ถัดไปติดต่อโดยไม่สามารถเช่นเดียวกับ ID ตะกั่วอีเมล์
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,ถัดไปติดต่อโดยไม่สามารถเช่นเดียวกับ ID ตะกั่วอีเมล์
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",ต้องเลือก การซื้อ ถ้าเลือก ใช้ได้กับ เป็น {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ส่วนลด จะต้อง น้อยกว่า 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,ไม่พบอัตราการซื้อล่าสุด
@@ -4346,7 +4346,7 @@
 DocType: Item,Item Tax,ภาษีสินค้า
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,วัสดุในการจัดจำหน่าย
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,สรรพสามิตใบแจ้งหนี้
-DocType: Expense Claim,Employees Email Id,Email รหัสพนักงาน
+DocType: Expense Claim,Employees Email Address,Email รหัสพนักงาน
 DocType: Employee Attendance Tool,Marked Attendance,ผู้เข้าร่วมการทำเครื่องหมาย
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,หนี้สินหมุนเวียน
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,ส่ง SMS มวลการติดต่อของคุณ
diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv
index 00dba44..9c22e4e 100644
--- a/erpnext/translations/tr.csv
+++ b/erpnext/translations/tr.csv
@@ -430,7 +430,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Değer kaybı sonrası miktar
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Yaklaşan Takvim Olayları
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Ay ve yıl seçiniz
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Virgülle ayrılmış e-posta kimliklerini girin, fatura belirli bir tarihte otomatik olarak gönderilecek"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Virgülle ayrılmış e-posta kimliklerini girin, fatura belirli bir tarihte otomatik olarak gönderilecek"
 DocType: Employee,Company Email,Şirket e-posta
 DocType: GL Entry,Debit Amount in Account Currency,Hesap Para Bankamatik Tutar
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,partiye karşı veya dahili transfer için Banka / Para Çekme işlemleri
@@ -815,7 +815,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Önizleme Maaş Kayma
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Hesap {0} birden çok kez girilmiş
 DocType: Account,Expenses Included In Valuation,Değerlemeye dahil giderler
-DocType: Employee,Provide email id registered in company,Şirkette kayıtlı e-posta adresini veriniz
+DocType: Employee,Provide Email Address registered in company,Şirkette kayıtlı e-posta adresini veriniz
 DocType: Hub Settings,Seller City,Satıcı Şehri
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Öğrenci Grubu seçiniz
 ,Absent Student Report,Yok Öğrenci Raporu
@@ -1321,7 +1321,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Mavi
 DocType: Purchase Invoice,Is Return,İade mi
 DocType: Price List Country,Price List Country,Fiyat Listesi Ülke
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,E-posta kimliğini ayarlamak Lütfen
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,E-posta kimliğini ayarlamak Lütfen
 DocType: Item,UOMs,Ölçü Birimleri
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},Ürün {1} için {0} geçerli bir seri numarası
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Ürün Kodu Seri No için değiştirilemez
@@ -2592,7 +2592,7 @@
 DocType: Supplier Quotation,Opportunity,Fırsat
 ,Completed Production Orders,Tamamlanan Üretim Siparişleri
 ,Completed Production Orders,Tamamlanan Üretim Siparişleri
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Satır {0}: tedarikçisi için {0} e-posta id e-posta göndermek için gereklidir
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Satır {0}: tedarikçisi için {0} e-posta id e-posta göndermek için gereklidir
 DocType: Operation,Default Workstation,Standart İstasyonu
 DocType: Notification Control,Expense Claim Approved Message,Gideri Talebi Onay Mesajı
 DocType: Payment Entry,Deductions or Loss,Kesintiler veya Zararı
@@ -4282,7 +4282,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Uygulama süresi iki alocation kayıtları arasında olamaz
 DocType: Item Group,Default Expense Account,Standart Gider Hesabı
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Öğrenci Toplu veya Ders Programı zorunludur
-DocType: Student,Student Email ID,Öğrenci E-posta Kimliği
+DocType: Student,Student Email Address,Öğrenci E-posta Kimliği
 DocType: Employee,Notice (days),Bildirimi (gün)
 DocType: Employee,Notice (days),Bildirimi (gün)
 DocType: Tax Rule,Sales Tax Template,Satış Vergisi Şablon
@@ -4463,7 +4463,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Görünüm İlanlar
 DocType: Program Enrollment Tool,New Program,yeni Program
 DocType: Item Attribute Value,Attribute Value,Değer Özellik
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","E-posta yeni olmalıdır, {0} için zaten mevcut"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","E-posta yeni olmalıdır, {0} için zaten mevcut"
 ,Itemwise Recommended Reorder Level,Ürünnin Önerilen Yeniden Sipariş Düzeyi
 DocType: Salary Detail,Salary Detail,Maaş Detay
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Önce {0} seçiniz
@@ -4699,7 +4699,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Proje faaliyeti / görev.
 DocType: Vehicle Log,Refuelling Details,Yakıt Detayları
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Maaş Makbuzu Oluşturun
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Sonraki İletişim By Kurşun E-posta id ile aynı olamaz
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Sonraki İletişim By Kurşun E-posta id ile aynı olamaz
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Eğer Uygulanabilir {0} olarak seçilirse, alım kontrol edilmelidir."
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,İndirim 100'den az olmalıdır
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Son satın alma oranı bulunamadı
@@ -5046,7 +5046,7 @@
 DocType: Item,Item Tax,Ürün Vergisi
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Tedarikçi Malzeme
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Tüketim Fatura
-DocType: Expense Claim,Employees Email Id,Çalışanların e-posta adresleri
+DocType: Expense Claim,Employees Email Address,Çalışanların e-posta adresleri
 DocType: Employee Attendance Tool,Marked Attendance,İşaretlenmiş Devamlılık
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Kısa Vadeli Borçlar
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Kişilerinize toplu SMS Gönder
diff --git a/erpnext/translations/uk.csv b/erpnext/translations/uk.csv
index 3f0f5a3..4aed788 100644
--- a/erpnext/translations/uk.csv
+++ b/erpnext/translations/uk.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Залишкова вартість
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Майбутні Календар подій
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,"Будь-ласка, виберіть місяць та рік"
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Введіть електронний ідентифікатор, розділені комами, рахунок-фактура буде автоматично відправлений на певну дату"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Введіть електронний ідентифікатор, розділені комами, рахунок-фактура буде автоматично відправлений на певну дату"
 DocType: Employee,Company Email,Компанія E-mail
 DocType: GL Entry,Debit Amount in Account Currency,Дебет Сума в валюті рахунку
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Банк / Касові операції проти партії або для внутрішньої передачі
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Попередній перегляд Зарплатного розрахунку
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Рахунок {0} був введений кілька разів
 DocType: Account,Expenses Included In Valuation,"Витрати, що включаються в оцінку"
-DocType: Employee,Provide email id registered in company,Забезпечити електронний ідентифікатор зареєстрованого в компанії
+DocType: Employee,Provide Email Address registered in company,Забезпечити електронний ідентифікатор зареєстрованого в компанії
 DocType: Hub Settings,Seller City,Продавець Місто
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,"Будь ласка, виберіть групу Student"
 ,Absent Student Report,Відсутня Student Report
@@ -1107,7 +1107,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Синій
 DocType: Purchase Invoice,Is Return,Повернення
 DocType: Price List Country,Price List Country,Ціни Країна
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,"Будь ласка, встановіть Email ID"
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,"Будь ласка, встановіть Email Address"
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} дійсні серійні номери для позиції {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Код товару не може бути змінена для серійним номером
@@ -2194,7 +2194,7 @@
 DocType: Task Depends On,Task Depends On,Завдання залежить від
 DocType: Supplier Quotation,Opportunity,Нагода
 ,Completed Production Orders,Виконані Виробничі замовлення
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Рядок {0}: Для постачальника {0} електронний ідентифікатор потрібно для відправки електронної пошти
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Рядок {0}: Для постачальника {0} електронний ідентифікатор потрібно для відправки електронної пошти
 DocType: Operation,Default Workstation,За замовчуванням робоча станція
 DocType: Notification Control,Expense Claim Approved Message,Повідомлення при погодженні авансового звіту
 DocType: Payment Entry,Deductions or Loss,Відрахування або збиток
@@ -3639,7 +3639,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Термін подачі заяв не може бути з двох alocation записів
 DocType: Item Group,Default Expense Account,Витратний рахунок за замовчуванням
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student Пакетний або Розклад курсу є обов&#39;язковим
-DocType: Student,Student Email ID,Student Email ID
+DocType: Student,Student Email Address,Student Email Address
 DocType: Employee,Notice (days),Примітка (днів)
 DocType: Tax Rule,Sales Tax Template,Шаблон податків на продаж
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Виберіть елементи для збереження рахунку-фактури
@@ -3790,7 +3790,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Подивитися Lead-и
 DocType: Program Enrollment Tool,New Program,Нова програма
 DocType: Item Attribute Value,Attribute Value,Значення атрибута
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Посвідчення особи електронної пошти повинен бути унікальним, вже існує для {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Посвідчення особи електронної пошти повинен бути унікальним, вже існує для {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Recommended Reorder Level
 DocType: Salary Detail,Salary Detail,Заробітна плата: Подробиці
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,"Будь ласка, виберіть {0} в першу чергу"
@@ -3981,7 +3981,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Проектна діяльність / завдання.
 DocType: Vehicle Log,Refuelling Details,заправні Детальніше
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Згенерувати Зарплатні розрахунки
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,"Наступна Контактні До не може бути такою ж, як провідного ідентифікатор електронної пошти"
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,"Наступна Контактні До не може бути такою ж, як провідного ідентифікатор електронної пошти"
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","""Купівля"" повинно бути позначено, якщо ""Застосовне для"" обране як {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,"Знижка повинна бути менше, ніж 100"
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,Останню ціну закупівлі не знайдено
@@ -4276,7 +4276,7 @@
 DocType: Item,Item Tax,Податки
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Матеріал Постачальнику
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Акцизний Рахунок
-DocType: Expense Claim,Employees Email Id,Співробітники Email ID
+DocType: Expense Claim,Employees Email Address,Співробітники Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Помітне Відвідуваність
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Поточні зобов&#39;язання
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Відправити SMS масового вашим контактам
diff --git a/erpnext/translations/ur.csv b/erpnext/translations/ur.csv
index 18a6a46..b5b7a8f 100644
--- a/erpnext/translations/ur.csv
+++ b/erpnext/translations/ur.csv
@@ -358,7 +358,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,رقم ہراس کے بعد
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,انے والے واقعات کے کیلنڈر
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,مہینے اور سال براہ مہربانی منتخب کریں
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",کوما سے علیحدہ کریں ای میل کی شناخت، انوائس خاص تاریخ پر خود کار طریقے سے بھیج دیا جائے گا
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",کوما سے علیحدہ کریں ای میل کی شناخت، انوائس خاص تاریخ پر خود کار طریقے سے بھیج دیا جائے گا
 DocType: Employee,Company Email,کمپنی ای میل
 DocType: GL Entry,Debit Amount in Account Currency,اکاؤنٹ کی کرنسی میں ڈیبٹ رقم
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,بینک / کیش پارٹی کے خلاف یا اندرونی منتقلی کے لئے لین دین
@@ -674,7 +674,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,پیش نظارہ تنخواہ کی پرچی
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,اکاؤنٹ {0} کئی بار داخل کیا گیا ہے
 DocType: Account,Expenses Included In Valuation,اخراجات تشخیص میں شامل
-DocType: Employee,Provide email id registered in company,کمپنی میں رجسٹرڈ ای میل ID فراہم
+DocType: Employee,Provide Email Address registered in company,کمپنی میں رجسٹرڈ ای میل ID فراہم
 DocType: Hub Settings,Seller City,فروش شہر
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,ایک طالب علم گروپ براہ مہربانی منتخب کریں
 ,Absent Student Report,غائب Student کی رپورٹ
@@ -1086,7 +1086,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,بلیو
 DocType: Purchase Invoice,Is Return,واپسی ہے
 DocType: Price List Country,Price List Country,قیمت کی فہرست ملک
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,ای میل ID مقرر کریں
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,ای میل ID مقرر کریں
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} شے کے لئے درست سیریل نمبر {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,آئٹم کوڈ سیریل نمبر کے لئے تبدیل کر دیا گیا نہیں کیا جا سکتا
@@ -3555,7 +3555,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,درخواست کی مدت دو alocation ریکارڈ پار نہیں ہو سکتا
 DocType: Item Group,Default Expense Account,پہلے سے طے شدہ ایکسپینس اکاؤنٹ
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Student کی بیچ یا کورس شیڈول لازمی ہے
-DocType: Student,Student Email ID,Student کی ای میل آئی ڈی
+DocType: Student,Student Email Address,Student کی ای میل آئی ڈی
 DocType: Employee,Notice (days),نوٹس (دن)
 DocType: Tax Rule,Sales Tax Template,سیلز ٹیکس سانچہ
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,انوائس کو بچانے کے لئے اشیاء کو منتخب کریں
@@ -3703,7 +3703,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,لنک لیڈز
 DocType: Program Enrollment Tool,New Program,نیا پروگرام
 DocType: Item Attribute Value,Attribute Value,ویلیو وصف
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",ای میل کی شناخت پہلے ہی موجود ہے، منفرد ہونا چاہئے {0}
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",ای میل کی شناخت پہلے ہی موجود ہے، منفرد ہونا چاہئے {0}
 ,Itemwise Recommended Reorder Level,Itemwise ترتیب لیول سفارش
 DocType: Salary Detail,Salary Detail,تنخواہ تفصیل
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,پہلے {0} براہ مہربانی منتخب کریں
@@ -3888,7 +3888,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,پروجیکٹ سرگرمی / کام.
 DocType: Vehicle Log,Refuelling Details,Refuelling تفصیلات
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,تنخواہ تخم پیدا
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,اگلا رابطے کی طرف سے لیڈ ای میل آئی ڈی کے طور پر ہی نہیں ہو سکتا
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,اگلا رابطے کی طرف سے لیڈ ای میل آئی ڈی کے طور پر ہی نہیں ہو سکتا
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",قابل اطلاق کے لئے کے طور پر منتخب کیا جاتا ہے تو خریدنے، جانچ پڑتال ہونا ضروری {0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,ڈسکاؤنٹ کم 100 ہونا ضروری ہے
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,آخری خریداری کی شرح نہ پایا
@@ -4174,7 +4174,7 @@
 DocType: Item,Item Tax,آئٹم ٹیکس
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,سپلائر مواد
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,ایکسائز انوائس
-DocType: Expense Claim,Employees Email Id,ملازمین ای میل کی شناخت
+DocType: Expense Claim,Employees Email Address,ملازمین ای میل کی شناخت
 DocType: Employee Attendance Tool,Marked Attendance,نشان حاضری
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,موجودہ قرضوں
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,بڑے پیمانے پر ایس ایم ایس اپنے رابطوں کو بھیجیں
diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv
index 69ff43c..b5ca96f 100644
--- a/erpnext/translations/vi.csv
+++ b/erpnext/translations/vi.csv
@@ -366,7 +366,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,Số tiền Sau khi khấu hao
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,Sắp tới Lịch sự kiện
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,Vui lòng chọn tháng và năm
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Nhập id email cách nhau bằng dấu phẩy, hóa đơn sẽ được gửi tự động vào ngày cụ thể"
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date","Nhập id email cách nhau bằng dấu phẩy, hóa đơn sẽ được gửi tự động vào ngày cụ thể"
 DocType: Employee,Company Email,Email công ty
 DocType: GL Entry,Debit Amount in Account Currency,Nợ Số tiền trong tài khoản ngoại tệ
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,Ngân hàng / Tiền giao dịch với bên hoặc chuyển giao nội bộ
@@ -685,7 +685,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,Xem trước trượt Mức lương
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,Tài khoản {0} đã được nhập nhiều lần
 DocType: Account,Expenses Included In Valuation,Chi phí bao gồm trong định giá
-DocType: Employee,Provide email id registered in company,Cung cấp email id đăng ký tại công ty
+DocType: Employee,Provide Email Address registered in company,Cung cấp Email Address đăng ký tại công ty
 DocType: Hub Settings,Seller City,Người bán Thành phố
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,Vui lòng chọn một nhóm học sinh
 ,Absent Student Report,Báo cáo Sinh viên vắng mặt
@@ -1109,7 +1109,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,Màu xanh
 DocType: Purchase Invoice,Is Return,Là Return
 DocType: Price List Country,Price List Country,Giá Danh sách Country
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,Hãy đặt Email ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,Hãy đặt Email Address
 DocType: Item,UOMs,UOMs
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0} Các số seri hợp lệ cho mục {1}
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,Mã hàng không có thể được thay đổi cho Số sản
@@ -2200,7 +2200,7 @@
 DocType: Task Depends On,Task Depends On,Nhiệm vụ Phụ thuộc On
 DocType: Supplier Quotation,Opportunity,Cơ hội
 ,Completed Production Orders,Đơn đặt hàng sản xuất hoàn thành
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,Row {0}: Đối với nhà cung cấp {0} email id là bắt buộc để gửi email
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,Row {0}: Đối với nhà cung cấp {0} Email Address là bắt buộc để gửi email
 DocType: Operation,Default Workstation,Mặc định Workstation
 DocType: Notification Control,Expense Claim Approved Message,Thông báo yêu cầu bồi thường chi phí được chấp thuận
 DocType: Payment Entry,Deductions or Loss,Các khoản giảm trừ khả năng mất vốn
@@ -3659,7 +3659,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,Kỳ ứng dụng không thể được qua hai hồ sơ alocation
 DocType: Item Group,Default Expense Account,Tài khoản mặc định chi phí
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,Hàng loạt sinh viên hoặc Lịch học là bắt buộc
-DocType: Student,Student Email ID,Email ID Sinh viên
+DocType: Student,Student Email Address,Email Address Sinh viên
 DocType: Employee,Notice (days),Thông báo (ngày)
 DocType: Tax Rule,Sales Tax Template,Template Thuế bán hàng
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,Chọn mục để lưu các hoá đơn
@@ -3810,7 +3810,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,Xem chào
 DocType: Program Enrollment Tool,New Program,Chương trình mới
 DocType: Item Attribute Value,Attribute Value,Attribute Value
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}","Id email phải là duy nhất, đã tồn tại cho {0}"
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}","Id email phải là duy nhất, đã tồn tại cho {0}"
 ,Itemwise Recommended Reorder Level,Itemwise Đê Sắp xếp lại Cấp
 DocType: Salary Detail,Salary Detail,Chi tiết lương
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,Vui lòng chọn {0} đầu tiên
@@ -4012,7 +4012,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,Hoạt động dự án / nhiệm vụ.
 DocType: Vehicle Log,Refuelling Details,Chi tiết Nạp nhiên liệu
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Tạo ra lương Trượt
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,Tiếp theo Liên Bằng không được giống như Email id chì
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,Tiếp theo Liên Bằng không được giống như Email Address chì
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}","Buying must be checked, if Applicable For is selected as {0}"
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Giảm giá phải được ít hơn 100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,không tìm thấy tỷ lệ mua sắm cuối
@@ -4308,7 +4308,7 @@
 DocType: Item,Item Tax,Mục thuế
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,Chất liệu để Nhà cung cấp
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,Tiêu thụ đặc biệt Invoice
-DocType: Expense Claim,Employees Email Id,Nhân viên Email Id
+DocType: Expense Claim,Employees Email Address,Nhân viên Email Address
 DocType: Employee Attendance Tool,Marked Attendance,Attendance đánh dấu
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,Nợ ngắn hạn
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,Gửi tin nhắn SMS hàng loạt địa chỉ liên lạc của bạn
diff --git a/erpnext/translations/zh-TW.csv b/erpnext/translations/zh-TW.csv
index d8d3edd..254b36b 100644
--- a/erpnext/translations/zh-TW.csv
+++ b/erpnext/translations/zh-TW.csv
@@ -333,7 +333,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,折舊金額後
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,即將到來的日曆事件
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,請選擇年份和月份
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",輸入電子郵件ID用逗號隔開,發票會自動在特定的日期郵寄
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",輸入電子郵件ID用逗號隔開,發票會自動在特定的日期郵寄
 DocType: Employee,Company Email,企業郵箱
 DocType: GL Entry,Debit Amount in Account Currency,在賬戶幣種借記金額
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,銀行/現金對一方或內部轉讓交易
@@ -629,7 +629,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,預覽工資單
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,帳戶{0}已多次輸入
 DocType: Account,Expenses Included In Valuation,支出計入估值
-DocType: Employee,Provide email id registered in company,提供在公司註冊的電子郵件ID
+DocType: Employee,Provide Email Address registered in company,提供在公司註冊的電子郵件ID
 DocType: Hub Settings,Seller City,賣家市
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,請選擇一個學生組
 ,Absent Student Report,缺席學生報告
@@ -1041,7 +1041,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,藍色
 DocType: Purchase Invoice,Is Return,退貨
 DocType: Price List Country,Price List Country,價目表國家
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,請設定電子郵件ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,請設定電子郵件ID
 DocType: Item,UOMs,計量單位
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},{0}項目{1}的有效的序號
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,產品編號不能為序列號改變
@@ -2027,7 +2027,7 @@
 DocType: Task Depends On,Task Depends On,任務取決於
 DocType: Supplier Quotation,Opportunity,機會
 ,Completed Production Orders,已完成生產訂單
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,行{0}:對於供應商{0}電子郵件ID需要發送電子郵件
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,行{0}:對於供應商{0}電子郵件ID需要發送電子郵件
 DocType: Operation,Default Workstation,預設工作站
 DocType: Notification Control,Expense Claim Approved Message,報銷批准的訊息
 DocType: Payment Entry,Deductions or Loss,扣除或損失
@@ -3394,7 +3394,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,申請期間不能跨兩個alocation記錄
 DocType: Item Group,Default Expense Account,預設費用帳戶
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,學生批處理或課程表是強制性
-DocType: Student,Student Email ID,學生的電子郵件ID
+DocType: Student,Student Email Address,學生的電子郵件ID
 DocType: Tax Rule,Sales Tax Template,銷售稅模板
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,選取要保存發票
 DocType: Employee,Encashment Date,兌現日期
@@ -3528,7 +3528,7 @@
 apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.js +18,General Ledger,總帳
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,查看訊息
 DocType: Item Attribute Value,Attribute Value,屬性值
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",電子郵件ID必須是唯一的,且已經存在於 {0}
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",電子郵件ID必須是唯一的,且已經存在於 {0}
 ,Itemwise Recommended Reorder Level,Itemwise推薦級別重新排序
 DocType: Salary Detail,Salary Detail,薪酬詳細
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,請先選擇{0}
@@ -3720,7 +3720,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,專案活動/任務。
 DocType: Vehicle Log,Refuelling Details,加油詳情
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,生成工資條
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,接著聯繫到不能等同於鉛電子郵件ID
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,接著聯繫到不能等同於鉛電子郵件ID
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",採購必須進行檢查,如果適用於被選擇為{0}
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,折扣必須小於100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,最後購買率未找到
@@ -3992,7 +3992,7 @@
 DocType: Item,Item Tax,產品稅
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,材料到供應商
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,消費稅發票
-DocType: Expense Claim,Employees Email Id,員工的電子郵件ID
+DocType: Expense Claim,Employees Email Address,員工的電子郵件ID
 DocType: Employee Attendance Tool,Marked Attendance,明顯考勤
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,流動負債
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,發送群發短信到您的聯絡人
diff --git a/erpnext/translations/zh.csv b/erpnext/translations/zh.csv
index 9204112..4b32f8e 100644
--- a/erpnext/translations/zh.csv
+++ b/erpnext/translations/zh.csv
@@ -365,7 +365,7 @@
 apps/erpnext/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +81,Amount After Depreciation,折旧金额后
 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html +97,Upcoming Calendar Events,即将到来的日历事件
 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,请选择年份和月份
-DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",请输入邮件地址列表,用英文逗号分割。发票在特定的日期会被自动发送。
+DocType: Purchase Invoice,"Enter Email Address separated by commas, invoice will be mailed automatically on particular date",请输入邮件地址列表,用英文逗号分割。发票在特定的日期会被自动发送。
 DocType: Employee,Company Email,企业邮箱
 DocType: GL Entry,Debit Amount in Account Currency,在账户币种借记金额
 apps/erpnext/erpnext/config/accounts.py +27,Bank/Cash transactions against party or for internal transfer,银行/现金对一方或内部转让交易
@@ -683,7 +683,7 @@
 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +368,Preview Salary Slip,预览工资单
 apps/erpnext/erpnext/accounts/doctype/budget/budget.py +53,Account {0} has been entered multiple times,帐户{0}已多次输入
 DocType: Account,Expenses Included In Valuation,开支计入估值
-DocType: Employee,Provide email id registered in company,提供的电子邮件ID在公司注册
+DocType: Employee,Provide Email Address registered in company,提供的电子邮件ID在公司注册
 DocType: Hub Settings,Seller City,卖家城市
 apps/erpnext/erpnext/schools/doctype/announcement/announcement.py +22,Please select a Student Group,请选择一个学生组
 ,Absent Student Report,缺席学生报告
@@ -1118,7 +1118,7 @@
 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +165,Blue,蓝色
 DocType: Purchase Invoice,Is Return,再来
 DocType: Price List Country,Price List Country,价目表国家
-apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email ID,请设置电子邮件ID
+apps/erpnext/erpnext/utilities/doctype/contact/contact.py +69,Please set Email Address,请设置电子邮件ID
 DocType: Item,UOMs,计量单位
 apps/erpnext/erpnext/stock/utils.py +181,{0} valid serial nos for Item {1},品目{1}有{0}个有效序列号
 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +57,Item Code cannot be changed for Serial No.,品目编号不能因序列号改变
@@ -2208,7 +2208,7 @@
 DocType: Task Depends On,Task Depends On,任务取决于
 DocType: Supplier Quotation,Opportunity,机会
 ,Completed Production Orders,已完成生产订单
-apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} email id is required to send email,行{0}:对于供应商{0}电子邮件ID需要发送电子邮件
+apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +42,Row {0}: For supplier {0} Email Address is required to send email,行{0}:对于供应商{0}电子邮件ID需要发送电子邮件
 DocType: Operation,Default Workstation,默认工作台
 DocType: Notification Control,Expense Claim Approved Message,报销批准消息
 DocType: Payment Entry,Deductions or Loss,扣除或损失
@@ -3664,7 +3664,7 @@
 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +90,Application period cannot be across two alocation records,申请期间不能跨两个alocation记录
 DocType: Item Group,Default Expense Account,默认支出账户
 apps/erpnext/erpnext/schools/doctype/student_attendance/student_attendance.py +22,Student Batch or Course Schedule is mandatory,学生批处理或课程表是强制性
-DocType: Student,Student Email ID,学生的电子邮件ID
+DocType: Student,Student Email Address,学生的电子邮件ID
 DocType: Employee,Notice (days),通告(天)
 DocType: Tax Rule,Sales Tax Template,销售税模板
 apps/erpnext/erpnext/accounts/page/pos/pos.js +1626,Select items to save the invoice,选取要保存发票
@@ -3815,7 +3815,7 @@
 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js +10,View Leads,查看信息
 DocType: Program Enrollment Tool,New Program,新程序
 DocType: Item Attribute Value,Attribute Value,属性值
-apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email id must be unique, already exists for {0}",邮件地址{0}已存在
+apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +42,"Email Address must be unique, already exists for {0}",邮件地址{0}已存在
 ,Itemwise Recommended Reorder Level,品目特定的推荐重订购级别
 DocType: Salary Detail,Salary Detail,薪酬详细
 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +944,Please select {0} first,请选择{0}第一
@@ -4017,7 +4017,7 @@
 apps/erpnext/erpnext/config/projects.py +18,Project activity / task.,项目活动/任务。
 DocType: Vehicle Log,Refuelling Details,加油详情
 apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,生成工资条
-apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email id,接着联系到不能等同于铅电子邮件ID
+apps/erpnext/erpnext/crm/doctype/lead/lead.py +44,Next Contact By cannot be same as the Lead Email Address,接着联系到不能等同于铅电子邮件ID
 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +42,"Buying must be checked, if Applicable For is selected as {0}",“适用于”为{0}时必须勾选“采购”
 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,折扣必须小于100
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py +106,Last purchase rate not found,最后购买率未找到
@@ -4313,7 +4313,7 @@
 DocType: Item,Item Tax,品目税项
 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +752,Material to Supplier,材料到供应商
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +173,Excise Invoice,消费税发票
-DocType: Expense Claim,Employees Email Id,雇员的邮件地址
+DocType: Expense Claim,Employees Email Address,雇员的邮件地址
 DocType: Employee Attendance Tool,Marked Attendance,显着的出席
 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +136,Current Liabilities,流动负债
 apps/erpnext/erpnext/config/selling.py +278,Send mass SMS to your contacts,向你的联系人群发短信。
diff --git a/erpnext/utilities/address_and_contact.py b/erpnext/utilities/address_and_contact.py
deleted file mode 100644
index 36879d2..0000000
--- a/erpnext/utilities/address_and_contact.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-def load_address_and_contact(doc, key):
-	"""Loads address list and contact list in `__onload`"""
-	from erpnext.utilities.doctype.address.address import get_address_display
-
-	doc.get("__onload")["addr_list"] = [a.update({"display": get_address_display(a)}) \
-		for a in frappe.get_all("Address",
-			fields="*", filters={key: doc.name},
-			order_by="is_primary_address desc, modified desc")]
-
-	if doc.doctype != "Lead":
-		doc.get("__onload")["contact_list"] = frappe.get_all("Contact",
-			fields="*", filters={key: doc.name},
-			order_by="is_primary_contact desc, modified desc")
-
-def has_permission(doc, ptype, user):
-	links = get_permitted_and_not_permitted_links(doc.doctype)
-	if not links.get("not_permitted_links"):
-		# optimization: don't determine permissions based on link fields
-		return True
-
-	# True if any one is True or all are empty
-	names = []
-	for df in (links.get("permitted_links") + links.get("not_permitted_links")):
-		doctype = df.options
-		name = doc.get(df.fieldname)
-		names.append(name)
-
-		if name and frappe.has_permission(doctype, ptype, doc=name):
-			return True
-
-	if not any(names):
-		return True
-	return False
-
-def get_permission_query_conditions_for_contact(user):
-	return get_permission_query_conditions("Contact")
-
-def get_permission_query_conditions_for_address(user):
-	return get_permission_query_conditions("Address")
-
-def get_permission_query_conditions(doctype):
-	links = get_permitted_and_not_permitted_links(doctype)
-
-	if not links.get("not_permitted_links"):
-		# when everything is permitted, don't add additional condition
-		return ""
-		
-	elif not links.get("permitted_links"):
-		conditions = []
-		
-		# when everything is not permitted
-		for df in links.get("not_permitted_links"):
-			# like ifnull(customer, '')='' and ifnull(supplier, '')=''
-			conditions.append("ifnull(`tab{doctype}`.`{fieldname}`, '')=''".format(doctype=doctype, fieldname=df.fieldname))
-			
-		return "( " + " and ".join(conditions) + " )"
-
-	else:
-		conditions = []
-
-		for df in links.get("permitted_links"):
-			# like ifnull(customer, '')!='' or ifnull(supplier, '')!=''
-			conditions.append("ifnull(`tab{doctype}`.`{fieldname}`, '')!=''".format(doctype=doctype, fieldname=df.fieldname))			
-
-		return "( " + " or ".join(conditions) + " )"
-
-def get_permitted_and_not_permitted_links(doctype):
-	permitted_links = []
-	not_permitted_links = []
-
-	meta = frappe.get_meta(doctype)
-
-	for df in meta.get_link_fields():
-		if df.options not in ("Customer", "Supplier", "Company", "Sales Partner"):
-			continue
-
-		if frappe.has_permission(df.options):
-			permitted_links.append(df)
-		else:
-			not_permitted_links.append(df)
-
-	return {
-		"permitted_links": permitted_links,
-		"not_permitted_links": not_permitted_links
-	}
diff --git a/erpnext/utilities/doctype/address/README.md b/erpnext/utilities/doctype/address/README.md
deleted file mode 100644
index a4efda6..0000000
--- a/erpnext/utilities/doctype/address/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Address belonging to a Customer or Supplier.
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address/__init__.py b/erpnext/utilities/doctype/address/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/utilities/doctype/address/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/address/address.js b/erpnext/utilities/doctype/address/address.js
deleted file mode 100644
index 1e874c3..0000000
--- a/erpnext/utilities/doctype/address/address.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-{% include 'erpnext/controllers/js/contact_address_common.js' %};
-
-frappe.ui.form.on("Address", "validate", function(frm) {
-	// clear linked customer / supplier / sales partner on saving...
-	$.each(["Customer", "Supplier", "Sales Partner", "Lead"], function(i, doctype) {
-		var name = frm.doc[doctype.toLowerCase().replace(/ /g, "_")];
-		if(name && locals[doctype] && locals[doctype][name])
-			frappe.model.remove_from_locals(doctype, name);
-	});
-});
diff --git a/erpnext/utilities/doctype/address/address.json b/erpnext/utilities/doctype/address/address.json
deleted file mode 100644
index 8168b69..0000000
--- a/erpnext/utilities/doctype/address/address.json
+++ /dev/null
@@ -1,851 +0,0 @@
-{
- "allow_copy": 0, 
- "allow_import": 1, 
- "allow_rename": 1, 
- "beta": 0, 
- "creation": "2013-01-10 16:34:32", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Setup", 
- "editable_grid": 0, 
- "fields": [
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "address_details", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "fa fa-map-marker", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "description": "Name of person or organization that this address belongs to.", 
-   "fieldname": "address_title", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Address Title", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "address_type", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Address Type", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "address_line1", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Address Line 1", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "address_line2", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Address Line 2", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "city", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "City/Town", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "county", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "County", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "state", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "State", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "country", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Country", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Country", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "pincode", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Postal Code", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break0", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0, 
-   "width": "50%"
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "email_id", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Email Id", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "phone", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Phone", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "fax", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Fax", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "0", 
-   "description": "", 
-   "fieldname": "is_primary_address", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Preferred Billing Address", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "0", 
-   "description": "", 
-   "fieldname": "is_shipping_address", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Preferred Shipping Address", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "linked_with", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Reference", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "fa fa-pushpin", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "0", 
-   "fieldname": "is_your_company_address", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Is Your Company Address", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:doc.is_your_company_address", 
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Company", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Company", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:!doc.is_your_company_address", 
-   "fieldname": "customer", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Customer", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Customer", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:!doc.is_your_company_address", 
-   "fieldname": "customer_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Customer Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:!doc.is_your_company_address", 
-   "fieldname": "supplier", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Supplier", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Supplier", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:!doc.is_your_company_address", 
-   "fieldname": "supplier_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Supplier Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval: !doc.is_your_company_address", 
-   "fieldname": "sales_partner", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Sales Partner", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Sales Partner", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:!doc.supplier && !doc.sales_partner && !doc.is_your_company_address", 
-   "fieldname": "lead", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Lead", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Lead", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "eval:!doc.supplier && !doc.sales_partner && !doc.is_your_company_address", 
-   "fieldname": "lead_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Lead Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "icon": "fa fa-map-marker", 
- "idx": 5, 
- "image_view": 0, 
- "in_create": 0, 
- "in_dialog": 0, 
- "is_submittable": 0, 
- "issingle": 0, 
- "istable": 0, 
- "max_attachments": 0, 
- "modified": "2016-11-07 05:47:06.911933", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Address", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Maintenance User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Accounts User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }
- ], 
- "quick_entry": 0, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "search_fields": "customer, supplier, sales_partner, country, state", 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "track_seen": 0
-}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address/address.py b/erpnext/utilities/doctype/address/address.py
deleted file mode 100644
index 2952531..0000000
--- a/erpnext/utilities/doctype/address/address.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe import throw, _
-from frappe.utils import cstr
-
-from frappe.model.document import Document
-from jinja2 import TemplateSyntaxError
-from frappe.utils.user import is_website_user
-from frappe.model.naming import make_autoname
-
-class Address(Document):
-	def __setup__(self):
-		self.flags.linked = False
-
-	def autoname(self):
-		if not self.address_title:
-			self.address_title = self.customer \
-				or self.supplier or self.sales_partner or self.lead
-
-		if self.address_title:
-			self.name = (cstr(self.address_title).strip() + "-" + cstr(self.address_type).strip())
-			if frappe.db.exists("Address", self.name):
-				self.name = make_autoname(cstr(self.address_title).strip() + "-" + 
-					cstr(self.address_type).strip() + "-.#")
-		else:
-			throw(_("Address Title is mandatory."))
-
-	def validate(self):
-		self.link_fields = ("customer", "supplier", "sales_partner", "lead")
-		self.link_address()
-		self.validate_primary_address()
-		self.validate_shipping_address()
-		self.validate_reference()
-
-	def validate_primary_address(self):
-		"""Validate that there can only be one primary address for particular customer, supplier"""
-		if self.is_primary_address == 1:
-			self._unset_other("is_primary_address")
-
-		elif self.is_shipping_address != 1:
-			for fieldname in self.link_fields:
-				if self.get(fieldname):
-					if not frappe.db.sql("""select name from `tabAddress` where is_primary_address=1
-						and `%s`=%s and name!=%s""" % (frappe.db.escape(fieldname), "%s", "%s"),
-						(self.get(fieldname), self.name)):
-							self.is_primary_address = 1
-					break
-
-	def link_address(self):
-		"""Link address based on owner"""
-		if not self.flags.linked:
-			self.check_if_linked()
-
-		if not self.flags.linked and not self.is_your_company_address:
-			contact = frappe.db.get_value("Contact", {"email_id": self.owner},
-				("name", "customer", "supplier"), as_dict = True)
-			if contact:
-				self.customer = contact.customer
-				self.supplier = contact.supplier
-
-			self.lead = frappe.db.get_value("Lead", {"email_id": self.owner})
-
-	def check_if_linked(self):
-		for fieldname in self.link_fields:
-			if self.get(fieldname):
-				self.flags.linked = True
-				break
-
-	def validate_shipping_address(self):
-		"""Validate that there can only be one shipping address for particular customer, supplier"""
-		if self.is_shipping_address == 1:
-			self._unset_other("is_shipping_address")
-			
-	def validate_reference(self):
-		if self.is_your_company_address:
-			if not self.company:
-				frappe.throw(_("Company is mandatory, as it is your company address"))
-			if self.customer or self.supplier or self.sales_partner or self.lead:
-				frappe.throw(_("Remove reference of customer, supplier, sales partner and lead, as it is your company address"))
-
-	def _unset_other(self, is_address_type):
-		for fieldname in ["customer", "supplier", "sales_partner", "lead"]:
-			if self.get(fieldname):
-				frappe.db.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" %
-					(is_address_type, fieldname, "%s", "%s"), (self.get(fieldname), self.name))
-				break
-
-	def get_display(self):
-		return get_address_display(self.as_dict())
-
-@frappe.whitelist()
-def get_address_display(address_dict):
-	if not address_dict:
-		return
-		
-	if not isinstance(address_dict, dict):
-		address_dict = frappe.db.get_value("Address", address_dict, "*", as_dict=True) or {}
-
-	name, template = get_address_templates(address_dict)
-	
-	try:
-		return frappe.render_template(template, address_dict)
-	except TemplateSyntaxError:
-		frappe.throw(_("There is an error in your Address Template {0}").format(name))
-
-
-def get_territory_from_address(address):
-	"""Tries to match city, state and country of address to existing territory"""
-	if not address:
-		return
-
-	if isinstance(address, basestring):
-		address = frappe.get_doc("Address", address)
-
-	territory = None
-	for fieldname in ("city", "state", "country"):
-		territory = frappe.db.get_value("Territory", address.get(fieldname))
-		if territory:
-			break
-
-	return territory
-
-def get_list_context(context=None):
-	from erpnext.shopping_cart.cart import get_address_docs
-	return {
-		"title": _("Addresses"),
-		"get_list": get_address_list,
-		"row_template": "templates/includes/address_row.html",
-		'no_breadcrumbs': True,
-	}
-	
-def get_address_list(doctype, txt, filters, limit_start, limit_page_length=20):
-	from frappe.www.list import get_list
-	user = frappe.session.user
-	ignore_permissions = False
-	if is_website_user():
-		if not filters: filters = []
-		filters.append(("Address", "owner", "=", user))
-		ignore_permissions = True
-
-	return get_list(doctype, txt, filters, limit_start, limit_page_length, ignore_permissions=ignore_permissions)
-	
-def has_website_permission(doc, ptype, user, verbose=False):
-	"""Returns true if customer or lead matches with user"""
-	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user}, "customer")
-	if customer:
-		return doc.customer == customer
-	else:
-		lead = frappe.db.get_value("Lead", {"email_id": frappe.session.user})
-		if lead:
-			return doc.lead == lead
-
-	return False
-
-def get_address_templates(address):
-	result = frappe.db.get_value("Address Template", \
-		{"country": address.get("country")}, ["name", "template"])
-		
-	if not result:
-		result = frappe.db.get_value("Address Template", \
-			{"is_default": 1}, ["name", "template"])
-
-	if not result:
-		frappe.throw(_("No default Address Template found. Please create a new one from Setup > Printing and Branding > Address Template."))
-	else:
-		return result
-
-@frappe.whitelist()
-def get_shipping_address(company):
-	filters = {"company": company, "is_your_company_address":1}
-	fieldname = ["name", "address_line1", "address_line2", "city", "state", "country"]
-
-	address_as_dict = frappe.db.get_value("Address", filters=filters, fieldname=fieldname, as_dict=True)
-
-	if address_as_dict:
-		name, address_template = get_address_templates(address_as_dict)
-		return address_as_dict.get("name"), frappe.render_template(address_template, address_as_dict)
diff --git a/erpnext/utilities/doctype/address/test_address.py b/erpnext/utilities/doctype/address/test_address.py
deleted file mode 100644
index 36f2535..0000000
--- a/erpnext/utilities/doctype/address/test_address.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-
-import frappe
-test_records = frappe.get_test_records('Address')
-
-import unittest
-import frappe
-
-from erpnext.utilities.doctype.address.address import get_address_display
-
-class TestAddress(unittest.TestCase):
-	def test_template_works(self):
-		address = frappe.get_list("Address")[0].name
-		display = get_address_display(frappe.get_doc("Address", address).as_dict())
-		self.assertTrue(display)
-
-
-test_dependencies = ["Address Template"]
diff --git a/erpnext/utilities/doctype/address/test_records.json b/erpnext/utilities/doctype/address/test_records.json
deleted file mode 100644
index a7bde9a..0000000
--- a/erpnext/utilities/doctype/address/test_records.json
+++ /dev/null
@@ -1,15 +0,0 @@
-[
- {
-  "address_line1": "_Test Address Line 1", 
-  "address_title": "_Test Address", 
-  "address_type": "Office", 
-  "city": "_Test City",
-  "state": "Test State",
-  "country": "India", 
-  "customer": "_Test Customer", 
-  "customer_name": "_Test Customer", 
-  "doctype": "Address", 
-  "is_primary_address": 1, 
-  "phone": "+91 0000000000"
- }
-]
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address_template/__init__.py b/erpnext/utilities/doctype/address_template/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/utilities/doctype/address_template/__init__.py
+++ /dev/null
diff --git a/erpnext/utilities/doctype/address_template/address_template.js b/erpnext/utilities/doctype/address_template/address_template.js
deleted file mode 100644
index c055bca..0000000
--- a/erpnext/utilities/doctype/address_template/address_template.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('Address Template', {
-	refresh: function(frm) {
-		if(frm.is_new() && !frm.doc.template) {
-			// set default template via js so that it is translated
-			frappe.call({
-				method: 'erpnext.utilities.doctype.address_template.address_template.get_default_address_template',
-				callback: function(r) {
-					frm.set_value('template', r.message);
-				}
-			});
-		}
-	}
-});
diff --git a/erpnext/utilities/doctype/address_template/address_template.json b/erpnext/utilities/doctype/address_template/address_template.json
deleted file mode 100644
index 6ff93d9..0000000
--- a/erpnext/utilities/doctype/address_template/address_template.json
+++ /dev/null
@@ -1,147 +0,0 @@
-{
- "allow_copy": 0, 
- "allow_import": 0, 
- "allow_rename": 1, 
- "autoname": "field:country", 
- "beta": 0, 
- "creation": "2014-06-05 02:22:36.029850", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Setup", 
- "editable_grid": 0, 
- "engine": "InnoDB", 
- "fields": [
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "country", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Country", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Country", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "description": "This format is used if country specific format is not found", 
-   "fieldname": "is_default", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Is Default", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "", 
-   "description": "<h4>Default Template</h4>\n<p>Uses <a href=\"http://jinja.pocoo.org/docs/templates/\">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p>\n<pre><code>{{ address_line1 }}&lt;br&gt;\n{% if address_line2 %}{{ address_line2 }}&lt;br&gt;{% endif -%}\n{{ city }}&lt;br&gt;\n{% if state %}{{ state }}&lt;br&gt;{% endif -%}\n{% if pincode %} PIN:  {{ pincode }}&lt;br&gt;{% endif -%}\n{{ country }}&lt;br&gt;\n{% if phone %}Phone: {{ phone }}&lt;br&gt;{% endif -%}\n{% if fax %}Fax: {{ fax }}&lt;br&gt;{% endif -%}\n{% if email_id %}Email: {{ email_id }}&lt;br&gt;{% endif -%}\n</code></pre>", 
-   "fieldname": "template", 
-   "fieldtype": "Code", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Template", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "icon": "fa fa-map-marker", 
- "idx": 0, 
- "image_view": 0, 
- "in_create": 0, 
- "in_dialog": 0, 
- "is_submittable": 0, 
- "issingle": 0, 
- "istable": 0, 
- "max_attachments": 0, 
- "modified": "2016-11-07 05:47:11.633848", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Address Template", 
- "name_case": "", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 0, 
-   "export": 1, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 0, 
-   "read": 1, 
-   "report": 1, 
-   "role": "System Manager", 
-   "set_user_permissions": 1, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }
- ], 
- "quick_entry": 1, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "track_seen": 0
-}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address_template/address_template.py b/erpnext/utilities/doctype/address_template/address_template.py
deleted file mode 100644
index 64aaa45..0000000
--- a/erpnext/utilities/doctype/address_template/address_template.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.model.document import Document
-from frappe.utils.jinja import validate_template
-from frappe import _
-
-class AddressTemplate(Document):
-	def validate(self):
-		if not self.template:
-			self.template = get_default_address_template()
-
-		self.defaults = frappe.db.get_values("Address Template", {"is_default":1, "name":("!=", self.name)})
-		if not self.is_default:
-			if not self.defaults:
-				self.is_default = 1
-				frappe.msgprint(_("Setting this Address Template as default as there is no other default"))
-
-		validate_template(self.template)
-
-	def on_update(self):
-		if self.is_default and self.defaults:
-			for d in self.defaults:
-				frappe.db.set_value("Address Template", d[0], "is_default", 0)
-
-	def on_trash(self):
-		if self.is_default:
-			frappe.throw(_("Default Address Template cannot be deleted"))
-
-@frappe.whitelist()
-def get_default_address_template():
-	'''Get default address template (translated)'''
-	return '''{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}\
-{{ city }}<br>
-{% if state %}{{ state }}<br>{% endif -%}
-{% if pincode %}{{ pincode }}<br>{% endif -%}
-{{ country }}<br>
-{% if phone %}'''+_('Phone')+''': {{ phone }}<br>{% endif -%}
-{% if fax %}'''+_('Fax')+''': {{ fax }}<br>{% endif -%}
-{% if email_id %}'''+_('Email')+''': {{ email_id }}<br>{% endif -%}'''
diff --git a/erpnext/utilities/doctype/address_template/test_address_template.py b/erpnext/utilities/doctype/address_template/test_address_template.py
deleted file mode 100644
index 9490005..0000000
--- a/erpnext/utilities/doctype/address_template/test_address_template.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: See license.txt
-
-from __future__ import unicode_literals
-
-import frappe
-test_records = frappe.get_test_records('Address Template')
-
-import unittest
-import frappe
-
-class TestAddressTemplate(unittest.TestCase):
-	def test_default_is_unset(self):
-		a = frappe.get_doc("Address Template", "India")
-		a.is_default = 1
-		a.save()
-
-		b = frappe.get_doc("Address Template", "Brazil")
-		b.is_default = 1
-		b.save()
-
-		self.assertEqual(frappe.db.get_value("Address Template", "India", "is_default"), 0)
-
-	def tearDown(self):
-		a = frappe.get_doc("Address Template", "India")
-		a.is_default = 1
-		a.save()
diff --git a/erpnext/utilities/doctype/address_template/test_records.json b/erpnext/utilities/doctype/address_template/test_records.json
deleted file mode 100644
index 412c9e7..0000000
--- a/erpnext/utilities/doctype/address_template/test_records.json
+++ /dev/null
@@ -1,13 +0,0 @@
-[
- {
-  "country": "India",
-  "is_default": 1,
-  "template": "{{ address_title }}<br>\n{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif %}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif %}\n{% if pincode %} PIN / ZIP:  {{ pincode }}<br>{% endif %}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif %}\n{% if fax %}Fax: {{ fax }}<br>{% endif %}\n{% if email_id %}Email: {{ email_id }}<br>{% endif %}\n"
- },
- {
-  "country": "Brazil",
-  "is_default": 0,
-  "template": "{{ address_title }}<br>\n{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif %}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif %}\n{% if pincode %} PIN / ZIP:  {{ pincode }}<br>{% endif %}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif %}\n{% if fax %}Fax: {{ fax }}<br>{% endif %}\n{% if email_id %}Email: {{ email_id }}<br>{% endif %}\n"
- }
-]
-
diff --git a/erpnext/utilities/doctype/contact/README.md b/erpnext/utilities/doctype/contact/README.md
deleted file mode 100644
index 484522c..0000000
--- a/erpnext/utilities/doctype/contact/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Contact representing a Customer or Supplier.
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/contact/__init__.py b/erpnext/utilities/doctype/contact/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/utilities/doctype/contact/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/contact/contact.js b/erpnext/utilities/doctype/contact/contact.js
deleted file mode 100644
index 07d9d6f..0000000
--- a/erpnext/utilities/doctype/contact/contact.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-{% include 'erpnext/controllers/js/contact_address_common.js' %};
-
-cur_frm.email_field = "email_id";
-frappe.ui.form.on("Contact", {
-	refresh: function(frm) {
-		if(!frm.doc.user && !frm.is_new() && frm.perm[0].write) {
-			frm.add_custom_button(__("Invite as User"), function() {
-				frappe.call({
-					method: "erpnext.utilities.doctype.contact.contact.invite_user",
-					args: {
-						contact: frm.doc.name
-					},
-					callback: function(r) {
-						frm.set_value("user", r.message);
-					}
-				});
-			});
-		}
-	},
-	validate: function(frm) {
-		// clear linked customer / supplier / sales partner on saving...
-		$.each(["Customer", "Supplier", "Sales Partner"], function(i, doctype) {
-			var name = frm.doc[doctype.toLowerCase().replace(/ /g, "_")];
-			if(name && locals[doctype] && locals[doctype][name])
-				frappe.model.remove_from_locals(doctype, name);
-		});
-	}
-});
diff --git a/erpnext/utilities/doctype/contact/contact.json b/erpnext/utilities/doctype/contact/contact.json
deleted file mode 100644
index a183779..0000000
--- a/erpnext/utilities/doctype/contact/contact.json
+++ /dev/null
@@ -1,921 +0,0 @@
-{
- "allow_copy": 0, 
- "allow_import": 1, 
- "allow_rename": 1, 
- "beta": 0, 
- "creation": "2013-01-10 16:34:32", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Setup", 
- "editable_grid": 0, 
- "engine": "InnoDB", 
- "fields": [
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "contact_section", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "fa fa-user", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "first_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "First Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "first_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "last_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Last Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "last_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "email_id", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Email Id", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "email_id", 
-   "oldfieldtype": "Data", 
-   "options": "Email", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "cb00", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "Passive", 
-   "fieldname": "status", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Status", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Passive\nOpen\nReplied", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "phone", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Phone", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "contact_no", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "image", 
-   "fieldtype": "Attach Image", 
-   "hidden": 1, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Image", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "contact_details", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Reference", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "fa fa-pushpin", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "user", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "User Id", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "User", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
-   "fieldname": "customer", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Customer", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "customer", 
-   "oldfieldtype": "Link", 
-   "options": "Customer", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
-   "fieldname": "customer_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Customer Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break1", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0, 
-   "width": "50%"
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
-   "fieldname": "supplier", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Supplier", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Supplier", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
-   "fieldname": "supplier_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Supplier Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
-   "fieldname": "sales_partner", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Sales Partner", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Sales Partner", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "0", 
-   "depends_on": "eval:(doc.customer || doc.supplier || doc.sales_partner)", 
-   "fieldname": "is_primary_contact", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Is Primary Contact", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "is_primary_contact", 
-   "oldfieldtype": "Select", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "more_info", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "More Information", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "fa fa-file-text", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "mobile_no", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Mobile No", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "mobile_no", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "description": "Enter department to which this Contact belongs", 
-   "fieldname": "department", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Department", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "description": "Enter designation of this Contact", 
-   "fieldname": "designation", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Designation", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "unsubscribed", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Unsubscribed", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "icon": "fa fa-user", 
- "idx": 1, 
- "image_field": "image", 
- "image_view": 0, 
- "in_create": 0, 
- "in_dialog": 0, 
- "is_submittable": 0, 
- "issingle": 0, 
- "istable": 0, 
- "max_attachments": 0, 
- "modified": "2016-11-07 05:30:56.576752", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Contact", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "System Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales Master Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase Master Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Maintenance Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Accounts Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Maintenance User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Accounts User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 0, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "match": "", 
-   "permlevel": 1, 
-   "print": 0, 
-   "read": 1, 
-   "report": 1, 
-   "role": "All", 
-   "set_user_permissions": 0, 
-   "share": 0, 
-   "submit": 0, 
-   "write": 0
-  }
- ], 
- "quick_entry": 0, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "sort_order": "ASC", 
- "track_seen": 0
-}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/contact/contact.py b/erpnext/utilities/doctype/contact/contact.py
deleted file mode 100644
index dd6aa10..0000000
--- a/erpnext/utilities/doctype/contact/contact.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.utils import cstr, has_gravatar
-from frappe import _
-
-from erpnext.controllers.status_updater import StatusUpdater
-
-class Contact(StatusUpdater):
-	def autoname(self):
-		# concat first and last name
-		self.name = " ".join(filter(None,
-			[cstr(self.get(f)).strip() for f in ["first_name", "last_name"]]))
-
-		# concat party name if reqd
-		for fieldname in ("customer", "supplier", "sales_partner"):
-			if self.get(fieldname):
-				self.name = self.name + "-" + cstr(self.get(fieldname)).strip()
-				break
-
-	def validate(self):
-		self.set_status()
-		self.validate_primary_contact()
-		self.set_user()
-		if self.email_id:
-			self.image = has_gravatar(self.email_id)
-
-	def set_user(self):
-		if not self.user and self.email_id:
-			self.user = frappe.db.get_value("User", {"email": self.email_id})
-
-	def validate_primary_contact(self):
-		if self.is_primary_contact == 1:
-			if self.customer:
-				frappe.db.sql("update tabContact set is_primary_contact=0 where customer = %s",
-					(self.customer))
-			elif self.supplier:
-				frappe.db.sql("update tabContact set is_primary_contact=0 where supplier = %s",
-					 (self.supplier))
-			elif self.sales_partner:
-				frappe.db.sql("""update tabContact set is_primary_contact=0
-					where sales_partner = %s""", (self.sales_partner))
-		else:
-			if self.customer:
-				if not frappe.db.sql("select name from tabContact \
-						where is_primary_contact=1 and customer = %s", (self.customer)):
-					self.is_primary_contact = 1
-			elif self.supplier:
-				if not frappe.db.sql("select name from tabContact \
-						where is_primary_contact=1 and supplier = %s", (self.supplier)):
-					self.is_primary_contact = 1
-			elif self.sales_partner:
-				if not frappe.db.sql("select name from tabContact \
-						where is_primary_contact=1 and sales_partner = %s",
-						self.sales_partner):
-					self.is_primary_contact = 1
-
-	def on_trash(self):
-		frappe.db.sql("""update `tabIssue` set contact='' where contact=%s""",
-			self.name)
-
-@frappe.whitelist()
-def invite_user(contact):
-	contact = frappe.get_doc("Contact", contact)
-
-	if not contact.email_id:
-		frappe.throw(_("Please set Email ID"))
-
-	if contact.has_permission("write"):
-		user = frappe.get_doc({
-			"doctype": "User",
-			"first_name": contact.first_name,
-			"last_name": contact.last_name,
-			"email": contact.email_id,
-			"user_type": "Website User",
-			"send_welcome_email": 1
-		}).insert(ignore_permissions = True)
-
-		return user.name
-
-@frappe.whitelist()
-def get_contact_details(contact):
-	contact = frappe.get_doc("Contact", contact)
-	out = {
-		"contact_person": contact.get("name"),
-		"contact_display": " ".join(filter(None,
-			[contact.get("first_name"), contact.get("last_name")])),
-		"contact_email": contact.get("email_id"),
-		"contact_mobile": contact.get("mobile_no"),
-		"contact_phone": contact.get("phone"),
-		"contact_designation": contact.get("designation"),
-		"contact_department": contact.get("department")
-	}
-	return out
-
-def update_contact(doc, method):
-	'''Update contact when user is updated, if contact is found. Called via hooks'''
-	contact_name = frappe.db.get_value("Contact", {"email_id": doc.name})
-	if contact_name:
-		contact = frappe.get_doc("Contact", contact_name)
-		for key in ("first_name", "last_name", "phone"):
-			if doc.get(key):
-				contact.set(key, doc.get(key))
-		contact.flags.ignore_mandatory = True
-		contact.save(ignore_permissions=True)
diff --git a/erpnext/utilities/doctype/contact/test_contact.py b/erpnext/utilities/doctype/contact/test_contact.py
deleted file mode 100644
index 964c8d7..0000000
--- a/erpnext/utilities/doctype/contact/test_contact.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-from __future__ import unicode_literals
-
-
-import frappe
-test_records = frappe.get_test_records('Contact')
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/contact/test_records.json b/erpnext/utilities/doctype/contact/test_records.json
deleted file mode 100644
index 133a7b6..0000000
--- a/erpnext/utilities/doctype/contact/test_records.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
-  "customer": "_Test Customer", 
-  "customer_name": "_Test Customer", 
-  "doctype": "Contact", 
-  "email_id": "test_contact_customer@example.com", 
-  "first_name": "_Test Contact For _Test Customer", 
-  "is_primary_contact": 1, 
-  "phone": "+91 0000000000", 
-  "status": "Open"
- }, 
- {
-  "doctype": "Contact", 
-  "email_id": "test_contact_supplier@example.com", 
-  "first_name": "_Test Contact For _Test Supplier", 
-  "is_primary_contact": 1, 
-  "phone": "+91 0000000000", 
-  "status": "Open", 
-  "supplier": "_Test Supplier", 
-  "supplier_name": "_Test Supplier"
- }
-]
\ No newline at end of file
diff --git a/erpnext/utilities/web_form/addresses/addresses.json b/erpnext/utilities/web_form/addresses/addresses.json
index 6d3fefc..1d3acc5 100644
--- a/erpnext/utilities/web_form/addresses/addresses.json
+++ b/erpnext/utilities/web_form/addresses/addresses.json
@@ -122,7 +122,7 @@
    "fieldname": "email_id", 
    "fieldtype": "Data", 
    "hidden": 0, 
-   "label": "Email Id", 
+   "label": "Email Address", 
    "max_length": 0, 
    "max_value": 0, 
    "read_only": 0,