beancount / ledger2beancount

Ledger to Beancount text-based converter
GNU General Public License v3.0
79 stars 15 forks source link

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

Closed mohkale closed 2 years ago

mohkale commented 2 years ago

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.

zacchiro commented 2 years ago

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.

mohkale commented 2 years ago

@zacchiro

Yes you're correct. Thank you.

The following configuration fixed it :smile:.

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

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_*
mohkale commented 2 years ago

@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 2 years ago

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 2 years ago

I'll fix this

tbm commented 2 years ago

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.