Merge branch 'develop' into rcm_develop
diff --git a/erpnext/accounts/dashboard_fixtures.py b/erpnext/accounts/dashboard_fixtures.py
index 421c86d..b2abffc 100644
--- a/erpnext/accounts/dashboard_fixtures.py
+++ b/erpnext/accounts/dashboard_fixtures.py
@@ -5,7 +5,22 @@
 import json
 from frappe.utils import nowdate, add_months, get_date_str
 from frappe import _
-from erpnext.accounts.utils import get_fiscal_year, get_account_name
+from erpnext.accounts.utils import get_fiscal_year, get_account_name, FiscalYearError
+
+def _get_fiscal_year(date=None):
+	try:
+		fiscal_year = get_fiscal_year(date=nowdate(), as_dict=True)
+		return fiscal_year
+
+	except FiscalYearError:
+		#if no fiscal year for current date then get default fiscal year
+		try:
+			fiscal_year = get_fiscal_year(as_dict=True)
+			return fiscal_year
+
+		except FiscalYearError:
+			#if still no fiscal year found then no accounting data created, return
+			return None
 
 def get_company_for_dashboards():
 	company = frappe.defaults.get_defaults().company
@@ -18,10 +33,16 @@
 	return None
 
 def get_data():
+
+	fiscal_year = _get_fiscal_year(nowdate())
+
+	if not fiscal_year:
+		return frappe._dict()
+
 	return frappe._dict({
 		"dashboards": get_dashboards(),
-		"charts": get_charts(),
-		"number_cards": get_number_cards()
+		"charts": get_charts(fiscal_year),
+		"number_cards": get_number_cards(fiscal_year)
 	})
 
 def get_dashboards():
@@ -46,10 +67,9 @@
 		]
 	}]
 
-def get_charts():
+def get_charts(fiscal_year):
 	company = frappe.get_doc("Company", get_company_for_dashboards())
 	bank_account = company.default_bank_account or get_account_name("Bank", company=company.name)
-	fiscal_year = get_fiscal_year(date=nowdate())
 	default_cost_center = company.cost_center
 
 	return [
@@ -61,8 +81,8 @@
 			"filters_json": json.dumps({
 				"company": company.name,
 				"filter_based_on": "Fiscal Year",
-				"from_fiscal_year": fiscal_year[0],
-				"to_fiscal_year": fiscal_year[0],
+				"from_fiscal_year": fiscal_year.get('name'),
+				"to_fiscal_year": fiscal_year.get('name'),
 				"periodicity": "Monthly",
 				"include_default_book_entries": 1
 			}),
@@ -158,8 +178,8 @@
 			"report_name": "Budget Variance Report",
 			"filters_json": json.dumps({
 				"company": company.name,
-				"from_fiscal_year": fiscal_year[0],
-				"to_fiscal_year": fiscal_year[0],
+				"from_fiscal_year": fiscal_year.get('name'),
+				"to_fiscal_year": fiscal_year.get('name'),
 				"period": "Monthly",
 				"budget_against": "Cost Center"
 			}),
@@ -190,10 +210,10 @@
 		},
 	]
 
-def get_number_cards():
-	fiscal_year = get_fiscal_year(date=nowdate())
-	year_start_date = get_date_str(fiscal_year[1])
-	year_end_date = get_date_str(fiscal_year[2])
+def get_number_cards(fiscal_year):
+
+	year_start_date = get_date_str(fiscal_year.get("year_start_date"))
+	year_end_date = get_date_str(fiscal_year.get("year_end_date"))
 	return [
 		{
 			"doctype": "Number Card",
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 894ec5b..8834385 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -72,7 +72,11 @@
 		if doctype == "Budget":
 			add_dimension_to_budget_doctype(df, doc)
 		else:
-			create_custom_field(doctype, df)
+			meta = frappe.get_meta(doctype, cached=False)
+			fieldnames = [d.fieldname for d in meta.get("fields")]
+
+			if df['fieldname'] not in fieldnames:
+				create_custom_field(doctype, df)
 
 		count += 1
 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 98ba5c7..829c34d 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -42,6 +42,8 @@
   "col_break_address",
   "shipping_address",
   "shipping_address_display",
+  "billing_address",
+  "billing_address_display",
   "currency_and_price_list",
   "currency",
   "conversion_rate",
@@ -168,7 +170,9 @@
    "hidden": 1,
    "label": "Title",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "naming_series",
@@ -180,7 +184,9 @@
    "options": "ACC-PINV-.YYYY.-",
    "print_hide": 1,
    "reqd": 1,
-   "set_only_once": 1
+   "set_only_once": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplier",
@@ -192,7 +198,9 @@
    "options": "Supplier",
    "print_hide": 1,
    "reqd": 1,
-   "search_index": 1
+   "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "bold": 1,
@@ -204,7 +212,9 @@
    "label": "Supplier Name",
    "oldfieldname": "supplier_name",
    "oldfieldtype": "Data",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fetch_from": "supplier.tax_id",
@@ -212,21 +222,27 @@
    "fieldtype": "Read Only",
    "label": "Tax Id",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "due_date",
    "fieldtype": "Date",
    "label": "Due Date",
    "oldfieldname": "due_date",
-   "oldfieldtype": "Date"
+   "oldfieldtype": "Date",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "is_paid",
    "fieldtype": "Check",
    "label": "Is Paid",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
@@ -234,19 +250,25 @@
    "fieldtype": "Check",
    "label": "Is Return (Debit Note)",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "apply_tds",
    "fieldtype": "Check",
    "label": "Apply Tax Withholding Amount",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break1",
    "fieldtype": "Column Break",
    "oldfieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -256,13 +278,17 @@
    "label": "Company",
    "options": "Company",
    "print_hide": 1,
-   "remember_last_selected_value": 1
+   "remember_last_selected_value": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "cost_center",
    "fieldtype": "Link",
    "label": "Cost Center",
-   "options": "Cost Center"
+   "options": "Cost Center",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "Today",
@@ -274,7 +300,9 @@
    "oldfieldtype": "Date",
    "print_hide": 1,
    "reqd": 1,
-   "search_index": 1
+   "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "posting_time",
@@ -283,6 +311,8 @@
    "no_copy": 1,
    "print_hide": 1,
    "print_width": "100px",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "100px"
   },
   {
@@ -291,7 +321,9 @@
    "fieldname": "set_posting_time",
    "fieldtype": "Check",
    "label": "Edit Posting Date and Time",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "amended_from",
@@ -303,44 +335,58 @@
    "oldfieldtype": "Link",
    "options": "Purchase Invoice",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "collapsible_depends_on": "eval:doc.on_hold",
    "fieldname": "sb_14",
    "fieldtype": "Section Break",
-   "label": "Hold Invoice"
+   "label": "Hold Invoice",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "on_hold",
    "fieldtype": "Check",
-   "label": "Hold Invoice"
+   "label": "Hold Invoice",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:doc.on_hold",
    "description": "Once set, this invoice will be on hold till the set date",
    "fieldname": "release_date",
    "fieldtype": "Date",
-   "label": "Release Date"
+   "label": "Release Date",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "cb_17",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:doc.on_hold",
    "fieldname": "hold_comment",
    "fieldtype": "Small Text",
-   "label": "Reason For Putting On Hold"
+   "label": "Reason For Putting On Hold",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "collapsible_depends_on": "bill_no",
    "fieldname": "supplier_invoice_details",
    "fieldtype": "Section Break",
-   "label": "Supplier Invoice Details"
+   "label": "Supplier Invoice Details",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "bill_no",
@@ -348,11 +394,15 @@
    "label": "Supplier Invoice No",
    "oldfieldname": "bill_no",
    "oldfieldtype": "Data",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_15",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "bill_date",
@@ -360,13 +410,17 @@
    "label": "Supplier Invoice Date",
    "oldfieldname": "bill_date",
    "oldfieldtype": "Date",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "return_against",
    "fieldname": "returns",
    "fieldtype": "Section Break",
-   "label": "Returns"
+   "label": "Returns",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "return_against",
@@ -376,26 +430,34 @@
    "no_copy": 1,
    "options": "Purchase Invoice",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "section_addresses",
    "fieldtype": "Section Break",
-   "label": "Address and Contact"
+   "label": "Address and Contact",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplier_address",
    "fieldtype": "Link",
    "label": "Select Supplier Address",
    "options": "Address",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "address_display",
    "fieldtype": "Small Text",
    "label": "Address",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_person",
@@ -403,51 +465,67 @@
    "in_global_search": 1,
    "label": "Contact Person",
    "options": "Contact",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_display",
    "fieldtype": "Small Text",
    "label": "Contact",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_email",
    "fieldtype": "Small Text",
    "label": "Contact Email",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "col_break_address",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_address",
    "fieldtype": "Link",
    "label": "Select Shipping Address",
    "options": "Address",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_address_display",
    "fieldtype": "Small Text",
    "label": "Shipping Address",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "currency_and_price_list",
    "fieldtype": "Section Break",
    "label": "Currency and Price List",
-   "options": "fa fa-tag"
+   "options": "fa fa-tag",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "currency",
@@ -456,7 +534,9 @@
    "oldfieldname": "currency",
    "oldfieldtype": "Select",
    "options": "Currency",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "conversion_rate",
@@ -465,18 +545,24 @@
    "oldfieldname": "conversion_rate",
    "oldfieldtype": "Currency",
    "precision": "9",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break2",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "buying_price_list",
    "fieldtype": "Link",
    "label": "Price List",
    "options": "Price List",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "price_list_currency",
@@ -484,14 +570,18 @@
    "label": "Price List Currency",
    "options": "Currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "plc_conversion_rate",
    "fieldtype": "Float",
    "label": "Price List Exchange Rate",
    "precision": "9",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
@@ -500,11 +590,15 @@
    "label": "Ignore Pricing Rule",
    "no_copy": 1,
    "permlevel": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "sec_warehouse",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "update_stock",
@@ -512,7 +606,9 @@
    "fieldtype": "Link",
    "label": "Set Accepted Warehouse",
    "options": "Warehouse",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "update_stock",
@@ -522,11 +618,15 @@
    "label": "Rejected Warehouse",
    "no_copy": 1,
    "options": "Warehouse",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "col_break_warehouse",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "No",
@@ -534,7 +634,9 @@
    "fieldtype": "Select",
    "label": "Raw Materials Supplied",
    "options": "No\nYes",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:doc.is_subcontracted==\"Yes\"",
@@ -545,25 +647,33 @@
    "options": "Warehouse",
    "print_hide": 1,
    "print_width": "50px",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50px"
   },
   {
    "fieldname": "items_section",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-shopping-cart"
+   "options": "fa fa-shopping-cart",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "update_stock",
    "fieldtype": "Check",
    "label": "Update Stock",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "scan_barcode",
    "fieldtype": "Data",
-   "label": "Scan Barcode"
+   "label": "Scan Barcode",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_bulk_edit": 1,
@@ -573,42 +683,56 @@
    "oldfieldname": "entries",
    "oldfieldtype": "Table",
    "options": "Purchase Invoice Item",
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "pricing_rule_details",
    "fieldtype": "Section Break",
-   "label": "Pricing Rules"
+   "label": "Pricing Rules",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "pricing_rules",
    "fieldtype": "Table",
    "label": "Pricing Rule Detail",
    "options": "Pricing Rule Detail",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible_depends_on": "supplied_items",
    "fieldname": "raw_materials_supplied",
    "fieldtype": "Section Break",
-   "label": "Raw Materials Supplied"
+   "label": "Raw Materials Supplied",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplied_items",
    "fieldtype": "Table",
    "label": "Supplied Items",
    "options": "Purchase Receipt Item Supplied",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "section_break_26",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_qty",
    "fieldtype": "Float",
    "label": "Total Quantity",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_total",
@@ -616,7 +740,9 @@
    "label": "Total (Company Currency)",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_net_total",
@@ -626,18 +752,24 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_28",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total",
    "fieldtype": "Currency",
    "label": "Total",
    "options": "currency",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "net_total",
@@ -647,42 +779,56 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_net_weight",
    "fieldtype": "Float",
    "label": "Total Net Weight",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_section",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-money"
+   "options": "fa fa-money",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tax_category",
    "fieldtype": "Link",
    "label": "Tax Category",
    "options": "Tax Category",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_49",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_rule",
    "fieldtype": "Link",
    "label": "Shipping Rule",
    "options": "Shipping Rule",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "section_break_51",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges",
@@ -691,7 +837,9 @@
    "oldfieldname": "purchase_other_charges",
    "oldfieldtype": "Link",
    "options": "Purchase Taxes and Charges Template",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes",
@@ -699,13 +847,17 @@
    "label": "Purchase Taxes and Charges",
    "oldfieldname": "purchase_tax_details",
    "oldfieldtype": "Table",
-   "options": "Purchase Taxes and Charges"
+   "options": "Purchase Taxes and Charges",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "sec_tax_breakup",
    "fieldtype": "Section Break",
-   "label": "Tax Breakup"
+   "label": "Tax Breakup",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "other_charges_calculation",
@@ -714,13 +866,17 @@
    "no_copy": 1,
    "oldfieldtype": "HTML",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "totals",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-money"
+   "options": "fa fa-money",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_taxes_and_charges_added",
@@ -730,7 +886,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_taxes_and_charges_deducted",
@@ -740,7 +898,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_total_taxes_and_charges",
@@ -750,11 +910,15 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_40",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges_added",
@@ -764,7 +928,9 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges_deducted",
@@ -774,7 +940,9 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_taxes_and_charges",
@@ -782,14 +950,18 @@
    "label": "Total Taxes and Charges",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "collapsible_depends_on": "discount_amount",
    "fieldname": "section_break_44",
    "fieldtype": "Section Break",
-   "label": "Additional Discount"
+   "label": "Additional Discount",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "Grand Total",
@@ -797,7 +969,9 @@
    "fieldtype": "Select",
    "label": "Apply Additional Discount On",
    "options": "\nGrand Total\nNet Total",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_discount_amount",
@@ -805,28 +979,38 @@
    "label": "Additional Discount Amount (Company Currency)",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_46",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "additional_discount_percentage",
    "fieldtype": "Float",
    "label": "Additional Discount Percentage",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "discount_amount",
    "fieldtype": "Currency",
    "label": "Additional Discount Amount",
    "options": "currency",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "section_break_49",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_grand_total",
@@ -836,7 +1020,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_rounding_adjustment",
@@ -845,7 +1031,9 @@
    "no_copy": 1,
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:!doc.disable_rounded_total",
@@ -855,7 +1043,9 @@
    "no_copy": 1,
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_in_words",
@@ -864,13 +1054,17 @@
    "oldfieldname": "in_words",
    "oldfieldtype": "Data",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break8",
    "fieldtype": "Column Break",
    "oldfieldtype": "Column Break",
    "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -881,7 +1075,9 @@
    "oldfieldname": "grand_total_import",
    "oldfieldtype": "Currency",
    "options": "currency",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "rounding_adjustment",
@@ -890,7 +1086,9 @@
    "no_copy": 1,
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:!doc.disable_rounded_total",
@@ -900,7 +1098,9 @@
    "no_copy": 1,
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "in_words",
@@ -909,7 +1109,9 @@
    "oldfieldname": "in_words_import",
    "oldfieldtype": "Data",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_advance",
@@ -920,7 +1122,9 @@
    "oldfieldtype": "Currency",
    "options": "party_account_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "outstanding_amount",
@@ -931,14 +1135,18 @@
    "oldfieldtype": "Currency",
    "options": "party_account_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "depends_on": "grand_total",
    "fieldname": "disable_rounded_total",
    "fieldtype": "Check",
-   "label": "Disable Rounded Total"
+   "label": "Disable Rounded Total",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -946,30 +1154,40 @@
    "depends_on": "eval:doc.is_paid===1||(doc.advances && doc.advances.length>0)",
    "fieldname": "payments_section",
    "fieldtype": "Section Break",
-   "label": "Payments"
+   "label": "Payments",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "mode_of_payment",
    "fieldtype": "Link",
    "label": "Mode of Payment",
    "options": "Mode of Payment",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "cash_bank_account",
    "fieldtype": "Link",
    "label": "Cash/Bank Account",
-   "options": "Account"
+   "options": "Account",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "clearance_date",
    "fieldtype": "Date",
    "hidden": 1,
-   "label": "Clearance Date"
+   "label": "Clearance Date",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "col_br_payments",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "is_paid",
@@ -978,7 +1196,9 @@
    "label": "Paid Amount",
    "no_copy": 1,
    "options": "currency",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_paid_amount",
@@ -987,7 +1207,9 @@
    "no_copy": 1,
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -995,7 +1217,9 @@
    "depends_on": "grand_total",
    "fieldname": "write_off",
    "fieldtype": "Section Break",
-   "label": "Write Off"
+   "label": "Write Off",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "write_off_amount",
@@ -1003,7 +1227,9 @@
    "label": "Write Off Amount",
    "no_copy": 1,
    "options": "currency",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_write_off_amount",
@@ -1012,11 +1238,15 @@
    "no_copy": 1,
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_61",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:flt(doc.write_off_amount)!=0",
@@ -1024,7 +1254,9 @@
    "fieldtype": "Link",
    "label": "Write Off Account",
    "options": "Account",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:flt(doc.write_off_amount)!=0",
@@ -1032,7 +1264,9 @@
    "fieldtype": "Link",
    "label": "Write Off Cost Center",
    "options": "Cost Center",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -1042,13 +1276,17 @@
    "label": "Advance Payments",
    "oldfieldtype": "Section Break",
    "options": "fa fa-money",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "allocate_advances_automatically",
    "fieldtype": "Check",
-   "label": "Set Advances and Allocate (FIFO)"
+   "label": "Set Advances and Allocate (FIFO)",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:!doc.allocate_advances_automatically",
@@ -1056,7 +1294,9 @@
    "fieldtype": "Button",
    "label": "Get Advances Paid",
    "oldfieldtype": "Button",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "advances",
@@ -1066,20 +1306,26 @@
    "oldfieldname": "advance_allocation_details",
    "oldfieldtype": "Table",
    "options": "Purchase Invoice Advance",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "collapsible_depends_on": "eval:(!doc.is_return)",
    "fieldname": "payment_schedule_section",
    "fieldtype": "Section Break",
-   "label": "Payment Terms"
+   "label": "Payment Terms",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "payment_terms_template",
    "fieldtype": "Link",
    "label": "Payment Terms Template",
-   "options": "Payment Terms Template"
+   "options": "Payment Terms Template",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "payment_schedule",
@@ -1087,7 +1333,9 @@
    "label": "Payment Schedule",
    "no_copy": 1,
    "options": "Payment Schedule",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -1095,25 +1343,33 @@
    "fieldname": "terms_section_break",
    "fieldtype": "Section Break",
    "label": "Terms and Conditions",
-   "options": "fa fa-legal"
+   "options": "fa fa-legal",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tc_name",
    "fieldtype": "Link",
    "label": "Terms",
    "options": "Terms and Conditions",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "terms",
    "fieldtype": "Text Editor",
-   "label": "Terms and Conditions1"
+   "label": "Terms and Conditions1",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "printing_settings",
    "fieldtype": "Section Break",
-   "label": "Printing Settings"
+   "label": "Printing Settings",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -1121,7 +1377,9 @@
    "fieldtype": "Link",
    "label": "Letter Head",
    "options": "Letter Head",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -1129,11 +1387,15 @@
    "fieldname": "group_same_items",
    "fieldtype": "Check",
    "label": "Group same items",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_112",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -1145,14 +1407,18 @@
    "oldfieldtype": "Link",
    "options": "Print Heading",
    "print_hide": 1,
-   "report_hide": 1
+   "report_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "language",
    "fieldtype": "Data",
    "label": "Print Language",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -1161,7 +1427,9 @@
    "label": "More Information",
    "oldfieldtype": "Section Break",
    "options": "fa fa-file-text",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "credit_to",
@@ -1172,7 +1440,9 @@
    "options": "Account",
    "print_hide": 1,
    "reqd": 1,
-   "search_index": 1
+   "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "party_account_currency",
@@ -1182,7 +1452,9 @@
    "no_copy": 1,
    "options": "Currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "No",
@@ -1192,7 +1464,9 @@
    "oldfieldname": "is_opening",
    "oldfieldtype": "Select",
    "options": "No\nYes",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "against_expense_account",
@@ -1202,11 +1476,15 @@
    "no_copy": 1,
    "oldfieldname": "against_expense_account",
    "oldfieldtype": "Small Text",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_63",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "Draft",
@@ -1215,14 +1493,18 @@
    "in_standard_filter": 1,
    "label": "Status",
    "options": "\nDraft\nReturn\nDebit Note Issued\nSubmitted\nPaid\nUnpaid\nOverdue\nCancelled",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "inter_company_invoice_reference",
    "fieldtype": "Link",
    "label": "Inter Company Invoice Reference",
    "options": "Sales Invoice",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "remarks",
@@ -1231,14 +1513,18 @@
    "no_copy": 1,
    "oldfieldname": "remarks",
    "oldfieldtype": "Text",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "subscription_section",
    "fieldtype": "Section Break",
    "label": "Subscription Section",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -1247,7 +1533,9 @@
    "fieldtype": "Date",
    "label": "From Date",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -1256,11 +1544,15 @@
    "fieldtype": "Date",
    "label": "To Date",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_114",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "auto_repeat",
@@ -1269,24 +1561,32 @@
    "no_copy": 1,
    "options": "Auto Repeat",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
    "depends_on": "eval: doc.auto_repeat",
    "fieldname": "update_auto_repeat_reference",
    "fieldtype": "Button",
-   "label": "Update Auto Repeat Reference"
+   "label": "Update Auto Repeat Reference",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "accounting_dimensions_section",
    "fieldtype": "Section Break",
-   "label": "Accounting Dimensions "
+   "label": "Accounting Dimensions ",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "dimension_col_break",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
@@ -1294,7 +1594,9 @@
    "fieldname": "is_internal_supplier",
    "fieldtype": "Check",
    "label": "Is Internal Supplier",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tax_withholding_category",
@@ -1302,14 +1604,32 @@
    "hidden": 1,
    "label": "Tax Withholding Category",
    "options": "Tax Withholding Category",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
+  },
+  {
+   "fieldname": "billing_address",
+   "fieldtype": "Link",
+   "label": "Select Billing Address",
+   "options": "Address",
+   "show_days": 1,
+   "show_seconds": 1
+  },
+  {
+   "fieldname": "billing_address_display",
+   "fieldtype": "Small Text",
+   "label": "Billing Address",
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   }
  ],
  "icon": "fa fa-file-text",
  "idx": 204,
  "is_submittable": 1,
  "links": [],
