diff --git a/server/foxbank_server/apis/transactions.py b/server/foxbank_server/apis/transactions.py index fb545f0..3ff730f 100644 --- a/server/foxbank_server/apis/transactions.py +++ b/server/foxbank_server/apis/transactions.py @@ -6,7 +6,7 @@ from marshmallow import Schema, fields import re from ..decorators import ensure_logged_in -from ..db_utils import get_transactions, get_account, get_accounts, insert_transaction, whose_account, insert_notification +from ..db_utils import get_transactions, get_account, get_accounts, insert_transaction, whose_account, insert_notification, get_forex_rate from ..models import Account, Notification, Transaction from ..utils.iban import check_iban from .. import decorators, returns @@ -82,15 +82,18 @@ class TransactionsList(MethodView): if destination_iban[4:8] == 'FOXB': for acc in get_accounts(): if destination_iban == acc.iban: + rate = get_forex_rate(account.currency, acc.currency) reverse_transaction = Transaction.new_transaction( date_time=date, transaction_type='receive_transfer', status='processed', other_party={'iban': account.iban,}, extra={ - 'currency': account.currency, - 'amount': -amount, + 'currency': acc.currency, + 'amount': int(-amount * rate), 'description': description, + 'originalAmount': -amount, + 'originalCurrency': account.currency, }, ) insert_transaction(acc.id, reverse_transaction) diff --git a/server/foxbank_server/db_utils.py b/server/foxbank_server/db_utils.py index 75d1e59..33740ce 100644 --- a/server/foxbank_server/db_utils.py +++ b/server/foxbank_server/db_utils.py @@ -308,6 +308,9 @@ class Module(ModuleType): @get_db def get_forex_rate(self, from_currency: str, to_currency: str) -> float | None: + if from_currency == to_currency: + return 1.0 + cur = self.db.cursor() if from_currency == 'RON' or to_currency == 'RON':