refactor: handle bank transaction in foreign currency
diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py
index 777e315..7e2f763 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py
+++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py
@@ -131,7 +131,7 @@
 	bank_transaction = frappe.db.get_values(
 		"Bank Transaction",
 		bank_transaction_name,
-		fieldname=["name", "deposit", "withdrawal", "bank_account"],
+		fieldname=["name", "deposit", "withdrawal", "bank_account", "currency"],
 		as_dict=True,
 	)[0]
 	company_account = frappe.get_value("Bank Account", bank_transaction.bank_account, "account")
@@ -149,10 +149,12 @@
 	company_account_currency = frappe.get_cached_value("Account", company_account, "account_currency")
 	second_account_currency = frappe.get_cached_value("Account", second_account, "account_currency")
 
+	# determine if multi-currency Journal or not
 	is_multi_currency = (
 		True
 		if company_default_currency != company_account_currency
 		or company_default_currency != second_account_currency
+		or company_default_currency != bank_transaction.currency
 		else False
 	)
 
@@ -176,11 +178,16 @@
 		"cost_center": get_default_cost_center(company),
 	}
 
+	# convert transaction amount to company currency
 	if is_multi_currency:
-		exc_rate = get_exchange_rate(company_account_currency, company_default_currency, posting_date)
+		exc_rate = get_exchange_rate(bank_transaction.currency, company_default_currency, posting_date)
 		withdrawal_in_company_currency = flt(exc_rate * abs(bank_transaction.withdrawal))
 		deposit_in_company_currency = flt(exc_rate * abs(bank_transaction.deposit))
+	else:
+		withdrawal_in_company_currency = bank_transaction.withdrawal
+		deposit_in_company_currency = bank_transaction.deposit
 
+	# if second account is of foreign currency, convert and set debit and credit fields.
 	if second_account_currency != company_default_currency:
 		exc_rate = get_exchange_rate(second_account_currency, company_default_currency, posting_date)
 		second_account_dict.update(
@@ -188,6 +195,8 @@
 				"exchange_rate": exc_rate,
 				"credit": deposit_in_company_currency,
 				"debit": withdrawal_in_company_currency,
+				"credit_in_account_currency": flt(deposit_in_company_currency / exc_rate) or 0,
+				"debit_in_account_currency": flt(withdrawal_in_company_currency / exc_rate) or 0,
 			}
 		)
 	else:
@@ -201,6 +210,7 @@
 			}
 		)
 
+	# if company account is of foreign currency, convert and set debit and credit fields.
 	if company_account_currency != company_default_currency:
 		exc_rate = get_exchange_rate(company_account_currency, company_default_currency, posting_date)
 		company_account_dict.update(
@@ -210,6 +220,16 @@
 				"debit": deposit_in_company_currency,
 			}
 		)
+	else:
+		company_account_dict.update(
+			{
+				"exchange_rate": 1,
+				"credit": withdrawal_in_company_currency,
+				"debit": deposit_in_company_currency,
+				"credit_in_account_currency": withdrawal_in_company_currency,
+				"debit_in_account_currency": deposit_in_company_currency,
+			}
+		)
 
 	accounts.append(second_account_dict)
 	accounts.append(company_account_dict)