Class accounting?

Jeff Wiegley jeffw at cyte.com
Tue Jul 3 06:41:28 EDT 2007


Well, I was composing a nice long response to Daniel's message
but in the end found that his small quips to me added up to
probably as much as he found my postings insulting. Sorry
Daniel.

So I guess since I'm insulting everybody with my discussion
I'll just deleted that response for fear of ticking everybody off
even more. I'll just summarize for posterity in case some other
poor Joe needs project accounting like I do and he can google my
thoughts in the mailing list archives in the future and save
himself the embarrassment of also being offending. Then I'll
leave you all alone. Current members need neither read this
nor reply; I guess it's just a record of my conclusions.

here's the summary: I need project accounting.

My original question was basically: "In gnucash, how do I account
for transactions related to a project so that I can attribute costs
and profit to a project."

Suggestions given:

Use split transactions. This is not an answer as it solves an
   entirely different, and useful, problem. (That is it aggregates
   the debit/credits from several other accounts under a single
   credit/debit in a target account.) Extremely handy for many things
   including ATM deposits containing multiple checks, Purchases
   for multiple items on a single invoice. Salary deductions and
   Loan payments. I have used split transactions for years in
   Quicken. None of this satisfactorily accounts for project details.
   Conclusion: off topic for project cost accounting.

Self suggestion: Use Quicken instead. It also doesn't do project
   cost accounting. I'll grant it doesn't even do vendor accounting
   properly since it sort of maxes out with "categories" and
   categories which are really nothing more than glorified
   description fields. Quicken small business does start to
   provide proper vendor support but is hiding the fact that
   vendors are accounts and that double-entry is taking place
   behind the scenes. Ok, use Quickbooks. That's where I'm tending to
   now. I'm a fan of open source. I've made a career based on it.
   I would like to switch to gnucash to avoid feeding corporate greed
   and having to deal with a Windows platform for the sole purpose of
   tracking accounting information. I would rather be delighted if
   gnucash could meet my needs. Even if that's done in an unorthodox,
   yet complete and accurate manner.

Make every project an account. summarize all vendor expenses or
   purchases under that catchall account. This is not acceptable
   because it produces gnucash account registers which do not
   correlate to financial statements. Your bank statement will say:
   "Paid $X to V" Where X is a dollar amount and V is a vendor.
   Gnucash will show "Paid $X to P" where P is a project. It is now
   a manual, doable yet error prone, process to cross-reference
   account and statement line items. Gnucash has also lost all vendor
   information with this scheme. Conclusion: unsatisfactory due to A)
   loss of information and B) discrepancy between account and
   statement.

Augmentation: Do the previous suggestion but also record the
   vendor's name in the transaction description. Conclusion: better.
   solves loss of information. Same discrepancy problem; statement
   says A->V while gnucash says A->P. Also error prone. Descriptions
   are arbitrary and prone to error. Were the other entries Ralphs,
   ralphs, Ralph's or Ralph's groceries? Vendors and/or projects
   should be one time creation items and then picked from a discrete
   list for each transaction to prevent errors such as typos.

Better augmentation: Make accounts for Vendors, place project names
   in the descriptions. This is an improvement. Statements and
   gnucash both indicate A->V. Only problem now is that projects
   can also be mistyped in the description field yielding the same
   report integrity problems when making queries about project costs.
   Was it doomsday or Doomsday, I forget. similar problem to previous.
   But this is the most accurate, complete method that I currently
   understand gnucash being able to support.

Use subaccounts. make every project an account and then under each
   project make subaccounts for each vendor. No loss of information
   little possibility of typos since accounts are one time creation
   items. Conclusion: problem exists with reporting integrity and
   and accuracy. Also suffers lack of conceptual cohesion by having
   single vendor account accounted for in multiple independent
   locations. Reports can be inaccurate by failing to mark all
   appropriate accounts for inclusion or by having the same types
   of typos in names.
     Expenses:Doomsday:McMaster
     Expenses:Gardening:Mcmaster-Carr  (oops)
   Possibly on par for accuracy and completeness as previous
   solution. Better due to discrete nature of Projects preventing
   some typos, poorer due to increased complexity of account levels
   while not adding additional capability or integrity. I'm tied
   for acceptability between this suggestion and the previous if
   I move forward with gnucash.