- "modified": "2020-04-18 13:05:25.199832",
+ "modified": "2020-06-13 22:26:30.800199",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Purchase Invoice",
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 8b5d4d1..5e8279b 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -582,14 +582,14 @@
 
 	def validate_item_code(self):
 		for d in self.get('items'):
-			if not d.item_code:
+			if not d.item_code and self.is_opening == "No":
 				msgprint(_("Item Code required at Row No {0}").format(d.idx), raise_exception=True)
 
 	def validate_warehouse(self):
 		super(SalesInvoice, self).validate_warehouse()
 
 		for d in self.get_item_list():
-			if not d.warehouse and frappe.get_cached_value("Item", d.item_code, "is_stock_item"):
+			if not d.warehouse and d.item_code and frappe.get_cached_value("Item", d.item_code, "is_stock_item"):
 				frappe.throw(_("Warehouse required for stock Item {0}").format(d.item_code))
 
 	def validate_delivery_note(self):
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index c82a249..6cdf9b5 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -1745,53 +1745,6 @@
 
 		check_gl_entries(self, si.name, expected_gle, "2019-01-30")
 
-	def test_deferred_error_email(self):
-		deferred_account = create_account(account_name="Deferred Revenue",
-			parent_account="Current Liabilities - _TC", company="_Test Company")
-
-		item = create_item("_Test Item for Deferred Accounting")
-		item.enable_deferred_revenue = 1
-		item.deferred_revenue_account = deferred_account
-		item.no_of_months = 12
-		item.save()
-
-		si = create_sales_invoice(item=item.name, posting_date="2019-01-10", do_not_submit=True)
-		si.items[0].enable_deferred_revenue = 1
-		si.items[0].service_start_date = "2019-01-10"
-		si.items[0].service_end_date = "2019-03-15"
-		si.items[0].deferred_revenue_account = deferred_account
-		si.save()
-		si.submit()
-
-		from erpnext.accounts.deferred_revenue import convert_deferred_revenue_to_income
-
-		acc_settings = frappe.get_doc('Accounts Settings', 'Accounts Settings')
-		acc_settings.acc_frozen_upto = '2019-01-31'
-		acc_settings.save()
-
-		pda = frappe.get_doc(dict(
-			doctype='Process Deferred Accounting',
-			posting_date=nowdate(),
-			start_date="2019-01-01",
-			end_date="2019-03-31",
-			type="Income",
-			company="_Test Company"
-		))
-
-		pda.insert()
-		pda.submit()
-
-		email = frappe.db.sql(""" select name from `tabEmail Queue`
-		where message like %(txt)s """, {
-			'txt': "%%%s%%" % "Error while processing deferred accounting for {0}".format(pda.name)
-		})
-
-		self.assertTrue(email)
-
-		acc_settings.load_from_db()
-		acc_settings.acc_frozen_upto = None
-		acc_settings.save()
-
 	def test_inter_company_transaction(self):
 
 		if not frappe.db.exists("Customer", "_Test Internal Customer"):
diff --git a/erpnext/assets/dashboard_fixtures.py b/erpnext/assets/dashboard_fixtures.py
index 9af45d1..7f3c1de 100644
--- a/erpnext/assets/dashboard_fixtures.py
+++ b/erpnext/assets/dashboard_fixtures.py
@@ -5,14 +5,23 @@
 import json
 from frappe.utils import nowdate, add_months, get_date_str
 from frappe import _
-from erpnext.accounts.utils import get_fiscal_year
-
+from erpnext.accounts.dashboard_fixtures import _get_fiscal_year
+from erpnext.buying.dashboard_fixtures import get_company_for_dashboards
 
 def get_data():
+
+	fiscal_year = _get_fiscal_year(nowdate())
+
+	if not fiscal_year:
+		return frappe._dict()
+
+	year_start_date = get_date_str(fiscal_year.get('year_start_date'))
+	year_end_date = get_date_str(fiscal_year.get('year_end_date'))
+
 	return frappe._dict({
 		"dashboards": get_dashboards(),
-		"charts": get_charts(),
-		"number_cards": get_number_cards(),
+		"charts": get_charts(fiscal_year, year_start_date, year_end_date),
+		"number_cards": get_number_cards(fiscal_year, year_start_date, year_end_date),
 	})
 
 def get_dashboards():
@@ -31,12 +40,7 @@
 		]
     }]
 
-fiscal_year = get_fiscal_year(date=nowdate())
-year_start_date = get_date_str(fiscal_year[1])
-year_end_date = get_date_str(fiscal_year[2])
-
-
-def get_charts():
+def get_charts(fiscal_year, year_start_date, year_end_date):
 	company = get_company_for_dashboards()
 	return [
 		{
@@ -55,8 +59,8 @@
 				"company": company,
 				"status": "In Location",
 				"filter_based_on": "Fiscal Year",
-				"from_fiscal_year": fiscal_year[0],
-				"to_fiscal_year": fiscal_year[0],
+				"from_fiscal_year": fiscal_year.get('name'),
+				"to_fiscal_year": fiscal_year.get('name'),
 				"period_start_date": year_start_date,
 				"period_end_date": year_end_date,
 				"date_based_on": "Purchase Date",
@@ -134,7 +138,7 @@
 		}
 	]
 
-def get_number_cards():
+def get_number_cards(fiscal_year, year_start_date, year_end_date):
 	return [
 		{
 			"name": "Total Assets",
@@ -172,14 +176,4 @@
 			"filters_json": "[]",
 			"doctype": "Number Card"
 		}
-	]
-
-def get_company_for_dashboards():
-	company = frappe.defaults.get_defaults().company
-	if company:
-		return company
-	else:
-		company_list = frappe.get_list("Company")
-		if company_list:
-			return company_list[0].name
-	return None
\ No newline at end of file
+	]
\ No newline at end of file
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
index d6adde6..1869a29 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
@@ -41,7 +41,7 @@
 	team_member = frappe.db.get_value('User', assign_to_member, "email")
 	args = {
 		'doctype' : 'Asset Maintenance',
-		'assign_to' : team_member,
+		'assign_to' : [team_member],
 		'name' : asset_maintenance_name,
 		'description' : maintenance_task,
 		'date' : next_due_date
diff --git a/erpnext/buying/dashboard_fixtures.py b/erpnext/buying/dashboard_fixtures.py
index 186bfb2..172c936 100644
--- a/erpnext/buying/dashboard_fixtures.py
+++ b/erpnext/buying/dashboard_fixtures.py
@@ -5,13 +5,24 @@
 import json
 from frappe import _
 from frappe.utils import nowdate
-from erpnext.accounts.utils import get_fiscal_year
+from erpnext.accounts.dashboard_fixtures import _get_fiscal_year
 
 def get_data():
+
+	fiscal_year = _get_fiscal_year(nowdate())
+
+	if not fiscal_year:
+		return frappe._dict()
+
+	company = frappe.get_doc("Company", get_company_for_dashboards())
+	fiscal_year_name = fiscal_year.get("name")
+	start_date = str(fiscal_year.get("year_start_date"))
+	end_date = str(fiscal_year.get("year_end_date"))
+
 	return frappe._dict({
 		"dashboards": get_dashboards(),
-		"charts": get_charts(),
-		"number_cards": get_number_cards(),
+		"charts": get_charts(company, fiscal_year_name, start_date, end_date),
+		"number_cards": get_number_cards(company, fiscal_year_name, start_date, end_date),
 	})
 
 def get_company_for_dashboards():
@@ -24,12 +35,6 @@
 			return company_list[0].name
 	return None
 
-company = frappe.get_doc("Company", get_company_for_dashboards())
-fiscal_year = get_fiscal_year(nowdate(), as_dict=1)
-fiscal_year_name = fiscal_year.get("name")
-start_date = str(fiscal_year.get("year_start_date"))
-end_date = str(fiscal_year.get("year_end_date"))
-
 def get_dashboards():
 	return [{
 		"name": "Buying",
@@ -48,7 +53,7 @@
 		]
 	}]
 
-def get_charts():
+def get_charts(company, fiscal_year_name, start_date, end_date):
 	return [
 		{
 			"name": "Purchase Order Analysis",
@@ -139,7 +144,7 @@
 		}
  	]
 
-def get_number_cards():
+def get_number_cards(company, fiscal_year_name, start_date, end_date):
 	return [
 		{
 			"name": "Annual Purchase",
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index a4f60fb..7145fea 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -38,6 +38,8 @@
   "col_break_address",
   "shipping_address",
   "shipping_address_display",
+  "billing_address",
+  "billing_address_display",
   "currency_and_price_list",
   "currency",
   "conversion_rate",
@@ -135,7 +137,9 @@
   {
    "fieldname": "supplier_section",
    "fieldtype": "Section Break",
-   "options": "fa fa-user"
+   "options": "fa fa-user",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -145,7 +149,9 @@
    "hidden": 1,
    "label": "Title",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "naming_series",
@@ -157,7 +163,9 @@
    "options": "PUR-ORD-.YYYY.-",
    "print_hide": 1,
    "reqd": 1,
-   "set_only_once": 1
+   "set_only_once": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "bold": 1,
@@ -170,14 +178,18 @@
    "options": "Supplier",
    "print_hide": 1,
    "reqd": 1,
-   "search_index": 1
+   "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:doc.supplier && doc.docstatus===0 && (!(doc.items && doc.items.length) || (doc.items.length==1 && !doc.items[0].item_code))",
    "description": "Fetch items based on Default Supplier.",
    "fieldname": "get_items_from_open_material_requests",
    "fieldtype": "Button",
-   "label": "Get Items from Open Material Requests"
+   "label": "Get Items from Open Material Requests",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "bold": 1,
@@ -186,7 +198,9 @@
    "fieldtype": "Data",
    "in_global_search": 1,
    "label": "Supplier Name",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "company",
@@ -198,13 +212,17 @@
    "options": "Company",
    "print_hide": 1,
    "remember_last_selected_value": 1,
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break1",
    "fieldtype": "Column Break",
    "oldfieldtype": "Column Break",
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -216,27 +234,35 @@
    "oldfieldname": "transaction_date",
    "oldfieldtype": "Date",
    "reqd": 1,
-   "search_index": 1
+   "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
    "fieldname": "schedule_date",
    "fieldtype": "Date",
-   "label": "Required By"
+   "label": "Required By",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
    "depends_on": "eval:doc.docstatus===1",
    "fieldname": "order_confirmation_no",
    "fieldtype": "Data",
-   "label": "Order Confirmation No"
+   "label": "Order Confirmation No",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
    "depends_on": "eval:doc.order_confirmation_no",
    "fieldname": "order_confirmation_date",
    "fieldtype": "Date",
-   "label": "Order Confirmation Date"
+   "label": "Order Confirmation Date",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "amended_from",
@@ -248,19 +274,25 @@
    "oldfieldtype": "Data",
    "options": "Purchase Order",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "drop_ship",
    "fieldtype": "Section Break",
-   "label": "Drop Ship"
+   "label": "Drop Ship",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "customer",
    "fieldtype": "Link",
    "label": "Customer",
    "options": "Customer",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "bold": 1,
@@ -268,31 +300,41 @@
    "fieldtype": "Data",
    "label": "Customer Name",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_19",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "customer_contact_person",
    "fieldtype": "Link",
    "label": "Customer Contact",
-   "options": "Contact"
+   "options": "Contact",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "customer_contact_display",
    "fieldtype": "Small Text",
    "hidden": 1,
    "label": "Customer Contact",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "customer_contact_mobile",
    "fieldtype": "Small Text",
    "hidden": 1,
    "label": "Customer Mobile No",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "customer_contact_email",
@@ -300,46 +342,60 @@
    "hidden": 1,
    "label": "Customer Contact Email",
    "options": "Email",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "section_addresses",
    "fieldtype": "Section Break",
-   "label": "Address and Contact"
+   "label": "Address and Contact",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplier_address",
    "fieldtype": "Link",
    "label": "Select Supplier Address",
    "options": "Address",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_person",
    "fieldtype": "Link",
    "label": "Contact Person",
    "options": "Contact",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "address_display",
    "fieldtype": "Small Text",
    "label": "Address",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_display",
    "fieldtype": "Small Text",
    "in_global_search": 1,
    "label": "Contact",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_email",
@@ -347,32 +403,42 @@
    "label": "Contact Email",
    "options": "Email",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "col_break_address",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_address",
    "fieldtype": "Link",
    "label": "Select Shipping Address",
    "options": "Address",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_address_display",
    "fieldtype": "Small Text",
    "label": "Shipping Address",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "currency_and_price_list",
    "fieldtype": "Section Break",
    "label": "Currency and Price List",
-   "options": "fa fa-tag"
+   "options": "fa fa-tag",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "currency",
@@ -382,7 +448,9 @@
    "oldfieldtype": "Select",
    "options": "Currency",
    "print_hide": 1,
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "conversion_rate",
@@ -392,18 +460,24 @@
    "oldfieldtype": "Currency",
    "precision": "9",
    "print_hide": 1,
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "cb_price_list",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "buying_price_list",
    "fieldtype": "Link",
    "label": "Price List",
    "options": "Price List",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "price_list_currency",
@@ -411,14 +485,18 @@
    "label": "Price List Currency",
    "options": "Currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "plc_conversion_rate",
    "fieldtype": "Float",
    "label": "Price List Exchange Rate",
    "precision": "9",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
@@ -427,11 +505,15 @@
    "label": "Ignore Pricing Rule",
    "no_copy": 1,
    "permlevel": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "sec_warehouse",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "description": "Sets 'Warehouse' in each row of the Items table.",
@@ -439,11 +521,15 @@
    "fieldtype": "Link",
    "label": "Set Target Warehouse",
    "options": "Warehouse",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "col_break_warehouse",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "No",
@@ -452,25 +538,33 @@
    "in_standard_filter": 1,
    "label": "Supply Raw Materials",
    "options": "No\nYes",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:doc.is_subcontracted==\"Yes\"",
    "fieldname": "supplier_warehouse",
    "fieldtype": "Link",
    "label": "Supplier Warehouse",
-   "options": "Warehouse"
+   "options": "Warehouse",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "items_section",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-shopping-cart"
+   "options": "fa fa-shopping-cart",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "scan_barcode",
    "fieldtype": "Data",
-   "label": "Scan Barcode"
+   "label": "Scan Barcode",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_bulk_edit": 1,
@@ -480,26 +574,34 @@
    "oldfieldname": "po_details",
    "oldfieldtype": "Table",
    "options": "Purchase Order Item",
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "section_break_48",
    "fieldtype": "Section Break",
-   "label": "Pricing Rules"
+   "label": "Pricing Rules",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "pricing_rules",
    "fieldtype": "Table",
    "label": "Purchase Order Pricing Rule",
    "options": "Pricing Rule Detail",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible_depends_on": "supplied_items",
    "fieldname": "raw_material_details",
    "fieldtype": "Section Break",
-   "label": "Raw Materials Supplied"
+   "label": "Raw Materials Supplied",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplied_items",
@@ -509,17 +611,23 @@
    "oldfieldtype": "Table",
    "options": "Purchase Order Item Supplied",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "sb_last_purchase",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_qty",
    "fieldtype": "Float",
    "label": "Total Quantity",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_total",
@@ -527,7 +635,9 @@
    "label": "Total (Company Currency)",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_net_total",
@@ -538,18 +648,24 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_26",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total",
    "fieldtype": "Currency",
    "label": "Total",
    "options": "currency",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "net_total",
@@ -559,20 +675,26 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_net_weight",
    "fieldtype": "Float",
    "label": "Total Net Weight",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_section",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-money"
+   "options": "fa fa-money",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges",
@@ -581,22 +703,30 @@
    "oldfieldname": "purchase_other_charges",
    "oldfieldtype": "Link",
    "options": "Purchase Taxes and Charges Template",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_50",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_rule",
    "fieldtype": "Link",
    "label": "Shipping Rule",
    "options": "Shipping Rule",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "section_break_52",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes",
@@ -604,13 +734,17 @@
    "label": "Purchase Taxes and Charges",
    "oldfieldname": "purchase_tax_details",
    "oldfieldtype": "Table",
-   "options": "Purchase Taxes and Charges"
+   "options": "Purchase Taxes and Charges",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "sec_tax_breakup",
    "fieldtype": "Section Break",
-   "label": "Tax Breakup"
+   "label": "Tax Breakup",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "other_charges_calculation",
@@ -619,13 +753,17 @@
    "no_copy": 1,
    "oldfieldtype": "HTML",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "totals",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-money"
+   "options": "fa fa-money",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_taxes_and_charges_added",
@@ -635,7 +773,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_taxes_and_charges_deducted",
@@ -645,7 +785,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_total_taxes_and_charges",
@@ -656,11 +798,15 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_39",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges_added",
@@ -670,7 +816,9 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges_deducted",
@@ -680,7 +828,9 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_taxes_and_charges",
@@ -688,14 +838,18 @@
    "label": "Total Taxes and Charges",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "collapsible_depends_on": "discount_amount",
    "fieldname": "discount_section",
    "fieldtype": "Section Break",
-   "label": "Additional Discount"
+   "label": "Additional Discount",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "Grand Total",
@@ -703,7 +857,9 @@
    "fieldtype": "Select",
    "label": "Apply Additional Discount On",
    "options": "\nGrand Total\nNet Total",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_discount_amount",
@@ -711,28 +867,38 @@
    "label": "Additional Discount Amount (Company Currency)",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_45",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "additional_discount_percentage",
    "fieldtype": "Float",
    "label": "Additional Discount Percentage",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "discount_amount",
    "fieldtype": "Currency",
    "label": "Additional Discount Amount",
    "options": "currency",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "totals_section",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_grand_total",
@@ -743,7 +909,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_rounding_adjustment",
@@ -752,7 +920,9 @@
    "no_copy": 1,
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "description": "In Words will be visible once you save the Purchase Order.",
@@ -762,7 +932,9 @@
    "oldfieldname": "in_words",
    "oldfieldtype": "Data",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_rounded_total",
@@ -772,12 +944,16 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break4",
    "fieldtype": "Column Break",
-   "oldfieldtype": "Column Break"
+   "oldfieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "grand_total",
@@ -787,7 +963,9 @@
    "oldfieldname": "grand_total_import",
    "oldfieldtype": "Currency",
    "options": "currency",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "rounding_adjustment",
@@ -796,20 +974,26 @@
    "no_copy": 1,
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "rounded_total",
    "fieldtype": "Currency",
    "label": "Rounded Total",
    "options": "currency",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "disable_rounded_total",
    "fieldtype": "Check",
-   "label": "Disable Rounded Total"
+   "label": "Disable Rounded Total",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "in_words",
@@ -818,7 +1002,9 @@
    "oldfieldname": "in_words_import",
    "oldfieldtype": "Data",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "advance_paid",
@@ -827,19 +1013,25 @@
    "no_copy": 1,
    "options": "party_account_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "payment_schedule_section",
    "fieldtype": "Section Break",
-   "label": "Payment Terms"
+   "label": "Payment Terms",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "payment_terms_template",
    "fieldtype": "Link",
    "label": "Payment Terms Template",
-   "options": "Payment Terms Template"
+   "options": "Payment Terms Template",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "payment_schedule",
@@ -847,7 +1039,9 @@
    "label": "Payment Schedule",
    "no_copy": 1,
    "options": "Payment Schedule",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -856,7 +1050,9 @@
    "fieldtype": "Section Break",
    "label": "Terms and Conditions",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-legal"
+   "options": "fa fa-legal",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tc_name",
@@ -865,21 +1061,27 @@
    "oldfieldname": "tc_name",
    "oldfieldtype": "Link",
    "options": "Terms and Conditions",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "terms",
    "fieldtype": "Text Editor",
    "label": "Terms and Conditions",
    "oldfieldname": "terms",
-   "oldfieldtype": "Text Editor"
+   "oldfieldtype": "Text Editor",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "more_info",
    "fieldtype": "Section Break",
    "label": "More Information",
-   "oldfieldtype": "Section Break"
+   "oldfieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "Draft",
@@ -894,7 +1096,9 @@
    "print_hide": 1,
    "read_only": 1,
    "reqd": 1,
-   "search_index": 1
+   "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "ref_sq",
@@ -905,7 +1109,9 @@
    "oldfieldname": "ref_sq",
    "oldfieldtype": "Data",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "party_account_currency",
@@ -915,18 +1121,24 @@
    "no_copy": 1,
    "options": "Currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "inter_company_order_reference",
    "fieldtype": "Link",
    "label": "Inter Company Order Reference",
    "options": "Sales Order",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_74",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:!doc.__islocal",
@@ -936,7 +1148,9 @@
    "label": "% Received",
    "no_copy": 1,
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:!doc.__islocal",
@@ -946,7 +1160,9 @@
    "label": "% Billed",
    "no_copy": 1,
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -956,6 +1172,8 @@
    "oldfieldtype": "Column Break",
    "print_hide": 1,
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -966,7 +1184,9 @@
    "oldfieldname": "letter_head",
    "oldfieldtype": "Select",
    "options": "Letter Head",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -978,11 +1198,15 @@
    "oldfieldtype": "Link",
    "options": "Print Heading",
    "print_hide": 1,
-   "report_hide": 1
+   "report_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_86",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -990,19 +1214,25 @@
    "fieldname": "group_same_items",
    "fieldtype": "Check",
    "label": "Group same items",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "language",
    "fieldtype": "Data",
    "label": "Print Language",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "subscription_section",
    "fieldtype": "Section Break",
-   "label": "Subscription Section"
+   "label": "Subscription Section",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -1010,7 +1240,9 @@
    "fieldtype": "Date",
    "label": "From Date",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -1018,11 +1250,15 @@
    "fieldtype": "Date",
    "label": "To Date",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_97",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "auto_repeat",
@@ -1031,44 +1267,72 @@
    "no_copy": 1,
    "options": "Auto Repeat",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
    "depends_on": "eval: doc.auto_repeat",
    "fieldname": "update_auto_repeat_reference",
    "fieldtype": "Button",
-   "label": "Update Auto Repeat Reference"
+   "label": "Update Auto Repeat Reference",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tax_category",
    "fieldtype": "Link",
    "label": "Tax Category",
-   "options": "Tax Category"
+   "options": "Tax Category",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "supplied_items",
    "fieldname": "set_reserve_warehouse",
    "fieldtype": "Link",
    "label": "Set Reserve Warehouse",
-   "options": "Warehouse"
+   "options": "Warehouse",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "tracking_section",
    "fieldtype": "Section Break",
-   "label": "Tracking"
+   "label": "Tracking",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_75",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
+  },
+  {
+   "fieldname": "billing_address",
+   "fieldtype": "Link",
+   "label": "Select Billing Address",
+   "options": "Address",
+   "show_days": 1,
+   "show_seconds": 1
+  },
+  {
+   "fieldname": "billing_address_display",
+   "fieldtype": "Small Text",
+   "label": "Billing Address",
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   }
  ],
  "icon": "fa fa-file-text",
  "idx": 105,
  "is_submittable": 1,
  "links": [],
- "modified": "2020-04-24 12:13:14.186280",
+ "modified": "2020-06-13 22:25:47.333850",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Purchase Order",
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index f62df20..c7efb8a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -71,6 +71,15 @@
 				"compare_fields": [["project", "="], ["item_code", "="],
 					["uom", "="], ["conversion_factor", "="]],
 				"is_child_table": True
+			},
+			"Material Request": {
+				"ref_dn_field": "material_request",
+				"compare_fields": [["company", "="]],
+			},
+			"Material Request Item": {
+				"ref_dn_field": "material_request_item",
+				"compare_fields": [["project", "="], ["item_code", "="]],
+				"is_child_table": True
 			}
 		})
 
