diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.js b/erpnext/accounts/report/balance_sheet/balance_sheet.js
index ecc13d7..c2b57f7 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.js
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.js
@@ -1,25 +1,23 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-frappe.require("assets/erpnext/js/financial_statements.js", function () {
-	frappe.query_reports["Balance Sheet"] = $.extend(
-		{},
-		erpnext.financial_statements
-	);
+frappe.query_reports["Balance Sheet"] = $.extend(
+	{},
+	erpnext.financial_statements
+);
 
-	erpnext.utils.add_dimensions("Balance Sheet", 10);
+erpnext.utils.add_dimensions("Balance Sheet", 10);
 
-	frappe.query_reports["Balance Sheet"]["filters"].push({
-		fieldname: "accumulated_values",
-		label: __("Accumulated Values"),
-		fieldtype: "Check",
-		default: 1,
-	});
+frappe.query_reports["Balance Sheet"]["filters"].push({
+	fieldname: "accumulated_values",
+	label: __("Accumulated Values"),
+	fieldtype: "Check",
+	default: 1,
+});
 
-	frappe.query_reports["Balance Sheet"]["filters"].push({
-		fieldname: "include_default_book_entries",
-		label: __("Include Default Book Entries"),
-		fieldtype: "Check",
-		default: 1,
-	});
+frappe.query_reports["Balance Sheet"]["filters"].push({
+	fieldname: "include_default_book_entries",
+	label: __("Include Default Book Entries"),
+	fieldtype: "Check",
+	default: 1,
 });
diff --git a/erpnext/accounts/report/cash_flow/cash_flow.js b/erpnext/accounts/report/cash_flow/cash_flow.js
index a2c34c6..6b8ed27 100644
--- a/erpnext/accounts/report/cash_flow/cash_flow.js
+++ b/erpnext/accounts/report/cash_flow/cash_flow.js
@@ -1,24 +1,24 @@
 // Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
 
-frappe.require("assets/erpnext/js/financial_statements.js", function() {
-	frappe.query_reports["Cash Flow"] = $.extend({},
-		erpnext.financial_statements);
+frappe.query_reports["Cash Flow"] = $.extend(
+	{},
+	erpnext.financial_statements
+);
 
-	erpnext.utils.add_dimensions('Cash Flow', 10);
+erpnext.utils.add_dimensions('Cash Flow', 10);
 
-	// The last item in the array is the definition for Presentation Currency
-	// filter. It won't be used in cash flow for now so we pop it. Please take
-	// of this if you are working here.
+// The last item in the array is the definition for Presentation Currency
+// filter. It won't be used in cash flow for now so we pop it. Please take
+// of this if you are working here.
 
-	frappe.query_reports["Cash Flow"]["filters"].splice(8, 1);
+frappe.query_reports["Cash Flow"]["filters"].splice(8, 1);
 
-	frappe.query_reports["Cash Flow"]["filters"].push(
-		{
-			"fieldname": "include_default_book_entries",
-			"label": __("Include Default Book Entries"),
-			"fieldtype": "Check",
-			"default": 1
-		}
-	);
-});
+frappe.query_reports["Cash Flow"]["filters"].push(
+	{
+		"fieldname": "include_default_book_entries",
+		"label": __("Include Default Book Entries"),
+		"fieldtype": "Check",
+		"default": 1
+	}
+);
diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
index 1afa8d5..590408c 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
@@ -2,152 +2,150 @@
 // For license information, please see license.txt
 
 
-frappe.require("assets/erpnext/js/financial_statements.js", function() {
-	frappe.query_reports["Consolidated Financial Statement"] = {
-		"filters": [
-			{
-				"fieldname":"company",
-				"label": __("Company"),
-				"fieldtype": "Link",
-				"options": "Company",
-				"default": frappe.defaults.get_user_default("Company"),
-				"reqd": 1
-			},
-			{
-				"fieldname":"filter_based_on",
-				"label": __("Filter Based On"),
-				"fieldtype": "Select",
-				"options": ["Fiscal Year", "Date Range"],
-				"default": ["Fiscal Year"],
-				"reqd": 1,
-				on_change: function() {
-					let filter_based_on = frappe.query_report.get_filter_value('filter_based_on');
-					frappe.query_report.toggle_filter_display('from_fiscal_year', filter_based_on === 'Date Range');
-					frappe.query_report.toggle_filter_display('to_fiscal_year', filter_based_on === 'Date Range');
-					frappe.query_report.toggle_filter_display('period_start_date', filter_based_on === 'Fiscal Year');
-					frappe.query_report.toggle_filter_display('period_end_date', filter_based_on === 'Fiscal Year');
-
-					frappe.query_report.refresh();
-				}
-			},
-			{
-				"fieldname":"period_start_date",
-				"label": __("Start Date"),
-				"fieldtype": "Date",
-				"hidden": 1,
-				"reqd": 1
-			},
-			{
-				"fieldname":"period_end_date",
-				"label": __("End Date"),
-				"fieldtype": "Date",
-				"hidden": 1,
-				"reqd": 1
-			},
-			{
-				"fieldname":"from_fiscal_year",
-				"label": __("Start Year"),
-				"fieldtype": "Link",
-				"options": "Fiscal Year",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
-				"reqd": 1,
-				on_change: () => {
-					frappe.model.with_doc("Fiscal Year", frappe.query_report.get_filter_value('from_fiscal_year'), function(r) {
-						let year_start_date = frappe.model.get_value("Fiscal Year", frappe.query_report.get_filter_value('from_fiscal_year'), "year_start_date");
-						frappe.query_report.set_filter_value({
-							period_start_date: year_start_date
-						});
-					});
-				}
-			},
-			{
-				"fieldname":"to_fiscal_year",
-				"label": __("End Year"),
-				"fieldtype": "Link",
-				"options": "Fiscal Year",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
-				"reqd": 1,
-				on_change: () => {
-					frappe.model.with_doc("Fiscal Year", frappe.query_report.get_filter_value('to_fiscal_year'), function(r) {
-						let year_end_date = frappe.model.get_value("Fiscal Year", frappe.query_report.get_filter_value('to_fiscal_year'), "year_end_date");
-						frappe.query_report.set_filter_value({
-							period_end_date: year_end_date
-						});
-					});
-				}
-			},
-			{
-				"fieldname":"finance_book",
-				"label": __("Finance Book"),
-				"fieldtype": "Link",
-				"options": "Finance Book"
-			},
-			{
-				"fieldname":"report",
-				"label": __("Report"),
-				"fieldtype": "Select",
-				"options": ["Profit and Loss Statement", "Balance Sheet", "Cash Flow"],
-				"default": "Balance Sheet",
-				"reqd": 1
-			},
-			{
-				"fieldname": "presentation_currency",
-				"label": __("Currency"),
-				"fieldtype": "Select",
-				"options": erpnext.get_presentation_currency_list(),
-				"default": frappe.defaults.get_user_default("Currency")
-			},
-			{
-				"fieldname":"accumulated_in_group_company",
-				"label": __("Accumulated Values in Group Company"),
-				"fieldtype": "Check",
-				"default": 0
-			},
-			{
-				"fieldname": "include_default_book_entries",
-				"label": __("Include Default Book Entries"),
-				"fieldtype": "Check",
-				"default": 1
-			},
-			{
-				"fieldname": "show_zero_values",
-				"label": __("Show zero values"),
-				"fieldtype": "Check"
-			}
-		],
-		"formatter": function(value, row, column, data, default_formatter) {
-			if (data && column.fieldname=="account") {
-				value = data.account_name || value;
-
-				column.link_onclick =
-				"erpnext.financial_statements.open_general_ledger(" + JSON.stringify(data) + ")";
-				column.is_tree = true;
-			}
-
-			if (data && data.account && column.apply_currency_formatter) {
-				data.currency = erpnext.get_currency(column.company_name);
-			}
-
-			value = default_formatter(value, row, column, data);
-			if (!data.parent_account) {
-				value = $(`<span>${value}</span>`);
-
-				var $value = $(value).css("font-weight", "bold");
-
-				value = $value.wrap("<p></p>").parent().html();
-			}
-			return value;
+frappe.query_reports["Consolidated Financial Statement"] = {
+	"filters": [
+		{
+			"fieldname":"company",
+			"label": __("Company"),
+			"fieldtype": "Link",
+			"options": "Company",
+			"default": frappe.defaults.get_user_default("Company"),
+			"reqd": 1
 		},
-		onload: function() {
-			let fiscal_year = erpnext.utils.get_fiscal_year(frappe.datetime.get_today());
+		{
+			"fieldname":"filter_based_on",
+			"label": __("Filter Based On"),
+			"fieldtype": "Select",
+			"options": ["Fiscal Year", "Date Range"],
+			"default": ["Fiscal Year"],
+			"reqd": 1,
+			on_change: function() {
+				let filter_based_on = frappe.query_report.get_filter_value('filter_based_on');
+				frappe.query_report.toggle_filter_display('from_fiscal_year', filter_based_on === 'Date Range');
+				frappe.query_report.toggle_filter_display('to_fiscal_year', filter_based_on === 'Date Range');
+				frappe.query_report.toggle_filter_display('period_start_date', filter_based_on === 'Fiscal Year');
+				frappe.query_report.toggle_filter_display('period_end_date', filter_based_on === 'Fiscal Year');
 
-			frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
-				var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
-				frappe.query_report.set_filter_value({
-					period_start_date: fy.year_start_date,
-					period_end_date: fy.year_end_date
+				frappe.query_report.refresh();
+			}
+		},
+		{
+			"fieldname":"period_start_date",
+			"label": __("Start Date"),
+			"fieldtype": "Date",
+			"hidden": 1,
+			"reqd": 1
+		},
+		{
+			"fieldname":"period_end_date",
+			"label": __("End Date"),
+			"fieldtype": "Date",
+			"hidden": 1,
+			"reqd": 1
+		},
+		{
+			"fieldname":"from_fiscal_year",
+			"label": __("Start Year"),
+			"fieldtype": "Link",
+			"options": "Fiscal Year",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
+			"reqd": 1,
+			on_change: () => {
+				frappe.model.with_doc("Fiscal Year", frappe.query_report.get_filter_value('from_fiscal_year'), function(r) {
+					let year_start_date = frappe.model.get_value("Fiscal Year", frappe.query_report.get_filter_value('from_fiscal_year'), "year_start_date");
+					frappe.query_report.set_filter_value({
+						period_start_date: year_start_date
+					});
 				});
-			});
+			}
+		},
+		{
+			"fieldname":"to_fiscal_year",
+			"label": __("End Year"),
+			"fieldtype": "Link",
+			"options": "Fiscal Year",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
+			"reqd": 1,
+			on_change: () => {
+				frappe.model.with_doc("Fiscal Year", frappe.query_report.get_filter_value('to_fiscal_year'), function(r) {
+					let year_end_date = frappe.model.get_value("Fiscal Year", frappe.query_report.get_filter_value('to_fiscal_year'), "year_end_date");
+					frappe.query_report.set_filter_value({
+						period_end_date: year_end_date
+					});
+				});
+			}
+		},
+		{
+			"fieldname":"finance_book",
+			"label": __("Finance Book"),
+			"fieldtype": "Link",
+			"options": "Finance Book"
+		},
+		{
+			"fieldname":"report",
+			"label": __("Report"),
+			"fieldtype": "Select",
+			"options": ["Profit and Loss Statement", "Balance Sheet", "Cash Flow"],
+			"default": "Balance Sheet",
+			"reqd": 1
+		},
+		{
+			"fieldname": "presentation_currency",
+			"label": __("Currency"),
+			"fieldtype": "Select",
+			"options": erpnext.get_presentation_currency_list(),
+			"default": frappe.defaults.get_user_default("Currency")
+		},
+		{
+			"fieldname":"accumulated_in_group_company",
+			"label": __("Accumulated Values in Group Company"),
+			"fieldtype": "Check",
+			"default": 0
+		},
+		{
+			"fieldname": "include_default_book_entries",
+			"label": __("Include Default Book Entries"),
+			"fieldtype": "Check",
+			"default": 1
+		},
+		{
+			"fieldname": "show_zero_values",
+			"label": __("Show zero values"),
+			"fieldtype": "Check"
 		}
+	],
+	"formatter": function(value, row, column, data, default_formatter) {
+		if (data && column.fieldname=="account") {
+			value = data.account_name || value;
+
+			column.link_onclick =
+				"erpnext.financial_statements.open_general_ledger(" + JSON.stringify(data) + ")";
+			column.is_tree = true;
+		}
+
+		if (data && data.account && column.apply_currency_formatter) {
+			data.currency = erpnext.get_currency(column.company_name);
+		}
+
+		value = default_formatter(value, row, column, data);
+		if (!data.parent_account) {
+			value = $(`<span>${value}</span>`);
+
+			var $value = $(value).css("font-weight", "bold");
+
+			value = $value.wrap("<p></p>").parent().html();
+		}
+		return value;
+	},
+	onload: function() {
+		let fiscal_year = erpnext.utils.get_fiscal_year(frappe.datetime.get_today());
+
+		frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
+			var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
+			frappe.query_report.set_filter_value({
+				period_start_date: fy.year_start_date,
+				period_end_date: fy.year_end_date
+			});
+		});
 	}
-});
+}
diff --git a/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js b/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js
index 79e5a09..51fa8c8 100644
--- a/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js
+++ b/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js
@@ -2,83 +2,81 @@
 // For license information, please see license.txt
 
 
-frappe.require("assets/erpnext/js/financial_statements.js", function() {
-	frappe.query_reports["Dimension-wise Accounts Balance Report"] = {
-		"filters": [
-			{
-				"fieldname": "company",
-				"label": __("Company"),
-				"fieldtype": "Link",
-				"options": "Company",
-				"default": frappe.defaults.get_user_default("Company"),
-				"reqd": 1
-			},
-			{
-				"fieldname": "fiscal_year",
-				"label": __("Fiscal Year"),
-				"fieldtype": "Link",
-				"options": "Fiscal Year",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
-				"reqd": 1,
-				"on_change": function(query_report) {
-					var fiscal_year = query_report.get_values().fiscal_year;
-					if (!fiscal_year) {
-						return;
-					}
-					frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
-						var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
-						frappe.query_report.set_filter_value({
-							from_date: fy.year_start_date,
-							to_date: fy.year_end_date
-						});
-					});
+frappe.query_reports["Dimension-wise Accounts Balance Report"] = {
+	"filters": [
+		{
+			"fieldname": "company",
+			"label": __("Company"),
+			"fieldtype": "Link",
+			"options": "Company",
+			"default": frappe.defaults.get_user_default("Company"),
+			"reqd": 1
+		},
+		{
+			"fieldname": "fiscal_year",
+			"label": __("Fiscal Year"),
+			"fieldtype": "Link",
+			"options": "Fiscal Year",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
+			"reqd": 1,
+			"on_change": function(query_report) {
+				var fiscal_year = query_report.get_values().fiscal_year;
+				if (!fiscal_year) {
+					return;
 				}
-			},
-			{
-				"fieldname": "from_date",
-				"label": __("From Date"),
-				"fieldtype": "Date",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
-				"reqd": 1
-			},
-			{
-				"fieldname": "to_date",
-				"label": __("To Date"),
-				"fieldtype": "Date",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
-				"reqd": 1
-			},
-			{
-				"fieldname": "finance_book",
-				"label": __("Finance Book"),
-				"fieldtype": "Link",
-				"options": "Finance Book",
-			},
-			{
-				"fieldname": "dimension",
-				"label": __("Select Dimension"),
-				"fieldtype": "Select",
-				"default": "Cost Center",
-				"options": get_accounting_dimension_options(),
-				"reqd": 1,
-			},
-		],
-		"formatter": erpnext.financial_statements.formatter,
-		"tree": true,
-		"name_field": "account",
-		"parent_field": "parent_account",
-		"initial_depth": 3
-	}
+				frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
+					var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
+					frappe.query_report.set_filter_value({
+						from_date: fy.year_start_date,
+						to_date: fy.year_end_date
+					});
+				});
+			}
+		},
+		{
+			"fieldname": "from_date",
+			"label": __("From Date"),
+			"fieldtype": "Date",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
+			"reqd": 1
+		},
+		{
+			"fieldname": "to_date",
+			"label": __("To Date"),
+			"fieldtype": "Date",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
+			"reqd": 1
+		},
+		{
+			"fieldname": "finance_book",
+			"label": __("Finance Book"),
+			"fieldtype": "Link",
+			"options": "Finance Book",
+		},
+		{
+			"fieldname": "dimension",
+			"label": __("Select Dimension"),
+			"fieldtype": "Select",
+			"default": "Cost Center",
+			"options": get_accounting_dimension_options(),
+			"reqd": 1,
+		},
+	],
+	"formatter": erpnext.financial_statements.formatter,
+	"tree": true,
+	"name_field": "account",
+	"parent_field": "parent_account",
+	"initial_depth": 3
+}
 
-});
 
 function get_accounting_dimension_options() {
 	let options =["Cost Center", "Project"];
 	frappe.db.get_list('Accounting Dimension',
-		{fields:['document_type']}).then((res) => {
-			res.forEach((dimension) => {
-				options.push(dimension.document_type);
-			});
-		});
+			   {fields:['document_type']}).then((res) => {
+				   res.forEach((dimension) => {
+					   options.push(dimension.document_type);
+				   });
+			   });
 	return options
 }