reverse you subaccounts:
   Expenses:McMaster:Doomsday
   Expenses:Mcmaster:Gardening
   Same problem, Doomsday might be entered "Doom's day" under a
   different vendor. Single items should be implemented in a single
   manner and should not rely upon tricks of nomenclature to suggest
   meaning. Imagine if mathematics texts did this: Let X be the
   square of the hypotenuse of a right triangle, let Y be the square
   of one the legs and let a different X be the square of the remaining
   leg.
   Then:
       X = Y + X
   therefore, through algebraic manipulation, one might incorrectly
   assume that:
       0 = Y
   (although in this the same name is representing independent
    variables versus the account being specified in independent
    locations. it no less presents an example of the type of problem
    you can get in to with tricks of nomenclature.) Labels are
    arbitrary, the underlying objects should accurately and closely
    implement the concept instances they represent. Nomenclature
    should not be relied upon to enforce behavior.
   Also suffers from A->V versus A->P problem.

I also want to put forth this observation:
Projects should not be accounts. Accounts have assets of measurable
financial value. Projects do not; they are virtual. Project
accounting is primarily intended to serve the internal analytical
needs of a company. Accounts serve external account reporting
needs as well as internal. (please don't nit pick my summary, I'm
fully aware that many organizations need to report project
activities and success to external agencies as well as for internal
use. I'm just trying to lay the groundwork for my conclusions.)
As I think about it, transactions happen between accounts while
Projects are more the cause of the transaction, not the source or
destination of the transaction. I'll spend a lot of time next
week with a CPA of forty+ years of accounting and financial
management experience and see if I can't get a better understanding
of this. Maybe I'm wrong and hopefully I'll figure that out next
week. But I'm willing to stack up the accuracy and completeness of
my personal and business accounting records to those of anybody
else. I'm pretty sure I've got an excellent grasp of accounting
principles already.

I apologize if I missed anybody's suggestions; I think I covered
all the methods suggested. I also want to point out that I know
some of the negative analysis points are manageable given small
numbers of projects or vendors. If you have three projects, it is
relatively easy to manually verify the spelling of accounts or
descriptions and to verify account inclusion in reports. But for
larger numbers of projects or vendors and given that the system
may need to be operated by a variety of employees who may not
understand database concepts like normal forms and such these
analysis points are valid. gnucash should address them if it is
intended to compete with the likes of QuickBooks or Peachtree. If
the gnucash goal does not include robust enterprise accounting
features then, of course, I am out of line and this is all moot.

I close with an implementation suggestion.
   GnuCash should support an editable list of "classes" or "causes",
   to provide a name for projects ("projects" seems too specific
   and there may be activities or reasons one wants to attribute
   transactions to that would not fit the definition of a project.
   For instance process management policies and practices might
   cause/incur monetary transactions and would nearly be the
   antithesis of a project.)

   Each transaction should have a field allowing it to be associated
   to a single specific class and a direction (whether the direction
   of value flow should be counted as a credit due to the project or
   a debit. The association would not affect any information about
   the accounts the transaction actually took place between.

   The class could then be viewed as a pseudo-account. whereby the
   "view" would simply locate and present all transactions tagged by
   the class and list the transaction as a debit or credit to this
   pseudo-account based on the bias of the direction assigned to the
   association.  No method should be provided for the editing of
   the virtual transactions presented in the pseudo-account view of
   a class. (You couldn't add, delete or modify line items in the
   pseudo-class view.

Though I may have to give this some more thought as it is not
entirely clear to me yet whether one to one associations between
classes and transactions are sufficient to properly represent
enterprise business accounting practices and I have a few tugs of
doubt about the existence of other unrecognized insufficiencies.
For instance: subclasses I quickly think might be useful. I
have advanced project needs but I certainly wouldn't call them
enterprise class so I could be missing something useful to those
fish larger than myself. But I think any change to gnucash like
this should be designed cleanly and well enough to ultimately
support an enterprise environment.

Thanks for your help,

- Jeff

Daniel wrote:
> Jeff Wiegley wrote:
>>> No, you create accounts for each *project*.  You can create
>>> sub-accounts for vendor.
>>
>> That does not work.
>>
>> A single vendor can support multiple projects. Which project
>> should you stash that vendor under? Whatever you select is wrong.
> 
> 
> Expenses:Projects:Doomsday Weapon:Ralphs
> Expenses:Projects:Gardening Robot:Ralphs
> 
> 
>> Each invoice or receipt (or even portion of a receipt) should
>> be attributable to any project account
> 
> Split transactions.
> 
> 
>>>> The problem is that this doesn't extend to projects.
>>
>> see?
> 
> Actually, I don't. I don't understand what you mean by extend.
> 
>>>> But I can't put the McMaster account under "doomsday weapon"
>>>> because then all purchases for the gardening project also
>>>> get accounted for under the doomsday project. I can't put
>>>> McMaster under the gardening project for the symmetric
>>>> argument.
>>
>> And there is my example of why you can't have projects as
>> accounts and vendors as subaccounts. Unless I guess you are able
>> tp create two different subaccounts under their respective projects
>> accounts with the same name.
> 
> Yes.
> 
> Expenses:Doomsday Weapon:McMaster
> Expenses:Gardening Robot:McMaster
> 
> 
>> But that is also asking for trouble
>> which I am not going to get into here unless you want me to. The
>> problem with two different accounts with the same name should be
>> obvious.
> 
> It is not obvious to me. What's the problem? Some times I have accounts 
> with the same name under different parent accounts.
> 
> 
>> Splits are simply the aggregation of multiple, individual transactions,
>> to produce a single credit or debit amount that matches some statement,
>> or invoice record.
> 
> No they are not. For example, consider the following split:
> 
> Assets:Banks      -> - $300
> Expenses:Interest -> + $130
> Liabilities:Loan  -> - $170

I'm sorry, I cannot resist challenging this one item. It is so much
two separate transactions aggregated into one line that the two
transactions are attributable to entirely different tax schedules
(at least if we are talking about a home loan in the US). One
transaction is the bank charging you for $130 which you agreed to pay
them for the use of their money. The second is an amount of
$170 to pay off a portion of the outstanding principle which you agreed
to in order to maintain their trust in you. The bank was just nice
enough to let you write a single check to cover both charges. Two
different chunks of value moved between different account pairs.

I'm ok if you want to consider it a single "transaction". It is
in a sense a thing that only requires you go through the motions of
a single gnucash transaction entry. Kind of a Poh-tato vs Pah-tata
argument I could admit. But it still doesn't solve any project cost
accounting needs.

> 
> This is a single transaction that affects three accounts, not two 
> transactions. I did not make two loan payments, I made one. Part of it 
> went toward the principal and part was interest. You _could_ whack it 
> into two transactions, but that would be _wrong_ not just because it 
> doesn't match the bank statement but simply because that is not what 
> really happened. I did not make two payments, I made one payment that 
> had an expense component and a liability component.
> 
> 
>> For instance if I deposit three checks drawn from
>> three accounts as debit into a savings account then really three
>> transactions took place. But the bank statement for the savings
>> account shows a single credit.
> 
> In this case I would make three transactions in GnuCash. What you 
> described is not what split transactions are for. They are not for 
> matching bank statements. They are for matching single transactions that 
> touch 3 or more accounts.
> 
>> Anyways, in doing it as project accounts with vendor subaccounts
>> (with or without splits) you can never track back who you paid an
>> amount to. All you can see is that in the bank account there are 
>> transactions, paid to "doomsday" or to "gardening".
> 
> No, you would see a transaction that says "Doomsday:McMaster".
> 
>> But if you wanted to purchase the same component again who would
>> you buy it from?  If you had a problem with the charge, like say
>> it was discovered to be the incorrect amount, who would you call?
> 
> If the transaction says "Expenses:Doomsday:McMaster" I suggest you talk 
> to McMaster.
> 
> 
>> Oh... visually and manually cross-reference the bank statement you
>> say? Forget that.
> 
> What the heck are you talking about? Who in the world suggested that you 
> check statements manually? We are showing you how to use GnuCash and 
> answering your questions in our spare time. Show some appreciation.
> 
>> You also can't make intelligent use of your data because you have
>> lost all vendor information.
> 
> Are you sure you understand the concept of sub-accounts?
> 
> Expenses:Doomsday:McMaster
> 
> How exactly did you lose all the vendor information?
> 
>> You can say "How much did I spend on the
>> doomsday product" but you can't determine "How much did dealing with
>> McMaster-Carr cost me last year?" which can be equally important
>> to a business as there are other suppliers.
> 
> You'd have to add up the totals for each McMaster sub-account. Mildly 
> annoying, but perfectly doable. Or you could make an income-expense 
> report and under 'Options' select only the McMaster sub-accounts.
> 
>>>> So it doesn't fit the food model. (Even the Food model
>>>> doesn't work because I might want to account for food I
>>>> bought for myself versus food I bought for guests as gifts
>>>> under projects and such. I.E. not everything I buy at
>>>> Ralph's is consumed ultimately paid for by me but rather my
>>>> roommate.)
>>> This is again done with a split.
>>
>> No, it isn't. IANACPABMFI (I am not a CPA but my father is) I have
>> discussed this at length with him and this is not done with splits
>> or subaccounts.
> 
> Expenses:Doomsday:Gifts
> 
> Who says you have to put everything that is edible in the Food account? 
> I have an account for groceries and another for leisure which includes 
> restaurants.
> 
> Much of the rest of your email was bordering on insult and I'd rather 
> not reply to it.
> 
> Best,
> Daniel.

-- 
Jeff Wiegley, PhD
Cyte.Com, LLC


More information about the gnucash-user mailing list