diff --git a/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py b/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py
index bebf0cc..c7204a1 100644
--- a/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py
+++ b/erpnext/buying/report/procurement_tracker/test_procurement_tracker.py
@@ -15,7 +15,7 @@
 	def test_result_for_procurement_tracker(self):
 		filters = {
 			'company': '_Test Procurement Company',
-			'cost_center': '_Test Cost Center - _TC'
+			'cost_center': 'Main - _TPC'
 		}
 		expected_data = self.generate_expected_data()
 		report = execute(filters)
@@ -33,24 +33,27 @@
 				country="Pakistan"
 				)).insert()
 		warehouse = create_warehouse("_Test Procurement Warehouse", company="_Test Procurement Company")
-		mr = make_material_request(company="_Test Procurement Company", warehouse=warehouse)
+		mr = make_material_request(company="_Test Procurement Company", warehouse=warehouse, cost_center="Main - _TPC")
 		po = make_purchase_order(mr.name)
 		po.supplier = "_Test Supplier"
-		po.get("items")[0].cost_center = "_Test Cost Center - _TC"
+		po.get("items")[0].cost_center = "Main - _TPC"
 		po.submit()
 		pr = make_purchase_receipt(po.name)
+		pr.get("items")[0].cost_center = "Main - _TPC"
 		pr.submit()
 		frappe.db.commit()
 		date_obj = datetime.date(datetime.now())
 
+		po.load_from_db()
+
 		expected_data = {
 			"material_request_date": date_obj,
-			"cost_center": "_Test Cost Center - _TC",
+			"cost_center": "Main - _TPC",
 			"project": None,
 			"requesting_site": "_Test Procurement Warehouse - _TPC",
 			"requestor": "Administrator",
 			"material_request_no": mr.name,
-			"description": '_Test Item 1',
+			"item_code": '_Test Item',
 			"quantity": 10.0,
 			"unit_of_measurement": "_Test UOM",
 			"status": "To Bill",
@@ -58,9 +61,9 @@
 			"purchase_order": po.name,
 			"supplier": "_Test Supplier",
 			"estimated_cost": 0.0,
-			"actual_cost": None,
-			"purchase_order_amt": 5000.0,
-			"purchase_order_amt_in_company_currency": 300000.0,
+			"actual_cost": 0.0,
+			"purchase_order_amt": po.net_total,
+			"purchase_order_amt_in_company_currency": po.base_net_total,
 			"expected_delivery_date": date_obj,
 			"actual_delivery_date": date_obj
 		}
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 608e537..89b48f0 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -349,7 +349,7 @@
 			})
 
 			if not rm.rate:
-				rm.rate = get_valuation_rate(raw_material_data.item_code, self.supplier_warehouse,
+				rm.rate = get_valuation_rate(raw_material_data.rm_item_code, self.supplier_warehouse,
 					self.doctype, self.name, currency=self.company_currency, company=self.company)
 
 		rm.amount = qty * flt(rm.rate)
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 90d2930..759c6cd 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -19,7 +19,8 @@
 class StockController(AccountsController):
 	def validate(self):
 		super(StockController, self).validate()
-		self.validate_inspection()
+		if not self.get('is_return'):
+			self.validate_inspection()
 		self.validate_serialized_batch()
 		self.validate_customer_provided_item()
 
@@ -226,7 +227,9 @@
 
 	def check_expense_account(self, item):
 		if not item.get("expense_account"):
-			frappe.throw(_("Expense Account not set for Item {0}. Please set an Expense Account for the item in the Items table").format(item.item_code))
+			frappe.throw(_("Row #{0}: Expense Account not set for Item {1}. Please set an Expense \
+				Account in the Items table").format(item.idx, frappe.bold(item.item_code)),
+				title=_("Expense Account Missing"))
 
 		else:
 			is_expense_account = frappe.db.get_value("Account",
diff --git a/erpnext/crm/doctype/social_media_post/social_media_post.json b/erpnext/crm/doctype/social_media_post/social_media_post.json
index 2601c14..0a00dca 100644
--- a/erpnext/crm/doctype/social_media_post/social_media_post.json
+++ b/erpnext/crm/doctype/social_media_post/social_media_post.json
@@ -30,24 +30,32 @@
    "fieldname": "text",
    "fieldtype": "Small Text",
    "label": "Tweet",
-   "mandatory_depends_on": "eval:doc.twitter ==1"
+   "mandatory_depends_on": "eval:doc.twitter ==1",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "image",
    "fieldtype": "Attach Image",
-   "label": "Image"
+   "label": "Image",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "twitter",
    "fieldtype": "Check",
-   "label": "Twitter"
+   "label": "Twitter",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "linkedin",
    "fieldtype": "Check",
-   "label": "LinkedIn"
+   "label": "LinkedIn",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "amended_from",
@@ -56,13 +64,17 @@
    "no_copy": 1,
    "options": "Social Media Post",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:doc.twitter ==1",
    "fieldname": "content",
    "fieldtype": "Section Break",
-   "label": "Twitter"
+   "label": "Twitter",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -70,7 +82,9 @@
    "fieldtype": "Select",
    "label": "Post Status",
    "options": "\nScheduled\nPosted\nError",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -78,7 +92,9 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "Twitter Post Id",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -86,68 +102,89 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "LinkedIn Post Id",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "campaign_name",
    "fieldtype": "Link",
    "in_list_view": 1,
    "label": "Campaign",
-   "options": "Campaign"
+   "options": "Campaign",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_6",
    "fieldtype": "Column Break",
-   "label": "Share On"
+   "label": "Share On",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_14",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tweet_preview",
-   "fieldtype": "HTML"
+   "fieldtype": "HTML",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "depends_on": "eval:doc.linkedin==1",
    "fieldname": "linkedin_section",
    "fieldtype": "Section Break",
-   "label": "LinkedIn"
+   "label": "LinkedIn",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "attachments_section",
    "fieldtype": "Section Break",
-   "label": "Attachments"
+   "label": "Attachments",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "linkedin_post",
    "fieldtype": "Text",
    "label": "Post",
-   "mandatory_depends_on": "eval:doc.linkedin ==1"
+   "mandatory_depends_on": "eval:doc.linkedin ==1",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_15",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
    "fieldname": "scheduled_time",
    "fieldtype": "Datetime",
    "label": "Scheduled Time",
-   "read_only_depends_on": "eval:doc.post_status == \"Posted\""
+   "read_only_depends_on": "eval:doc.post_status == \"Posted\"",
+   "show_days": 1,
+   "show_seconds": 1
   }
  ],
  "is_submittable": 1,
  "links": [],
- "modified": "2020-04-21 15:10:04.953713",
+ "modified": "2020-06-14 10:31:33.961381",
  "modified_by": "Administrator",
  "module": "CRM",
  "name": "Social Media Post",
  "owner": "Administrator",
  "permissions": [
   {
+   "cancel": 1,
    "create": 1,
    "delete": 1,
    "email": 1,
@@ -157,6 +194,35 @@
    "report": 1,
    "role": "System Manager",
    "share": 1,
+   "submit": 1,
+   "write": 1
+  },
+  {
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "export": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales User",
+   "share": 1,
+   "submit": 1,
+   "write": 1
+  },
+  {
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "export": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales Manager",
+   "share": 1,
+   "submit": 1,
    "write": 1
   }
  ],
diff --git a/erpnext/education/doctype/student_admission/student_admission.json b/erpnext/education/doctype/student_admission/student_admission.json
index b3c10d4..1096888 100644
--- a/erpnext/education/doctype/student_admission/student_admission.json
+++ b/erpnext/education/doctype/student_admission/student_admission.json
@@ -1,398 +1,119 @@
 {
- "allow_copy": 0, 
- "allow_guest_to_view": 1, 
- "allow_import": 0, 
- "allow_rename": 1, 
- "autoname": "", 
- "beta": 0, 
- "creation": "2016-09-13 03:05:27.154713", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Document", 
- "editable_grid": 1, 
+ "actions": [],
+ "allow_guest_to_view": 1,
+ "allow_rename": 1,
+ "creation": "2016-09-13 03:05:27.154713",
+ "doctype": "DocType",
+ "document_type": "Document",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "title",
+  "route",
+  "column_break_3",
+  "academic_year",
+  "admission_start_date",
+  "admission_end_date",
+  "published",
+  "enable_admission_application",
+  "section_break_5",
+  "program_details",
+  "introduction"
+ ],
  "fields": [
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "title", 
-   "fieldtype": "Data", 
-   "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": "Title", 
-   "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
-  }, 
+   "fieldname": "title",
+   "fieldtype": "Data",
+   "label": "Title"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "", 
-   "fieldname": "route", 
-   "fieldtype": "Data", 
-   "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": "Route", 
-   "length": 0, 
-   "no_copy": 1, 
-   "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, 
+   "fieldname": "route",
+   "fieldtype": "Data",
+   "label": "Route",
+   "no_copy": 1,
    "unique": 1
-  }, 
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "application_form_route", 
-   "fieldtype": "Data", 
-   "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": "Application Form Route", 
-   "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
-  }, 
+   "fieldname": "column_break_3",
+   "fieldtype": "Column Break"
+  },
   {
-   "allow_bulk_edit": 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_global_search": 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
-  }, 
+   "fieldname": "academic_year",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "in_standard_filter": 1,
+   "label": "Academic Year",
+   "no_copy": 1,
+   "options": "Academic Year",
+   "reqd": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "academic_year", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 1, 
-   "label": "Academic Year", 
-   "length": 0, 
-   "no_copy": 1, 
-   "options": "Academic Year", 
-   "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
-  }, 
+   "fieldname": "admission_start_date",
+   "fieldtype": "Date",
+   "label": "Admission Start Date",
+   "no_copy": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "admission_start_date", 
-   "fieldtype": "Date", 
-   "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": "Admission Start Date", 
-   "length": 0, 
-   "no_copy": 1, 
-   "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
-  }, 
+   "fieldname": "admission_end_date",
+   "fieldtype": "Date",
+   "label": "Admission End Date",
+   "no_copy": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "admission_end_date", 
-   "fieldtype": "Date", 
-   "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": "Admission End Date", 
-   "length": 0, 
-   "no_copy": 1, 
-   "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
-  }, 
+   "default": "0",
+   "fieldname": "published",
+   "fieldtype": "Check",
+   "label": "Publish on website"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "published", 
-   "fieldtype": "Check", 
-   "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": "Publish on website", 
-   "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
-  }, 
+   "fieldname": "section_break_5",
+   "fieldtype": "Section Break",
+   "label": "Eligibility and Details"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "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_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Eligibility and 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
-  }, 
+   "fieldname": "program_details",
+   "fieldtype": "Table",
+   "label": "Eligibility and Details",
+   "options": "Student Admission Program"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "program_details", 
-   "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": "Eligibility and Details", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Student Admission Program", 
-   "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
-  }, 
+   "fieldname": "introduction",
+   "fieldtype": "Text Editor",
+   "label": "Introduction"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "introduction", 
-   "fieldtype": "Text Editor", 
-   "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": "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": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
+   "default": "0",
+   "fieldname": "enable_admission_application",
+   "fieldtype": "Check",
+   "label": "Enable Admission Application"
   }
- ], 
- "has_web_view": 1, 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "idx": 0, 
- "image_view": 0, 
- "in_create": 0, 
- "is_published_field": "published", 
- "is_submittable": 0, 
- "issingle": 0, 
- "istable": 0, 
- "max_attachments": 0, 
- "modified": "2017-11-10 18:57:34.570376", 
- "modified_by": "Administrator", 
- "module": "Education", 
- "name": "Student Admission", 
- "name_case": "", 
- "owner": "Administrator", 
+ ],
+ "has_web_view": 1,
+ "is_published_field": "published",
+ "links": [],
+ "modified": "2020-06-15 20:18:38.591626",
+ "modified_by": "Administrator",
+ "module": "Education",
+ "name": "Student Admission",
+ "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, 
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "export": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Academics User",
+   "share": 1,
    "write": 1
   }
- ], 
- "quick_entry": 0, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "restrict_to_domain": "Education", 
- "route": "admissions", 
- "show_name_in_global_search": 1, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "title_field": "title", 
- "track_changes": 0, 
- "track_seen": 0
+ ],
+ "restrict_to_domain": "Education",
+ "route": "admissions",
+ "show_name_in_global_search": 1,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "title_field": "title"
 }
\ No newline at end of file
diff --git a/erpnext/education/doctype/student_admission/templates/student_admission.html b/erpnext/education/doctype/student_admission/templates/student_admission.html
index 25afaca..e5a9ead 100644
--- a/erpnext/education/doctype/student_admission/templates/student_admission.html
+++ b/erpnext/education/doctype/student_admission/templates/student_admission.html
@@ -43,8 +43,8 @@
 				<thead>
 					<tr class="active">
 						<th style="width: 90px">Program/Std.</th>
-						<th style="width: 170px">Minumum Age(DOB)</th>
-						<th style="width: 170px">Maximum Age(DOB)</th>
+						<th style="width: 170px">Minumum Age</th>
+						<th style="width: 170px">Maximum Age</th>
 						<th style="width: 100px">Application Fee</th>
 					</tr>
 				</thead>
@@ -52,8 +52,8 @@
 					{% for row in program_details %}
 						<tr>
 							<td>{{ row.program }}</td>
-							<td>{{ row.minimum_age }}</td>
-							<td>{{ row.maximum_age }}</td>
+							<td>{{ row.min_age }}</td>
+							<td>{{ row.max_age }}</td>
 							<td>{{ row.application_fee }}</td>
 						</tr>
 					{% endfor %}
@@ -61,12 +61,11 @@
 			</table>
 		</div>
 	{% endif %}
-
-	{%- if application_form_route -%}
+	{%- if doc.enable_admission_application -%}
 		<br>
 		<p>
 			<a class='btn btn-primary'
-			href='/{{ doc.application_form_route }}?new=1'>
+			href='/student-applicant?new=1&student_admission={{doc.name}}'>
 			{{ _("Apply Now") }}</a>
 		</p>
 	{% endif %}
diff --git a/erpnext/education/doctype/student_admission/test_student_admission.js b/erpnext/education/doctype/student_admission/test_student_admission.js
index ed794b2..3a0bb0b 100644
--- a/erpnext/education/doctype/student_admission/test_student_admission.js
+++ b/erpnext/education/doctype/student_admission/test_student_admission.js
@@ -11,7 +11,7 @@
 				{admission_start_date: '2016-04-20'},
 				{admission_end_date: '2016-05-31'},
 				{title: '2016-17 Admissions'},
