Merge pull request #4606 from nabinhait/report_currency

[fix] Currency symbol based on account/company currency, not based on Global Defaults
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 89fc52c..39fe5c4 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -68,6 +68,7 @@
 				"label": _("Currency"),
 				"fieldtype": "Data",
 				"width": 100,
+				"hidden": 1
 			},
 			_("Remarks") + "::200"
 		]
diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py
index 65d429c..0a2a9e3 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.py
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py
@@ -13,7 +13,8 @@
 	asset = get_data(filters.company, "Asset", "Debit", period_list)
 	liability = get_data(filters.company, "Liability", "Credit", period_list)
 	equity = get_data(filters.company, "Equity", "Credit", period_list)
-	provisional_profit_loss = get_provisional_profit_loss(asset, liability, equity, period_list)
+	provisional_profit_loss = get_provisional_profit_loss(asset, liability, equity, 
+		period_list, filters.company)
 
 	data = []
 	data.extend(asset or [])
@@ -26,12 +27,13 @@
 
 	return columns, data
 
-def get_provisional_profit_loss(asset, liability, equity, period_list):
+def get_provisional_profit_loss(asset, liability, equity, period_list, company):
 	if asset and (liability or equity):
 		provisional_profit_loss = {
 			"account_name": "'" + _("Provisional Profit / Loss (Credit)") + "'",
 			"account": None,
-			"warn_if_negative": True
+			"warn_if_negative": True,
+			"currency": frappe.db.get_value("Company", company, "default_currency")
 		}
 
 		has_value = False
diff --git a/erpnext/accounts/report/cash_flow/cash_flow.py b/erpnext/accounts/report/cash_flow/cash_flow.py
index f6bf370..1fda16a 100644
--- a/erpnext/accounts/report/cash_flow/cash_flow.py
+++ b/erpnext/accounts/report/cash_flow/cash_flow.py
@@ -50,10 +50,12 @@
 	# compute net profit / loss
 	income = get_data(filters.company, "Income", "Credit", period_list, ignore_closing_entries=True)
 	expense = get_data(filters.company, "Expense", "Debit", period_list, ignore_closing_entries=True)
-	net_profit_loss = get_net_profit_loss(income, expense, period_list)
+	net_profit_loss = get_net_profit_loss(income, expense, period_list, filters.company)
 
 	data = []
 
+	company_currency = frappe.db.get_value("Company", filters.company, "default_currency")
+	
 	for cash_flow_account in cash_flow_accounts:
 
 		section_data = []
@@ -79,14 +81,16 @@
 			account_data.update({
 				"account_name": account['label'], 
 				"indent": 1,
-				"parent_account": cash_flow_account['section_header']
+				"parent_account": cash_flow_account['section_header'],
+				"currency": company_currency
 			})
 			data.append(account_data)
 			section_data.append(account_data)
 
-		add_total_row_account(data, section_data, cash_flow_account['section_footer'], period_list)
+		add_total_row_account(data, section_data, cash_flow_account['section_footer'], 
+			period_list, company_currency)
 
-	add_total_row_account(data, data, _("Net Change in Cash"), period_list)
+	add_total_row_account(data, data, _("Net Change in Cash"), period_list, company_currency)
 	columns = get_columns(period_list)
 
 	return columns, data
@@ -118,10 +122,11 @@
 	return data
 
 
-def add_total_row_account(out, data, label, period_list):
+def add_total_row_account(out, data, label, period_list, currency):
 	total_row = {
 		"account_name": "'" + _("{0}").format(label) + "'",
-		"account": None
+		"account": None,
+		"currency": currency
 	}
 
 	for row in data:
diff --git a/erpnext/accounts/report/financial_statements.html b/erpnext/accounts/report/financial_statements.html
index c086944..84cad16 100644
--- a/erpnext/accounts/report/financial_statements.html
+++ b/erpnext/accounts/report/financial_statements.html
@@ -45,7 +45,7 @@
 					<td class="text-right">
 						{% var fieldname = report.columns[i].field; %}
 						{% if (!is_null(row[fieldname])) { %}
-							{%= format_currency(row[fieldname]) %}
+							{%= format_currency(row[fieldname], row.currency) %}
 						{% } %}
 					</td>
 				{% } %}
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index 5e3184d..f15b734 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -80,6 +80,8 @@
 		return None
 
 	accounts, accounts_by_name = filter_accounts(accounts)
