fix: Remove dimensions from boot
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
index 19fa9bf..cf6dc7a 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
@@ -1,6 +1,4 @@
 {
- "_comments": "[]",
- "_liked_by": "[]",
  "autoname": "field:label",
  "creation": "2019-05-04 18:13:37.002352",
  "doctype": "DocType",
@@ -10,8 +8,6 @@
   "label",
   "fieldname",
   "dimension_defaults",
-  "mandatory_for_bs",
-  "mandatory_for_pl",
   "disabled"
  ],
  "fields": [
@@ -44,25 +40,13 @@
    "read_only": 1
   },
   {
-   "default": "0",
-   "fieldname": "mandatory_for_bs",
-   "fieldtype": "Check",
-   "label": "Mandatory For Balance Sheet"
-  },
-  {
-   "default": "0",
-   "fieldname": "mandatory_for_pl",
-   "fieldtype": "Check",
-   "label": "Mandatory For Profit and Loss Account"
-  },
-  {
    "fieldname": "dimension_defaults",
    "fieldtype": "Table",
    "label": "Dimension Defaults",
    "options": "Accounting Dimension Detail"
   }
  ],
- "modified": "2019-07-16 18:00:11.365510",
+ "modified": "2019-07-17 16:49:31.134385",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounting Dimension",
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 218ab59..90cc50d 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -144,14 +144,6 @@
 
 		frappe.clear_cache(doctype=doctype)
 
-	dimension_filters = frappe.db.sql("""
-		SELECT label, fieldname, document_type
-		FROM `tabAccounting Dimension`
-		WHERE disabled = 0
-	""", as_dict=1)
-
-	return dimension_filters
-
 def get_doctypes_with_dimensions():
 	doclist = ["GL Entry", "Sales Invoice", "Purchase Invoice", "Payment Entry", "Asset",
 		"Expense Claim", "Stock Entry", "Budget", "Payroll Entry", "Delivery Note", "Sales Invoice Item", "Purchase Invoice Item",
@@ -163,9 +155,33 @@
 	return doclist
 
 def get_accounting_dimensions(as_list=True):
-	accounting_dimensions = frappe.get_all("Accounting Dimension", fields=["label", "fieldname", "mandatory_for_pl", "mandatory_for_bs", "disabled"], filters={"disabled": 0})
+	accounting_dimensions = frappe.get_all("Accounting Dimension", fields=["label", "fieldname", "disabled"])
 
 	if as_list:
 		return [d.fieldname for d in accounting_dimensions]
 	else:
 		return accounting_dimensions
+
+def get_checks_for_pl_and_bs_accounts():
+	dimensions = frappe.db.sql("""SELECT parent, company, mandatory_for_pl, mandatory_for_bs
+		FROM `tabAccounting Dimension Detail`""", as_dict=1)
+
+	return dimensions
+
+@frappe.whitelist()
+def get_dimension_filters():
+	dimension_filters = frappe.db.sql("""
+		SELECT label, fieldname, document_type
+		FROM `tabAccounting Dimension`
+		WHERE disabled = 0
+	""", as_dict=1)
+
+	default_dimensions = frappe.db.sql("""SELECT parent, company, default_dimension
+		FROM `tabAccounting Dimension Detail`""", as_dict=1)
+
+	default_dimensions_map = {}
+	for dimension in default_dimensions:
+		default_dimensions_map.setdefault(dimension['company'], {})
+		default_dimensions_map[dimension['company']][dimension['parent']] = dimension['default_dimension']
+
+	return dimension_filters, default_dimensions_map
diff --git a/erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json b/erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json
index f46a065..1ccef6c 100644
--- a/erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json
+++ b/erpnext/accounts/doctype/accounting_dimension_detail/accounting_dimension_detail.json
@@ -6,10 +6,13 @@
  "field_order": [
   "company",
   "reference_document",
-  "default_dimension"
+  "default_dimension",
+  "mandatory_for_bs",
+  "mandatory_for_pl"
  ],
  "fields": [
   {
+   "columns": 2,
    "fieldname": "company",
    "fieldtype": "Link",
    "in_list_view": 1,
@@ -26,16 +29,33 @@
    "read_only": 1
   },
   {
+   "columns": 2,
    "fieldname": "default_dimension",
    "fieldtype": "Dynamic Link",
    "in_list_view": 1,
    "label": "Default Dimension",
    "options": "reference_document",
    "reqd": 1
+  },
+  {
+   "columns": 3,
+   "default": "0",
+   "fieldname": "mandatory_for_bs",
+   "fieldtype": "Check",
+   "in_list_view": 1,
+   "label": "Mandatory For Balance Sheet"
+  },
+  {
+   "columns": 3,
+   "default": "0",
+   "fieldname": "mandatory_for_pl",
+   "fieldtype": "Check",
+   "in_list_view": 1,
+   "label": "Mandatory For Profit and Loss Account"
   }
  ],
  "istable": 1,
- "modified": "2019-07-16 18:54:52.202378",
+ "modified": "2019-07-17 23:34:33.026883",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounting Dimension Detail",
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 84276ea..80e5186 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -12,7 +12,7 @@
 from erpnext.accounts.utils import get_account_currency
 from erpnext.accounts.utils import get_fiscal_year
 from erpnext.exceptions import InvalidAccountCurrency
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_checks_for_pl_and_bs_accounts
 
 exclude_from_linked_with = True
 class GLEntry(Document):
@@ -86,19 +86,19 @@
 
 		account_type = frappe.db.get_value("Account", self.account, "report_type")
 
-		for dimension in get_accounting_dimensions(as_list=False):
+		for dimension in get_checks_for_pl_and_bs_accounts():
 
 			if account_type == "Profit and Loss" \
-				and dimension.mandatory_for_pl and not dimension.disabled:
-				if not self.get(dimension.fieldname):
+				and self.company == dimension.company and dimension.mandatory_for_pl and not dimension.disabled:
+				if not self.get(frappe.scrub(dimension.parent)):
 					frappe.throw(_("Accounting Dimension <b>{0}</b> is required for 'Profit and Loss' account {1}.")
-						.format(dimension.label, self.account))
+						.format(dimension.parent, self.account))
 
 			if account_type == "Balance Sheet" \
