Adding balance to ledger record

This commit is contained in:
2025-02-17 19:07:04 +01:00
parent cd325154da
commit a81c4fbd7d
3 changed files with 17 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
from sqlalchemy import and_, select
from sqlalchemy import and_, select, func
from sqlalchemy.orm import aliased
from ledger.schema import TransactionLedgerRead
@@ -10,10 +10,18 @@ class LedgerResource:
@classmethod
def get_ledger(cls, session, account_id):
split_account = aliased(Split)
split_balance = aliased(Split)
transaction_balance = aliased(Transaction)
stmt = select(Transaction, split_account).join(
balance_stmt = select(func.sum(split_balance.amount)).join(transaction_balance).where(and_(split_balance.account_id == split_account.account_id, transaction_balance.sequence <= Transaction.sequence)).scalar_subquery()
stmt = (select(
Transaction,
split_account,
balance_stmt.label('balance')
).join(
split_account,
and_(Transaction.id == split_account.transaction_id, split_account.account_id == account_id)
)
))
return [TransactionLedgerRead(transaction=transaction, account_split=split) for transaction, split in session.exec(stmt).all()]
return [TransactionLedgerRead(transaction=transaction, account_split=split, balance=balance) for transaction, split, balance in session.exec(stmt).all()]