-				{application_form_route: 'student-applicant'},
+				{enable_admission_application: 1},
 				{introduction: 'Test intro'},
 				{program_details: [
 					[
@@ -28,7 +28,7 @@
 			assert.ok(cur_frm.doc.admission_start_date == '2016-04-20');
 			assert.ok(cur_frm.doc.admission_end_date == '2016-05-31');
 			assert.ok(cur_frm.doc.title == '2016-17 Admissions');
-			assert.ok(cur_frm.doc.application_form_route == 'student-applicant');
+			assert.ok(cur_frm.doc.enable_admission_application == 1);
 			assert.ok(cur_frm.doc.introduction == 'Test intro');
 			assert.ok(cur_frm.doc.program_details[0].program == 'Standard Test', 'Program correctly selected');
 			assert.ok(cur_frm.doc.program_details[0].application_fee == 1000);
diff --git a/erpnext/education/doctype/student_admission_program/student_admission_program.json b/erpnext/education/doctype/student_admission_program/student_admission_program.json
index 97b1bba..e9f041e 100644
--- a/erpnext/education/doctype/student_admission_program/student_admission_program.json
+++ b/erpnext/education/doctype/student_admission_program/student_admission_program.json
@@ -1,237 +1,77 @@
 {
- "allow_copy": 0, 
- "allow_events_in_timeline": 0, 
- "allow_guest_to_view": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
- "autoname": "", 
- "beta": 0, 
- "creation": "2017-09-15 12:59:43.207923", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "", 
- "editable_grid": 1, 
- "engine": "InnoDB", 
+ "actions": [],
+ "creation": "2017-09-15 12:59:43.207923",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "program",
+  "min_age",
+  "max_age",
+  "column_break_4",
+  "application_fee",
+  "applicant_naming_series"
+ ],
  "fields": [
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "program", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Program", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Program", 
-   "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, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "program",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Program",
+   "options": "Program",
+   "show_days": 1,
+   "show_seconds": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "minimum_age", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Minimum Age", 
-   "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, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "column_break_4",
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "maximum_age", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Maximum Age", 
-   "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, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "application_fee",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Application Fee",
+   "show_days": 1,
+   "show_seconds": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break_4", 
-   "fieldtype": "Column 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, 
-   "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, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "applicant_naming_series",
+   "fieldtype": "Data",
+   "in_list_view": 1,
+   "label": "Naming Series (for Student Applicant)",
+   "show_days": 1,
+   "show_seconds": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "application_fee", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Application Fee", 
-   "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, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "min_age",
+   "fieldtype": "Int",
+   "in_list_view": 1,
+   "label": "Minimum Age",
+   "show_days": 1,
+   "show_seconds": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "applicant_naming_series", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Naming Series (for Student Applicant)", 
-   "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, 
-   "translatable": 0, 
-   "unique": 0
+   "fieldname": "max_age",
+   "fieldtype": "Int",
+   "in_list_view": 1,
+   "label": "Maximum Age",
+   "show_days": 1,
+   "show_seconds": 1
   }
- ], 
- "has_web_view": 0, 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "idx": 0, 
- "image_view": 0, 
- "in_create": 0, 
- "is_submittable": 0, 
- "issingle": 0, 
- "istable": 1, 
- "max_attachments": 0, 
- "modified": "2018-11-04 03:37:17.408427", 
- "modified_by": "Administrator", 
- "module": "Education", 
- "name": "Student Admission Program", 
- "name_case": "", 
- "owner": "Administrator", 
- "permissions": [], 
- "quick_entry": 1, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "restrict_to_domain": "Education", 
- "show_name_in_global_search": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "track_changes": 1, 
- "track_seen": 0, 
- "track_views": 0
+ ],
+ "istable": 1,
+ "links": [],
+ "modified": "2020-06-10 23:06:30.037404",
+ "modified_by": "Administrator",
+ "module": "Education",
+ "name": "Student Admission Program",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "restrict_to_domain": "Education",
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/education/doctype/student_applicant/student_applicant.py b/erpnext/education/doctype/student_applicant/student_applicant.py
index ab94780..2113482 100644
--- a/erpnext/education/doctype/student_applicant/student_applicant.py
+++ b/erpnext/education/doctype/student_applicant/student_applicant.py
@@ -6,7 +6,7 @@
 import frappe
 from frappe import _
 from frappe.model.document import Document
-from frappe.utils import getdate
+from frappe.utils import getdate, add_years, nowdate, date_diff
 
 class StudentApplicant(Document):
 	def autoname(self):
@@ -31,6 +31,7 @@
 	def validate(self):
 		self.validate_dates()
 		self.title = " ".join(filter(None, [self.first_name, self.middle_name, self.last_name]))
+
 		if self.student_admission and self.program and self.date_of_birth:
 			self.validation_from_student_admission()
 
@@ -48,16 +49,16 @@
 			frappe.throw(_("Please select Student Admission which is mandatory for the paid student applicant"))
 
 	def validation_from_student_admission(self):
+		
 		student_admission = get_student_admission_data(self.student_admission, self.program)
 
-		# different validation for minimum and maximum age so that either min/max can also work independently.
-		if student_admission and student_admission.minimum_age and \
-			getdate(student_admission.minimum_age) < getdate(self.date_of_birth):
-				frappe.throw(_("Not eligible for the admission in this program as per DOB"))
+		if student_admission and student_admission.min_age and \
+			date_diff(nowdate(), add_years(getdate(self.date_of_birth), student_admission.min_age)) < 0:
+				frappe.throw(_("Not eligible for the admission in this program as per Date Of Birth"))
 
-		if student_admission and student_admission.maximum_age and \
-			getdate(student_admission.maximum_age) > getdate(self.date_of_birth):
-				frappe.throw(_("Not eligible for the admission in this program as per DOB"))
+		if student_admission and student_admission.max_age and \
+			date_diff(nowdate(), add_years(getdate(self.date_of_birth), student_admission.max_age)) > 0:
+				frappe.throw(_("Not eligible for the admission in this program as per Date Of Birth"))
 
 
 	def on_payment_authorized(self, *args, **kwargs):
@@ -65,10 +66,12 @@
 
 
 def get_student_admission_data(student_admission, program):
+
 	student_admission = frappe.db.sql("""select sa.admission_start_date, sa.admission_end_date,
-		sap.program, sap.minimum_age, sap.maximum_age, sap.applicant_naming_series
+		sap.program, sap.min_age, sap.max_age, sap.applicant_naming_series
 		from `tabStudent Admission` sa, `tabStudent Admission Program` sap
 		where sa.name = sap.parent and sa.name = %s and sap.program = %s""", (student_admission, program), as_dict=1)
+
 	if student_admission:
 		return student_admission[0]
 	else:
diff --git a/erpnext/education/web_form/student_applicant/student_applicant.json b/erpnext/education/web_form/student_applicant/student_applicant.json
index b1ad754..1810f07 100644
--- a/erpnext/education/web_form/student_applicant/student_applicant.json
+++ b/erpnext/education/web_form/student_applicant/student_applicant.json
@@ -1,200 +1,248 @@
 {
- "accept_payment": 0, 
- "allow_comments": 0, 
- "allow_delete": 0, 
- "allow_edit": 1, 
- "allow_incomplete": 0, 
- "allow_multiple": 1, 
- "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, 
- "max_attachment_size": 0, 
- "modified": "2017-02-21 05:44:46.022738", 
- "modified_by": "Administrator", 
- "module": "Education", 
- "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", 
+ "accept_payment": 0,
+ "allow_comments": 0,
+ "allow_delete": 0,
+ "allow_edit": 1,
+ "allow_incomplete": 0,
+ "allow_multiple": 1,
+ "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,
+ "max_attachment_size": 0,
+ "modified": "2020-06-11 22:53:45.875310",
+ "modified_by": "Administrator",
+ "module": "Education",
+ "name": "student-applicant",
+ "owner": "Administrator",
+ "payment_button_label": "Buy Now",
+ "published": 1,
+ "route": "student-applicant",
+ "route_to_success_link": 0,
+ "show_attachments": 0,
+ "show_in_grid": 0,
+ "show_sidebar": 1,
+ "sidebar_items": [],
+ "success_url": "/student-applicant",
+ "title": "Student Applicant",
  "web_form_fields": [
   {
-   "fieldname": "first_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "First Name", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 1
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "first_name",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "First Name",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 1,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "middle_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Middle Name", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "middle_name",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Middle Name",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "last_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Last Name", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "last_name",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Last Name",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "image", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Image", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "image",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Image",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "program", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "label": "Program", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "options": "Program", 
-   "read_only": 0, 
-   "reqd": 1
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "program",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "label": "Program",
+   "max_length": 0,
+   "max_value": 0,
+   "options": "Program",
+   "read_only": 0,
+   "reqd": 1,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "academic_year", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "label": "Academic Year", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "options": "Academic Year", 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "academic_year",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "label": "Academic Year",
+   "max_length": 0,
+   "max_value": 0,
+   "options": "Academic Year",
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "date_of_birth", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "label": "Date of Birth", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "date_of_birth",
+   "fieldtype": "Date",
+   "hidden": 0,
+   "label": "Date of Birth",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "blood_group", 
-   "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
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "blood_group",
+   "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,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "student_email_id", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Student Email ID", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "student_email_id",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Student Email ID",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "student_mobile_number", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Student Mobile Number", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "student_mobile_number",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Student Mobile Number",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "default": "INDIAN", 
-   "fieldname": "nationality", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Nationality", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "options": "", 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "default": "INDIAN",
+   "fieldname": "nationality",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Nationality",
+   "max_length": 0,
+   "max_value": 0,
+   "options": "",
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "address_line_1", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Address Line 1", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "address_line_1",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Address Line 1",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "address_line_2", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Address Line 2", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "address_line_2",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Address Line 2",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "pincode", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "label": "Pincode", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "pincode",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "label": "Pincode",
+   "max_length": 0,
+   "max_value": 0,
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "guardians", 
-   "fieldtype": "Table", 
-   "hidden": 0, 
-   "label": "Guardians", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "options": "Student Guardian", 
-   "read_only": 0, 
-   "reqd": 0
-  }, 
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "guardians",
+   "fieldtype": "Table",
+   "hidden": 0,
+   "label": "Guardians",
+   "max_length": 0,
+   "max_value": 0,
+   "options": "Student Guardian",
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
   {
-   "fieldname": "siblings", 
-   "fieldtype": "Table", 
-   "hidden": 0, 
-   "label": "Siblings", 
-   "max_length": 0, 
-   "max_value": 0, 
-   "options": "Student Sibling", 
-   "read_only": 0, 
-   "reqd": 0
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "siblings",
+   "fieldtype": "Table",
+   "hidden": 0,
+   "label": "Siblings",
+   "max_length": 0,
+   "max_value": 0,
+   "options": "Student Sibling",
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
+  },
+  {
+   "allow_read_on_all_link_options": 0,
+   "fieldname": "student_admission",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "label": "Student Admission",
+   "max_length": 0,
+   "max_value": 0,
+   "options": "Student Admission",
+   "read_only": 0,
+   "reqd": 0,
+   "show_in_filter": 0
   }
  ]
 }
\ No newline at end of file
diff --git a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
index 4c2d3f6..2bef5fb 100644
--- a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
+++ b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
@@ -15,6 +15,7 @@
 		patient = create_patient()
 		# Schedule Admission
 		ip_record = create_inpatient(patient)
+		ip_record.expected_length_of_stay = 0
 		ip_record.save(ignore_permissions = True)
 		self.assertEqual(ip_record.name, frappe.db.get_value("Patient", patient, "inpatient_record"))
 		self.assertEqual(ip_record.status, frappe.db.get_value("Patient", patient, "inpatient_status"))
@@ -26,7 +27,7 @@
 		self.assertEqual("Occupied", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status"))
 
 		# Discharge
-		schedule_discharge(patient=patient)
+		schedule_discharge(frappe.as_json({'patient': patient}))
 		self.assertEqual("Vacant", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status"))
 
 		ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name)
@@ -44,8 +45,10 @@
 		patient = create_patient()
 
 		ip_record = create_inpatient(patient)
+		ip_record.expected_length_of_stay = 0
 		ip_record.save(ignore_permissions = True)
 		ip_record_new = create_inpatient(patient)
+		ip_record_new.expected_length_of_stay = 0
 		self.assertRaises(frappe.ValidationError, ip_record_new.save)
 
 		service_unit = get_healthcare_service_unit()
diff --git a/erpnext/hr/desk_page/hr/hr.json b/erpnext/hr/desk_page/hr/hr.json
index 1c24444..12548d4 100644
--- a/erpnext/hr/desk_page/hr/hr.json
+++ b/erpnext/hr/desk_page/hr/hr.json
@@ -93,7 +93,7 @@
  "idx": 0,
  "is_standard": 1,
  "label": "HR",
- "modified": "2020-06-10 12:41:41.695669",
+ "modified": "2020-06-16 19:20:50.976045",
  "modified_by": "Administrator",
  "module": "HR",
  "name": "HR",
@@ -126,7 +126,7 @@
   },
   {
    "label": "Salary Structure",
-   "link_to": "Payroll Entry",
+   "link_to": "Salary Structure",
    "type": "DocType"
   },
   {
diff --git a/erpnext/hr/doctype/employee/employee.json b/erpnext/hr/doctype/employee/employee.json
index f575765..2c2b2f6 100644
--- a/erpnext/hr/doctype/employee/employee.json
+++ b/erpnext/hr/doctype/employee/employee.json
@@ -205,7 +205,7 @@
    "label": "Status",
    "oldfieldname": "status",
    "oldfieldtype": "Select",
-   "options": "\nActive\nLeft",
+   "options": "Active\nLeft",
    "reqd": 1,
    "search_index": 1
   },
@@ -667,6 +667,7 @@
    "oldfieldtype": "Date"
   },
   {
+   "depends_on": "eval:doc.status == \"Left\"",
    "fieldname": "relieving_date",
    "fieldtype": "Date",
    "label": "Relieving Date",
@@ -803,7 +804,7 @@
  "idx": 24,
  "image_field": "image",
  "links": [],
- "modified": "2020-05-05 18:51:03.152503",
+ "modified": "2020-06-15 12:26:30.003741",
  "modified_by": "Administrator",
  "module": "HR",
  "name": "Employee",
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.json b/erpnext/hr/doctype/expense_claim/expense_claim.json
index 96baaab..fa28470 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.json
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.json
@@ -66,6 +66,7 @@
    "fieldname": "employee",
    "fieldtype": "Link",
    "in_global_search": 1,
+   "in_standard_filter": 1,
    "label": "From Employee",
    "oldfieldname": "employee",
    "oldfieldtype": "Link",
@@ -164,6 +165,7 @@
    "default": "Today",
    "fieldname": "posting_date",
    "fieldtype": "Date",
+   "in_standard_filter": 1,
    "label": "Posting Date",
    "oldfieldname": "posting_date",
    "oldfieldtype": "Date",
@@ -236,6 +238,7 @@
   {
    "fieldname": "company",
    "fieldtype": "Link",
+   "in_standard_filter": 1,
    "label": "Company",
    "oldfieldname": "company",
    "oldfieldtype": "Link",
@@ -368,7 +371,7 @@
  "idx": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2019-12-14 23:52:05.388458",
+ "modified": "2020-06-15 12:43:04.099803",
  "modified_by": "Administrator",
  "module": "HR",
  "name": "Expense Claim",
diff --git a/erpnext/manufacturing/dashboard_fixtures.py b/erpnext/manufacturing/dashboard_fixtures.py
index 4a17fd0..64e4bc6 100644
--- a/erpnext/manufacturing/dashboard_fixtures.py
+++ b/erpnext/manufacturing/dashboard_fixtures.py
@@ -4,7 +4,6 @@
 import frappe, erpnext, json
 from frappe import _
 from frappe.utils import nowdate, get_first_day, get_last_day, add_months
-from erpnext.accounts.utils import get_fiscal_year
 
 def get_data():
 	return frappe._dict({
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 2543eec..7d31a1c 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -119,6 +119,7 @@
 					"description": d.description,
 					"time_in_mins": d.time_in_mins,
 					"batch_size": d.batch_size,
+					"operating_cost": d.operating_cost,
 					"idx": d.idx
 				})
 				child.hour_rate = flt(d.hour_rate / self.conversion_rate, 2)
diff --git a/erpnext/manufacturing/doctype/bom_operation/bom_operation.json b/erpnext/manufacturing/doctype/bom_operation/bom_operation.json
index 3ca851d..0350e2c 100644
--- a/erpnext/manufacturing/doctype/bom_operation/bom_operation.json
+++ b/erpnext/manufacturing/doctype/bom_operation/bom_operation.json
@@ -78,6 +78,7 @@
    "read_only": 1
   },
   {
+   "depends_on": "eval:parent.doctype == 'BOM'",
    "fieldname": "base_hour_rate",
    "fieldtype": "Currency",
    "label": "Base Hour Rate(Company Currency)",
@@ -87,6 +88,7 @@
   },
   {
    "default": "5",
+   "depends_on": "eval:parent.doctype == 'BOM'",
    "fieldname": "base_operating_cost",
    "fieldtype": "Currency",
    "label": "Operating Cost(Company Currency)",
@@ -108,12 +110,12 @@
  ],
  "idx": 1,
  "istable": 1,
- "modified": "2019-07-16 22:35:55.374037",
- "modified_by": "govindsmenokee@gmail.com",
+ "modified": "2020-06-16 17:01:11.128420",
+ "modified_by": "Administrator",
  "module": "Manufacturing",
  "name": "BOM Operation",
  "owner": "Administrator",
  "permissions": [],
  "sort_field": "modified",
  "sort_order": "DESC"
-}
+}
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/routing/routing.js b/erpnext/manufacturing/doctype/routing/routing.js
index 6cfd0ba..d7589fa 100644
--- a/erpnext/manufacturing/doctype/routing/routing.js
+++ b/erpnext/manufacturing/doctype/routing/routing.js
@@ -44,7 +44,6 @@
 				name: d.workstation
 			},
 			callback: function (data) {
-				frappe.model.set_value(d.doctype, d.name, "base_hour_rate", data.message.hour_rate);
 				frappe.model.set_value(d.doctype, d.name, "hour_rate", data.message.hour_rate);
 				frm.events.calculate_operating_cost(frm, d);
 			}
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index a0707b7..279c453 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -697,3 +697,5 @@
 erpnext.patches.v12_0.update_uom_conversion_factor
 erpnext.patches.v13_0.delete_old_purchase_reports
 erpnext.patches.v12_0.set_italian_import_supplier_invoice_permissions
+erpnext.patches.v13_0.update_sla_enhancements
+erpnext.patches.v12_0.update_address_template_for_india
diff --git a/erpnext/patches/v12_0/move_due_advance_amount_to_pending_amount.py b/erpnext/patches/v12_0/move_due_advance_amount_to_pending_amount.py
index f1ffaf9..6013eaa 100644
--- a/erpnext/patches/v12_0/move_due_advance_amount_to_pending_amount.py
+++ b/erpnext/patches/v12_0/move_due_advance_amount_to_pending_amount.py
@@ -6,4 +6,6 @@
 
 def execute():
     ''' Move from due_advance_amount to pending_amount '''
-    frappe.db.sql(''' UPDATE `tabEmployee Advance` SET pending_amount=due_advance_amount ''')
+
+    if frappe.db.has_column("Employee Advance", "due_advance_amount"):
+        frappe.db.sql(''' UPDATE `tabEmployee Advance` SET pending_amount=due_advance_amount ''')
diff --git a/erpnext/patches/v12_0/update_address_template_for_india.py b/erpnext/patches/v12_0/update_address_template_for_india.py
new file mode 100644
index 0000000..0d582da
--- /dev/null
+++ b/erpnext/patches/v12_0/update_address_template_for_india.py
@@ -0,0 +1,12 @@
+# Copyright (c) 2020, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from erpnext.regional.address_template.setup import set_up_address_templates
+
+def execute():
+	if frappe.db.get_value('Company',  {'country': 'India'},  'name'):
+		address_template = frappe.db.get_value('Address Template', 'India', 'template')
+		if not address_template or "gstin" not in address_template:
+			set_up_address_templates(default_country='India')
diff --git a/erpnext/patches/v13_0/update_sla_enhancements.py b/erpnext/patches/v13_0/update_sla_enhancements.py
new file mode 100644
index 0000000..c156ba9
--- /dev/null
+++ b/erpnext/patches/v13_0/update_sla_enhancements.py
@@ -0,0 +1,93 @@
+# Copyright (c) 2018, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+
+def execute():
+	# add holiday list and employee group fields in SLA
+	# change response and resolution time in priorities child table
+	if frappe.db.exists('DocType', 'Service Level Agreement'):
+		sla_details = frappe.db.get_all('Service Level Agreement', fields=['name', 'service_level'])
+		priorities = frappe.db.get_all('Service Level Priority', fields=['*'], filters={
+			'parenttype': ('in', ['Service Level Agreement', 'Service Level'])
+		})
+
+		frappe.reload_doc('support', 'doctype', 'service_level_agreement')
+		frappe.reload_doc('support', 'doctype', 'pause_sla_on_status')
+		frappe.reload_doc('support', 'doctype', 'service_level_priority')
+		frappe.reload_doc('support', 'doctype', 'service_day')
+
+		for entry in sla_details:
+			values = frappe.db.get_value('Service Level', entry.service_level, ['holiday_list', 'employee_group'])
+			if values:
+				holiday_list = values[0]
+				employee_group = values[1]
+				frappe.db.set_value('Service Level Agreement', entry.name, {
+					'holiday_list': holiday_list,
+					'employee_group': employee_group
+				})
+
+		priority_dict = {}
+
+		for priority in priorities:
+			if priority.parenttype == 'Service Level Agreement':
+				response_time = convert_to_seconds(priority.response_time, priority.response_time_period)
+				resolution_time = convert_to_seconds(priority.resolution_time, priority.resolution_time_period)
+				frappe.db.set_value('Service Level Priority', priority.name, {
+					'response_time': response_time,
+					'resolution_time': resolution_time
+				})
+			if priority.parenttype == 'Service Level':
+				if not priority.parent in priority_dict:
+					priority_dict[priority.parent] = []
+				priority_dict[priority.parent].append(priority)
+
+
+		# copy Service Levels to Service Level Agreements
+		sl = [entry.service_level for entry in sla_details]
+		if frappe.db.exists('DocType', 'Service Level'):
+			service_levels = frappe.db.get_all('Service Level', filters={'service_level': ('not in', sl)}, fields=['*'])
+			for entry in service_levels:
+				sla = frappe.new_doc('Service Level Agreement')
+				sla.service_level = entry.service_level
+				sla.holiday_list = entry.holiday_list
+				sla.employee_group = entry.employee_group
+				sla.flags.ignore_validate = True
+				sla = sla.insert(ignore_mandatory=True)
+
+				frappe.db.sql("""
+					UPDATE
+						`tabService Day`
+					SET
+						parent = %(new_parent)s , parentfield = 'support_and_resolution', parenttype = 'Service Level Agreement'
+					WHERE
+						parent = %(old_parent)s
+				""", {'new_parent': sla.name, 'old_parent': entry.name}, as_dict = 1)
+
+				priority_list = priority_dict.get(entry.name)
+				if priority_list:
+					sla = frappe.get_doc('Service Level Agreement', sla.name)
+					for priority in priority_list:
+						row = sla.append('priorities', {
+							'priority': priority.priority,
+							'default_priority': priority.default_priority,
+							'response_time': convert_to_seconds(priority.response_time, priority.response_time_period),
+							'resolution_time': convert_to_seconds(priority.resolution_time, priority.resolution_time_period)
+						})
+						row.db_update()
+					sla.db_update()
+
+	frappe.delete_doc_if_exists('DocType', 'Service Level')
+
+
+def convert_to_seconds(value, unit):
+	seconds = 0
+	if unit == "Hour":
+		seconds = value * 3600
+	if unit == "Day":
+		seconds = value * 3600 * 24
+	if unit == "Week":
+		seconds = value * 3600 * 24 * 7
+	return seconds
diff --git a/erpnext/portal/product_configurator/utils.py b/erpnext/portal/product_configurator/utils.py
index 0993e69..6b6b8c5 100644
--- a/erpnext/portal/product_configurator/utils.py
+++ b/erpnext/portal/product_configurator/utils.py
@@ -1,4 +1,5 @@
 import frappe
+from frappe.utils import cint
 from erpnext.portal.product_configurator.item_variants_cache import ItemVariantsCacheManager
 
 def get_field_filter_data():
@@ -243,6 +244,8 @@
 	else:
 		product_info = None
 
