fix: consolidated report not consider company currency
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index f6198eb..6cfbc6d 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -4,6 +4,7 @@
 from __future__ import unicode_literals
 
 import frappe
+import erpnext
 from frappe import _, throw
 from frappe.utils import cint, cstr
 from frappe.utils.nestedset import NestedSet, get_ancestors_of, get_descendants_of
@@ -196,7 +197,7 @@
 					"company": company,
 					# parent account's currency should be passed down to child account's curreny
 					# if it is None, it picks it up from default company currency, which might be unintended
-					"account_currency": self.account_currency,
+					"account_currency": erpnext.get_company_currency(company),
 					"parent_account": parent_acc_name_map[company]
 				})
 
@@ -207,8 +208,7 @@
 				# update the parent company's value in child companies
 				doc = frappe.get_doc("Account", child_account)
 				parent_value_changed = False
-				for field in ['account_type', 'account_currency',
-					'freeze_account', 'balance_must_be']:
+				for field in ['account_type', 'freeze_account', 'balance_must_be']:
 					if doc.get(field) != self.get(field):
 						parent_value_changed = True
 						doc.set(field, self.get(field))
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 6a8301a..e24a5f9 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
@@ -103,8 +103,11 @@
 				column.is_tree = true;
 			}
 
-			value = default_formatter(value, row, column, data);
+			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>`);
 
diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
index b0cfbac..bca13d5 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
@@ -7,6 +7,7 @@
 from frappe import _
 from frappe.utils import cint, flt, getdate
 
+import erpnext
 from erpnext.accounts.report.balance_sheet.balance_sheet import (
 	check_opening_balance,
 	get_chart_data,
@@ -31,7 +32,7 @@
 from erpnext.accounts.report.profit_and_loss_statement.profit_and_loss_statement import (
 	get_report_summary as get_pl_summary,
 )
-from erpnext.accounts.report.utils import convert_to_presentation_currency
+from erpnext.accounts.report.utils import convert, convert_to_presentation_currency
 
 
 def execute(filters=None):
@@ -42,7 +43,7 @@
 
 	fiscal_year = get_fiscal_year_data(filters.get('from_fiscal_year'), filters.get('to_fiscal_year'))
 	companies_column, companies = get_companies(filters)
-	columns = get_columns(companies_column)
+	columns = get_columns(companies_column, filters)
 
 	if filters.get('report') == "Balance Sheet":
 		data, message, chart, report_summary = get_balance_sheet_data(fiscal_year, companies, columns, filters)
@@ -193,30 +194,37 @@
 	data["total"] = total
 	return data
 
-def get_columns(companies):
-	columns = [{
-		"fieldname": "account",
-		"label": _("Account"),
-		"fieldtype": "Link",
-		"options": "Account",
-		"width": 300
-	}]
-
-	columns.append({
-		"fieldname": "currency",
-		"label": _("Currency"),
-		"fieldtype": "Link",
-		"options": "Currency",
-		"hidden": 1
-	})
+def get_columns(companies, filters):
+	columns = [
+		{
+			"fieldname": "account",
+			"label": _("Account"),
+			"fieldtype": "Link",
+			"options": "Account",
+			"width": 300
+		}, {
+			"fieldname": "currency",
+			"label": _("Currency"),
+			"fieldtype": "Link",
+			"options": "Currency",
+			"hidden": 1
+		}
+	]
 
 	for company in companies:
+		apply_currency_formatter = 1 if not filters.presentation_currency else 0
+		currency = filters.presentation_currency
+		if not currency:
+			currency = erpnext.get_company_currency(company)
+
 		columns.append({
 			"fieldname": company,
-			"label": company,
+			"label": f'{company} ({currency})',
 			"fieldtype": "Currency",
 			"options": "currency",
-			"width": 150
+			"width": 150,
+			"apply_currency_formatter": apply_currency_formatter,
+			"company_name": company
 		})
 
 	return columns
@@ -236,6 +244,8 @@
 		start_date = filters.period_start_date if filters.report != 'Balance Sheet' else None
 		end_date = filters.period_end_date
 
+	filters.end_date = end_date
+
 	gl_entries_by_account = {}
 	for root in frappe.db.sql("""select lft, rgt from tabAccount
 			where root_type=%s and ifnull(parent_account, '') = ''""", root_type, as_dict=1):
@@ -246,7 +256,7 @@
 
 	calculate_values(accounts_by_name, gl_entries_by_account, companies, start_date, filters)
 	accumulate_values_into_parents(accounts, accounts_by_name, companies)
-	out = prepare_data(accounts, start_date, end_date, balance_must_be, companies, company_currency)
+	out = prepare_data(accounts, start_date, end_date, balance_must_be, companies, company_currency, filters)
 
 	if out:
 		add_total_row(out, root_type, balance_must_be, companies, company_currency)
@@ -271,10 +281,20 @@
 					# check if posting date is within the period
 					if (entry.company == company or (filters.get('accumulated_in_group_company'))
 						and entry.company in companies.get(company)):
-						d[company] = d.get(company, 0.0) + flt(entry.debit) - flt(entry.credit)
+						parent_company_currency = erpnext.get_company_currency(d.company)
+						child_company_currency = erpnext.get_company_currency(entry.company)
+
+						debit, credit = flt(entry.debit), flt(entry.credit)
+
+						if (entry.company != company and parent_company_currency != child_company_currency
+							and filters.get('accumulated_in_group_company')):
+							debit = convert(debit, parent_company_currency, child_company_currency, filters.end_date)
+							credit = convert(credit, parent_company_currency, child_company_currency, filters.end_date)
+
+						d[company] = d.get(company, 0.0) + flt(debit) - flt(credit)
 
 				if entry.posting_date < getdate(start_date):
-					d["opening_balance"] = d.get("opening_balance", 0.0) + flt(entry.debit) - flt(entry.credit)
+					d["opening_balance"] = d.get("opening_balance", 0.0) + flt(debit) - flt(credit)
 
 def accumulate_values_into_parents(accounts, accounts_by_name, companies):
 	"""accumulate children's values in parent accounts"""
@@ -353,7 +373,7 @@
 			`tabAccount` where company = %s and root_type = %s
 		""" , (filters.get('company'), root_type), as_dict=1)
 
-def prepare_data(accounts, start_date, end_date, balance_must_be, companies, company_currency):
+def prepare_data(accounts, start_date, end_date, balance_must_be, companies, company_currency, filters):
 	data = []
 
 	for d in accounts:
@@ -368,9 +388,10 @@
 			"indent": flt(d.indent),
 			"year_start_date": start_date,
 			"year_end_date": end_date,
-			"currency": company_currency,
+			"currency": filters.presentation_currency,
 			"opening_balance": d.get("opening_balance", 0.0) * (1 if balance_must_be == "Debit" else -1)
 		})
+
 		for company in companies:
 			if d.get(company) and balance_must_be == "Credit":
 				# change sign based on Debit or Credit, since calculation is done using (debit - credit)
@@ -385,6 +406,7 @@
 
 		row["has_value"] = has_value
 		row["total"] = total
+
 		data.append(row)
 
 	return data