meta_entity: Don't set transaction metadata when payee is None. RT#12913

This commit is contained in:
Brett Smith 2020-11-04 13:42:55 -05:00
parent 770b22f2f0
commit 51eee8ec8f
3 changed files with 12 additions and 2 deletions

View file

@ -72,7 +72,7 @@ class MetaEntity(core.TransactionHook):
txn_entity, txn_entity_ok = self._check_entity(txn.meta, txn.payee)
if txn_entity_ok is False:
yield errormod.InvalidMetadataError(txn, self.METADATA_KEY, txn_entity)
if txn_entity is txn.payee:
if txn_entity is txn.payee and txn_entity is not None:
txn.meta[self.METADATA_KEY] = txn.payee
for post in data.Posting.from_txn(txn):
if not post.account.is_under(

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

View file

@ -214,6 +214,16 @@ def test_which_accounts_required_on(hook, account, required):
assert any(error.message == "{} missing entity".format(account)
for error in errors)
def test_dont_set_entity_none(hook):
txn = testutil.Transaction(postings=[
('Expenses:Other', 5),
('Assets:Cash', -5),
])
assert any(hook.run(txn))
assert 'entity' not in txn.meta
for post in txn.postings:
assert post.meta is None or 'entity' not in post.meta
def test_not_required_on_opening(hook):
txn = testutil.OpeningBalance()
assert not list(hook.run(txn))