26 lines
722 B
Python
26 lines
722 B
Python
from datetime import date
|
|
|
|
from sqlalchemy import and_, select
|
|
from sqlalchemy.orm import aliased
|
|
|
|
from ledger.schema import TransactionLedgerRead
|
|
from transaction.models import Split, Transaction
|
|
|
|
|
|
|
|
class LedgerResource:
|
|
@classmethod
|
|
def get_ledger(cls, session, account_id):
|
|
split_account = aliased(Split)
|
|
|
|
stmt = select(Transaction, split_account).join(
|
|
split_account,
|
|
and_(Transaction.id == split_account.transaction_id, split_account.account_id == account_id)
|
|
)
|
|
|
|
result = []
|
|
for transaction, split in session.exec(stmt).all():
|
|
result.append(TransactionLedgerRead(transaction=transaction, account_split=split))
|
|
|
|
return result
|