mirror of
https://github.com/dancojocaru2000/foxbank.git
synced 2025-02-22 23:39:36 +02:00
Added transfer between different currency accounts
This commit is contained in:
parent
9a1e1b4fce
commit
c7c8f3c765
2 changed files with 9 additions and 3 deletions
|
@ -6,7 +6,7 @@ from marshmallow import Schema, fields
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from ..decorators import ensure_logged_in
|
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 ..models import Account, Notification, Transaction
|
||||||
from ..utils.iban import check_iban
|
from ..utils.iban import check_iban
|
||||||
from .. import decorators, returns
|
from .. import decorators, returns
|
||||||
|
@ -82,15 +82,18 @@ class TransactionsList(MethodView):
|
||||||
if destination_iban[4:8] == 'FOXB':
|
if destination_iban[4:8] == 'FOXB':
|
||||||
for acc in get_accounts():
|
for acc in get_accounts():
|
||||||
if destination_iban == acc.iban:
|
if destination_iban == acc.iban:
|
||||||
|
rate = get_forex_rate(account.currency, acc.currency)
|
||||||
reverse_transaction = Transaction.new_transaction(
|
reverse_transaction = Transaction.new_transaction(
|
||||||
date_time=date,
|
date_time=date,
|
||||||
transaction_type='receive_transfer',
|
transaction_type='receive_transfer',
|
||||||
status='processed',
|
status='processed',
|
||||||
other_party={'iban': account.iban,},
|
other_party={'iban': account.iban,},
|
||||||
extra={
|
extra={
|
||||||
'currency': account.currency,
|
'currency': acc.currency,
|
||||||
'amount': -amount,
|
'amount': int(-amount * rate),
|
||||||
'description': description,
|
'description': description,
|
||||||
|
'originalAmount': -amount,
|
||||||
|
'originalCurrency': account.currency,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
insert_transaction(acc.id, reverse_transaction)
|
insert_transaction(acc.id, reverse_transaction)
|
||||||
|
|
|
@ -308,6 +308,9 @@ class Module(ModuleType):
|
||||||
|
|
||||||
@get_db
|
@get_db
|
||||||
def get_forex_rate(self, from_currency: str, to_currency: str) -> float | None:
|
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()
|
cur = self.db.cursor()
|
||||||
|
|
||||||
if from_currency == 'RON' or to_currency == 'RON':
|
if from_currency == 'RON' or to_currency == 'RON':
|
||||||
|
|
Loading…
Add table
Reference in a new issue