-				and dimension.mandatory_for_bs and not dimension.disabled:
-				if not self.get(dimension.fieldname):
+				and self.company == dimension.company and dimension.mandatory_for_bs and not dimension.disabled:
+				if not self.get(frappe.scrub(dimension.parent)):
 					frappe.throw(_("Accounting Dimension <b>{0}</b> is required for 'Balance Sheet' account {1}.")
-						.format(dimension.label, self.account))
+						.format(dimension.parent, self.account))
 
 
 	def check_pl_account(self):
diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js
index 5e07d08..8eb670de 100644
--- a/erpnext/accounts/report/accounts_payable/accounts_payable.js
+++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js
@@ -115,7 +115,7 @@
 	}
 }
 
-frappe.boot.dimension_filters.forEach((dimension) => {
+erpnext.dimension_filters.forEach((dimension) => {
 	frappe.query_reports["Accounts Payable"].filters.splice(9, 0 ,{
 		"fieldname": dimension["fieldname"],
 		"label": __(dimension["label"]),
diff --git a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
index 426de67..5f0fdc9 100644
--- a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
+++ b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
@@ -99,7 +99,7 @@
 	}
 }
 
-frappe.boot.dimension_filters.forEach((dimension) => {
+erpnext.dimension_filters.forEach((dimension) => {
 	frappe.query_reports["Accounts Payable Summary"].filters.splice(9, 0 ,{
 		"fieldname": dimension["fieldname"],
 		"label": __(dimension["label"]),
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
index 816e438..4551973 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
@@ -173,7 +173,7 @@
 	}
 }
 
-frappe.boot.dimension_filters.forEach((dimension) => {
+erpnext.dimension_filters.forEach((dimension) => {
 	frappe.query_reports["Accounts Receivable"].filters.splice(9, 0 ,{
 		"fieldname": dimension["fieldname"],
 		"label": __(dimension["label"]),
diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
index d63af8b..0120608 100644
--- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
+++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
@@ -117,7 +117,7 @@
 	}
 }
 
-frappe.boot.dimension_filters.forEach((dimension) => {
+erpnext.dimension_filters.forEach((dimension) => {
 	frappe.query_reports["Accounts Receivable Summary"].filters.splice(9, 0 ,{
 		"fieldname": dimension["fieldname"],
 		"label": __(dimension["label"]),
diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
index 33dc555..2451187 100644
--- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
+++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
@@ -63,7 +63,7 @@
 	]
 }
 
-frappe.boot.dimension_filters.forEach((dimension) => {
+erpnext.dimension_filters.forEach((dimension) => {
 	frappe.query_reports["Budget Variance Report"].filters[4].options.push(dimension["document_type"]);
 });
 
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js
index 74a1ea7..4a28706 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.js
+++ b/erpnext/accounts/report/general_ledger/general_ledger.js
@@ -159,7 +159,7 @@
 	]
 }
 
-frappe.boot.dimension_filters.forEach((dimension) => {
+erpnext.dimension_filters.forEach((dimension) => {
 	frappe.query_reports["General Ledger"].filters.splice(15, 0 ,{
 		"fieldname": dimension["fieldname"],
 		"label": __(dimension["label"]),
diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
index 2656a7e..889ede5 100644
--- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
+++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
@@ -105,7 +105,7 @@
 		"initial_depth": 3
 	}
 
-	frappe.boot.dimension_filters.forEach((dimension) => {
+	erpnext.dimension_filters.forEach((dimension) => {
 		frappe.query_reports["Profitability Analysis"].filters[1].options.push(dimension["document_type"]);
 	});
 
diff --git a/erpnext/accounts/report/sales_register/sales_register.js b/erpnext/accounts/report/sales_register/sales_register.js
index 105f5a2..9dee656 100644
--- a/erpnext/accounts/report/sales_register/sales_register.js
+++ b/erpnext/accounts/report/sales_register/sales_register.js
@@ -68,7 +68,7 @@
 	]
 }
 
-frappe.boot.dimension_filters.forEach((dimension) => {
+erpnext.dimension_filters.forEach((dimension) => {
 	frappe.query_reports["Sales Register"].filters.splice(7, 0 ,{
 		"fieldname": dimension["fieldname"],
 		"label": __(dimension["label"]),
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.js b/erpnext/accounts/report/trial_balance/trial_balance.js
index dc6d07e..f15b5b1 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.js
+++ b/erpnext/accounts/report/trial_balance/trial_balance.js
@@ -95,7 +95,7 @@
 		"initial_depth": 3
 	}
 
-	frappe.boot.dimension_filters.forEach((dimension) => {
+	erpnext.dimension_filters.forEach((dimension) => {
 		frappe.query_reports["Trial Balance"].filters.splice(5, 0 ,{
 			"fieldname": dimension["fieldname"],
 			"label": __(dimension["label"]),
diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js
index 5feedd3..63e057c 100644
--- a/erpnext/public/js/financial_statements.js
+++ b/erpnext/public/js/financial_statements.js
@@ -129,7 +129,7 @@
 		}
 	]
 
-	frappe.boot.dimension_filters.forEach((dimension) => {
+	erpnext.dimension_filters.forEach((dimension) => {
 		filters.push({
 			"fieldname": dimension["fieldname"],
 			"label": __(dimension["label"]),
diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js
index 22b4834..9d4c435 100644
--- a/erpnext/public/js/utils/dimension_tree_filter.js
+++ b/erpnext/public/js/utils/dimension_tree_filter.js
@@ -7,10 +7,18 @@
 	"Landed Cost Item", "Asset Value Adjustment", "Loyalty Program", "Fee Schedule", "Fee Structure", "Stock Reconciliation",
 	"Travel Request", "Fees", "POS Profile"];
 
+frappe.call({
+	method: "erpnext.accounts.doctype.accounting_dimension.accounting_dimension.get_dimension_filters",
+	callback: function(r){
+		erpnext.dimension_filters = r.message[0];
+		erpnext.default_dimensions = r.message[1];
+	}
+});
+
 erpnext.doctypes_with_dimensions.forEach((doctype) => {
 	frappe.ui.form.on(doctype, {
 		onload: function(frm) {
-			frappe.boot.dimension_filters.forEach((dimension) => {
+			erpnext.dimension_filters.forEach((dimension) => {
 				frappe.model.with_doctype(dimension['document_type'], () => {
 					if (frappe.meta.has_field(dimension['document_type'], 'is_group')) {
 						frm.set_query(dimension['fieldname'], {
@@ -23,21 +31,21 @@
 
 		company: function(frm) {
 			if(frm.doc.company) {
-				frappe.boot.dimension_filters.forEach((dimension) => {
-					frm.set_value(dimension['fieldname'], frappe.boot.default_dimensions[frm.doc.company][dimension['document_type']]);
+				erpnext.dimension_filters.forEach((dimension) => {
+					frm.set_value(dimension['fieldname'], erpnext.default_dimensions[frm.doc.company][dimension['document_type']]);
 				});
 			}
 		},
 
 		items_add: function(frm, cdt, cdn) {
-			frappe.boot.dimension_filters.forEach((dimension) => {
+			erpnext.dimension_filters.forEach((dimension) => {
 				var row = frappe.get_doc(cdt, cdn);
 				frm.script_manager.copy_from_first_row("items", row, [dimension['fieldname']]);
 			});
 		},
 
 		accounts_add: function(frm, cdt, cdn) {
-			frappe.boot.dimension_filters.forEach((dimension) => {
+			erpnext.dimension_filters.forEach((dimension) => {
 				var row = frappe.get_doc(cdt, cdn);
 				frm.script_manager.copy_from_first_row("accounts", row, [dimension['fieldname']]);
 			});
diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py
index 7d70cc2..4ca43a8 100644
--- a/erpnext/startup/boot.py
+++ b/erpnext/startup/boot.py
@@ -39,8 +39,6 @@
 
 		party_account_types = frappe.db.sql(""" select name, ifnull(account_type, '') from `tabParty Type`""")
 		bootinfo.party_account_types = frappe._dict(party_account_types)
-		load_dimension_filters(bootinfo)
-		load_default_dimensions(bootinfo)
 
 def load_country_and_currency(bootinfo):
 	country = frappe.db.get_default("country")
@@ -51,22 +49,6 @@
 		number_format, smallest_currency_fraction_value, symbol from tabCurrency
 		where enabled=1""", as_dict=1, update={"doctype":":Currency"})
 
-def load_dimension_filters(bootinfo):
-	bootinfo.dimension_filters = frappe.db.sql("""
-		SELECT label, fieldname, document_type
-		FROM `tabAccounting Dimension`
-		WHERE disabled = 0
-	""", as_dict=1)
-
-def load_default_dimensions(bootinfo):
-	default_dimensions = frappe.db.sql("""SELECT parent, company, default_dimension
-		FROM `tabAccounting Dimension Detail`""", as_dict=1)
-
-	bootinfo.default_dimensions = {}
-	for dimension in default_dimensions:
-		bootinfo.default_dimensions.setdefault(dimension['company'], {})
-		bootinfo.default_dimensions[dimension['company']][dimension['parent']] = dimension['default_dimension']
-
 def update_page_info(bootinfo):
 	bootinfo.page_info.update({
 		"Chart of Accounts": {