diff --git a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js
index f6b0b8c..40d4259 100644
--- a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js
+++ b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js
@@ -2,20 +2,15 @@
 // For license information, please see license.txt
 
 
-frappe.query_reports["Gross and Net Profit Report"] = {
-	"filters": [
+frappe.query_reports["Gross and Net Profit Report"] = $.extend(
+	{},
+	erpnext.financial_statements
+);
 
-	]
-}
-frappe.require("assets/erpnext/js/financial_statements.js", function() {
-	frappe.query_reports["Gross and Net Profit Report"] = $.extend({},
-		erpnext.financial_statements);
-
-	frappe.query_reports["Gross and Net Profit Report"]["filters"].push(
-		{
-			"fieldname": "accumulated_values",
-			"label": __("Accumulated Values"),
-			"fieldtype": "Check"
-		}
-	);
-});
+frappe.query_reports["Gross and Net Profit Report"]["filters"].push(
+	{
+		"fieldname": "accumulated_values",
+		"label": __("Accumulated Values"),
+		"fieldtype": "Check"
+	}
+);
diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
index 9fe93b9..e5898bf 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
+++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
@@ -1,18 +1,16 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-frappe.require("assets/erpnext/js/financial_statements.js", function () {
-	frappe.query_reports["Profit and Loss Statement"] = $.extend(
-		{},
-		erpnext.financial_statements
-	);
+frappe.query_reports["Profit and Loss Statement"] = $.extend(
+	{},
+	erpnext.financial_statements
+);
 
-	erpnext.utils.add_dimensions("Profit and Loss Statement", 10);
+erpnext.utils.add_dimensions("Profit and Loss Statement", 10);
 
-	frappe.query_reports["Profit and Loss Statement"]["filters"].push({
-		fieldname: "accumulated_values",
-		label: __("Accumulated Values"),
-		fieldtype: "Check",
-		default: 1,
-	});
+frappe.query_reports["Profit and Loss Statement"]["filters"].push({
+	fieldname: "accumulated_values",
+	label: __("Accumulated Values"),
+	fieldtype: "Check",
+	default: 1,
 });
diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
index ebd0ec1..4a3d9bb 100644
--- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
+++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
@@ -1,133 +1,131 @@
 // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
 
-frappe.require("assets/erpnext/js/financial_statements.js", function() {
-	frappe.query_reports["Profitability Analysis"] = {
-		"filters": [
-			{
-				"fieldname": "company",
-				"label": __("Company"),
-				"fieldtype": "Link",
-				"options": "Company",
-				"default": frappe.defaults.get_user_default("Company"),
-				"reqd": 1
-			},
-			{
-				"fieldname": "based_on",
-				"label": __("Based On"),
-				"fieldtype": "Select",
-				"options": ["Cost Center", "Project", "Accounting Dimension"],
-				"default": "Cost Center",
-				"reqd": 1,
-				"on_change": function(query_report){
-					let based_on = query_report.get_values().based_on;
-					if(based_on!='Accounting Dimension'){
-						frappe.query_report.set_filter_value({
-							accounting_dimension: ''
-						});
-					}
-				}
-			},
-			{
-				"fieldname": "accounting_dimension",
-				"label": __("Accounting Dimension"),
-				"fieldtype": "Link",
-				"options": "Accounting Dimension",
-				"get_query": () =>{
-					return {
-						filters: {
-							"disabled": 0
-						}
-					}
-				}
-			},
-			{
-				"fieldname": "fiscal_year",
-				"label": __("Fiscal Year"),
-				"fieldtype": "Link",
-				"options": "Fiscal Year",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
-				"reqd": 1,
-				"on_change": function(query_report) {
-					var fiscal_year = query_report.get_values().fiscal_year;
-					if (!fiscal_year) {
-						return;
-					}
-					frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
-						var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
-						frappe.query_report.set_filter_value({
-							from_date: fy.year_start_date,
-							to_date: fy.year_end_date
-						});
+frappe.query_reports["Profitability Analysis"] = {
+	"filters": [
+		{
+			"fieldname": "company",
+			"label": __("Company"),
+			"fieldtype": "Link",
+			"options": "Company",
+			"default": frappe.defaults.get_user_default("Company"),
+			"reqd": 1
+		},
+		{
+			"fieldname": "based_on",
+			"label": __("Based On"),
+			"fieldtype": "Select",
+			"options": ["Cost Center", "Project", "Accounting Dimension"],
+			"default": "Cost Center",
+			"reqd": 1,
+			"on_change": function(query_report){
+				let based_on = query_report.get_values().based_on;
+				if(based_on!='Accounting Dimension'){
+					frappe.query_report.set_filter_value({
+						accounting_dimension: ''
 					});
 				}
-			},
-			{
-				"fieldname": "from_date",
-				"label": __("From Date"),
-				"fieldtype": "Date",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
-			},
-			{
-				"fieldname": "to_date",
-				"label": __("To Date"),
-				"fieldtype": "Date",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
-			},
-			{
-				"fieldname": "show_zero_values",
-				"label": __("Show zero values"),
-				"fieldtype": "Check"
 			}
-		],
-		"formatter": function(value, row, column, data, default_formatter) {
-			if (column.fieldname=="account") {
-				value = data.account_name;
-
-				column.link_onclick =
-					"frappe.query_reports['Profitability Analysis'].open_profit_and_loss_statement(" + JSON.stringify(data) + ")";
-				column.is_tree = true;
-			}
-
-			value = default_formatter(value, row, column, data);
-
-			if (!data.parent_account && data.based_on != 'project') {
-				value = $(`<span>${value}</span>`);
-				var $value = $(value).css("font-weight", "bold");
-				if (data.warn_if_negative && data[column.fieldname] < 0) {
-					$value.addClass("text-danger");
+		},
+		{
+			"fieldname": "accounting_dimension",
+			"label": __("Accounting Dimension"),
+			"fieldtype": "Link",
+			"options": "Accounting Dimension",
+			"get_query": () =>{
+				return {
+					filters: {
+						"disabled": 0
+					}
 				}
+			}
+		},
+		{
+			"fieldname": "fiscal_year",
+			"label": __("Fiscal Year"),
+			"fieldtype": "Link",
+			"options": "Fiscal Year",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
+			"reqd": 1,
+			"on_change": function(query_report) {
+				var fiscal_year = query_report.get_values().fiscal_year;
+				if (!fiscal_year) {
+					return;
+				}
+				frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
+					var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
+					frappe.query_report.set_filter_value({
+						from_date: fy.year_start_date,
+						to_date: fy.year_end_date
+					});
+				});
+			}
+		},
+		{
+			"fieldname": "from_date",
+			"label": __("From Date"),
+			"fieldtype": "Date",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
+		},
+		{
+			"fieldname": "to_date",
+			"label": __("To Date"),
+			"fieldtype": "Date",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
+		},
+		{
+			"fieldname": "show_zero_values",
+			"label": __("Show zero values"),
+			"fieldtype": "Check"
+		}
+	],
+	"formatter": function(value, row, column, data, default_formatter) {
+		if (column.fieldname=="account") {
+			value = data.account_name;
 
-				value = $value.wrap("<p></p>").parent().html();
+			column.link_onclick =
+				"frappe.query_reports['Profitability Analysis'].open_profit_and_loss_statement(" + JSON.stringify(data) + ")";
+			column.is_tree = true;
+		}
+
+		value = default_formatter(value, row, column, data);
+
+		if (!data.parent_account && data.based_on != 'project') {
+			value = $(`<span>${value}</span>`);
+			var $value = $(value).css("font-weight", "bold");
+			if (data.warn_if_negative && data[column.fieldname] < 0) {
+				$value.addClass("text-danger");
 			}
 
-			return value;
-		},
-		"open_profit_and_loss_statement": function(data) {
-			if (!data.account) return;
+			value = $value.wrap("<p></p>").parent().html();
+		}
 
-			frappe.route_options = {
-				"company": frappe.query_report.get_filter_value('company'),
-				"from_fiscal_year": data.fiscal_year,
-				"to_fiscal_year": data.fiscal_year
-			};
+		return value;
+	},
+	"open_profit_and_loss_statement": function(data) {
+		if (!data.account) return;
 
-			if(data.based_on == 'Cost Center'){
-				frappe.route_options["cost_center"] = data.account
-			} else {
-				frappe.route_options["project"] = data.account
-			}
+		frappe.route_options = {
+			"company": frappe.query_report.get_filter_value('company'),
+			"from_fiscal_year": data.fiscal_year,
+			"to_fiscal_year": data.fiscal_year
+		};
 
-			frappe.set_route("query-report", "Profit and Loss Statement");
-		},
-		"tree": true,
-		"name_field": "account",
-		"parent_field": "parent_account",
-		"initial_depth": 3
-	}
+		if(data.based_on == 'Cost Center'){
+			frappe.route_options["cost_center"] = data.account
+		} else {
+			frappe.route_options["project"] = data.account
+		}
 
-	erpnext.dimension_filters.forEach((dimension) => {
-		frappe.query_reports["Profitability Analysis"].filters[1].options.push(dimension["document_type"]);
-	});
+		frappe.set_route("query-report", "Profit and Loss Statement");
+	},
+	"tree": true,
+	"name_field": "account",
+	"parent_field": "parent_account",
+	"initial_depth": 3
+}
 
+erpnext.dimension_filters.forEach((dimension) => {
+	frappe.query_reports["Profitability Analysis"].filters[1].options.push(dimension["document_type"]);
 });
+
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.js b/erpnext/accounts/report/trial_balance/trial_balance.js
index c12ab0f..edd40b6 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.js
+++ b/erpnext/accounts/report/trial_balance/trial_balance.js
@@ -1,118 +1,116 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-frappe.require("assets/erpnext/js/financial_statements.js", function() {
-	frappe.query_reports["Trial Balance"] = {
-		"filters": [
-			{
-				"fieldname": "company",
-				"label": __("Company"),
-				"fieldtype": "Link",
-				"options": "Company",
-				"default": frappe.defaults.get_user_default("Company"),
-				"reqd": 1
-			},
-			{
-				"fieldname": "fiscal_year",
-				"label": __("Fiscal Year"),
-				"fieldtype": "Link",
-				"options": "Fiscal Year",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
-				"reqd": 1,
-				"on_change": function(query_report) {
-					var fiscal_year = query_report.get_values().fiscal_year;
-					if (!fiscal_year) {
-						return;
-					}
-					frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
-						var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
-						frappe.query_report.set_filter_value({
-							from_date: fy.year_start_date,
-							to_date: fy.year_end_date
-						});
+frappe.query_reports["Trial Balance"] = {
+	"filters": [
+		{
+			"fieldname": "company",
+			"label": __("Company"),
+			"fieldtype": "Link",
+			"options": "Company",
+			"default": frappe.defaults.get_user_default("Company"),
+			"reqd": 1
+		},
+		{
+			"fieldname": "fiscal_year",
+			"label": __("Fiscal Year"),
+			"fieldtype": "Link",
+			"options": "Fiscal Year",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()),
+			"reqd": 1,
+			"on_change": function(query_report) {
+				var fiscal_year = query_report.get_values().fiscal_year;
+				if (!fiscal_year) {
+					return;
+				}
+				frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) {
+					var fy = frappe.model.get_doc("Fiscal Year", fiscal_year);
+					frappe.query_report.set_filter_value({
+						from_date: fy.year_start_date,
+						to_date: fy.year_end_date
 					});
-				}
-			},
-			{
-				"fieldname": "from_date",
-				"label": __("From Date"),
-				"fieldtype": "Date",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
-			},
-			{
-				"fieldname": "to_date",
-				"label": __("To Date"),
-				"fieldtype": "Date",
-				"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
-			},
-			{
-				"fieldname": "cost_center",
-				"label": __("Cost Center"),
-				"fieldtype": "Link",
-				"options": "Cost Center",
-				"get_query": function() {
-					var company = frappe.query_report.get_filter_value('company');
-					return {
-						"doctype": "Cost Center",
-						"filters": {
-							"company": company,
-						}
+				});
+			}
+		},
+		{
+			"fieldname": "from_date",
+			"label": __("From Date"),
+			"fieldtype": "Date",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
+		},
+		{
+			"fieldname": "to_date",
+			"label": __("To Date"),
+			"fieldtype": "Date",
+			"default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
+		},
+		{
+			"fieldname": "cost_center",
+			"label": __("Cost Center"),
+			"fieldtype": "Link",
+			"options": "Cost Center",
+			"get_query": function() {
+				var company = frappe.query_report.get_filter_value('company');
+				return {
+					"doctype": "Cost Center",
+					"filters": {
+						"company": company,
 					}
 				}
-			},
-			{
-				"fieldname": "project",
-				"label": __("Project"),
-				"fieldtype": "Link",
-				"options": "Project"
-			},
-			{
-				"fieldname": "finance_book",
-				"label": __("Finance Book"),
-				"fieldtype": "Link",
-				"options": "Finance Book",
-			},
-			{
-				"fieldname": "presentation_currency",
-				"label": __("Currency"),
-				"fieldtype": "Select",
-				"options": erpnext.get_presentation_currency_list()
-			},
-			{
-				"fieldname": "with_period_closing_entry",
-				"label": __("Period Closing Entry"),
-				"fieldtype": "Check",
-				"default": 1
-			},
-			{
-				"fieldname": "show_zero_values",
-				"label": __("Show zero values"),
-				"fieldtype": "Check"
-			},
-			{
-				"fieldname": "show_unclosed_fy_pl_balances",
-				"label": __("Show unclosed fiscal year's P&L balances"),
-				"fieldtype": "Check"
-			},
-			{
-				"fieldname": "include_default_book_entries",
-				"label": __("Include Default Book Entries"),
-				"fieldtype": "Check",
-				"default": 1
-			},
-			{
-				"fieldname": "show_net_values",
-				"label": __("Show net values in opening and closing columns"),
-				"fieldtype": "Check",
-				"default": 1
 			}
-		],
-		"formatter": erpnext.financial_statements.formatter,
-		"tree": true,
-		"name_field": "account",
-		"parent_field": "parent_account",
-		"initial_depth": 3
-	}
+		},
+		{
+			"fieldname": "project",
+			"label": __("Project"),
+			"fieldtype": "Link",
+			"options": "Project"
+		},
+		{
+			"fieldname": "finance_book",
+			"label": __("Finance Book"),
+			"fieldtype": "Link",
+			"options": "Finance Book",
+		},
+		{
+			"fieldname": "presentation_currency",
+			"label": __("Currency"),
+			"fieldtype": "Select",
+			"options": erpnext.get_presentation_currency_list()
+		},
+		{
+			"fieldname": "with_period_closing_entry",
+			"label": __("Period Closing Entry"),
+			"fieldtype": "Check",
+			"default": 1
+		},
+		{
+			"fieldname": "show_zero_values",
+			"label": __("Show zero values"),
+			"fieldtype": "Check"
+		},
+		{
+			"fieldname": "show_unclosed_fy_pl_balances",
+			"label": __("Show unclosed fiscal year's P&L balances"),
+			"fieldtype": "Check"
+		},
+		{
+			"fieldname": "include_default_book_entries",
+			"label": __("Include Default Book Entries"),
+			"fieldtype": "Check",
+			"default": 1
+		},
+		{
+			"fieldname": "show_net_values",
+			"label": __("Show net values in opening and closing columns"),
+			"fieldtype": "Check",
+			"default": 1
+		}
+	],
+	"formatter": erpnext.financial_statements.formatter,
+	"tree": true,
+	"name_field": "account",
+	"parent_field": "parent_account",
+	"initial_depth": 3
+}
 
-	erpnext.utils.add_dimensions('Trial Balance', 6);
-});
+erpnext.utils.add_dimensions('Trial Balance', 6);
diff --git a/erpnext/public/js/erpnext.bundle.js b/erpnext/public/js/erpnext.bundle.js
index 0e1b23b..dee9a06 100644
--- a/erpnext/public/js/erpnext.bundle.js
+++ b/erpnext/public/js/erpnext.bundle.js
@@ -30,5 +30,6 @@
 import "./utils/sales_common.js";
 import "./controllers/buying.js";
 import "./utils/demo.js";
+import "./financial_statements.js";
 
 // import { sum } from 'frappe/public/utils/util.js'
