Added the __query_balance method to the AccountCollector of balance sheet to simplify the queris in the __query_accumulated and __query_currency_period methods.
This commit is contained in:
parent
74eee034d0
commit
ed7a8ac0fd
@ -192,14 +192,7 @@ class AccountCollector:
|
|||||||
conditions: list[sa.BinaryExpression] \
|
conditions: list[sa.BinaryExpression] \
|
||||||
= [JournalEntry.currency_code == self.__currency.code,
|
= [JournalEntry.currency_code == self.__currency.code,
|
||||||
Transaction.date < self.__period.start]
|
Transaction.date < self.__period.start]
|
||||||
conditions.extend([sa.not_(Account.base_code.startswith(x))
|
return self.__query_balance(conditions)
|
||||||
for x in {"1", "2"}])
|
|
||||||
balance_func: sa.Function = sa.func.sum(sa.case(
|
|
||||||
(JournalEntry.is_debit, JournalEntry.amount),
|
|
||||||
else_=-JournalEntry.amount)).label("balance")
|
|
||||||
select_balance: sa.Select = sa.select(balance_func)\
|
|
||||||
.join(Transaction).join(Account).filter(*conditions)
|
|
||||||
return db.session.scalar(select_balance)
|
|
||||||
|
|
||||||
def __add_current_period(self) -> None:
|
def __add_current_period(self) -> None:
|
||||||
"""Adds the accumulated profit or loss to the balances.
|
"""Adds the accumulated profit or loss to the balances.
|
||||||
@ -222,11 +215,21 @@ class AccountCollector:
|
|||||||
conditions.append(Transaction.date >= self.__period.start)
|
conditions.append(Transaction.date >= self.__period.start)
|
||||||
if self.__period.end is not None:
|
if self.__period.end is not None:
|
||||||
conditions.append(Transaction.date <= self.__period.end)
|
conditions.append(Transaction.date <= self.__period.end)
|
||||||
|
return self.__query_balance(conditions)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def __query_balance(conditions: list[sa.BinaryExpression])\
|
||||||
|
-> Decimal:
|
||||||
|
"""Queries the balance.
|
||||||
|
|
||||||
|
:param conditions: The SQL conditions for the balance.
|
||||||
|
:return: The balance.
|
||||||
|
"""
|
||||||
conditions.extend([sa.not_(Account.base_code.startswith(x))
|
conditions.extend([sa.not_(Account.base_code.startswith(x))
|
||||||
for x in {"1", "2"}])
|
for x in {"1", "2"}])
|
||||||
balance_func: sa.Function = sa.func.sum(sa.case(
|
balance_func: sa.Function = sa.func.sum(sa.case(
|
||||||
(JournalEntry.is_debit, JournalEntry.amount),
|
(JournalEntry.is_debit, JournalEntry.amount),
|
||||||
else_=-JournalEntry.amount)).label("balance")
|
else_=-JournalEntry.amount))
|
||||||
select_balance: sa.Select = sa.select(balance_func)\
|
select_balance: sa.Select = sa.select(balance_func)\
|
||||||
.join(Transaction).join(Account).filter(*conditions)
|
.join(Transaction).join(Account).filter(*conditions)
|
||||||
return db.session.scalar(select_balance)
|
return db.session.scalar(select_balance)
|
||||||
|
Loading…
Reference in New Issue
Block a user