+	product_info["allow_items_not_in_stock"] = cint(data.cart_settings.allow_items_not_in_stock)
+
 	return {
 		'next_attribute': next_attribute,
 		'valid_options_for_attributes': valid_options_for_attributes,
diff --git a/erpnext/projects/doctype/task/test_task.py b/erpnext/projects/doctype/task/test_task.py
index bd33694..47a28fd 100644
--- a/erpnext/projects/doctype/task/test_task.py
+++ b/erpnext/projects/doctype/task/test_task.py
@@ -64,7 +64,7 @@
 		def assign():
 			from frappe.desk.form import assign_to
 			assign_to.add({
-				"assign_to": "test@example.com",
+				"assign_to": ["test@example.com"],
 				"doctype": task.doctype,
 				"name": task.name,
 				"description": "Close this task"
diff --git a/erpnext/projects/doctype/timesheet/test_timesheet.py b/erpnext/projects/doctype/timesheet/test_timesheet.py
index 32f0428..cbc624c 100644
--- a/erpnext/projects/doctype/timesheet/test_timesheet.py
+++ b/erpnext/projects/doctype/timesheet/test_timesheet.py
@@ -13,7 +13,7 @@
 from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
 from erpnext.hr.doctype.salary_structure.test_salary_structure \
 	import make_salary_structure, create_salary_structure_assignment
-
+from erpnext.hr.doctype.employee.test_employee import make_employee
 
 class TestTimesheet(unittest.TestCase):
 	def setUp(self):
@@ -25,8 +25,10 @@
 
 
 	def test_timesheet_billing_amount(self):
-		make_salary_structure_for_timesheet("_T-Employee-00001")
-		timesheet = make_timesheet("_T-Employee-00001", simulate=True, billable=1)
+		emp = make_employee("test_employee_6@salary.com")
+
+		make_salary_structure_for_timesheet(emp)
+		timesheet = make_timesheet(emp, simulate=True, billable=1)
 
 		self.assertEqual(timesheet.total_hours, 2)
 		self.assertEqual(timesheet.total_billable_hours, 2)
@@ -35,8 +37,10 @@
 		self.assertEqual(timesheet.total_billable_amount, 100)
 
 	def test_timesheet_billing_amount_not_billable(self):
-		make_salary_structure_for_timesheet("_T-Employee-00001")
-		timesheet = make_timesheet("_T-Employee-00001", simulate=True, billable=0)
+		emp = make_employee("test_employee_6@salary.com")
+
+		make_salary_structure_for_timesheet(emp)
+		timesheet = make_timesheet(emp, simulate=True, billable=0)
 
 		self.assertEqual(timesheet.total_hours, 2)
 		self.assertEqual(timesheet.total_billable_hours, 0)
@@ -45,8 +49,10 @@
 		self.assertEqual(timesheet.total_billable_amount, 0)
 
 	def test_salary_slip_from_timesheet(self):
-		salary_structure = make_salary_structure_for_timesheet("_T-Employee-00001")
-		timesheet = make_timesheet("_T-Employee-00001", simulate = True, billable=1)
+		emp = make_employee("test_employee_6@salary.com")
+
+		salary_structure = make_salary_structure_for_timesheet(emp)
+		timesheet = make_timesheet(emp, simulate = True, billable=1)
 		salary_slip = make_salary_slip(timesheet.name)
 		salary_slip.submit()
 
@@ -65,7 +71,9 @@
 		self.assertEqual(timesheet.status, 'Submitted')
 
 	def test_sales_invoice_from_timesheet(self):
-		timesheet = make_timesheet("_T-Employee-00001", simulate=True, billable=1)
+		emp = make_employee("test_employee_6@salary.com")
+
+		timesheet = make_timesheet(emp, simulate=True, billable=1)
 		sales_invoice = make_sales_invoice(timesheet.name, '_Test Item', '_Test Customer')
 		sales_invoice.due_date = nowdate()
 		sales_invoice.submit()
@@ -80,7 +88,9 @@
 		self.assertEqual(item.rate, 50.00)
 
 	def test_timesheet_billing_based_on_project(self):
-		timesheet = make_timesheet("_T-Employee-00001", simulate=True, billable=1, project = '_Test Project', company='_Test Company')
+		emp = make_employee("test_employee_6@salary.com")
+
+		timesheet = make_timesheet(emp, simulate=True, billable=1, project = '_Test Project', company='_Test Company')
 		sales_invoice = create_sales_invoice(do_not_save=True)
 		sales_invoice.project = '_Test Project'
 		sales_invoice.submit()
@@ -90,6 +100,8 @@
 		self.assertEqual(ts.time_logs[0].sales_invoice, sales_invoice.name)
 
 	def test_timesheet_time_overlap(self):
+		emp = make_employee("test_employee_6@salary.com")
+
 		settings = frappe.get_single('Projects Settings')
 		initial_setting = settings.ignore_employee_time_overlap
 		settings.ignore_employee_time_overlap = 0
@@ -97,7 +109,7 @@
 
 		update_activity_type("_Test Activity Type")
 		timesheet = frappe.new_doc("Timesheet")
-		timesheet.employee = "_T-Employee-00001"
+		timesheet.employee = emp
 		timesheet.append(
 			'time_logs',
 			{
@@ -129,12 +141,14 @@
 		settings.save()
 
 	def test_timesheet_std_working_hours(self):
+		emp = make_employee("test_employee_6@salary.com")
+
 		company = frappe.get_doc('Company', "_Test Company")
 		company.standard_working_hours = 8
 		company.save()
 
 		timesheet = frappe.new_doc("Timesheet")
-		timesheet.employee = "_T-Employee-00001"
+		timesheet.employee = emp
 		timesheet.company = '_Test Company'
 		timesheet.append(
 			'time_logs',
@@ -156,7 +170,7 @@
 		company.save()
 
 		timesheet = frappe.new_doc("Timesheet")
-		timesheet.employee = "_T-Employee-00001"
+		timesheet.employee = emp
 		timesheet.company = '_Test Company'
 		timesheet.append(
 			'time_logs',
diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js
index 9c56189..a4cc68b 100644
--- a/erpnext/public/js/controllers/buying.js
+++ b/erpnext/public/js/controllers/buying.js
@@ -73,6 +73,8 @@
 		me.frm.set_query('contact_person', erpnext.queries.contact_query);
 		me.frm.set_query('supplier_address', erpnext.queries.address_query);
 
+		me.frm.set_query('billing_address', erpnext.queries.company_address_query);
+
 		if(this.frm.fields_dict.supplier) {
 			this.frm.set_query("supplier", function() {
 				return{	query: "erpnext.controllers.queries.supplier_query" }});
@@ -283,6 +285,11 @@
 			"shipping_address_display", true);
 	},
 
+	billing_address: function() {
+		erpnext.utils.get_address_display(this.frm, "billing_address",
+			"billing_address_display", true);
+	},
+
 	tc_name: function() {
 		this.get_terms();
 	},
diff --git a/erpnext/regional/address_template/templates/india.html b/erpnext/regional/address_template/templates/india.html
index ffb9d05..5d2329e 100644
--- a/erpnext/regional/address_template/templates/india.html
+++ b/erpnext/regional/address_template/templates/india.html
@@ -1,7 +1,7 @@
 {{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>
 {% if gst_state %}{{ gst_state }}{% endif -%}
 {% if gst_state_number %}, State Code: {{ gst_state_number }}<br>{% endif -%}
-{% if pincode %}PIN: {{ pincode }}<br>{% endif -%}
+{% if pincode %}Postal Code: {{ pincode }}<br>{% endif -%}
 {{ country }}<br>
 {% if phone %}Phone: {{ phone }}<br>{% endif -%}
 {% if fax %}Fax: {{ fax }}<br>{% endif -%}
diff --git a/erpnext/regional/united_states/setup.py b/erpnext/regional/united_states/setup.py
index 6d34402..cae28be 100644
--- a/erpnext/regional/united_states/setup.py
+++ b/erpnext/regional/united_states/setup.py
@@ -9,14 +9,14 @@
 	make_custom_fields()
 	add_print_formats()
 
-def make_custom_fields():
+def make_custom_fields(update=True):
 	custom_fields = {
 		'Supplier': [
 			dict(fieldname='irs_1099', fieldtype='Check', insert_after='tax_id',
 				label='Is IRS 1099 reporting required for supplier?')
 		]
 	}
-	create_custom_fields(custom_fields)
+	create_custom_fields(custom_fields, update=update)
 
 def add_print_formats():
 	frappe.reload_doc("regional", "print_format", "irs_1099_form")
diff --git a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json
index aba6a79..28d1d16 100644
--- a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json
+++ b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json
@@ -1,4 +1,5 @@
 {
+ "actions": [],
  "allow_import": 1,
  "allow_rename": 1,
  "autoname": "field:title",
@@ -49,7 +50,7 @@
    "fieldname": "terms_and_conditions_help",
    "fieldtype": "HTML",
    "label": "Terms and Conditions Help",
-   "options": "<h4>Standard Terms and Conditions Example</h4>\n\n<pre>Delivery Terms for Order number {{ name }}\n\n-Order Date : {{ transaction_date }} \n-Expected Delivery Date : {{ delivery_date }}\n</pre>\n\n<h4>How to get fieldnames</h4>\n\n<p>The fieldnames you can use in your email template are the fields in the document from which you are sending the email. You can find out the fields of any documents via Setup &gt; Customize Form View and selecting the document type (e.g. Sales Invoice)</p>\n\n<h4>Templating</h4>\n\n<p>Templates are compiled using the Jinja Templating Langauge. To learn more about Jinja, <a class=\"strong\" href=\"http://jinja.pocoo.org/docs/dev/templates/\">read this documentation.</a></p>"
+   "options": "<h4>Standard Terms and Conditions Example</h4>\n\n<pre>Delivery Terms for Order number {{ name }}\n\n-Order Date : {{ transaction_date }} \n-Expected Delivery Date : {{ delivery_date }}\n</pre>\n\n<h4>How to get fieldnames</h4>\n\n<p>The fieldnames you can use in your email template are the fields in the document from which you are sending the email. You can find out the fields of any documents via Setup &gt; Customize Form View and selecting the document type (e.g. Sales Invoice)</p>\n\n<h4>Templating</h4>\n\n<p>Templates are compiled using the Jinja Templating Language. To learn more about Jinja, <a class=\"strong\" href=\"http://jinja.pocoo.org/docs/dev/templates/\">read this documentation.</a></p>"
   },
   {
    "fieldname": "applicable_modules_section",
@@ -81,7 +82,8 @@
  ],
  "icon": "icon-legal",
  "idx": 1,
- "modified": "2019-07-04 13:31:30.393425",
+ "links": [],
+ "modified": "2020-06-16 22:54:38.094844",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "Terms and Conditions",
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index e666a41..74ff0ec 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -105,3 +105,4 @@
 		"ref_doctype": "Company"
 	})
 	settings.save()
+
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index 7096c17..a7e8388 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -42,9 +42,9 @@
 
 	return {
 		"doc": decorate_quotation_doc(doc),
-		"shipping_addresses": [{"name": address.name, "display": address.display}
+		"shipping_addresses": [{"name": address.name, "title": address.address_title, "display": address.display}
 			for address in addresses if address.address_type == "Shipping"],
-		"billing_addresses": [{"name": address.name, "display": address.display}
+		"billing_addresses": [{"name": address.name, "title": address.address_title, "display": address.display}
 			for address in addresses if address.address_type == "Billing"],
 		"shipping_rules": get_applicable_shipping_rules(party),
 		"cart_settings": frappe.get_cached_doc("Shopping Cart Settings")
@@ -78,8 +78,10 @@
 
 			if is_stock_item:
 				item_stock = get_qty_in_stock(item.item_code, "website_warehouse")
+				if not cint(item_stock.in_stock):
+					throw(_("{1} Not in Stock").format(item.item_code))
 				if item.qty > item_stock.stock_qty[0][0]:
-					throw(_("Only {0} in stock for item {1}").format(item_stock.stock_qty[0][0], item.item_code))
+					throw(_("Only {0} in Stock for item {1}").format(item_stock.stock_qty[0][0], item.item_code))
 
 	sales_order.flags.ignore_permissions = True
 	sales_order.insert()
diff --git a/erpnext/stock/dashboard_fixtures.py b/erpnext/stock/dashboard_fixtures.py
index 0f1fd12..7625b1a 100644
--- a/erpnext/stock/dashboard_fixtures.py
+++ b/erpnext/stock/dashboard_fixtures.py
@@ -5,31 +5,26 @@
 import json
 from frappe import _
 from frappe.utils import nowdate
-from erpnext.accounts.utils import get_fiscal_year
+from erpnext.accounts.dashboard_fixtures import _get_fiscal_year
+from erpnext.buying.dashboard_fixtures import get_company_for_dashboards
 
 def get_data():
+	fiscal_year = _get_fiscal_year(nowdate())
+
+	if not fiscal_year:
+		return frappe._dict()
+
+	company = frappe.get_doc("Company", get_company_for_dashboards())
+	fiscal_year_name = fiscal_year.get("name")
+	start_date = str(fiscal_year.get("year_start_date"))
+	end_date = str(fiscal_year.get("year_end_date"))
+
 	return frappe._dict({
 		"dashboards": get_dashboards(),
-		"charts": get_charts(),
-		"number_cards": get_number_cards(),
+		"charts": get_charts(company, fiscal_year_name, start_date, end_date),
+		"number_cards": get_number_cards(company, fiscal_year_name, start_date, end_date),
 	})
 
-def get_company_for_dashboards():
-	company = frappe.defaults.get_defaults().company
-	if company:
-		return company
-	else:
-		company_list = frappe.get_list("Company")
-		if company_list:
-			return company_list[0].name
-	return None
-
-company = frappe.get_doc("Company", get_company_for_dashboards())
-fiscal_year = get_fiscal_year(nowdate(), as_dict=1)
-fiscal_year_name = fiscal_year.get("name")
-start_date = str(fiscal_year.get("year_start_date"))
-end_date = str(fiscal_year.get("year_end_date"))
-
 def get_dashboards():
 	return [{
 		"name": "Stock",
@@ -48,7 +43,7 @@
 		]
 	}]
 
-def get_charts():
+def get_charts(company, fiscal_year_name, start_date, end_date):
 	return [
 		{
 			"doctype": "Dashboard Chart",
@@ -133,7 +128,7 @@
 		}
 	]
 
-def get_number_cards():
+def get_number_cards(company, fiscal_year_name, start_date, end_date):
 	return [
 		{
 			"name": "Total Active Items",
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
index 467a206..44d5f69 100755
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
@@ -32,6 +32,8 @@
   "col_break_address",
   "shipping_address",
   "shipping_address_display",
+  "billing_address",
+  "billing_address_display",
   "currency_and_price_list",
   "currency",
   "conversion_rate",
@@ -130,13 +132,17 @@
   {
    "fieldname": "supplier_section",
    "fieldtype": "Section Break",
-   "options": "fa fa-user"
+   "options": "fa fa-user",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break0",
    "fieldtype": "Column Break",
    "oldfieldtype": "Column Break",
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -147,7 +153,9 @@
    "hidden": 1,
    "label": "Title",
    "no_copy": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "naming_series",
@@ -159,7 +167,9 @@
    "options": "MAT-PRE-.YYYY.-",
    "print_hide": 1,
    "reqd": 1,
-   "set_only_once": 1
+   "set_only_once": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "bold": 1,
@@ -174,6 +184,8 @@
    "print_width": "150px",
    "reqd": 1,
    "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "150px"
   },
   {
@@ -184,18 +196,24 @@
    "fieldtype": "Data",
    "in_global_search": 1,
    "label": "Supplier Name",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplier_delivery_note",
    "fieldtype": "Data",
-   "label": "Supplier Delivery Note"
+   "label": "Supplier Delivery Note",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break1",
    "fieldtype": "Column Break",
    "oldfieldtype": "Column Break",
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -210,6 +228,8 @@
    "print_width": "100px",
    "reqd": 1,
    "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "100px"
   },
   {
@@ -223,6 +243,8 @@
    "print_hide": 1,
    "print_width": "100px",
    "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "100px"
   },
   {
@@ -231,7 +253,9 @@
    "fieldname": "set_posting_time",
    "fieldtype": "Check",
    "label": "Edit Posting Date and Time",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "company",
@@ -245,6 +269,8 @@
    "print_width": "150px",
    "remember_last_selected_value": 1,
    "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "150px"
   },
   {
@@ -254,7 +280,9 @@
    "label": "Is Return",
    "no_copy": 1,
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "is_return",
@@ -264,46 +292,60 @@
    "no_copy": 1,
    "options": "Purchase Receipt",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "section_addresses",
    "fieldtype": "Section Break",
-   "label": "Address and Contact"
+   "label": "Address and Contact",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplier_address",
    "fieldtype": "Link",
    "label": "Select Supplier Address",
    "options": "Address",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_person",
    "fieldtype": "Link",
    "label": "Contact Person",
    "options": "Contact",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "address_display",
    "fieldtype": "Small Text",
    "label": "Address",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_display",
    "fieldtype": "Small Text",
    "in_global_search": 1,
    "label": "Contact",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "contact_email",
@@ -311,32 +353,42 @@
    "label": "Contact Email",
    "options": "Email",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "col_break_address",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_address",
    "fieldtype": "Link",
    "label": "Select Shipping Address",
    "options": "Address",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_address_display",
    "fieldtype": "Small Text",
    "label": "Shipping Address",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "currency_and_price_list",
    "fieldtype": "Section Break",
    "label": "Currency and Price List",
-   "options": "fa fa-tag"
+   "options": "fa fa-tag",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "currency",
@@ -346,7 +398,9 @@
    "oldfieldtype": "Select",
    "options": "Currency",
    "print_hide": 1,
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "description": "Rate at which supplier's currency is converted to company's base currency",
@@ -357,13 +411,17 @@
    "oldfieldtype": "Currency",
    "precision": "9",
    "print_hide": 1,
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break2",
    "fieldtype": "Column Break",
    "oldfieldtype": "Column Break",
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -371,7 +429,9 @@
    "fieldtype": "Link",
    "label": "Price List",
    "options": "Price List",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "buying_price_list",
@@ -380,7 +440,9 @@
    "label": "Price List Currency",
    "options": "Currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "buying_price_list",
@@ -388,7 +450,9 @@
    "fieldtype": "Float",
    "label": "Price List Exchange Rate",
    "precision": "9",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
@@ -397,11 +461,15 @@
    "label": "Ignore Pricing Rule",
    "no_copy": 1,
    "permlevel": 1,
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "sec_warehouse",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "description": "Sets 'Accepted Warehouse' in each row of the items table.",
@@ -409,7 +477,9 @@
    "fieldtype": "Link",
    "label": "Accepted Warehouse",
    "options": "Warehouse",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "description": "Sets 'Rejected Warehouse' in each row of the items table.",
@@ -420,11 +490,15 @@
    "oldfieldname": "rejected_warehouse",
    "oldfieldtype": "Link",
    "options": "Warehouse",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "col_break_warehouse",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "No",
@@ -434,7 +508,9 @@
    "oldfieldname": "is_subcontracted",
    "oldfieldtype": "Select",
    "options": "No\nYes",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:doc.is_subcontracted==\"Yes\"",
@@ -447,13 +523,17 @@
    "options": "Warehouse",
    "print_hide": 1,
    "print_width": "50px",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50px"
   },
   {
    "fieldname": "items_section",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-shopping-cart"
+   "options": "fa fa-shopping-cart",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_bulk_edit": 1,
@@ -463,20 +543,26 @@
    "oldfieldname": "purchase_receipt_details",
    "oldfieldtype": "Table",
    "options": "Purchase Receipt Item",
-   "reqd": 1
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "pricing_rule_details",
    "fieldtype": "Section Break",
-   "label": "Pricing Rules"
+   "label": "Pricing Rules",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "pricing_rules",
    "fieldtype": "Table",
    "label": "Pricing Rule Detail",
    "options": "Pricing Rule Detail",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "supplied_items",
@@ -485,7 +571,9 @@
    "label": "Get Current Stock",
    "oldfieldtype": "Button",
    "options": "get_current_stock",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -496,7 +584,9 @@
    "oldfieldtype": "Section Break",
    "options": "fa fa-table",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "supplied_items",
@@ -507,18 +597,24 @@
    "oldfieldtype": "Table",
    "options": "Purchase Receipt Item Supplied",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "section_break0",
    "fieldtype": "Section Break",
-   "oldfieldtype": "Section Break"
+   "oldfieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_qty",
    "fieldtype": "Float",
    "label": "Total Quantity",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_total",
@@ -526,7 +622,9 @@
    "label": "Total (Company Currency)",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_net_total",
@@ -539,18 +637,24 @@
    "print_width": "150px",
    "read_only": 1,
    "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "150px"
   },
   {
    "fieldname": "column_break_27",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total",
    "fieldtype": "Currency",
    "label": "Total",
    "options": "currency",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "net_total",
@@ -560,42 +664,56 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_net_weight",
    "fieldtype": "Float",
    "label": "Total Net Weight",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "description": "Add / Edit Taxes and Charges",
    "fieldname": "taxes_charges_section",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-money"
+   "options": "fa fa-money",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tax_category",
    "fieldtype": "Link",
    "label": "Tax Category",
    "options": "Tax Category",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_col",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "shipping_rule",
    "fieldtype": "Link",
    "label": "Shipping Rule",
-   "options": "Shipping Rule"
+   "options": "Shipping Rule",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_section",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges",
@@ -604,7 +722,9 @@
    "oldfieldname": "purchase_other_charges",
    "oldfieldtype": "Link",
    "options": "Purchase Taxes and Charges Template",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes",
@@ -612,13 +732,17 @@
    "label": "Purchase Taxes and Charges",
    "oldfieldname": "purchase_tax_details",
    "oldfieldtype": "Table",
-   "options": "Purchase Taxes and Charges"
+   "options": "Purchase Taxes and Charges",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "sec_tax_breakup",
    "fieldtype": "Section Break",
-   "label": "Tax Breakup"
+   "label": "Tax Breakup",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "other_charges_calculation",
@@ -627,13 +751,17 @@
    "no_copy": 1,
    "oldfieldtype": "HTML",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "totals",
    "fieldtype": "Section Break",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-money"
+   "options": "fa fa-money",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_taxes_and_charges_added",
@@ -643,7 +771,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_taxes_and_charges_deducted",
@@ -653,7 +783,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_total_taxes_and_charges",
@@ -663,12 +795,16 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break3",
    "fieldtype": "Column Break",
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -679,7 +815,9 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "taxes_and_charges_deducted",
@@ -689,7 +827,9 @@
    "oldfieldtype": "Currency",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "total_taxes_and_charges",
@@ -697,14 +837,18 @@
    "label": "Total Taxes and Charges",
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "collapsible_depends_on": "discount_amount",
    "fieldname": "section_break_42",
    "fieldtype": "Section Break",
-   "label": "Additional Discount"
+   "label": "Additional Discount",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "Grand Total",
@@ -712,7 +856,9 @@
    "fieldtype": "Select",
    "label": "Apply Additional Discount On",
    "options": "\nGrand Total\nNet Total",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_discount_amount",
@@ -720,28 +866,38 @@
    "label": "Additional Discount Amount (Company Currency)",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_44",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "additional_discount_percentage",
    "fieldtype": "Float",
    "label": "Additional Discount Percentage",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "discount_amount",
    "fieldtype": "Currency",
    "label": "Additional Discount Amount",
    "options": "currency",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "section_break_46",
-   "fieldtype": "Section Break"
+   "fieldtype": "Section Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_grand_total",
@@ -751,7 +907,9 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_rounding_adjustment",
@@ -760,7 +918,9 @@
    "no_copy": 1,
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_in_words",
@@ -769,7 +929,9 @@
    "oldfieldname": "in_words",
    "oldfieldtype": "Data",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "base_rounded_total",
@@ -779,11 +941,15 @@
    "oldfieldtype": "Currency",
    "options": "Company:company:default_currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_50",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "grand_total",
@@ -793,7 +959,9 @@
    "oldfieldname": "grand_total_import",
    "oldfieldtype": "Currency",
    "options": "currency",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "rounding_adjustment",
@@ -802,7 +970,9 @@
    "no_copy": 1,
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "depends_on": "eval:!doc.disable_rounded_total",
@@ -812,7 +982,9 @@
    "no_copy": 1,
    "options": "currency",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "in_words",
@@ -821,13 +993,17 @@
    "oldfieldname": "in_words_import",
    "oldfieldtype": "Data",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "0",
    "fieldname": "disable_rounded_total",
    "fieldtype": "Check",
-   "label": "Disable Rounded Total"
+   "label": "Disable Rounded Total",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -836,7 +1012,9 @@
    "fieldtype": "Section Break",
    "label": "Terms and Conditions",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-legal"
+   "options": "fa fa-legal",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "tc_name",
@@ -845,14 +1023,18 @@
    "oldfieldname": "tc_name",
    "oldfieldtype": "Link",
    "options": "Terms and Conditions",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "terms",
    "fieldtype": "Text Editor",
    "label": "Terms and Conditions",
    "oldfieldname": "terms",
-   "oldfieldtype": "Text Editor"
+   "oldfieldtype": "Text Editor",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "bill_no",
@@ -861,7 +1043,9 @@
    "label": "Bill No",
    "oldfieldname": "bill_no",
    "oldfieldtype": "Data",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "bill_date",
@@ -870,7 +1054,9 @@
    "label": "Bill Date",
    "oldfieldname": "bill_date",
    "oldfieldtype": "Date",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -878,7 +1064,9 @@
    "fieldtype": "Section Break",
    "label": "More Information",
    "oldfieldtype": "Section Break",
-   "options": "fa fa-file-text"
+   "options": "fa fa-file-text",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "default": "Draft",
@@ -895,6 +1083,8 @@
    "read_only": 1,
    "reqd": 1,
    "search_index": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "150px"
   },
   {
@@ -910,6 +1100,8 @@
    "print_hide": 1,
    "print_width": "150px",
    "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "150px"
   },
   {
@@ -919,7 +1111,9 @@
    "label": "Range",
    "oldfieldname": "range",
    "oldfieldtype": "Data",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break4",
@@ -927,6 +1121,8 @@
    "oldfieldtype": "Column Break",
    "print_hide": 1,
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -935,12 +1131,16 @@
    "label": "% Amount Billed",
    "no_copy": 1,
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "subscription_detail",
    "fieldtype": "Section Break",
-   "label": "Auto Repeat Detail"
+   "label": "Auto Repeat Detail",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "auto_repeat",
@@ -949,13 +1149,17 @@
    "no_copy": 1,
    "options": "Auto Repeat",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
    "fieldname": "printing_settings",
    "fieldtype": "Section Break",
-   "label": "Printing Settings"
+   "label": "Printing Settings",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -963,7 +1167,9 @@
    "fieldtype": "Link",
    "label": "Letter Head",
    "options": "Letter Head",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -975,13 +1181,17 @@
    "oldfieldtype": "Link",
    "options": "Print Heading",
    "print_hide": 1,
-   "report_hide": 1
+   "report_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "language",
    "fieldtype": "Data",
    "label": "Print Language",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "allow_on_submit": 1,
@@ -989,11 +1199,15 @@
    "fieldname": "group_same_items",
    "fieldtype": "Check",
    "label": "Group same items",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break_97",
-   "fieldtype": "Column Break"
+   "fieldtype": "Column Break",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "other_details",
@@ -1004,6 +1218,8 @@
    "options": "<div class=\"columnHeading\">Other Details</div>",
    "print_hide": 1,
    "print_width": "30%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "30%"
   },
   {
@@ -1011,13 +1227,17 @@
    "fieldtype": "Small Text",
    "label": "Instructions",
    "oldfieldname": "instructions",
-   "oldfieldtype": "Text"
+   "oldfieldtype": "Text",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "remarks",
    "fieldtype": "Small Text",
    "label": "Remarks",
-   "print_hide": 1
+   "print_hide": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "collapsible": 1,
@@ -1025,19 +1245,25 @@
    "fieldname": "transporter_info",
    "fieldtype": "Section Break",
    "label": "Transporter Details",
-   "options": "fa fa-truck"
+   "options": "fa fa-truck",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "transporter_name",
    "fieldtype": "Data",
    "label": "Transporter Name",
    "oldfieldname": "transporter_name",
-   "oldfieldtype": "Data"
+   "oldfieldtype": "Data",
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "column_break5",
    "fieldtype": "Column Break",
    "print_width": "50%",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "50%"
   },
   {
@@ -1048,6 +1274,8 @@
    "oldfieldname": "lr_no",
    "oldfieldtype": "Data",
    "print_width": "100px",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "100px"
   },
   {
@@ -1058,6 +1286,8 @@
    "oldfieldname": "lr_date",
    "oldfieldtype": "Date",
    "print_width": "100px",
+   "show_days": 1,
+   "show_seconds": 1,
    "width": "100px"
   },
   {
@@ -1066,26 +1296,48 @@
    "fieldname": "is_internal_supplier",
    "fieldtype": "Check",
    "label": "Is Internal Supplier",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "inter_company_reference",
    "fieldtype": "Link",
    "label": "Inter Company Reference",
    "options": "Delivery Note",
-   "read_only": 1
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   },
   {
    "fieldname": "scan_barcode",
    "fieldtype": "Data",
-   "label": "Scan Barcode"
+   "label": "Scan Barcode",
+   "show_days": 1,
+   "show_seconds": 1
+  },
+  {
+   "fieldname": "billing_address",
+   "fieldtype": "Link",
+   "label": "Select Billing Address",
+   "options": "Address",
+   "show_days": 1,
+   "show_seconds": 1
+  },
+  {
+   "fieldname": "billing_address_display",
+   "fieldtype": "Small Text",
+   "label": "Billing Address",
+   "read_only": 1,
+   "show_days": 1,
+   "show_seconds": 1
   }
  ],
  "icon": "fa fa-truck",
  "idx": 261,
  "is_submittable": 1,
  "links": [],
- "modified": "2020-04-18 18:02:18.020763",
+ "modified": "2020-06-13 22:26:03.600092",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Purchase Receipt",
@@ -1152,4 +1404,4 @@
  "timeline_field": "supplier",
  "title_field": "title",
  "track_changes": 1
-}
+}
\ No newline at end of file
diff --git a/erpnext/support/desk_page/support/support.json b/erpnext/support/desk_page/support/support.json
index a3fe72d..b1ad7c8 100644
--- a/erpnext/support/desk_page/support/support.json
+++ b/erpnext/support/desk_page/support/support.json
@@ -13,7 +13,7 @@
   {
    "hidden": 0,
    "label": "Service Level Agreement",
-   "links": "[\n    {\n        \"description\": \"Service Level.\",\n        \"label\": \"Service Level\",\n        \"name\": \"Service Level\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Service Level Agreement.\",\n        \"label\": \"Service Level Agreement\",\n        \"name\": \"Service Level Agreement\",\n        \"type\": \"doctype\"\n    }\n]"
+   "links": "[\n    {\n        \"description\": \"Service Level Agreement.\",\n        \"label\": \"Service Level Agreement\",\n        \"name\": \"Service Level Agreement\",\n        \"type\": \"doctype\"\n    }\n]"
   },
   {
    "hidden": 0,
@@ -43,7 +43,7 @@
  "idx": 0,
  "is_standard": 1,
  "label": "Support",
- "modified": "2020-05-28 13:51:23.869954",
+ "modified": "2020-06-04 11:54:56.124219",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Support",
@@ -65,8 +65,8 @@
    "type": "DocType"
   },
   {
-   "label": "Service Level",
-   "link_to": "Service Level",
+   "label": "Service Level Agreement",
+   "link_to": "Service Level Agreement",
    "type": "DocType"
   }
  ]
diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js
index bad40cc..e7e5bd3 100644
--- a/erpnext/support/doctype/issue/issue.js
+++ b/erpnext/support/doctype/issue/issue.js
@@ -38,10 +38,35 @@
 	},
 
 	refresh: function (frm) {
-
 		if (frm.doc.status !== "Closed" && frm.doc.agreement_fulfilled === "Ongoing") {
 			if (frm.doc.service_level_agreement) {
-				set_time_to_resolve_and_response(frm);
+				frappe.call({
+					'method': 'frappe.client.get',
+					args: {
+						doctype: 'Service Level Agreement',
+						name: frm.doc.service_level_agreement
+					},
+					callback: function(data) {
+						let statuses = data.message.pause_sla_on;
+						const hold_statuses = [];
+						$.each(statuses, (_i, entry) => {
+							hold_statuses.push(entry.status);
+						});
+						if (hold_statuses.includes(frm.doc.status)) {
+							frm.dashboard.clear_headline();
+							let message = {"indicator": "orange", "msg": __("SLA is on hold since {0}", [moment(frm.doc.on_hold_since).fromNow(true)])};
+							frm.dashboard.set_headline_alert(
+								'<div class="row">' +
+									'<div class="col-xs-12">' +
+										'<span class="indicator whitespace-nowrap '+ message.indicator +'"><span>'+ message.msg +'</span></span> ' +
+									'</div>' +
+								'</div>'
+							);
+						} else {
+							set_time_to_resolve_and_response(frm);
+						}
+					}
+				});
 			}
 
 			frm.add_custom_button(__("Close"), function () {
@@ -55,6 +80,7 @@
 					frm: frm
 				});
 			}, __("Make"));
+
 		} else {
 			if (frm.doc.service_level_agreement) {
 				frm.dashboard.clear_headline();
diff --git a/erpnext/support/doctype/issue/issue.json b/erpnext/support/doctype/issue/issue.json
index c12cef4..6525ab2 100644
--- a/erpnext/support/doctype/issue/issue.json
+++ b/erpnext/support/doctype/issue/issue.json
@@ -31,9 +31,13 @@
   "resolution_by",
   "resolution_by_variance",
   "service_level_agreement_creation",
+  "on_hold_since",
+  "total_hold_time",
   "response",
   "mins_to_first_response",
   "first_responded_on",
+  "column_break_26",
+  "avg_response_time",
   "additional_info",
   "lead",
   "contact",
@@ -50,7 +54,9 @@
   "resolution_date",
   "content_type",
   "attachment",
-  "via_customer_portal"
+  "via_customer_portal",
+  "resolution_time",
+  "user_resolution_time"
  ],
  "fields": [
   {
@@ -114,7 +120,7 @@
    "no_copy": 1,
    "oldfieldname": "status",
    "oldfieldtype": "Select",
-   "options": "Open\nReplied\nHold\nClosed",
+   "options": "Open\nReplied\nHold\nResolved\nClosed",
    "search_index": 1
   },
   {
@@ -161,6 +167,7 @@
    "options": "Service Level Agreement"
   },
   {
+   "depends_on": "eval: doc.status != 'Replied';",
    "fieldname": "response_by",
    "fieldtype": "Datetime",
    "label": "Response By",
@@ -174,6 +181,7 @@
    "read_only": 1
   },
   {
+   "depends_on": "eval: doc.status != 'Replied';",
    "fieldname": "resolution_by",
    "fieldtype": "Datetime",
    "label": "Resolution By",
@@ -328,7 +336,7 @@
    "read_only": 1
   },
   {
-   "depends_on": "eval: doc.service_level_agreement",
+   "depends_on": "eval: doc.service_level_agreement && doc.status != 'Replied';",
    "description": "in hours",
    "fieldname": "response_by_variance",
    "fieldtype": "Float",
@@ -336,7 +344,7 @@
    "read_only": 1
   },
   {
-   "depends_on": "eval: doc.service_level_agreement",
+   "depends_on": "eval: doc.service_level_agreement && doc.status != 'Replied';",
    "description": "in hours",
    "fieldname": "resolution_by_variance",
    "fieldtype": "Float",
@@ -362,12 +370,48 @@
    "label": "Issue Split From",
    "options": "Issue",
    "read_only": 1
+  },
+  {
+   "fieldname": "column_break_26",
+   "fieldtype": "Column Break"
+  },
+  {
+   "bold": 1,
+   "fieldname": "avg_response_time",
+   "fieldtype": "Duration",
+   "label": "Average Response Time",
+   "read_only": 1
+  },
+  {
+   "fieldname": "resolution_time",
+   "fieldtype": "Duration",
+   "label": "Resolution Time",
+   "read_only": 1
+  },
+  {
+   "fieldname": "user_resolution_time",
+   "fieldtype": "Duration",
+   "label": "User Resolution Time",
+   "read_only": 1
+  },
+  {
+   "fieldname": "on_hold_since",
+   "fieldtype": "Datetime",
+   "hidden": 1,
+   "label": "On Hold Since",
+   "read_only": 1
+  },
+  {
+   "fieldname": "total_hold_time",
+   "fieldtype": "Duration",
+   "label": "Total Hold Time",
+   "read_only": 1
   }
  ],
  "icon": "fa fa-ticket",
  "idx": 7,
  "links": [],
- "modified": "2020-03-13 02:19:49.477928",
+ "modified": "2020-06-10 12:47:37.146914",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Issue",
@@ -395,4 +439,4 @@
  "title_field": "subject",
  "track_changes": 1,
  "track_seen": 1
-}
+}
\ No newline at end of file
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index 117267f..883e603 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -7,7 +7,7 @@
 from frappe import _
 from frappe import utils
 from frappe.model.document import Document
-from frappe.utils import now, time_diff_in_hours, now_datetime, getdate, get_weekdays, add_to_date, today, get_time, get_datetime
+from frappe.utils import time_diff_in_hours, now_datetime, getdate, get_weekdays, add_to_date, today, get_time, get_datetime, time_diff_in_seconds, time_diff
 from datetime import datetime, timedelta
 from frappe.model.mapper import get_mapped_doc
 from frappe.utils.user import is_website_user
@@ -47,8 +47,8 @@
 				self.contact = frappe.db.get_value("Contact", {"email_id": email_id})
 
 				if self.contact:
-					contact = frappe.get_doc('Contact', self.contact)
-					self.customer = contact.get_link_for('Customer')
+					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 \
@@ -56,18 +56,70 @@
 
 	def update_status(self):
 		status = frappe.db.get_value("Issue", self.name, "status")
-		if self.status!="Open" and status =="Open" and not self.first_responded_on:
+		if self.status != "Open" and status == "Open" and not self.first_responded_on:
 			self.first_responded_on = frappe.flags.current_time or now_datetime()
 
-		if self.status=="Closed" and status !="Closed":
+		if self.status in ["Closed", "Resolved"] and status not in ["Resolved", "Closed"]:
 			self.resolution_date = frappe.flags.current_time or now_datetime()
 			if frappe.db.get_value("Issue", self.name, "agreement_fulfilled") == "Ongoing":
 				set_service_level_agreement_variance(issue=self.name)
 				self.update_agreement_status()
+			set_resolution_time(issue=self)
+			set_user_resolution_time(issue=self)
 
-		if self.status=="Open" and status !="Open":
+		if self.status == "Open" and status != "Open":
 			# if no date, it should be set as None and not a blank string "", as per mysql strict config
 			self.resolution_date = None
+			self.reset_issue_metrics()
+			# enable SLA and variance on Reopen
+			self.agreement_fulfilled = "Ongoing"
+			set_service_level_agreement_variance(issue=self.name)
+
+		self.handle_hold_time(status)
+
+	def handle_hold_time(self, status):
+		if self.service_level_agreement:
+			# set response and resolution variance as None as the issue is on Hold for status as Replied
+			pause_sla_on = frappe.db.get_all("Pause SLA On Status", fields=["status"],
+				filters={"parent": self.service_level_agreement})
+			hold_statuses = [entry.status for entry in pause_sla_on]
+			update_values = {}
+
+			if self.status in hold_statuses and status not in hold_statuses:
+				update_values['on_hold_since'] = frappe.flags.current_time or now_datetime()
+				if not self.first_responded_on:
+					update_values['response_by'] = None
+					update_values['response_by_variance'] = 0
+				update_values['resolution_by'] = None
+				update_values['resolution_by_variance'] = 0
+
+			# calculate hold time when status is changed from Replied to any other status
+			if self.status not in hold_statuses and status in hold_statuses:
+				hold_time = self.total_hold_time if self.total_hold_time else 0
+				now_time = frappe.flags.current_time or now_datetime()
+				update_values['total_hold_time'] = hold_time + time_diff_in_seconds(now_time, self.on_hold_since)
+
+			# re-calculate SLA variables after issue changes from Replied to Open
+			# add hold time to SLA variables
+			if self.status == "Open" and status in hold_statuses:
+				start_date_time = get_datetime(self.service_level_agreement_creation)
+				priority = get_priority(self)
+				now_time = frappe.flags.current_time or now_datetime()
+				hold_time = time_diff_in_seconds(now_time, self.on_hold_since)
+
+				if not self.first_responded_on:
+					response_by = get_expected_time_for(parameter="response", service_level=priority, start_date_time=start_date_time)
+					update_values['response_by'] = add_to_date(response_by, seconds=round(hold_time))
+					response_by_variance = round(time_diff_in_hours(self.response_by, now_time))
+					update_values['response_by_variance'] = response_by_variance + (hold_time // 3600)
+
+				resolution_by = get_expected_time_for(parameter="resolution", service_level=priority, start_date_time=start_date_time)
+				update_values['resolution_by'] = add_to_date(resolution_by, seconds=round(hold_time))
+				resolution_by_variance = round(time_diff_in_hours(self.resolution_by, now_time))
+				update_values['resolution_by_variance'] = resolution_by_variance + (hold_time // 3600)
+				update_values['on_hold_since'] = None
+
+			self.db_set(update_values)
 
 	def update_agreement_status(self):
 		if self.service_level_agreement and self.agreement_fulfilled == "Ongoing":
@@ -128,6 +180,7 @@
 			replicated_issue.response_by_variance = None
 			replicated_issue.resolution_by = None
 			replicated_issue.resolution_by_variance = None
+			replicated_issue.reset_issue_metrics()
 
 		frappe.get_doc(replicated_issue).insert()
 
@@ -137,7 +190,7 @@
 		communications = frappe.get_all("Communication",
 			filters={"reference_doctype": "Issue",
 				"reference_name": comm_to_split_from.reference_name,
-				"creation": ('>=', comm_to_split_from.creation)})
+				"creation": (">=", comm_to_split_from.creation)})
 
 		for communication in communications:
 			doc = frappe.get_doc("Communication", communication.name)
@@ -173,20 +226,15 @@
 		self.service_level_agreement = service_level_agreement.name
 		self.priority = service_level_agreement.default_priority if not priority else priority
 
-		service_level_agreement = frappe.get_doc("Service Level Agreement", service_level_agreement.name)
-		priority = service_level_agreement.get_service_level_agreement_priority(self.priority)
-		priority.update({
-			"support_and_resolution": service_level_agreement.support_and_resolution,
-			"holiday_list": service_level_agreement.holiday_list
-		})
+		priority = get_priority(self)
 
 		if not self.creation:
 			self.creation = now_datetime()
 			self.service_level_agreement_creation = now_datetime()
 
 		start_date_time = get_datetime(self.service_level_agreement_creation)
-		self.response_by = get_expected_time_for(parameter='response', service_level=priority, start_date_time=start_date_time)
-		self.resolution_by = get_expected_time_for(parameter='resolution', service_level=priority, start_date_time=start_date_time)
+		self.response_by = get_expected_time_for(parameter="response", service_level=priority, start_date_time=start_date_time)
+		self.resolution_by = get_expected_time_for(parameter="resolution", service_level=priority, start_date_time=start_date_time)
 
 		self.response_by_variance = round(time_diff_in_hours(self.response_by, now_datetime()))
 		self.resolution_by_variance = round(time_diff_in_hours(self.resolution_by, now_datetime()))
@@ -221,36 +269,41 @@
 		self.agreement_fulfilled = "Ongoing"
 		self.save()
 
+	def reset_issue_metrics(self):
+		self.db_set("resolution_time", None)
+		self.db_set("user_resolution_time", None)
+
+
+def get_priority(issue):
+	service_level_agreement = frappe.get_doc("Service Level Agreement", issue.service_level_agreement)
+	priority = service_level_agreement.get_service_level_agreement_priority(issue.priority)
+	priority.update({
+		"support_and_resolution": service_level_agreement.support_and_resolution,
+		"holiday_list": service_level_agreement.holiday_list
+	})
+	return priority
+
+
 def get_expected_time_for(parameter, service_level, start_date_time):
 	current_date_time = start_date_time
 	expected_time = current_date_time
 	start_time = None
 	end_time = None
 
-	# lets assume response time is in days by default
-	if parameter == 'response':
-		allotted_days = service_level.get("response_time")
-		time_period = service_level.get("response_time_period")
-	elif parameter == 'resolution':
-		allotted_days = service_level.get("resolution_time")
-		time_period = service_level.get("resolution_time_period")
+	if parameter == "response":
+		allotted_seconds = service_level.get("response_time")
+	elif parameter == "resolution":
+		allotted_seconds = service_level.get("resolution_time")
 	else:
 		frappe.throw(_("{0} parameter is invalid").format(parameter))
 
-	allotted_hours = 0
-	if time_period == 'Hour':
-		allotted_hours = allotted_days
-		allotted_days = 0
-	elif time_period == 'Week':
-		allotted_days *= 7
-
-	expected_time_is_set = 1 if allotted_days == 0 and time_period in ['Day', 'Week'] else 0
+	expected_time_is_set = 0
 
 	support_days = {}
 	for service in service_level.get("support_and_resolution"):
 		support_days[service.workday] = frappe._dict({
-			'start_time': service.start_time,
-			'end_time': service.end_time,
+			"start_time": service.start_time,
+			"end_time": service.end_time,
 		})
 
 	holidays = get_holidays(service_level.get("holiday_list"))
@@ -264,25 +317,22 @@
 				if getdate(current_date_time) == getdate(start_date_time) and get_time_in_timedelta(current_date_time.time()) > support_days[current_weekday].start_time \
 				else support_days[current_weekday].start_time
 			end_time = support_days[current_weekday].end_time
-			time_left_today = time_diff_in_hours(end_time, start_time)
+			time_left_today = time_diff_in_seconds(end_time, start_time)
 
 			# no time left for support today
-			if time_left_today < 0: pass
-			elif time_period == 'Hour':
-				if time_left_today >= allotted_hours:
+			if time_left_today <= 0: pass
+			elif allotted_seconds:
+				if time_left_today >= allotted_seconds:
 					expected_time = datetime.combine(getdate(current_date_time), get_time(start_time))
-					expected_time = add_to_date(expected_time, hours=allotted_hours)
+					expected_time = add_to_date(expected_time, seconds=allotted_seconds)
 					expected_time_is_set = 1
 				else:
-					allotted_hours = allotted_hours - time_left_today
-			else:
-				allotted_days -= 1
-				expected_time_is_set = allotted_days <= 0
+					allotted_seconds = allotted_seconds - time_left_today
 
 		if not expected_time_is_set:
 			current_date_time = add_to_date(current_date_time, days=1)
 
-	if end_time and time_period != 'Hour':
+	if end_time and allotted_seconds >= 86400:
 		current_date_time = datetime.combine(getdate(current_date_time), get_time(end_time))
 	else:
 		current_date_time = expected_time
@@ -311,6 +361,36 @@
 			if variance < 0:
 				frappe.db.set_value(dt="Issue", dn=doc.name, field="agreement_fulfilled", val="Failed", update_modified=False)
 
+
+def set_resolution_time(issue):
+	# total time taken from issue creation to closing
+	resolution_time = time_diff_in_seconds(issue.resolution_date, issue.creation)
+	issue.db_set("resolution_time", resolution_time)
+
+
+def set_user_resolution_time(issue):
+	# total time taken by a user to close the issue apart from wait_time
+	communications = frappe.get_list("Communication", filters={
+			"reference_doctype": issue.doctype,
+			"reference_name": issue.name
+		},
+		fields=["sent_or_received", "name", "creation"],
+		order_by="creation"
+	)
+
+	pending_time = []
+	for i in range(len(communications)):
+		if communications[i].sent_or_received == "Received" and communications[i-1].sent_or_received == "Sent":
+			wait_time = time_diff_in_seconds(communications[i].creation, communications[i-1].creation)
+			if wait_time > 0:
+				pending_time.append(wait_time)
+
+	total_pending_time = sum(pending_time)
+	resolution_time_in_secs = time_diff_in_seconds(issue.resolution_date, issue.creation)
+	user_resolution_time = resolution_time_in_secs - total_pending_time
+	issue.db_set("user_resolution_time", user_resolution_time)
+
+
 def get_list_context(context=None):
 	return {
 		"title": _("Issues"),
@@ -318,7 +398,7 @@
 		"row_template": "templates/includes/issue_row.html",
 		"show_sidebar": True,
 		"show_search": True,
-		'no_breadcrumbs': True
+		"no_breadcrumbs": True
 	}
 
 
@@ -326,12 +406,12 @@
 	from frappe.www.list import get_list
 
 	user = frappe.session.user
-	contact = frappe.db.get_value('Contact', {'user': user}, 'name')
+	contact = frappe.db.get_value("Contact", {"user": user}, "name")
 	customer = None
 
 	if contact:
-		contact_doc = frappe.get_doc('Contact', contact)
-		customer = contact_doc.get_link_for('Customer')
+		contact_doc = frappe.get_doc("Contact", contact)
+		customer = contact_doc.get_link_for("Customer")
 
 	ignore_permissions = False
 	if is_website_user():
diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py
index 7a5e3e3..fb8ceb5 100644
--- a/erpnext/support/doctype/issue/test_issue.py
+++ b/erpnext/support/doctype/issue/test_issue.py
@@ -5,15 +5,18 @@
 import frappe
 import unittest
 from erpnext.support.doctype.service_level_agreement.test_service_level_agreement import create_service_level_agreements_for_issues
-from frappe.utils import now_datetime, get_datetime
+from frappe.utils import now_datetime, get_datetime, flt
 import datetime
 from datetime import timedelta
 
 class TestIssue(unittest.TestCase):
-	def test_response_time_and_resolution_time_based_on_different_sla(self):
+	def setUp(self):
+		frappe.db.sql("delete from `tabService Level Agreement`")
+		frappe.db.sql("delete from `tabEmployee`")
 		frappe.db.set_value("Support Settings", None, "track_service_level_agreement", 1)
 		create_service_level_agreements_for_issues()
 
+	def test_response_time_and_resolution_time_based_on_different_sla(self):
 		creation = datetime.datetime(2019, 3, 4, 12, 0)
 
 		# make issue with customer specific SLA
@@ -72,8 +75,67 @@
 
 		self.assertEqual(issue.agreement_fulfilled, 'Fulfilled')
 
-def make_issue(creation=None, customer=None, index=0):
+	def test_issue_metrics(self):
+		creation = datetime.datetime(2020, 3, 4, 4, 0)
 
+		issue = make_issue(creation, index=1)
+		create_communication(issue.name, "test@example.com", "Received", creation)
+
+		creation = datetime.datetime(2020, 3, 4, 4, 15)
+		create_communication(issue.name, "test@admin.com", "Sent", creation)
+
+		creation = datetime.datetime(2020, 3, 4, 5, 0)
+		create_communication(issue.name, "test@example.com", "Received", creation)
+
+		creation = datetime.datetime(2020, 3, 4, 5, 5)
+		create_communication(issue.name, "test@admin.com", "Sent", creation)
+
+		frappe.flags.current_time = datetime.datetime(2020, 3, 4, 5, 5)
+		issue.reload()
+		issue.status = 'Closed'
+		issue.save()
+
+		self.assertEqual(issue.avg_response_time, 600)
+		self.assertEqual(issue.resolution_time, 3900)
+		self.assertEqual(issue.user_resolution_time, 1200)
+
+	def test_hold_time_on_replied(self):
+		creation = datetime.datetime(2020, 3, 4, 4, 0)
+
+		issue = make_issue(creation, index=1)
+		create_communication(issue.name, "test@example.com", "Received", creation)
+
+		creation = datetime.datetime(2020, 3, 4, 4, 15)
+		create_communication(issue.name, "test@admin.com", "Sent", creation)
+
+		frappe.flags.current_time = datetime.datetime(2020, 3, 4, 4, 15)
+		issue.reload()
+		issue.status = 'Replied'
+		issue.save()
+
+		self.assertEqual(issue.on_hold_since, frappe.flags.current_time)
+
+		creation = datetime.datetime(2020, 3, 4, 5, 0)
+		frappe.flags.current_time = datetime.datetime(2020, 3, 4, 5, 0)
+		create_communication(issue.name, "test@example.com", "Received", creation)
+
+		issue.reload()
+		self.assertEqual(flt(issue.total_hold_time, 2), 2700)
+		self.assertEqual(issue.resolution_by, datetime.datetime(2020, 3, 4, 16, 45))
+
+		creation = datetime.datetime(2020, 3, 4, 5, 5)
+		create_communication(issue.name, "test@admin.com", "Sent", creation)
+
+		frappe.flags.current_time = datetime.datetime(2020, 3, 4, 5, 5)
+		issue.reload()
+		issue.status = 'Closed'
+		issue.save()
+
+		issue.reload()
+		self.assertEqual(flt(issue.total_hold_time, 2), 2700)
+
+
+def make_issue(creation=None, customer=None, index=0):
 	issue = frappe.get_doc({
 		"doctype": "Issue",
 		"subject": "Service Level Agreement Issue {0}".format(index),
@@ -86,6 +148,7 @@
 
 	return issue
 
+
 def create_customer(name, customer_group, territory):
 
 	create_customer_group(customer_group)
@@ -99,6 +162,7 @@
 			"territory": territory
 		}).insert(ignore_permissions=True)
 
+
 def create_customer_group(customer_group):
 
 	if not frappe.db.exists("Customer Group", {"customer_group_name": customer_group}):
@@ -107,6 +171,7 @@
 			"customer_group_name": customer_group
 		}).insert(ignore_permissions=True)
 
+
 def create_territory(territory):
 
 	if not frappe.db.exists("Territory", {"territory_name": territory}):
@@ -114,3 +179,21 @@
 			"doctype": "Territory",
 			"territory_name": territory,
 		}).insert(ignore_permissions=True)