+	
+	company_currency = frappe.db.get_value("Company", company, "default_currency")
 
 	gl_entries_by_account = {}
 	for root in frappe.db.sql("""select lft, rgt from tabAccount
@@ -90,10 +92,10 @@
 
 	calculate_values(accounts_by_name, gl_entries_by_account, period_list)
 	accumulate_values_into_parents(accounts, accounts_by_name, period_list)
-	out = prepare_data(accounts, balance_must_be, period_list)
+	out = prepare_data(accounts, balance_must_be, period_list, company_currency)
 
 	if out:
-		add_total_row(out, balance_must_be, period_list)
+		add_total_row(out, balance_must_be, period_list, company_currency)
 
 	return out
 
@@ -114,7 +116,7 @@
 				accounts_by_name[d.parent_account][period.key] = accounts_by_name[d.parent_account].get(period.key, 0.0) + \
 					d.get(period.key, 0.0)
 
-def prepare_data(accounts, balance_must_be, period_list):
+def prepare_data(accounts, balance_must_be, period_list, company_currency):
 	out = []
 	year_start_date = period_list[0]["year_start_date"].strftime("%Y-%m-%d")
 	year_end_date = period_list[-1]["year_end_date"].strftime("%Y-%m-%d")
@@ -128,7 +130,8 @@
 			"parent_account": d.parent_account,
 			"indent": flt(d.indent),
 			"from_date": year_start_date,
-			"to_date": year_end_date
+			"to_date": year_end_date,
+			"currency": company_currency
 		}
 		for period in period_list:
 			if d.get(period.key):
@@ -146,10 +149,11 @@
 
 	return out
 
-def add_total_row(out, balance_must_be, period_list):
+def add_total_row(out, balance_must_be, period_list, company_currency):
 	total_row = {
 		"account_name": "'" + _("Total ({0})").format(balance_must_be) + "'",
-		"account": None
+		"account": None,
+		"currency": company_currency
 	}
 
 	for row in out:
@@ -241,7 +245,7 @@
 
 	return gl_entries_by_account
 
-def get_columns(period_list):
+def get_columns(period_list, company=None):
 	columns = [{
 		"fieldname": "account",
 		"label": _("Account"),
@@ -249,11 +253,21 @@
 		"options": "Account",
 		"width": 300
 	}]
+	if company:
+		columns.append({
+			"fieldname": "currency",
+			"label": _("Currency"),
+			"fieldtype": "Link",
+			"options": "Currency",
+			"hidden": 1
+		})
+	
 	for period in period_list:
 		columns.append({
 			"fieldname": period.key,
 			"label": period.label,
 			"fieldtype": "Currency",
+			"options": "currency",
 			"width": 150
 		})
 
diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
index 0431eb6..d26a3fc 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
+++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
@@ -9,10 +9,10 @@
 
 def execute(filters=None):
 	period_list = get_period_list(filters.fiscal_year, filters.periodicity)
-
+	
 	income = get_data(filters.company, "Income", "Credit", period_list, ignore_closing_entries=True)
 	expense = get_data(filters.company, "Expense", "Debit", period_list, ignore_closing_entries=True)
-	net_profit_loss = get_net_profit_loss(income, expense, period_list)
+	net_profit_loss = get_net_profit_loss(income, expense, period_list, filters.company)
 
 	data = []
 	data.extend(income or [])
@@ -20,16 +20,17 @@
 	if net_profit_loss:
 		data.append(net_profit_loss)
 
-	columns = get_columns(period_list)
+	columns = get_columns(period_list, filters.company)
 
 	return columns, data
 
-def get_net_profit_loss(income, expense, period_list):
+def get_net_profit_loss(income, expense, period_list, company):
 	if income and expense:
 		net_profit_loss = {
 			"account_name": "'" + _("Net Profit / Loss") + "'",
 			"account": None,
-			"warn_if_negative": True
+			"warn_if_negative": True,
+			"currency": frappe.db.get_value("Company", company, "default_currency")
 		}
 
 		for period in period_list: