reporting currencies & integrity

Bill Gribble grib@gnumatic.com
Wed, 24 Jan 2001 10:33:05 -0600


On Tue, Jan 23, 2001 at 06:42:56PM -0600, linas@linas.org wrote:
> > > -- The user is allowed to create transactions whose 'valuation currency'
> > >    is different than the 'reporting currency'.  However, if this is
> > >    done, then a GUI window pops up with a question "how should this
> > >    transaction be valued in 'reporting currency'"? 
> > 
> > I disagree with most of this.  
> 
> I think you misunderstand.

I don't think so :)

The reporting currency can change at any time, it's just a global
preference setting determining what currency to convert to to total
your assets liabilities etc.

The transaction valuation currency is what used to be called the
"common currency".  It's the one that every Split in a transaction has
to be valued in so that we can determine that CR == DR for a single
transaction.  Since we are removing the account's currency (leaving
just the security) we will have splits with damounts in possibly
several different currencies, and the transaction currency is required
to tie them all together.  It's fixed at the time the transaction is
entered and can't be changed except by explicitly editing the
transaction at a later time.

> > I think the right approach is to store
> > the valuation in the transaction currency with the split.  
> 
> You could choose to value the transaction in a dozen currencies.
> You want to store a dozen values with each split?  

The only currency that counts in the transaction is the one that you
have to convert the split damounts to in order to check that the
transaction is balanced.  It will probably almost always be one of the
split account securities.  In other words, if you are buying IBM with
USD and have a commission in USD, it's most likely that the xtn
currency will be USD and the only non-'damount * 1' conversion will be
the valuation of IBM shares in USD.  It could be something different.

The reporting currency is independent from this, and I think it's
confusing the issue to be talking about them in the same thread if
discussion.

> Yes, but its not just 'some price', its an explicitly auditable
> price.  I think that's a critically important part of it.

I don't know what this means.  Why is it important to audit the price
in the price DB?  You should definitely be able to audit the amount
that every split is valued at in the transaction's balancing currency,
but the price is more of a side effect of that than a cause, AFAICT.
If the number of dollars that you paid for some IBM shares is
reasonable, and the number of shares is reasonable, and the
transaction balances, the price/share is almost by definition
reasonable.  If it was way off, either your share balance of IBM or
your bank balance would be correspondingly off.

>   'To correctly report this transaction in the main window account
>    summary, we need to know the value of this transactin in USD.  The
>    last exchange rate we know of for USD is xx.yy FF per USD, which 
>    would value the transaction at $zzz USD.  Use this exchange rate, or
>    edit?'
> 
> Its not obviously burdensome to me. If you still think it is, we can 
> talk about strategies for hiding it. (e.g. if this was a EURO-FF-IBM
> example, we 'know' that the FF is pegged to the euro, and don't even
> have to ask.)

To me it's burdensome just because it's not a permanent piece of
information.  The reporting currency is something that might change
several times in one session of using gnucash.  From my perspective
the only right thing to do is go out on the net and get the relevant
currency quotes from a server somewhere.

If you're off the net, the dialog makes sense, more as a way of
informing the user that you're operating in a degraded mode; I would
go so far as to say that if you're operating on historical prices for
some asset (meaning you need a lot of date-specific price quotes) you
might have an explicit threshold beyond which you show some "I can't
compute this correctly" message.

> Yes, but the 'report generation time' is "right now" (you make it
> sound like its the distant future or something).  The main gnucash 
> window is a kind of report. 

Fine.  What I'm saying is that the currency used to balance a
transaction and the reporting currency are two different things and
you appear to be confusing them.  Yes, you'll have to have information
that tells you hao to value assets in the reporting currency, and it
may be necessary to ask the user for information.

> I'm not sure that I care if its the 'register' that caused it to
> happen, or the 'main window'.

I care.  They are very different things.  Reports care about reports
and accounts don't.

Honestly I just don't understand the rest of your proposal and how it
relates to the ideas that Dave and I and the mailing list have been
discussing for the last several months.  Since the
exclamation-point-to-content ratio of your last message shot through
the roof near the end I'd rather discuss it in person.

b.g.