balance_sheet: Balance only considers post_type for Expenses.

This simplifies the code and slightly optimizes it, since now Balance
won't store and keep re-summing income-type breakdowns that nothing
needs.
This commit is contained in:
Brett Smith 2020-08-18 01:06:23 -04:00
parent b7f9903d1f
commit e05f55659a
2 changed files with 4 additions and 11 deletions

View file

@ -78,11 +78,6 @@ class BalanceKey(NamedTuple):
class Balances:
POST_TYPES = {
'Income': 'income-type',
'Expenses': 'expense-type',
}
def __init__(self,
postings: Iterable[data.Posting],
start_date: datetime.date,
@ -124,9 +119,9 @@ class Balances:
raise TypeError()
except (KeyError, TypeError):
classification = account
try:
post_type = post.meta[self.POST_TYPES[account.root_part()]]
except KeyError:
if account.root_part() == 'Expenses':
post_type = post.meta.get('expense-type')
else:
post_type = None
key = BalanceKey(account, classification, period, fund, post_type)
self.balances[key] += post.at_cost()

View file

@ -87,13 +87,11 @@ def income_expense_balances():
({'period': Period.PERIOD, 'account': 'Expenses'}, 26),
({'fund': Fund.RESTRICTED, 'account': 'Income'}, -10),
({'fund': Fund.UNRESTRICTED, 'account': 'Expenses'}, 25),
({'post_type': 'Donations'}, -10),
({'post_type': 'fundraising'}, 20),
({'post_type': 'management'}, 10),
({'post_type': 'Nonexistent'}, None),
({'period': Period.PRIOR, 'post_type': 'RBI'}, '-4.80'),
({'period': Period.PRIOR, 'post_type': 'fundraising'}, '9.60'),
({'fund': Fund.RESTRICTED, 'post_type': 'program'}, 10),
({'period': Period.PERIOD, 'fund': Fund.UNRESTRICTED, 'post_type': 'RBI'}, '-2.60'),
({'period': Period.PRIOR, 'fund': Fund.RESTRICTED, 'post_type': 'program'}, '4.80'),
({'period': Period.PERIOD, 'fund': Fund.RESTRICTED, 'post_type': 'ø'}, None),
])