+
+
+def create_communication(reference_name, sender, sent_or_received, creation):
+	issue = frappe.get_doc({
+		"doctype": "Communication",
+		"communication_type": "Communication",
+		"communication_medium": "Email",
+		"sent_or_received": sent_or_received,
+		"email_status": "Open",
+		"subject": "Test Issue",
+		"sender": sender,
+		"content": "Test",
+		"status": "Linked",
+		"reference_doctype": "Issue",
+		"creation": creation,
+		"reference_name": reference_name
+	})
+	issue.save()
diff --git a/erpnext/support/doctype/service_level/__init__.py b/erpnext/support/doctype/pause_sla_on_status/__init__.py
similarity index 100%
rename from erpnext/support/doctype/service_level/__init__.py
rename to erpnext/support/doctype/pause_sla_on_status/__init__.py
diff --git a/erpnext/support/doctype/pause_sla_on_status/pause_sla_on_status.json b/erpnext/support/doctype/pause_sla_on_status/pause_sla_on_status.json
new file mode 100644
index 0000000..5b03f25
--- /dev/null
+++ b/erpnext/support/doctype/pause_sla_on_status/pause_sla_on_status.json
@@ -0,0 +1,33 @@
+{
+ "actions": [],
+ "creation": "2020-06-05 13:59:43.265588",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "status"
+ ],
+ "fields": [
+  {
+   "fieldname": "status",
+   "fieldtype": "Select",
+   "in_list_view": 1,
+   "label": "Status",
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
+  }
+ ],
+ "istable": 1,
+ "links": [],
+ "modified": "2020-06-05 15:15:29.986608",
+ "modified_by": "Administrator",
+ "module": "Support",
+ "name": "Pause SLA On Status",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/erpnext/support/doctype/pause_sla_on_status/pause_sla_on_status.py b/erpnext/support/doctype/pause_sla_on_status/pause_sla_on_status.py
new file mode 100644
index 0000000..a3b547e
--- /dev/null
+++ b/erpnext/support/doctype/pause_sla_on_status/pause_sla_on_status.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2020, 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 PauseSLAOnStatus(Document):
+	pass
diff --git a/erpnext/support/doctype/service_level/service_level.js b/erpnext/support/doctype/service_level/service_level.js
deleted file mode 100644
index abe254b..0000000
--- a/erpnext/support/doctype/service_level/service_level.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('Service Level', {
-
-});
diff --git a/erpnext/support/doctype/service_level/service_level.json b/erpnext/support/doctype/service_level/service_level.json
deleted file mode 100644
index dced3aa..0000000
--- a/erpnext/support/doctype/service_level/service_level.json
+++ /dev/null
@@ -1,111 +0,0 @@
-{
- "autoname": "field:service_level",
- "creation": "2018-11-19 12:44:30.407502",
- "doctype": "DocType",
- "editable_grid": 1,
- "engine": "InnoDB",
- "field_order": [
-  "service_level",
-  "employee_group",
-  "column_break_2",
-  "holiday_list",
-  "default_priority",
-  "response_and_resoution_time",
-  "priorities",
-  "section_break_01",
-  "support_and_resolution"
- ],
- "fields": [
-  {
-   "fieldname": "service_level",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Level",
-   "reqd": 1,
-   "unique": 1
-  },
-  {
-   "fieldname": "column_break_2",
-   "fieldtype": "Column Break"
-  },
-  {
-   "fieldname": "holiday_list",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Holiday List (ignored during SLA calculation)",
-   "options": "Holiday List",
-   "reqd": 1
-  },
-  {
-   "fieldname": "employee_group",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Employee Group",
-   "options": "Employee Group"
-  },
-  {
-   "fieldname": "response_and_resoution_time",
-   "fieldtype": "Section Break",
-   "label": "Response and Resoution Time"
-  },
-  {
-   "fieldname": "section_break_01",
-   "fieldtype": "Section Break",
-   "label": "Support Hours"
-  },
-  {
-   "fieldname": "support_and_resolution",
-   "fieldtype": "Table",
-   "label": "Support and Resolution",
-   "options": "Service Day",
-   "reqd": 1
-  },
-  {
-   "fieldname": "priorities",
-   "fieldtype": "Table",
-   "label": "Priorities",
-   "options": "Service Level Priority",
-   "reqd": 1
-  },
-  {
-   "fieldname": "default_priority",
-   "fieldtype": "Link",
-   "label": "Default Priority",
-   "options": "Issue Priority",
-   "read_only": 1
-  }
- ],
- "modified": "2019-06-06 12:58:03.464056",
- "modified_by": "Administrator",
- "module": "Support",
- "name": "Service Level",
- "owner": "Administrator",
- "permissions": [
-  {
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "export": 1,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "System Manager",
-   "share": 1,
-   "write": 1
-  },
-  {
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "export": 1,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "All",
-   "share": 1,
-   "write": 1
-  }
- ],
- "sort_field": "modified",
- "sort_order": "DESC"
-}
\ No newline at end of file
diff --git a/erpnext/support/doctype/service_level/service_level.py b/erpnext/support/doctype/service_level/service_level.py
deleted file mode 100644
index 89fa25c..0000000
--- a/erpnext/support/doctype/service_level/service_level.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2018, 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.model.document import Document
-from datetime import datetime
-from frappe.utils import get_weekdays
-
-class ServiceLevel(Document):
-
-	def validate(self):
-		self.check_priorities()
-		self.check_support_and_resolution()
-
-	def check_priorities(self):
-		default_priority = []
-		priorities = []
-
-		for priority in self.priorities:
-			# Check if response and resolution time is set for every priority
-			if not (priority.response_time or priority.resolution_time):
-				frappe.throw(_("Set Response Time and Resolution for Priority {0} at index {1}.").format(priority.priority, priority.idx))
-
-			priorities.append(priority.priority)
-
-			if priority.default_priority:
-				default_priority.append(priority.default_priority)
-
-			if priority.response_time_period == "Hour":
-				response = priority.response_time * 0.0416667
-			elif priority.response_time_period == "Day":
-				response = priority.response_time
-			elif priority.response_time_period == "Week":
-				response = priority.response_time * 7
-
-			if priority.resolution_time_period == "Hour":
-				resolution = priority.resolution_time * 0.0416667
-			elif priority.resolution_time_period == "Day":
-				resolution = priority.resolution_time
-			elif priority.resolution_time_period == "Week":
-				resolution = priority.resolution_time * 7
-
-			if response > resolution:
-				frappe.throw(_("Response Time for {0} at index {1} can't be greater than Resolution Time.").format(priority.priority, priority.idx))
-
-		# Check if repeated priority
-		if not len(set(priorities)) == len(priorities):
-			repeated_priority = get_repeated(priorities)
-			frappe.throw(_("Priority {0} has been repeated.").format(repeated_priority))
-
-		# Check if repeated default priority
-		if not len(set(default_priority)) == len(default_priority):
-			frappe.throw(_("Select only one Priority as Default."))
-
-		# set default priority from priorities
-		try:
-			self.default_priority = next(d.priority for d in self.priorities if d.default_priority)
-		except Exception:
-			frappe.throw(_("Select a Default Priority."))
-
-	def check_support_and_resolution(self):
-		week = get_weekdays()
-		support_days = []
-
-		for support_and_resolution in self.support_and_resolution:
-			# Check if start and end time is set for every support day
-			if not (support_and_resolution.start_time or support_and_resolution.end_time):
-				frappe.throw(_("Set Start Time and End Time for  \
-					Support Day {0} at index {1}.".format(support_and_resolution.workday, support_and_resolution.idx)))
-
-			support_days.append(support_and_resolution.workday)
-			support_and_resolution.idx = week.index(support_and_resolution.workday) + 1
-
-			if support_and_resolution.start_time >= support_and_resolution.end_time:
-				frappe.throw(_("Start Time can't be greater than or equal to End Time \
-					for {0}.".format(support_and_resolution.workday)))
-
-		# Check for repeated workday
-		if not len(set(support_days)) == len(support_days):
-			repeated_days = get_repeated(support_days)
-			frappe.throw(_("Workday {0} has been repeated.").format(repeated_days))
-
-def get_repeated(values):
-	unique_list = []
-	diff = []
-	for value in values:
-		if value not in unique_list:
-			unique_list.append(str(value))
-		else:
-			if value not in diff:
-				diff.append(str(value))
-	return " ".join(diff)
diff --git a/erpnext/support/doctype/service_level/service_level_dashboard.py b/erpnext/support/doctype/service_level/service_level_dashboard.py
deleted file mode 100644
index 393095e..0000000
--- a/erpnext/support/doctype/service_level/service_level_dashboard.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from frappe import _
-
-def get_data():
-	return {
-		'fieldname': 'service_level',
-		'transactions': [
-			{
-				'label': _('Service Level Agreement'),
-				'items': ['Service Level Agreement']
-			}
-		]
-	}
\ No newline at end of file
diff --git a/erpnext/support/doctype/service_level/test_service_level.py b/erpnext/support/doctype/service_level/test_service_level.py
deleted file mode 100644
index 09577df..0000000
--- a/erpnext/support/doctype/service_level/test_service_level.py
+++ /dev/null
@@ -1,149 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
-# See license.txt
-from __future__ import unicode_literals
-from erpnext.hr.doctype.employee_group.test_employee_group import make_employee_group
-from erpnext.support.doctype.issue_priority.test_issue_priority import make_priorities
-
-import frappe
-import unittest
-
-class TestServiceLevel(unittest.TestCase):
-
-	def test_service_level(self):
-		employee_group = make_employee_group()
-		make_holiday_list()
-		make_priorities()
-
-		# Default Service Level
-		test_make_service_level = create_service_level("__Test Service Level", "__Test Holiday List", employee_group, 4, 6)
-		get_make_service_level = get_service_level("__Test Service Level")
-
-		self.assertEqual(test_make_service_level.name, get_make_service_level.name)
-		self.assertEqual(test_make_service_level.holiday_list, get_make_service_level.holiday_list)
-		self.assertEqual(test_make_service_level.employee_group, get_make_service_level.employee_group)
-
-		# Service Level
-		test_make_service_level = create_service_level("_Test Service Level", "__Test Holiday List", employee_group, 2, 3)
-		get_make_service_level = get_service_level("_Test Service Level")
-
-		self.assertEqual(test_make_service_level.name, get_make_service_level.name)
-		self.assertEqual(test_make_service_level.holiday_list, get_make_service_level.holiday_list)
-		self.assertEqual(test_make_service_level.employee_group, get_make_service_level.employee_group)
-
-
-def create_service_level(service_level, holiday_list, employee_group, response_time, resolution_time):
-	sl = frappe.get_doc({
-		"doctype": "Service Level",
-		"service_level": service_level,
-		"holiday_list": holiday_list,
-		"employee_group": employee_group,
-		"priorities": [
-			{
-				"priority": "Low",
-				"response_time": response_time,
-				"response_time_period": "Hour",
-				"resolution_time": resolution_time,
-				"resolution_time_period": "Hour",
-			},
-			{
-				"priority": "Medium",
-				"response_time": response_time,
-				"default_priority": 1,
-				"response_time_period": "Hour",
-				"resolution_time": resolution_time,
-				"resolution_time_period": "Hour",
-			},
-			{
-				"priority": "High",
-				"response_time": response_time,
-				"response_time_period": "Hour",
-				"resolution_time": resolution_time,
-				"resolution_time_period": "Hour",
-			}
-		],
-		"support_and_resolution": [
-			{
-				"workday": "Monday",
-				"start_time": "10:00:00",
-				"end_time": "18:00:00",
-			},
-			{
-				"workday": "Tuesday",
-				"start_time": "10:00:00",
-				"end_time": "18:00:00",
-			},
-			{
-				"workday": "Wednesday",
-				"start_time": "10:00:00",
-				"end_time": "18:00:00",
-			},
-			{
-				"workday": "Thursday",
-				"start_time": "10:00:00",
-				"end_time": "18:00:00",
-			},
-			{
-				"workday": "Friday",
-				"start_time": "10:00:00",
-				"end_time": "18:00:00",
-			},
-			{
-				"workday": "Saturday",
-				"start_time": "10:00:00",
-				"end_time": "18:00:00",
-			},
-			{
-				"workday": "Sunday",
-				"start_time": "10:00:00",
-				"end_time": "18:00:00",
-			}
-		]
-	})
-
-	sl_exists = frappe.db.exists("Service Level", {"service_level": service_level})
-
-	if not sl_exists:
-		sl.insert()
-		return sl
-	else:
-		return frappe.get_doc("Service Level", {"service_level": service_level})
-
-def get_service_level(service_level):
-	return frappe.get_doc("Service Level", service_level)
-
-def make_holiday_list():
-	holiday_list = frappe.db.exists("Holiday List", "__Test Holiday List")
-	if not holiday_list:
-		now = frappe.utils.now_datetime()
-		holiday_list = frappe.get_doc({
-			"doctype": "Holiday List",
-			"holiday_list_name": "__Test Holiday List",
-			"from_date": "2019-01-01",
-			"to_date": "2019-12-31",
-			"holidays": [
-				{
-					"description": "Test Holiday 1",
-					"holiday_date": "2019-03-05"
-				},
-				{
-					"description": "Test Holiday 2",
-					"holiday_date": "2019-03-07"
-				},
-				{
-					"description": "Test Holiday 3",
-					"holiday_date": "2019-02-11"
-				},
-			]
-		}).insert()
-
-def create_service_level_for_sla():
-	employee_group = make_employee_group()
-	make_holiday_list()
-	make_priorities()
-
-	# Default Service Level
-	create_service_level("__Test Service Level", "__Test Holiday List", employee_group, 4, 6)
-
-	# Service Level
-	create_service_level("_Test Service Level", "__Test Holiday List", employee_group, 2, 3)
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.js b/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
index 1d486f4..5346195 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
@@ -2,28 +2,15 @@
 // For license information, please see license.txt
 
 frappe.ui.form.on('Service Level Agreement', {
-	service_level: function(frm) {
-		frm.fields_dict.support_and_resolution.grid.remove_all();
-		frappe.call({
-			"method": "frappe.client.get",
-			args: {
-				doctype: "Service Level",
-				name: frm.doc.service_level
-			},
-			callback: function(data){
-				let count = Math.max(data.message.priorities.length, data.message.support_and_resolution.length);
-				let i = 0;
-				while (i < count){
-					if (data.message.priorities[i]) {
-						frm.add_child("priorities", data.message.priorities[i]);
-					}
-					if (data.message.support_and_resolution[i]) {
-						frm.add_child("support_and_resolution", data.message.support_and_resolution[i]);
-					}
-					i++;
-				}
-				frm.refresh();
-			}
+	setup: function(frm) {
+		let allow_statuses = [];
+		const exclude_statuses = ['Open', 'Closed', 'Resolved'];
+
+		frappe.model.with_doctype('Issue', () => {
+			let statuses = frappe.meta.get_docfield('Issue', 'status', frm.doc.name).options;
+			statuses = statuses.split('\n');
+			allow_statuses = statuses.filter((status) => !exclude_statuses.includes(status));
+			frappe.meta.get_docfield('Pause SLA On Status', 'status', frm.doc.name).options = [''].concat(allow_statuses);
 		});
-	},
-});
+	}
+});
\ No newline at end of file
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
index 9a83ca7..939c199 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
@@ -1,4 +1,5 @@
 {
+ "actions": [],
  "autoname": "format:SLA-{service_level}-{####}",
  "creation": "2018-12-26 21:08:15.448812",
  "doctype": "DocType",
@@ -6,12 +7,13 @@
  "engine": "InnoDB",
  "field_order": [
   "enable",
+  "section_break_2",
   "service_level",
+  "default_priority",
   "default_service_level_agreement",
-  "holiday_list",
   "column_break_2",
   "employee_group",
-  "default_priority",
+  "holiday_list",
   "entity_section",
   "entity_type",
   "column_break_10",
@@ -21,6 +23,8 @@
   "active",
   "column_break_7",
   "end_date",
+  "section_break_18",
+  "pause_sla_on",
   "response_and_resolution_time_section",
   "priorities",
   "support_and_resolution_section_break",
@@ -28,42 +32,31 @@
  ],
  "fields": [
   {
-   "default": "0",
-   "depends_on": "eval: !doc.customer;",
-   "fieldname": "default_service_level_agreement",
-   "fieldtype": "Check",
-   "label": "Default Service Level Agreement"
-  },
-  {
    "fieldname": "service_level",
-   "fieldtype": "Link",
+   "fieldtype": "Data",
    "in_list_view": 1,
    "in_standard_filter": 1,
    "label": "Service Level",
-   "options": "Service Level",
    "reqd": 1
   },
   {
-   "fetch_from": "service_level.holiday_list",
    "fieldname": "holiday_list",
    "fieldtype": "Link",
    "label": "Holiday List",
    "options": "Holiday List",
-   "read_only": 1
+   "reqd": 1
   },
   {
    "fieldname": "column_break_2",
    "fieldtype": "Column Break"
   },
   {
-   "fetch_from": "service_level.employee_group",
    "fieldname": "employee_group",
    "fieldtype": "Link",
    "in_list_view": 1,
    "in_standard_filter": 1,
    "label": "Employee Group",
-   "options": "Employee Group",
-   "read_only": 1
+   "options": "Employee Group"
   },
   {
    "fieldname": "agreement_details_section",
@@ -103,21 +96,15 @@
    "fieldname": "support_and_resolution",
    "fieldtype": "Table",
    "label": "Support and Resolution",
-   "options": "Service Day"
+   "options": "Service Day",
+   "reqd": 1
   },
   {
    "fieldname": "priorities",
    "fieldtype": "Table",
    "label": "Priorities",
-   "options": "Service Level Priority"
-  },
-  {
-   "fetch_from": "service_level.default_priority",
-   "fieldname": "default_priority",
-   "fieldtype": "Link",
-   "label": "Default Priority",
-   "options": "Issue Priority",
-   "read_only": 1
+   "options": "Service Level Priority",
+   "reqd": 1
   },
   {
    "default": "1",
@@ -156,9 +143,38 @@
    "fieldname": "enable",
    "fieldtype": "Check",
    "label": "Enable"
+  },
+  {
+   "fieldname": "section_break_2",
+   "fieldtype": "Section Break"
+  },
+  {
+   "default": "0",
+   "fieldname": "default_service_level_agreement",
+   "fieldtype": "Check",
+   "label": "Default Service Level Agreement"
+  },
+  {
+   "fieldname": "default_priority",
+   "fieldtype": "Link",
+   "label": "Default Priority",
+   "options": "Issue Priority",
+   "read_only": 1
+  },
+  {
+   "fieldname": "section_break_18",
+   "fieldtype": "Section Break",
+   "hide_border": 1
+  },
+  {
+   "fieldname": "pause_sla_on",
+   "fieldtype": "Table",
+   "label": "Pause SLA On",
+   "options": "Pause SLA On Status"
   }
  ],
- "modified": "2019-07-09 17:22:16.402939",
+ "links": [],
+ "modified": "2020-06-10 12:30:15.050785",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Service Level Agreement",
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
index a399c58..c692315 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
@@ -6,11 +6,73 @@
 import frappe
 from frappe.model.document import Document
 from frappe import _
-from frappe.utils import getdate
+from frappe.utils import getdate, get_weekdays
 
 class ServiceLevelAgreement(Document):
 
 	def validate(self):
+		self.validate_doc()
+		self.check_priorities()
+		self.check_support_and_resolution()
+
+	def check_priorities(self):
+		default_priority = []
+		priorities = []
+
+		for priority in self.priorities:
+			# Check if response and resolution time is set for every priority
+			if not (priority.response_time or priority.resolution_time):
+				frappe.throw(_("Set Response Time and Resolution for Priority {0} at index {1}.").format(priority.priority, priority.idx))
+
+			priorities.append(priority.priority)
+
+			if priority.default_priority:
+				default_priority.append(priority.default_priority)
+
+			response = priority.response_time
+			resolution = priority.resolution_time
+
+			if response > resolution:
+				frappe.throw(_("Response Time for {0} at index {1} can't be greater than Resolution Time.").format(priority.priority, priority.idx))
+
+		# Check if repeated priority
+		if not len(set(priorities)) == len(priorities):
+			repeated_priority = get_repeated(priorities)
+			frappe.throw(_("Priority {0} has been repeated.").format(repeated_priority))
+
+		# Check if repeated default priority
+		if not len(set(default_priority)) == len(default_priority):
+			frappe.throw(_("Select only one Priority as Default."))
+
+		# set default priority from priorities
+		try:
+			self.default_priority = next(d.priority for d in self.priorities if d.default_priority)
+		except Exception:
+			frappe.throw(_("Select a Default Priority."))
+
+	def check_support_and_resolution(self):
+		week = get_weekdays()
+		support_days = []
+
+		for support_and_resolution in self.support_and_resolution:
+			# Check if start and end time is set for every support day
+			if not (support_and_resolution.start_time or support_and_resolution.end_time):
+				frappe.throw(_("Set Start Time and End Time for  \
+					Support Day {0} at index {1}.".format(support_and_resolution.workday, support_and_resolution.idx)))
+
+			support_days.append(support_and_resolution.workday)
+			support_and_resolution.idx = week.index(support_and_resolution.workday) + 1
+
+			if support_and_resolution.start_time >= support_and_resolution.end_time:
+				frappe.throw(_("Start Time can't be greater than or equal to End Time \
+					for {0}.".format(support_and_resolution.workday)))
+
+		# Check for repeated workday
+		if not len(set(support_days)) == len(support_days):
+			repeated_days = get_repeated(support_days)
+			frappe.throw(_("Workday {0} has been repeated.").format(repeated_days))
+
+	def validate_doc(self):
 		if not frappe.db.get_single_value("Support Settings", "track_service_level_agreement"):
 			frappe.throw(_("Service Level Agreement tracking is not enabled."))
 
@@ -35,9 +97,7 @@
 		return frappe._dict({
 			"priority": priority.priority,
 			"response_time": priority.response_time,
-			"response_time_period": priority.response_time_period,
-			"resolution_time": priority.resolution_time,
-			"resolution_time_period": priority.resolution_time_period
+			"resolution_time": priority.resolution_time
 		})
 
 def check_agreement_status():
@@ -110,4 +170,15 @@
 	return {
 		"priority": [priority.priority for priority in frappe.get_list("Service Level Priority", filters={"parent": name}, fields=["priority"])],
 		"service_level_agreements": [d.name for d in frappe.get_list("Service Level Agreement", filters=filters, or_filters=or_filters)]
-	}
\ No newline at end of file
+	}
+
+def get_repeated(values):
+	unique_list = []
+	diff = []
+	for value in values:
+		if value not in unique_list:
+			unique_list.append(str(value))
+		else:
+			if value not in diff:
+				diff.append(str(value))
+	return " ".join(diff)
diff --git a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py
index 4a741ea..07ef368 100644
--- a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py
+++ b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py
@@ -5,19 +5,20 @@
 
 import frappe
 import unittest
