When you create a new set of accounts, it asks what currency to use. If you choose anything other than USD, then the entire program becomes a nightmare to use, because ever report and every new customer and every new invoice and everything still defaults to USD. Even going into Edit->Preferences->Accounts and explictly specifying a non-USD currency does not fix it. When you create a new invoice, it of course does not work because it cannot find accounts receivable, because even though the invoice is non-USD and the income account is the same non-USD and the accounts receivable is also the same non-USD, it creates the "customer" as a USD customer and it is a total nightmare.
Did you read e.g. https://wiki.gnucash.org/wiki/Locale_Settings? What is your region, language etc.?
We just fixed several localization problems on Windows. Please test a recent nightly build from https://code.gnucash.org/builds/win32/maint.
OK, I can see what the problem is. The default currencies are all based on the user locale, instead of the set of accounts. This is a problem. If I have two sets of books (one for a HK company and one for a US company), the HK company books need to default to HKD while the US company books need to default to USD. There is no way to do that. It just picks up my language as the default, which makes no sense whatsoever. During the account creation process, it asks for the currency of the accounts. Although it uses this to create the initial set of books, it then discards that information entirely. This seems like a complete inversion of the way accounting works. If I have a HK company where my main currency is HKD, then that needs to be the default, but only for the books for that company, not for the books for all of the companies. The current system-wide defaults approach means it very difficult to deal with accounts for multiple companies in different countries.
Sorry, you should really have a look at the documentation instead writing things, which are definitely wrong: See "Choose Currency" in https://code.gnucash.org/docs/C/gnucash-guide/basics-running-gnucash.html#basics-acct-hierarchy and https://code.gnucash.org/docs/C/gnucash-help/set-prefs.html#prefs-accounts for the details. Feel free to reopen this report, if you have some idea, how we could improve the documentation.
Frank, I believe Mat makes a valid point. The preference you refer to on the Accounts tab is user level, not book level. So if you have one book in USD and one in HKD the default you set is correct only for one book. So if you switch books often you risk getting bitten by a wrong currency more than you like. Your options are very consistently change the default each time you switch books, or be very vigilant to explicitly set the currency you want when creating accounts or vendors/customers. The same goes for the default report currency (why is that a separate option in the first place by the way?). This is clearly an example of a preference that should have been book level rather than user level. And I agree the default currency one chooses when setting up an account hierarchy via the assistant should be used as default for the entire book - whether that's creating new accounts, new vendors and customers (which in turn define the currency for bills and invoices), or reporting. I'd go even further still and derive the default number format from this default currency. Finally it should of course be possible for the use to change his/her mind, so we still need a preference setting somewhere. As it's book specific, it should probably live under File->Properties instead of Edit->Preferences in the current context.
Ah, yes, now i see the point "switching between books". IMHO we should replace in Edit->Preferences->Accounts->Default Currency the default selection 'Locale' by 'Book Currency' As long as no book is open, it will fall back to locale. I doubt there will be much desire for a backward compatible "always use locale" option.
> I'd go even further still and derive the default number format from this > default currency. I believe, this is a bad idea: all LANG={de|fr|nl}_BE use the same formats. But most DE_* use different formats: de_DE: € 2.000,00 de_CH: SFr. 2'000.00 In CH books in 4 different currencies are common: CHE, CHF, CHW, EUR. How will you derive the format? From the fist 2 letters of the code? Is there only one format for EU? How do you want to derive it for X** currencies?
(In reply to Frank H. Ellenberger from comment #7) > > I'd go even further still and derive the default number format from this > > default currency. > > I believe, this is a bad idea: all LANG={de|fr|nl}_BE use the same formats. > But most DE_* use different formats: > de_DE: € 2.000,00 > de_CH: SFr. 2'000.00 > In CH books in 4 different currencies are common: CHE, CHF, CHW, EUR. > How will you derive the format? > From the fist 2 letters of the code? > Is there only one format for EU? > How do you want to derive it for X** currencies? Firstly you missed my point: I suggested to derive the number format from the currency, not from the locale. In the example above for € the number format would be € 2.000,00, for SFr. it would be 2'000.00. This is not directly related to locale. Secondly I said *default* number format. As with the currency the user should still have the liberty to change it. But other than that, point taken. I can't tell if there's a generally recommended number format associated with EUR, or whether each country does its own thing. So let's just forget about this for now.