accrual: Add Prepaid Expenses to aging report.

This commit is contained in:
Brett Smith 2020-10-21 11:33:27 -04:00
parent 56bfbe21c4
commit db3ba4fd4d
3 changed files with 9 additions and 4 deletions

View file

@ -140,6 +140,7 @@ class AccrualAccount(enum.Enum):
# See AgingODS.start_spreadsheet().
RECEIVABLE = Account('Assets:Receivable', [365, 120, 90, 60])
PAYABLE = Account('Liabilities:Payable', [365, 90, 60, 30])
PREPAID = Account('Assets:Prepaid', [365, 120, 90, 60])
@classmethod
def account_names(cls) -> Iterator[str]:
@ -175,11 +176,15 @@ class AccrualPostings(core.RelatedPostings):
accruals: Dict[Tuple[str, ...], List[data.Posting]] = collections.defaultdict(list)
payments: Dict[Tuple[str, ...], Deque[data.Posting]] = collections.defaultdict(Deque)
key: Tuple[str, ...]
prepaid_account = AccrualAccount.PREPAID.value.name
for post in postings:
norm_func = core.normalize_amount_func(post.account)
entity = str(post.meta.get('entity', 'BlankEntity'))
if post.account.is_under(prepaid_account):
invoice = entity
else:
invoice = str(post.meta.get('invoice', 'BlankInvoice'))
if norm_func(post.units.number) >= 0:
entity = str(post.meta.get('entity', 'BlankEntity'))
key = (post.meta.date.isoformat(), entity, invoice, post.account)
accruals[key].append(post)
else:

View file

@ -5,7 +5,7 @@ from setuptools import setup
setup(
name='conservancy_beancount',
description="Plugin, library, and reports for reading Conservancy's books",
version='1.12.3',
version='1.12.4',
author='Software Freedom Conservancy',
author_email='info@sfconservancy.org',
license='GNU AGPLv3+',

View file

@ -218,7 +218,7 @@ def check_aging_ods(ods_file, date, recv_rows=AGING_AR, pay_rows=AGING_AP):
ods_file.seek(0)
ods = odf.opendocument.load(ods_file)
sheets = ods.spreadsheet.getElementsByType(odf.table.Table)
assert len(sheets) == 2
assert len(sheets) >= 2
check_aging_sheet(sheets[0], recv_rows, date)
check_aging_sheet(sheets[1], pay_rows, date)