-from erpnext.support.doctype.service_level.test_service_level import create_service_level_for_sla
+from erpnext.hr.doctype.employee_group.test_employee_group import make_employee_group
+from erpnext.support.doctype.issue_priority.test_issue_priority import make_priorities
 
 class TestServiceLevelAgreement(unittest.TestCase):
-
-	def test_service_level_agreement(self):
+	def setUp(self):
+		frappe.db.sql("delete from `tabService Level Agreement`")
 		frappe.db.set_value("Support Settings", None, "track_service_level_agreement", 1)
 
-		create_service_level_for_sla()
-
+	def test_service_level_agreement(self):
 		# Default Service Level Agreement
 		create_default_service_level_agreement = create_service_level_agreement(default_service_level_agreement=1,
-			service_level="__Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-			entity_type=None, entity=None, response_time=4, resolution_time=6)
+			holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
+			entity_type=None, entity=None, response_time=14400, resolution_time=21600)
+
 		get_default_service_level_agreement = get_service_level_agreement(default_service_level_agreement=1)
 
 		self.assertEqual(create_default_service_level_agreement.name, get_default_service_level_agreement.name)
@@ -28,8 +29,8 @@
 		# Service Level Agreement for Customer
 		customer = create_customer()
 		create_customer_service_level_agreement = create_service_level_agreement(default_service_level_agreement=0,
-			service_level="_Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-			entity_type="Customer", entity=customer, response_time=2, resolution_time=3)
+			holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
+			entity_type="Customer", entity=customer, response_time=7200, resolution_time=10800)
 		get_customer_service_level_agreement = get_service_level_agreement(entity_type="Customer", entity=customer)
 
 		self.assertEqual(create_customer_service_level_agreement.name, get_customer_service_level_agreement.name)
