Commit graph

18 commits

Author SHA1 Message Date
Brett Smith
fdd9f2847b plugin: Skip enum value checks with a flag+FIXME.
We've long supported skipping documentation checks by flagging the
transaction. We haven't done the same for enumerated metadata because we
need it less often, and bad values tend to do more damage to reports.

However, occasionally when something very off-process happens, we do need it
as a matter of expediency. So support it.

In order to skip validation of these fields, the plugin requires that the
value start with the string "FIXME". This helps ensure that reports have a
consistent way to detect and warn about unfilled values in flagged
transactions.
2021-01-29 09:38:37 -05:00
Brett Smith
5c6d9d6f69 tax_implication: Bugfix "Corp" abbreviation in values. 2021-01-18 15:49:39 -05:00
Brett Smith
31cee4e0ba meta_tax_implication: New values for grant recipients. 2021-01-18 15:45:31 -05:00
Brett Smith
1b7fdf4f3b Clarify and organize license info including additional permission. 2021-01-08 16:58:04 -05:00
Brett Smith
680bb6e305 meta_tax_implication: Update values for TY2020 1099-MISC changes.
Support the new 1099-NEC form.
2020-07-28 16:41:34 -04:00
Brett Smith
552ef45f47 plugin: Be more selective about when ! skips validation.
It makes sense to let the bookkeeper skip validations in situations
where the metadata requires information that might not be available
when entered. It does not make sense to skip validations that *must*
be available and affect the structure of the books, like project and
entity.

This commit ensures every plugin hook has a test for flagged
transactions, even for hooks that currently have the desired
behavior where no code changes were required for the test to
pass.
2020-05-21 21:58:48 -04:00
Brett Smith
be35f36d26 meta_tax_implication: Add Chargeback value. 2020-05-01 15:54:40 -04:00
Brett Smith
08a3151bfa meta_tax_implication: Remove unused values. 2020-05-01 15:52:27 -04:00
Brett Smith
c6dc2d83ac data.Amount: Introduce class and simplify code to use it.
See docstring for full rationale. This greatly reduces the need for other
plugin code to handle the case of `post.units.number is None`, eliminating
the need for entire methods and letting it do plain numeric comparisons.
2020-04-09 12:00:38 -04:00
Brett Smith
1fc9363b26 data: Add is_credit() and is_debit() methods to Posting.
The main motivation for this change is to make sure that higher-level
code deals with the fact that self.units.number can be None, and has
an easy way to do so.

I'm not sure all our code is *currently* doing the right thing for this
case, because I'm not sure it will ever actually come up. It's possible
that earlier Beancount plugins fill in decimal amounts for postings
that are originally loaded with self.units.number=None. I'll have to see
later whether this case comes up in reality, and then deal with it if so.
For now the safest strategy seems to be that most code should operate
when self.units.number is None.
2020-03-31 10:07:25 -04:00
Brett Smith
30d371278a plugin: Refactor hooks to use new payment-related methods. 2020-03-29 10:30:54 -04:00
Brett Smith
cbd94d9b75 core: Make MetadataEnum aliases optional. 2020-03-18 18:23:42 -04:00
Brett Smith
3f9e67de3a meta_tax_implication: Don't enforce on Assets:PrepaidExpenses. 2020-03-18 09:00:47 -04:00
Brett Smith
b2ef561c85 data: Introduce Posting class.
Our version of Posting is interface-compatible with Beancount's,
but makes stronger guarantees about the data types for our
higher-level code to rely on.
2020-03-18 07:48:08 -04:00
Brett Smith
3fbc14d377 Improve organization between modules.
* Rename _typing to beancount_types to better reflect what it is.
* LessComparable isn't a Beancount type, so move that to
  plugin.core with its dependent helper classes.
* Errors are a core Beancount concept, so move that module to the
  top level and have it include appropriate type definitions.
2020-03-15 16:03:57 -04:00
Brett Smith
a41feb94b3 plugin: Transform posting hooks into transaction hooks.
I feel like posting hooks a case of premature optimization in early
development. This approach reduces the number of special cases in
the code and allows us to more strongly reason about hooks in the
type system.
2020-03-15 15:50:14 -04:00
Brett Smith
c9ff4ab746 plugin: Settle on words-with-dashes metadata keys. 2020-03-15 10:36:49 -04:00
Brett Smith
dbe9362987 meta_tax_implication: Initial module and tests. 2020-03-05 15:48:10 -05:00