[GNC] Rethinking the placeholder account concept (was: Re: Fwd: The two modules)

Geert Janssens geert.gnucash at kobaltwit.be
Fri Jun 29 12:52:59 EDT 2018


Op vrijdag 29 juni 2018 16:59:07 CEST schreef John Ralls:
> Stock accounts need to have a parent denominated the currency in which the
> stock trades in order for the asset roll-up to work correctly on the
> Accounts page. Three-commodity transactions are possible using trading
> accounts, but I haven’t dealt with that stuff in a while and the details
> have gone fuzzy on me.
> 
> Stock accounts aside, let’s not conflate different purposes. We *should*
> have an account type to accommodate the European Passive account with
> Liability and Equity children, so let’s create that. We’ll need to tweak
> some of the reports a bit to accommodate it, but otherwise it won’t have
> much impact. It should, of course, be what we now call a placeholder and it
> should be able to have only Root as a parent and only one each Liability
> and Equity placeholder children.
> 
I was in fact deliberately trying to come up with a solution that's more 
flexible than fitting the currently known use cases. The European Passive 
account was just one example.

However we may be spending more time on it than necessary. I checked in the 
current version of the commercial accounting package* I also have to deal with 
and it doesn't define a Passive type at all. "Passive" it doesn't even appear 
on its default balance sheet. That is a bit uncommon though as the reports I 
get from my accountant do have a passive section. However just like gnucash 
this package is targeting a worldwide audience (though with country specific 
extensions). That may explain why they didn't bother adding the Passive 
section.

Let me add that contrary to other accounting packages I have played with in 
gnucash the chart of accounts takes a very central place. So whether or not we 
want our own Passive type to group liabilities and equity hierarchically on 
the chart of accounts as well is up for debate.

> I don’t think that creating a generic placeholder type account that can have
> children of any type is a good idea,

Here's another example: a household that wants to  track its finances, but 
would want to keep separate account hierarchies per family member. Standard 
response: create two files. However they would benefit from common reporting 
which is cumbersome with two separate files. So what if we would allow to 
create two independent account hierarchies in one file. With a view type 
account one could create two top-levels ("Husband" and "Wife") and create a 
independent hierarchy for each. While this could also be solved if we would 
allow multiple root accounts and make that root visible I'm using it here to 
illustrate there are use cases we are not covering well.

I borrowed the idea of a view type account from an old version of the 
commercial package* we have to use. Looking more closely it turns out the 
current version has dropped view accounts and instead is organizing charts/
reports using a combination of account type (roughly like we do) and 
hierarchical account numbers. So I must admit perhaps the idea was not so 
bright after all :)

The package also doesn't have a hierarchical account tree. It's flat and 
hierarchy is only added in reports as explained above. So there is no such 
thing as a parent account in that package and hence no restriction on which 
account type a certain account can be.

Again in gnucash the chart of accounts is very central and visible so we 
probably shouldn't drop its hierarchical structure just yet.

The downside of this hierarchical structure is then of course we have to think 
about issues like  whether or not we should allow accounts to have any type of 
child or not. I believe parts of gnucash rely on this (I seem to remember a 
relatively recent issue in the export code that it didn't find all liability 
accounts if they had a non-liability parent or such).

> and I think that we already have too
> many overlapping account types with subtle behavior differences that are
> neither documented nor easily discoverable in code.
> 
I'm all for clearing this up. If we can reduce the number of account types 
that would be great. 
For reference this is the list of 17 account types supported by the commercial 
package*:
Receivable, payable, bank and cash (one type), current assets, non-current 
assets, prepayments, fixed assets, current liabilities, non-current-
liabilities, equity, current year earnings, other income, income, 
depreciation, expenses, cost of revenue, credit card.

Gnucash currently has 15 of which a few are internal only:
Bank, cash, credit, asset, liability, stock, mutual, currency, income, 
expense, equity, receivable, payable, root and trading.



The leftovers from this long discussion for immediate use may be summarized 
as:
- on reports display placeholder accounts once as aggregate account and once 
as its own account if it has splits.
- work to be more pedantic about the meaning of "placeholder". It should 
become an empty account used for structuring the account hierarchy and for 
collecting (sub)totals.
- introduce a read-only status for accounts one doesn't want to accidentally 
modify, but that should still appear in the chart of accounts in various 
places
- replace "hidden" combined with current "placeholder" with "inactive".
- consider introducing a passive account type to be able to structure the 
chart of accounts and reports conform European habits.
- think of ways to have more than one chart of account in one file (only 
mentioned first in this message).

Geert


* By no means am I trying to promote another accounting package here. But 
sometimes it is useful to compare how other applications in the same problem 
domain handle certain aspects of that domain.




More information about the gnucash-user mailing list