@@ -40,8 +41,8 @@
 		# Service Level Agreement for Customer Group
 		customer_group = create_customer_group()
 		create_customer_group_service_level_agreement = create_service_level_agreement(default_service_level_agreement=0,
-			service_level="_Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-			entity_type="Customer Group", entity=customer_group, response_time=2, resolution_time=3)
+			holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
+			entity_type="Customer Group", entity=customer_group, response_time=7200, resolution_time=10800)
 		get_customer_group_service_level_agreement = get_service_level_agreement(entity_type="Customer Group", entity=customer_group)
 
 		self.assertEqual(create_customer_group_service_level_agreement.name, get_customer_group_service_level_agreement.name)
@@ -52,8 +53,8 @@
 		# Service Level Agreement for Territory
 		territory = create_territory()
 		create_territory_service_level_agreement = create_service_level_agreement(default_service_level_agreement=0,
-			service_level="_Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-			entity_type="Territory", entity=territory, response_time=2, resolution_time=3)
+			holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
+			entity_type="Territory", entity=territory, response_time=7200, resolution_time=10800)
 		get_territory_service_level_agreement = get_service_level_agreement(entity_type="Territory", entity=territory)
 
 		self.assertEqual(create_territory_service_level_agreement.name, get_territory_service_level_agreement.name)
@@ -71,14 +72,19 @@
 	service_level_agreement = frappe.get_doc("Service Level Agreement", filters)
 	return service_level_agreement
 
-def create_service_level_agreement(default_service_level_agreement, service_level, holiday_list, employee_group,
+def create_service_level_agreement(default_service_level_agreement, holiday_list, employee_group,
 	response_time, entity_type, entity, resolution_time):
 
+	employee_group = make_employee_group()
+	make_holiday_list()
+	make_priorities()
+
 	service_level_agreement = frappe.get_doc({
 		"doctype": "Service Level Agreement",
 		"enable": 1,
+		"service_level": "__Test Service Level",
 		"default_service_level_agreement": default_service_level_agreement,
-		"service_level": service_level,
+		"default_priority": "Medium",
 		"holiday_list": holiday_list,
 		"employee_group": employee_group,
 		"entity_type": entity_type,
@@ -109,6 +115,11 @@
 				"resolution_time_period": "Hour",
 			}
 		],
+		"pause_sla_on": [
+			{
+				"status": "Replied"
+			}
+		],
 		"support_and_resolution": [
 			{
 				"workday": "Monday",
@@ -167,6 +178,7 @@
 	else:
 		return frappe.get_doc("Service Level Agreement", service_level_agreement_exists)
 
+
 def create_customer():
 	customer = frappe.get_doc({
 		"doctype": "Customer",
@@ -206,23 +218,41 @@
 		return frappe.db.exists("Territory", {"territory_name": "_Test SLA Territory"})
 
 def create_service_level_agreements_for_issues():
-	create_service_level_for_sla()
-
-	create_service_level_agreement(default_service_level_agreement=1,
-		service_level="__Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-		entity_type=None, entity=None, response_time=4, resolution_time=6)
+	create_service_level_agreement(default_service_level_agreement=1, holiday_list="__Test Holiday List",
+		employee_group="_Test Employee Group", entity_type=None, entity=None, response_time=14400, resolution_time=21600)
 
 	create_customer()
-	create_service_level_agreement(default_service_level_agreement=0,
-		service_level="_Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-		entity_type="Customer", entity="_Test Customer", response_time=2, resolution_time=3)
+	create_service_level_agreement(default_service_level_agreement=0, holiday_list="__Test Holiday List",
+		employee_group="_Test Employee Group", entity_type="Customer", entity="_Test Customer", response_time=7200, resolution_time=10800)
 
 	create_customer_group()
-	create_service_level_agreement(default_service_level_agreement=0,
-		service_level="_Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-		entity_type="Customer Group", entity="_Test SLA Customer Group", response_time=2, resolution_time=3)
+	create_service_level_agreement(default_service_level_agreement=0, holiday_list="__Test Holiday List",
+		employee_group="_Test Employee Group", entity_type="Customer Group", entity="_Test SLA Customer Group", response_time=7200, resolution_time=10800)
 
 	create_territory()
-	create_service_level_agreement(default_service_level_agreement=0,
-		service_level="_Test Service Level", holiday_list="__Test Holiday List", employee_group="_Test Employee Group",
-		entity_type="Territory", entity="_Test SLA Territory", response_time=2, resolution_time=3)
+	create_service_level_agreement(default_service_level_agreement=0, holiday_list="__Test Holiday List",
+		employee_group="_Test Employee Group", entity_type="Territory", entity="_Test SLA Territory", response_time=7200, resolution_time=10800)
+
+def make_holiday_list():
+	holiday_list = frappe.db.exists("Holiday List", "__Test Holiday List")
+	if not holiday_list:
+		holiday_list = frappe.get_doc({
+			"doctype": "Holiday List",
+			"holiday_list_name": "__Test Holiday List",
+			"from_date": "2019-01-01",
+			"to_date": "2019-12-31",
+			"holidays": [
+				{
+					"description": "Test Holiday 1",
+					"holiday_date": "2019-03-05"
+				},
+				{
+					"description": "Test Holiday 2",
+					"holiday_date": "2019-03-07"
+				},
+				{
+					"description": "Test Holiday 3",
+					"holiday_date": "2019-02-11"
+				},
+			]
+		}).insert()
diff --git a/erpnext/support/doctype/service_level_priority/service_level_priority.json b/erpnext/support/doctype/service_level_priority/service_level_priority.json
index cd87a1c..65d5169 100644
--- a/erpnext/support/doctype/service_level_priority/service_level_priority.json
+++ b/erpnext/support/doctype/service_level_priority/service_level_priority.json
@@ -1,4 +1,5 @@
 {
+ "actions": [],
  "creation": "2019-05-04 05:54:03.658991",
  "doctype": "DocType",
  "editable_grid": 1,
@@ -9,10 +10,8 @@
   "default_priority",
   "sb_00",
   "response_time",
-  "response_time_period",
   "cb_00",
-  "resolution_time",
-  "resolution_time_period"
+  "resolution_time"
  ],
  "fields": [
   {
@@ -28,16 +27,11 @@
    "fieldtype": "Section Break"
   },
   {
-   "columns": 1,
-   "fieldname": "response_time",
-   "fieldtype": "Int",
-   "in_list_view": 1,
-   "label": "Response Time"
-  },
-  {
-   "columns": 1,
+   "columns": 2,
    "fieldname": "resolution_time",
-   "fieldtype": "Int",
+   "fieldtype": "Duration",
+   "hide_days": 1,
+   "hide_seconds": 1,
    "in_list_view": 1,
    "label": "Resolution Time"
   },
@@ -46,35 +40,30 @@
    "fieldtype": "Column Break"
   },
   {
-   "columns": 2,
-   "fieldname": "response_time_period",
-   "fieldtype": "Select",
-   "in_list_view": 1,
-   "label": "Response Time Period",
-   "options": "Hour\nDay\nWeek"
-  },
-  {
-   "columns": 2,
-   "fieldname": "resolution_time_period",
-   "fieldtype": "Select",
-   "in_list_view": 1,
-   "label": "Resolution Time Period",
-   "options": "Hour\nDay\nWeek"
-  },
-  {
    "fieldname": "cb_01",
    "fieldtype": "Column Break"
   },
   {
+   "columns": 1,
    "default": "0",
    "fieldname": "default_priority",
    "fieldtype": "Check",
    "in_list_view": 1,
    "label": "Default Priority"
+  },
+  {
+   "columns": 2,
+   "fieldname": "response_time",
+   "fieldtype": "Duration",
+   "hide_days": 1,
+   "hide_seconds": 1,
+   "in_list_view": 1,
+   "label": "First Response Time"
   }
  ],
  "istable": 1,
- "modified": "2019-05-21 06:54:42.674377",
+ "links": [],
+ "modified": "2020-06-10 12:45:47.545915",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Service Level Priority",
@@ -84,4 +73,4 @@
  "sort_field": "modified",
  "sort_order": "DESC",
  "track_changes": 1
-}
\ No newline at end of file
+}
diff --git a/erpnext/support/doctype/support_settings/support_settings.js b/erpnext/support/doctype/support_settings/support_settings.js
index 1d1069d..78adca8 100644
--- a/erpnext/support/doctype/support_settings/support_settings.js
+++ b/erpnext/support/doctype/support_settings/support_settings.js
@@ -3,6 +3,6 @@
 
 frappe.ui.form.on('Support Settings', {
 	refresh: function(frm) {
-
+		//
 	}
 });
diff --git a/erpnext/support/doctype/support_settings/support_settings.json b/erpnext/support/doctype/support_settings/support_settings.json
index be9e064..1c1b0c3 100644
--- a/erpnext/support/doctype/support_settings/support_settings.json
+++ b/erpnext/support/doctype/support_settings/support_settings.json
@@ -1,4 +1,5 @@
 {
+ "actions": [],
  "creation": "2017-02-17 13:07:35.686409",
  "doctype": "DocType",
  "editable_grid": 1,
@@ -122,13 +123,15 @@
   },
   {
    "default": "0",
+   "depends_on": "eval:doc.track_service_level_agreement;",
    "fieldname": "allow_resetting_service_level_agreement",
    "fieldtype": "Check",
    "label": "Allow Resetting Service Level Agreement"
   }
  ],
  "issingle": 1,
- "modified": "2019-07-10 22:52:39.663873",
+ "links": [],
+ "modified": "2020-06-05 17:56:17.491684",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Support Settings",
diff --git a/erpnext/templates/generators/item/item_configure.js b/erpnext/templates/generators/item/item_configure.js
index 5fd9011..163c955 100644
--- a/erpnext/templates/generators/item/item_configure.js
+++ b/erpnext/templates/generators/item/item_configure.js
@@ -193,14 +193,17 @@
 			filtered_items_count === 1 ?
 				filtered_items[0] : '';
 
+		// Allow Add to Cart if adding out of stock items enabled in Shopping Cart else check stock.
+		const in_stock = product_info.allow_items_not_in_stock ? 1 : product_info.in_stock;
+		const add_to_cart = `<a href data-action="btn_add_to_cart" data-item-code="${one_item}">${__('Add to cart')}</a>`;
+		const product_action =  in_stock ? add_to_cart : `<a style="color:#74808b;">${__('Not in Stock')}</a>`;
+
 		const item_add_to_cart = one_item ? `
 			<div class="alert alert-success d-flex justify-content-between align-items-center" role="alert">
 				<div>
 					<div>${one_item} ${product_info && product_info.price ? '(' + product_info.price.formatted_price_sales_uom + ')' : ''}</div>
 				</div>
-				<a href data-action="btn_add_to_cart" data-item-code="${one_item}">
-					${__('Add to cart')}
-				</a>
+				${product_action}
 			</div>
 		`: '';
 
diff --git a/erpnext/templates/generators/student_admission.html b/erpnext/templates/generators/student_admission.html
index ae70df8..8b15344 100644
--- a/erpnext/templates/generators/student_admission.html
+++ b/erpnext/templates/generators/student_admission.html
@@ -14,12 +14,12 @@
 
 {%- if introduction -%}
 <div>{{ introduction }}</div>
-{% endif %}
+{% endif %} 
 
-{%- if application_form_route -%}
+{%- if doc.enable_admission_application -%}
 <p>
 	<a class='btn btn-primary'
-	href='/{{ doc.application_form_route }}'>
+	href='/student-applicant'>
 	{{ _("Apply Now") }}</a>
 </p>
 {% endif %}
diff --git a/erpnext/templates/includes/cart/address_card.html b/erpnext/templates/includes/cart/address_card.html
index c91723e..646210e 100644
--- a/erpnext/templates/includes/cart/address_card.html
+++ b/erpnext/templates/includes/cart/address_card.html
@@ -3,7 +3,7 @@
 		<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check"><polyline points="20 6 9 17 4 12"></polyline></svg>
 	</div>
 	<div class="card-body">
-		<h5 class="card-title">{{ address.name }}</h5>
+		<h5 class="card-title">{{ address.title }}</h5>
 		<p class="card-text text-muted">
 			{{ address.display }}
 		</p>
diff --git a/erpnext/templates/includes/cart/cart_address.html b/erpnext/templates/includes/cart/cart_address.html
index 60de3af..aa25c88 100644
--- a/erpnext/templates/includes/cart/cart_address.html
+++ b/erpnext/templates/includes/cart/cart_address.html
@@ -109,7 +109,7 @@
 					reqd: 1
 				},
 				{
-					label: __('Pin Code'),
+					label: __('Postal Code'),
 					fieldname: 'pincode',
 					fieldtype: 'Data'
 				},