GNOME Bugzilla – Bug 302609
Accounts receivable system does not respect currency?
Last modified: 2018-06-29 20:51:42 UTC
Please describe the problem: My default currency is Canadian Dollars (CAD). If I set up an invoice in U.S. dollars, it is printed in U.S. dollars, but posted to my accounts receivable register in Canadian Dollars. Steps to reproduce: 1. Make CAD your default currency. Create a set of business accounts. 2. Create a customer, make USD ($) his default currency. 3. Create an invoice for the customer. 4. Post and print the invoice. Actual results: The printed invoice is correctly in U.S. dollars (e.g. $115.90 USD). The transaction is posted to the accounts in Canadian dollars (e.g. $115.90 CAD). Expected results: I am not sure, since the documentation on multiple currencies is still incomplete. Certainly I would expect the invoice to be posted in the same currency in which it was made out. Does this happen every time? Yes. Other information:
I think your guess is correct and the business subsystem incorrectly ignores the currency completely so far. However, fixing this is probably non-trivial. Do you have any suggestions about how the GUI for handling these cases should look like? Maybe that helps the developers who work on this code.
I don't know much about multiple-currency accounting, so I am no expert on how this should be done. However, I suspect that it should be handled in precisely the same way as multi-currency splits. Try this: create a CAD account and a USD account and transfer some money from one to the other. You will see that a pop-up window appears and asks for the current exchange rate. This seems to be consistent with some accounting standards documents that I have seen on the web (SSAP 20 for Canada/UK, FASB 52 for the US). Since the 1970's, it seems to be the standard that transactions should usually be recorded in the exchange rates that are current at the time when the transaction occurs (as opposed to the historical price at which assets were originally purchased, which is what they apparently used before 1970). In designing the GUI, one should keep in mind that posting an invoice can involve various accounts, and they can all be in different currencies. For example, consider this invoice in USD: Wares: USD $100 Tax GST: USD $7 Tax PST: USD $8 When posting this, $100 should be added to Income:Sales, $7 should be added to Liabilities:GST, $8 to Liabilities:PST, and finally $115 should be added to Assets:A/R to balance everything. Now assume this invoice is sent to a U.S. customer (who lives in Canada but likes to be billed in USD). Further assume that the company sending the invoice is German, but does frequenty business in Canada (and thus has a Canadian sales tax account). Then Income:Sales would be in EUR, Liabilities:GST and Liabilities:PST would be in CAD, and Assets:A/R would be in USD (it could also be in EUR, depending on whether the company keeps separate A/R accounts for different currencies). The invoice should be posted exactly the same way as the following hypothetical transaction: create a new, empty, account "Assets:Invoice" which is in USD. Then do the following transfers: Asset:Invoice --> Asset:Accounts receivable $115 Asset:Invoice <-> Liabilities:Taxes:GST +$7 Asset:Invoice <-> Liabilities:Taxes:PST +$8 Asset:Invoice <-> Income:Sales +$100 The point of the example is the currency conversion. If you actually do the above transfers by hand, you will be presented with 3 different pop-up windows, each asking for an exchange rate. My feeling is that the GUI attached to the "post" button should do exactly the same thing. Maybe it can even re-use the same code.
It's a LOT more difficult than you expect. Right now the invoice system does not handle multiple currencies. Any particular invoice can be in any currency you want, but all accounts touched by that invoice (including A/R, expenses, etc) MUST be in the same currency. The system does not actually enforce this, but your results will be wrong if you violate this requirement. I have no expectation that this will get fixed anytime soon. If you want to create an invoice in USD then you need a USD A/R and a USD Income account.
*** This bug has been marked as a duplicate of 343187 ***
GnuCash bug tracking has moved to a new Bugzilla host. This bug has been copied to https://bugs.gnucash.org/show_bug.cgi?id=302609. Please update any external references or bookmarks.