Euro conversion druid -- RFC

Christian Stimming stimming@tuhh.de
Mon, 3 Dec 2001 21:47:38 +0100


-----BEGIN PGP SIGNED MESSAGE-----

This is a concept of what the Euro Conversion druid is supposed to do. I 
especially would like to get some feedback on how much user interaction is 
needed and how much is not needed. Please keep in mind that due to limited 
coding resources this druid should be as simple as possible. Thus it should 
work for the common case, but the non-common case can happily be left to the 
user -- especially since this druid is needed only once.

Necessary Tasks:

1. Create new accounts of currency EUR.
2. Create exchange accounts Euroland -> EUR.
3. Exchange the amounts.

Note: "Euroland" refers to any currency that is a denomination of the EURO, 
i.e. any country withing Euroland. "EUR" refers to the currency Euro.

Details:

1. Create new accounts of currency EUR. There can be different choices on 
which accounts should be newly created. IMHO it is reasonable to say that for 
*every* Euroland account (minus the ones where the rules below don't apply) 
there should be created one EUR account. There can be different choices on 
where these should be created: 

  A) Create a new toplevel account hierarchy as a copy of the existing one 
such that if there were N Euroland toplevel accounts, finally there will be N 
Euroland and N EUR toplevel accounts, i.e. a total of 2*N toplevel accounts.

  B) Let the toplevel accounts remain the same, but create every 
sub-hierarchy as a copy of the existing ones under the respective toplevel 
account.

  C) Create only the leaf accounts (i.e. those without subaccounts) anew, in 
parallel to the place of the existing ones.

  D) For every Euroland leaf account, create an EUR account as a subaccount 
of the existing Euroland account.

  E) For every Euroland leaf account, create an EUR account that replaces the 
Euroland account in the hierarchy. The Euroland account then is modified to 
be the subaccount of the respective EUR account. (i.e. the inverse of D)

However, in my opinion the choices A, B (my favorite), and C should be enough 
for the common case.

There are different possible naming schemes: 

  A) The name of the newly created EUR account is similar to the Euroland 
account plus an appended "EUR".

  B) The name of the newly created EUR account is the same as the Euroland 
account. The name of the old Euroland account is modified by appending the 
"Euroland" currency acronym.

As before, I think that these choices are enough for the common case.

2. Create exchange accounts Euroland -> EUR. The druid should create one 
currency-exchange account for each Euroland currency that exists in the 
current book. Those currency accounts should be created as toplevel accounts. 
IMHO there is no user interaction necessary for this step. The place of the 
currency accounts can be changed afterwards quite easily, so this doesn't 
have to be specified here. 

I'm not totally sure whether either the currency or the security of those 
accounts should be in EUR... I think the security EUR would be better, since 
then they are distinguishable by the account currency -- but it doesn't 
really matter.

3. Exchange the amounts. It is not immediately obvious which Euroland 
accounts' amounts need to be converted. For the common case this would be all 
Asset-type accounts, e.g. Assets, Liabilities... basically all account types 
minus Income and Expense accounts. I'm unsure about the equity accounts -- 
for the common case I would just exchange those as well since the user can 
easily delete the exchange transactions afterwards. RFC: Maybe it would be 
useful to ask the user by an account selection dialog, with 
Asset/Liabilities/Equity accounts selected as default. But maybe even this is 
not necessary in the common case.

Eventually the druid's job is this: For every chosen Euroland account with 
nonzero amount, the druid should create one transaction from the Euroland 
account to the exchange account and another one from the exchange account to 
the new EUR account. 

Christian Stimming
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iQCVAwUBPAvk72XAi+BfhivFAQHz2AP/X5qPzVX+cAmWHI/xm626vOQq8EP2g11G
pUZSaxF4eGuwCVwLrsJMUk4OeW7ALuBQb07gYP/8yJWLiTz8Edm8NvaZQODgabzh
IwK+SZXS/WG4bNWRh4StqhjLsL0sEKJ5nJtE7RMSa3Zjdczv3JDXfyTkzyM9q6Sd
gY6k2bXrmTM=
=8U/W
-----END PGP SIGNATURE-----