diff --git a/conservancy_beancount/plugin/meta_receipt.py b/conservancy_beancount/plugin/meta_receipt.py index c620579addb6139635e5024739f308bb056ed6ae..01036fd701b81a36dee4d9bc5b3036942765f0e5 100644 --- a/conservancy_beancount/plugin/meta_receipt.py +++ b/conservancy_beancount/plugin/meta_receipt.py @@ -40,6 +40,7 @@ class MetaReceipt(core._RequireLinksPostingMetadataHook): (post.account.is_cash_equivalent() or post.account.is_credit_card()) and not post.account.is_under('Assets:PayPal') and abs(post.units.number) >= self.payment_threshold + and post.meta.get('tax-implication', '').title() != 'Chargeback' ) def _run_checking_debit(self, txn: Transaction, post: data.Posting) -> errormod.Iter: diff --git a/tests/test_meta_receipt.py b/tests/test_meta_receipt.py index af7a37025cec0929239a0d76eff0dbfa99fbfa1c..a4c59bd12e1bb5c468b187dbb22294d9cc870508 100644 --- a/tests/test_meta_receipt.py +++ b/tests/test_meta_receipt.py @@ -343,6 +343,28 @@ def test_fallback_on_zero_amount_postings(hook, test_acct, other_acct, value): ]) assert not list(hook.run(txn)) +@pytest.mark.parametrize('test_acct,other_acct', testutil.combine_values( + ACCOUNTS, + NOT_REQUIRED_ACCOUNTS, +)) +def test_not_required_on_chargeback_txns(hook, test_acct, other_acct): + if test_acct.required_types & PostType.DEBIT: + check(hook, test_acct, other_acct, None, + txn_meta={'tax-implication': 'Chargeback'}, + check_type=PostType.DEBIT, + ) + +@pytest.mark.parametrize('test_acct,other_acct', testutil.combine_values( + ACCOUNTS, + NOT_REQUIRED_ACCOUNTS, +)) +def test_not_required_on_chargeback_posts(hook, test_acct, other_acct): + if test_acct.required_types & PostType.DEBIT: + check(hook, test_acct, other_acct, None, + post_meta={'tax-implication': 'Chargeback'}, + check_type=PostType.DEBIT, + ) + @pytest.mark.parametrize('test_acct,equity_acct', testutil.combine_values( ACCOUNTS, testutil.OPENING_EQUITY_ACCOUNTS,