balance_sheet: Default classification sort by root account.
This provides more consistent presentation across sheets, especially the financial position+cash flows.
This commit is contained in:
parent
f55b698718
commit
b7f9903d1f
1 changed files with 14 additions and 9 deletions
|
@ -51,6 +51,7 @@ from .. import config as configmod
|
|||
from .. import data
|
||||
from .. import ranges
|
||||
|
||||
EQUITY_ACCOUNTS = frozenset(['Equity', 'Income', 'Expenses'])
|
||||
PROGNAME = 'balance-sheet-report'
|
||||
logger = logging.getLogger('conservancy_beancount.tools.balance_sheet')
|
||||
|
||||
|
@ -156,8 +157,13 @@ class Balances:
|
|||
|
||||
def classifications(self,
|
||||
account: str,
|
||||
sort_period: int=Period.PERIOD,
|
||||
sort_period: Optional[int]=None,
|
||||
) -> Sequence[data.Account]:
|
||||
if sort_period is None:
|
||||
if account in EQUITY_ACCOUNTS:
|
||||
sort_period = Period.PERIOD
|
||||
else:
|
||||
sort_period = Period.ANY
|
||||
class_bals: Mapping[data.Account, core.MutableBalance] \
|
||||
= collections.defaultdict(core.MutableBalance)
|
||||
for key, balance in self.balances.items():
|
||||
|
@ -183,7 +189,6 @@ class Balances:
|
|||
class Report(core.BaseODS[Sequence[None], None]):
|
||||
C_CASH = 'Cash'
|
||||
C_SATISFIED = 'Satisfaction of program restrictions'
|
||||
EQUITY_ACCOUNTS = frozenset(['Equity', 'Income', 'Expenses'])
|
||||
NO_BALANCE = core.Balance()
|
||||
SPACE = ' ' * 4
|
||||
|
||||
|
@ -238,7 +243,7 @@ class Report(core.BaseODS[Sequence[None], None]):
|
|||
def walk_classifications_by_account(
|
||||
self,
|
||||
account: str,
|
||||
sort_period: int=Period.PERIOD,
|
||||
sort_period: Optional[int]=None,
|
||||
) -> Iterator[Tuple[str, Optional[data.Account]]]:
|
||||
return self.walk_classifications(self.balances.classifications(
|
||||
account, sort_period,
|
||||
|
@ -266,7 +271,7 @@ class Report(core.BaseODS[Sequence[None], None]):
|
|||
period_assets = core.MutableBalance()
|
||||
self.add_row(self.string_cell("Assets", stylename=self.style_bold))
|
||||
self.add_row()
|
||||
for text, classification in self.walk_classifications_by_account('Assets', Period.ANY):
|
||||
for text, classification in self.walk_classifications_by_account('Assets'):
|
||||
text_cell = self.string_cell(text)
|
||||
if classification is None:
|
||||
self.add_row(text_cell)
|
||||
|
@ -298,7 +303,7 @@ class Report(core.BaseODS[Sequence[None], None]):
|
|||
self.add_row()
|
||||
self.add_row(self.string_cell("Liabilities", stylename=self.style_bold))
|
||||
self.add_row()
|
||||
for text, classification in self.walk_classifications_by_account('Liabilities', Period.ANY):
|
||||
for text, classification in self.walk_classifications_by_account('Liabilities'):
|
||||
text_cell = self.string_cell(text)
|
||||
if classification is None:
|
||||
self.add_row(text_cell)
|
||||
|
@ -330,11 +335,11 @@ class Report(core.BaseODS[Sequence[None], None]):
|
|||
preposition = "Without" if fund is Fund.UNRESTRICTED else "With"
|
||||
period_bal = -sum(
|
||||
(self.balances.total(account=account, fund=fund)
|
||||
for account in self.EQUITY_ACCOUNTS), core.MutableBalance(),
|
||||
for account in EQUITY_ACCOUNTS), core.MutableBalance(),
|
||||
)
|
||||
prior_bal = period_bal + sum(
|
||||
(self.balances.total(account=account, fund=fund, period=Period.PERIOD)
|
||||
for account in self.EQUITY_ACCOUNTS), core.MutableBalance(),
|
||||
for account in EQUITY_ACCOUNTS), core.MutableBalance(),
|
||||
)
|
||||
self.add_row(
|
||||
self.string_cell(f"{preposition} donor restrictions"),
|
||||
|
@ -497,7 +502,7 @@ class Report(core.BaseODS[Sequence[None], None]):
|
|||
kwargs['period'] = Period.OPENING
|
||||
beginnings = [
|
||||
-sum((self.balances.total(account=account, **kwargs)
|
||||
for account in self.EQUITY_ACCOUNTS), core.MutableBalance())
|
||||
for account in EQUITY_ACCOUNTS), core.MutableBalance())
|
||||
for kwargs in bal_kwargs
|
||||
]
|
||||
self.add_row()
|
||||
|
@ -608,7 +613,7 @@ class Report(core.BaseODS[Sequence[None], None]):
|
|||
|
||||
totals = [
|
||||
-sum((self.balances.total(account=account, **kwargs)
|
||||
for account in self.EQUITY_ACCOUNTS), core.MutableBalance())
|
||||
for account in EQUITY_ACCOUNTS), core.MutableBalance())
|
||||
for kwargs in bal_kwargs
|
||||
]
|
||||
self.add_row(
|
||||
|
|
Loading…
Reference in a new issue