statement: Accept search terms.

This is the most consistent way to be able to reconcile specific kinds of
payroll taxes.
This commit is contained in:
Brett Smith 2021-02-01 09:46:54 -05:00
parent 32eaf08552
commit b5a22a963f
2 changed files with 19 additions and 4 deletions

View file

@ -341,7 +341,7 @@ The default is one month after the start date.
action='append',
help="""Reconcile this account. You can specify this option
multiple times. You can specify a part of the account hierarchy, or an account
classification from metadata. Default 'Cash'.
classification from metadata. Default adapts to your search criteria.
""")
parser.add_argument(
'--id-metadata-key', '-i',
@ -361,9 +361,21 @@ been reconciled. Default varies by account.
type=Path,
help="""Write the report to this file, or stdout when PATH is `-`.
The default is `ReconciliationReport_<StartDate>_<StopDate>.ods`.
""")
parser.add_argument(
'search_terms',
metavar='FILTER',
type=cliutil.SearchTerm.arg_parser(),
nargs=argparse.ZERO_OR_MORE,
help="""Report on postings that match this criteria. The format is
NAME=TERM. TERM is a link or word that must exist in a posting's NAME
metadata to match.
""")
args = parser.parse_args(arglist)
if not args.accounts:
if any(term.meta_key == 'payroll-type' for term in args.search_terms):
args.accounts = ['Expenses:Payroll']
else:
args.accounts = ['Cash']
return args
@ -425,6 +437,9 @@ def main(arglist: Optional[Sequence[str]]=None,
rt_wrapper = config.rt_wrapper()
if rt_wrapper is None:
logger.warning("could not initialize RT client; spreadsheet links will be broken")
postings = data.Posting.from_entries(entries)
for search_term in args.search_terms:
postings = search_term.filter_postings(postings)
report = StatementReconciliation(
rt_wrapper,
@ -435,7 +450,7 @@ def main(arglist: Optional[Sequence[str]]=None,
args.statement_metadata_key,
args.id_metadata_key,
)
report.write(data.Posting.from_entries(entries))
report.write(postings)
if args.output_file is None:
out_dir_path = config.repository_path() or Path()
args.output_file = out_dir_path / 'ReconciliationReport_{}_{}.ods'.format(

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.17.0',
version='1.17.1',
author='Software Freedom Conservancy',
author_email='info@sfconservancy.org',
license='GNU AGPLv3+',