beancount/ledger2beancount

Top-level "Revenue" accounts lead to errors in beancount

mohkale opened this issue ยท 7 comments

I'm getting the following errors Invalid account name: Revenues:Pocket-money. When converting transactions from an account called revenues:pocket-money. ledger2beancount should remove the hyphen and ideally uppercase the next letter along if possible.

  • version: ledger2beancount 2.6

Heya, thanks for the report. Note however that there is nothing wrong with hyphens in Beancount account names.

However, the first part of a Beancount account must be one of the five categories Assets, Liabilities, Income, Expenses, Equity, whereas yours is not. I hence suspect that is the reason why you're getting this error (that ledger2beancount cannot fix automatically for you), rather than anything else.

You should map your account names to valid Beancount ones using account_regex, as documented in the manual.

@zacchiro

Yes you're correct. Thank you.

The following configuration fixed it ๐Ÿ˜„.

account_regex:
  "^revenues$": "Income"
  "^revenues:(.*)": "Income:$1"
tbm commented

You should have gotten the following note at the top of the file. Did you not get that?

; ledger2beancount conversion notes:
;
;   - Non-standard root name Revenues used; please set beancount options name_*

@tbm

Well technically I'm only using ledger2beancount to interface hledger with fava so I never actually checked the exported file directly. In fava I got the error I described at the start of this issue report, several times and looking at the exported file that message is there but I stupidly skipped past it. I only started using hledger a few days ago and beancount even less than that so this was a mixture of carelessness and the assumption that beancount was like hledger (in regards to account names not needing to be prefixed with fixed categories). Apologies for my carelessness.

tbm commented

No problem at all. Your bug report is actually useful because we can improve the current situation.

We set option "name_income" automatically for some foreign-language top-level names. We can do the same for Revenue.

tbm commented

I'll fix this

tbm commented

This should work out of the box now.

BTW, an account like Revenues is not valid in beancount: all top-level accounts need a sub-account (e.g. Revenues:Salary). However, ledger2beancount will rename Revenues to Revenues:Subaccount automatically.

Thanks for your feedback!

P.S. Since you use hledger, set hledger: true in your ledger2beancount config.