gnucash-devel Digest, Vol 59, Issue 20

J. Alex Aycinena alex_aycinena at
Sat Feb 16 18:15:02 EST 2008

On Saturday 16 February 2008, Geert Janssens wrote:> > Hi,> > I'll just chime in with some of my personal findings and observations. Most of > this based on my personal experience and may not be valid for everyone. But I > thought different insights might be useful to get a complete picture.> > On Saturday 16 February 2008, Graham Leggett wrote:> > An example of where one split remaining alterable becomes important is> > when one side of the split goes to "income - sales" (for example), and> > the other side goes to "bank account". Gnucash isn't the authoritative> > source for bank account information (the bank is) and therefore it> > should remain editable until the bank statement is reconciled, but> > gnucash is the authoritative source for sales. So it must remain> > possible to allocate the bank split to say "petty cash" or "overs and> > unders" if a mistake was found.> >> Graham's comment on bank reconciliation makes me wonder wether this new > feature request isn't some kind of variation on reconciliation ?> > I used to get a warning when I tried ot modify a reconciled transaction with > the option to allow the change or not. To my confusion, this doesn't seem to > work anymore in version 2.2.1 on Mandriva. Maybe this has changed ? But a > similar method could be used to completely disable editing on a per account > basis.> > In another accounting program I'm using (commercial, windows-only program for > the Belgian accounting market), disabling the editing of transactions is a > user initiated action: after entering a number of transactions, and verifying > them, a user can choose an option "doorboeken" which I would translate > as "book through". From that point on, these transactions are no longer > editable, the "book through" action is irreversible. But allowing the user to > initiate the action, provides room to fix human errors (mistyping a number, > or posting to a wrong account). It is perfectly normal to make such mistakes, > and correcting them doesn't fall in the category of "tampering". It makes > sense to only disable the editing after the entries have been verified. In > the other accounting program, we usually do the final "booking through" only > quarterly, after having verified all inputs and just before printing the > official VAT/tax reports.> > <sidenote>> In this particular program, the transactions are grouped in accounting periods > (configurable as either months or quarters). When choosing "book through" you > select for which accounting period you wish to perform this. Although > the "booked through" transactions can't be edited, it's still possible to add > new transactions in the same accounting period. This allows for midperiod > analysis on data that is verified, while later on still entering new > transactions in the period.> > Although not part of the original request, I would really like to see this > concept of accounting periods in GnuCash as well. It's a concept required by > Belgian law (we have quarterly or monthly VAT declarations) and it helps in > dealing with some other difficult cases as well, like for example booking a > forgotten bill from a previous VAT period.> </sidenote>> > Regardless of this, using a set date to disable editing of transactions > shouldn't prevent new transactions to be entered before that date, like for > example a forgotten invoice.> > Assuming the feature is user-enabled, it should also be enabled separately per > account. In my typical scenario, I enter invoices and bills earlier than I > enter bank account information. So I would disable editing on invoices and > bills earlier than I would on bank accounts.> 
I think there is some confusion in the discussion about the requirements - I took it to be that there be an unalterable (by the application user, not the systems administrator) audit trail.
The discussion reminds me of the days when people kept manual checkbook registers. A "non-accountant" person might write the entries in in pencil and if they ever made a mistake on an entry, simply erase the error and, if necessary, recalculate the balance from that point forward making it "look" like the error had never happened in the first place. An "accountant", however, would always write the entries in in ink and, if an error occurred, write a new "adjusting" entry on the date the error was discovered to get the balance right and annotate the original entry to point to the adjusting entry. That way a full audit trail of what happened would be preserved and when the checkbook was reconciled to the bank statement, the two entries (the original entry and its adjustment) would be treated together to match the bank's item.
The trouble is that gnucash looks like the "non-accountant" person writing in pencil - the transaction shown in a register is the "latest version" of the entry which may have been changed many times with no audit trail of the changes. It may be tempting to change gnucash so that it "writes in ink" at the user-interface level but that seems very constraining on the one hand and like a big job on the other.
Since gnucash already writes transaction logs for recovery purposes, perhaps there is a way to provide the required audit trail using that mechanism with fewer, smaller changes.
We should keep in mind the distinction between "business transactions" (for example, writing a check, issuing an invoice) and "data-entry transactions" (the one or more entries into the system needed to get the business transaction properly reflected in the system of record). If someone wrote a check for 150.50 of your favorite unit of currency and entered it into the system as 150.05 with the wrong payee and wrong transfer account and then at three separate times went back in and corrected the amount, the description, and the transfer account(s), there would be four data-entry transactions to get the one business transaction right in the system and there should be an audit trail of all of them. But it seems unnecessary to clutter up gnucash's user interface and reports and everything to get this.
My question for the developers who understand the internals:
1. Could the existing mechanism for generating transaction logs for recovery purposes be modified reasonably easily to write an "audit trail entry" to a new "audit trail log" for any new register entry and/or any individual change to an existing register entry?
2. If so, could a report be written fairly simply that would show this audit trail detail for any specified register entry (or all entries within a date range, or for several accounts within a date range, etc.)? This would show the original transaction plus all changes resulting in the transaction shown in the register window, with dates and times (and user in the future if user level tracking is ever implemented).
3. If so, would it be fairly simple to implement a book-level option, to be selected at the time that a book is created, that would activate this functionality? If selected, it would keep the audit trail log for all time and make the audit trail report(s) accessible, if not gnucash would function as today.
If this is feasible, it seems that this might satisfy the requirement with relatively few and isolated changes. This seems like a general approach and so, if this would satisfy the German requirement, or go a ways towards it, it would also help with US GAAP requirements and those elsewhere. Issues of account-level applicability would no longer matter. Issues of controlling data entry by date or relative to book closings or by user or anything else would be separate items. This would simply provide an accurate and complete audit trail.
Connect and share in new ways with Windows Live.

More information about the gnucash-devel mailing list