Feature request from German list: Disable editing of transactions

Christian Stimming stimming at tuhh.de
Fri Feb 15 15:43:25 EST 2008


Some German business users brought up a "feature" request that sounds a bit 
weird for a programmer: They asked for a gnucash mode of operation where the 
user can not edit older transactions anymore!

I'll explain why this might make sense and why I'll probably commit some 
patches in that direction. For sure it won't affect anyone who doesn't 
explicitily enable that new "feature".

Long text:

The reason here is that this would fulfil one important part of the German 
business accounting rules, "Grundlagen ordnungsgemäßer Buchführung" (GOB); 
Wikipedia proposes to translate this with Generally Accepted Accounting 
Principles (GAAP), although the exact content is somewhat different. 
These "GOB" require that, among other requirements, older records of 
transaction cannot be altered, but instead any changes have to be recorded as 
new transactions, which may potentially be reverse transactions of older 

As a programmer, I'd immediately say this is impossible (on 
Unix/MacOS/Windows, that is) - records of older transactions could always be 
altered as long as they are some bytes in a file and there is a root user who 
can change anything. Well, technically that requirement might be achievable 
through cryptograpic signature and a signed audit trail, but -- to my 
surprise, the reply by the business users was that the technical 
implementation isn't the important part but instead the presentation to the 
user is the important part.

Hence, contrary to what programmers would say, this "GOB" requirement would 
indeed be fulfilled if only the GUI of gnucash doesn't allow altering older 
transactions anymore! The argument here is that an electronic record of 
transactions doesn't have to provide more fraud-protection than a paper 
record of transactions. Paper records could be manipulated as well, but for 
the normal accountant it wouldn't be easy and manipulation would only be 
possible with a clear criminal intent. From a normal accountant's point of 
view, this would be the same with a bookkeeping software which doesn't allow 
any alteration of older transactions in its normal GUI. Normal accountant's 
wouldn't bother with manipulating the data file of the software, hence 
the "GOB" requirement is fulfilled.

In that discussion it was asked how that disable-editing-feature could be 
switched on and off, as any non-business users will want to keep the current 
mode of operation. The interesting and practical proposal that came up is 
that this should be stored in the GncBook: The user could select this as a 
preference in the "New File" wizard, and from thereon this new book won't 
allow alteration of older transactions in the book.

I'm still not completely sure how the actual implementation would look like. 
Should we disable editing of transactions altogether? Or allow editing only 
for today's transactions (other time intervals are easily imaginable)? I'll 
ask for the preferences in that German discussion and eventually I'll 
probably commit some proposals for this feature to ask the German users for 

In any case, I think this could be achived with no changes to any user who 
doesn't explicitly ask for it. Also, this can be achieved with very little 
effort from our side. Both together make this an ideal candidate to be 
committed to SVN...


More information about the gnucash-devel mailing list