Thank you for reporting it Soham.
On Mon, Dec 11, 2023, 06:01 Soham Shanbhag <[email protected]> wrote: > I see that there is an open issue on github related to this too, see > https://github.com/beancount/beancount/issues/742. > > The present behaviour does not satisfy the definition of the pad directive > in the language syntax, i.e. it does not 'insert a transaction that will > make the subsequent balance assertion succeed, if it is needed'. To ensure > this, in my opinion, ops.pad needs to be in PLUGINS_POST. I'm willing to > file a PR on github(it's a two line change) but wanted to confirm that this > doesn't break any other functionality. > > > On Tuesday, December 5, 2023 at 5:12:13 AM UTC+9 Soham Shanbhag wrote: > >> Hi, >> I've been using padding to account for errors in my accounts and bank, >> for example for transactions which I may have forgotten but are small >> enough that I don't want to hunt for them. Usually, this goes along the >> lines of: >> >> 2023-12-04 pad Assets:Checking Equity:Adjustments >> 2023-12-05 balance Assets:Checking 1000 USD >> >> whenever I want to check an account in beancount with my bank. I'm also >> using plugins which manipulate the transactions. However, beancount loads >> the padding plugin (ops.pad) before my custom plugins in PLUGINS_PRE(see >> beancount/loader.py), which leads to padding the accounts with values >> before manipulation by my plugin. Since the balance directive is in >> PLUGINS_POST, this leads to an error. For an example, see the following >> beancount file and plugin file: >> >> ; file: temp.beancount >> option "operating_currency" "USD" >> option "insert_pythonpath" "True" >> plugin "plugin_temp" >> >> 2020-01-01 open Equity:Adjustments >> 2020-01-01 open Assets:Checking USD >> 2020-01-01 open Expenses:Groceries >> >> 2023-01-01 pad Assets:Checking Equity:Adjustments >> 2023-01-02 balance Assets:Checking 1000 USD >> >> 2023-02-01 * "Eggs" >> Expenses:Groceries 100 USD >> Assets:Checking >> >> 2023-03-01 pad Assets:Checking Equity:Adjustments >> 2023-03-02 balance Assets:Checking 700 USD >> >> ; file: plugin_temp.py in the same directory >> >> from beancount.core import data >> >> __plugins__ = ('plugin_temp',) >> >> def plugin_temp(entries, unused_options_map): >> new_entries = list(e for e in data.filter_txns(entries) if e.flag == >> '*') >> return new_entries + entries, [] >> >> >> With bean-check, this gives the error >> Balance failed for 'Assets:Checking': expected 700 USD != accumulated 600 >> USD (100 too little) >> >> 2023-03-02 balance Assets:Checking 700 >> USD >> >> Is there a particular reason ops.pad is in PLUGINS_PRE and not in >> PLUGINS_POST? Putting ops.pad in PLUGINS_POST seems to solve this issue. >> >> >> Also, it seems that issue >> https://groups.google.com/g/beancount/c/bMo9A6lM9Z4/m/egj3rGBMBAAJ is >> still unsolved. This also affects my above workflow, but I'm presently >> easily sidestepping it by not using padding on an account where I do >> balance checks. >> > -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beancount/02d0ae5f-599a-4c4b-94d9-a3f58ead8615n%40googlegroups.com > <https://groups.google.com/d/msgid/beancount/02d0ae5f-599a-4c4b-94d9-a3f58ead8615n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhNFsU2GGvmmAZ6VkUGpGebZHqhwSe06N8KDXZG1LwJXpQ%40mail.gmail.com.
