Re: [GNC-dev] Normalizing live data

2019-02-02 Thread Hendrik Boom
On Sat, Feb 02, 2019 at 04:30:30PM +0100, Geert Janssens wrote:
> Op zaterdag 2 februari 2019 14:31:43 CET schreef Hendrik Boom:
> > > On 2/1/19 5:36 AM, Wm via gnucash-devel wrote:
> > > > [2] as long as the transaction stream balances the actual numbers
> > > > don't matter (their will be occasions where the numbers are important
> > > > but these tend to be number extremes related to commodities rather
> > > > than anyone using gnc to do a Mr Putin vs Mr Trump sports bet).? In
> > > > most cases multiplying any matching numbers by the same semi-random
> > > > should produce a good file for examination so long as it is done
> > > > consistently [4]
> > 
> > If the numbers in the file are integers times some account or
> > currency-dependent unit, then just clculationg the greatest common
> > divisor of all the obfuscated numbers will give a good guess as to the
> > semirandom multiplier.
> 
> Do you think that still is possible if a different random number was used for 
> each transaction ? (That's how I understood Wm's suggestion)
> 
> Each transaction will have it's own random number. So for transaction A all 
> splits may have been multiplied with 450, for Transaction B all numbers may 
> have been multiplied by 500. 

That might work.  That way eash transaction balances, but the account 
balances will be nonsense.

Still, by finding the gcd you can still produce a lower bound on the 
transaction values.  And if you, say, split off sales tax into a separate 
split your lower bound will oftern be the actual value.

And it's likely that one could also identify income and expense accounts as 
such by the pattern of debits vs credits.

-- hendrik

> 
> Regards,
> 
> Geert
> 
> 
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


[GNC-dev] Normalizing live data

2019-02-02 Thread Hendrik Boom


> On 2/1/19 5:36 AM, Wm via gnucash-devel wrote:
> >
> > [2] as long as the transaction stream balances the actual numbers
> > don't matter (their will be occasions where the numbers are important
> > but these tend to be number extremes related to commodities rather
> > than anyone using gnc to do a Mr Putin vs Mr Trump sports bet).? In
> > most cases multiplying any matching numbers by the same semi-random
> > should produce a good file for examination so long as it is done
> > consistently [4]

If the numbers in the file are integers times some account or 
currency-dependent unit, then just clculationg the greatest common 
divisor of all the obfuscated numbers will give a good guess as to the 
semirandom multiplier.

-- hendrik
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: gnucash-devel Digest, Vol 142, Issue 14

2015-01-29 Thread Hendrik Boom
On Tue, Jan 27, 2015 at 12:00:01PM -0500, John Ralls jra...@ceridwen.us wrote:
...
 That sounds great, with one question: Are you able to write proper DocBook 
 patches? That was the big blocker to getting documentation contributions the 
 last time it came up here, and it's still unresolved except for those who are 
 willing to dive in with a plain XML editor or to work with the foibles of the 
 one extant free (unfortunately only as in beer) DocBook editor.

Not much good for patches to an existing document, but Asciidoc was 
designed for writing books (unlike Markdown), and will produce Docbook. 
Indeed I think that may have been its original purpose.

-- hendrik
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Recommend IDE for coding in C -- some historical context

2013-03-21 Thread Hendrik Boom
On Wed, 20 Mar 2013 13:13:00 -0400, Buddha Buck wrote:

 Paul,
 
 As should be clear from the other responses, there's no clear if you
 work in C/C++, then this is the IDE you should use.  Both languages
 have been around for a very long time (C since the early 1970's, C++
 since the mid 1980's), and have been used across a large number of
 different environments, there's no category-killer.
 
 Both C and C++ are old enough languages that they have a certain amount
 of cruft in their design with makes it hard for IDEs to get their hooks
 into them to provide advanced services.

The macro preprocessor for C/C++ really gets in the way of an external 
program making sense of the code.

...
...

 
 It should be noted that in Linux/Unix, all the development tools are
 command-line based, and so any IDE is going to call make, gcc, git, gdb,
 javac, etc behind the scenes anyway to do the actual work.

And C was originally invented jointly with a command-line Unix system.  
So using it this way fits with tradition.

 
 So which you choose is more a matter of taste than functionality. 
 Everyone is going to prefer the one they are most familiar with.
 
 That said, here are the choices I can speak to:
 
 Emacs -- This is an old extensible text editor, nearly as old as C. 
 Since it is older than most windowing interfaces, it is very much geared
 towards usage on a terminal -- keyboard based commands, fixed window
 size, monospace type, etc.  It has, in the past decade or so, added some
 ability to be used with a mouse, but the keyboard is really the way to
 use it.
  Since it is designed to be extensible (it uses elisp, a language
  similar
 to the Guile language GnuCash uses), it has a lot of features available
 (in the 1980's it's desktop icon was a kitchen sink).  As far as an IDE
 goes, it provides all the basic hooks so you don't have to leave the
 program in order to develop, and it has support to handle a large number
 of languages.
  Emacs has a reputation for being heavyweight and larded with features,
  but
 I've found that compared to modern editors with a fraction of the
 capabilities, it's rather lightweight and spry.  The old joke that the
 name means Eight Megabytes And Constantly Swapping is meaningless when
 your browser can take a gig of memory.

What emacs accomplished in those early days was to be a UI for text 
terminals.  You had multiple 'buffers', which could be put in differennt 
places on the screen, or placed in the background to be recalled later.  
Some buffers would contain files t edit, others aould act as command-
language terminals, and so forth.

Emacs  i those days was as much of a way of life as desktop GUIs are now.

That's why it was big.

But compared to today's memory hogs, it's tiny.

 Vi -- This is almost as old as Emacs, but wasn't originally written to
 be quite as extensible.  Like Emacs, it's text-and-keyboard oriented. 
 It provides syntax highlighting, but I'm not sure about hooks to other
 tools.
  I don't use it for development myself, that much.  It has always been
 considered lightweight compared to Emacs.

The first time I saw vi, it was already on a system that had mouse-and-
windows.  Whether vi or X windows was first, I suspect that functionality 
that might have drifted into vi got placed in the window system instead.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Recommend IDE for coding in C -- some historical context

2013-03-21 Thread Hendrik Boom
On Thu, Mar 21, 2013 at 02:56:04PM -0400, Buddha Buck wrote:
 On Thu, Mar 21, 2013 at 2:31 PM, Hendrik Boom hend...@topoi.pooq.comwrote:
 
  On Wed, 20 Mar 2013 13:13:00 -0400, Buddha Buck wrote:
 
   Paul,
  
  
   It should be noted that in Linux/Unix, all the development tools are
   command-line based, and so any IDE is going to call make, gcc, git, gdb,
   javac, etc behind the scenes anyway to do the actual work.
 
  And C was originally invented jointly with a command-line Unix system.
  So using it this way fits with tradition.
 
 
 Yup.  Worse, from an editing/developing standpoint, the standard terminal
 was a teletype terminal, a combination printer and keyboard that usually
 printed at the rate of about 4 characters/second (45 Baud).

The slowest I ever encountreed in the 60's was 110 boud, about 10 
characters per second.  But for typing, the old KSR teletypes required 
so much force that it may well have taken superhuman finger strength to 
enter more than about 4 characters per second, whatever the baud rate.

 This virtually
 demanded a terse command line syntax and the bare minimum of excess output.

And it's why the common Unix commands are so cryptically short.

 
  What emacs accomplished in those early days was to be a UI for text
  terminals.  You had multiple 'buffers', which could be put in differennt
  places on the screen, or placed in the background to be recalled later.
  Some buffers would contain files t edit, others aould act as command-
  language terminals, and so forth.
 
 
 It still does those things, which is still very, very useful.

Yes.

 
 
 
 
 X was started as a project in 1984 at MIT. Both Emacs (from MIT) and vi
 (from Berkeley) were first written in 1976 or so.  Both Emacs and vi came
 out of a desire to make line or tape oriented editors easier to use on the
 new-fangled CRT displays.  Emacs was originally a set of macros for the
 TECO (Tape Editor and COrrector) editor,

Yes..  But it's not the one we have now.  Richard Stallman had a 
copyright dispute with MIT, which resulted in MIT taking his emacs
proprietary.  He has an early free-software licence in the emacs manual, 
declaring emacs to be free, and MIT decided that it was work-for-hire 
and took it over.

THis was one of the events on the way to his GNU public license ans the 
dree software foundation.  As I understand it, one of the first pieces 
of GNU software was a new emacs, this time based on a Lisp dialect.  The 
result was the emacs we have today.

-- hendrik
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: GnuCash for Symbian

2012-04-04 Thread Hendrik Boom
On Wed, 04 Apr 2012 15:24:47 +0200, Łukasz Spas wrote:

 Hello.
 
 I've developed small application for Symbian (tested on S60) which
 allows users to manage their finances using their Symbian phone. (Here
 is the repo: https://gitorious.org/gnucash-s60/gnucash-s60)
   It is still incomplete because I would like to add functionality which
 allows to synchronize list of transactions with desktop' GnuCash via
 Bluetooth using QIF file format.
 And here goes the question - is it hard to add reciving QIF file via
 Bluetooth  importing it to GnuCash's database functionality? I have
 never look inside GnuCash's code and I don't know where I could start.
 (Maybe someone could help?) Moreover, is it even possible to add such
 Bluetooth import functionality to main GnuCash repo? I think it might be
 useful for many of smart-phones owners and gives a possibility to write
 many of mobile ports/clients of GnuCash easily.

Doing bluetooth is probably the easy part.  It's just a comm protocol, 
after all.

The trouble lies with QIF.  At least the last time I looked, it just 
doesn't have all the information you need.  It doesn't identify the 
account the QIF file is about, and it doesn't clearly identify the 
accounts that are at the other end of transactions.  The result is that 
the QIF reader in gnucash contains *lots* of code about guessing what 
accounts are to be used for different transactions and recording user 
feedback about the guesses to make better ones in the future.  Not to 
mention that if you get another QIF from the bank a week later, it has to 
identify which transactions are *already* in the gnucash file and which 
are new.  QIF provides no transaction serial numbers to make this 
reliable.  Such serial  numbers are de rigeur in any professionally 
designed protocol.

In any case, if the user has edited the transaction using gnucash, you 
*don't* want that change to make the importer fail to recognize it and 
import it anew.

So, to do the job *right* (whether it's worth the effort or not), gnucash 
would have to have unique transaction IDs for each transaction in its 
database. (Does it already do this?  I don't know.)

Then you could perhaps look at the code for qif import (or maybe there's 
another importer you could look at which might be better) and adapt it to 
whatever intermediate file format you'd *like* to use with your 
application.  That file format should explicitly identify the accounts at 
both ends of each transaction.  Gnucash accounts, at least in the XML 
file, have some king of binary hash ID to identify them uniquely.  That 
might be useful here.  I don't know if those hashes are in the actual 
data base, though, or just part of the XML file format.  You app would of 
course have to know the names of the accounts so that the user with the 
mobile phone could select them unambiguously.

It might even be possible that gnucash's XML format for transactions 
might have the right information for your intermediate files.  Or not. 

All in all, it's a big job, and *I* didn't volunteer to do anything like 
it a few years ago when I thought it might be useful.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: For The Love Of Bitcoin

2012-02-16 Thread Hendrik Boom
On Thu, 02 Feb 2012 10:18:47 -0500, Derek Atkins wrote:

 karmic...@bitcoin2pay.com writes:
 
 [Bitcoin history elided]
 
 I didn't see any actionable requests in this long diatribe.  What
 exactly are you asking?  Note that you can always add your own commodity
 to GnuCash, although you need to treat it like a stock or fund instead
 of a currency, but all that means is that GnuCash forces you to always
 explicitly transact with an exchange rate.  (It also means you cannot
 have income/expense accounts denoted in that commodity).

Would there be any technical difficulty in allowing users to add their 
own currencies, instead of just their own commodities?

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: xaccAccountEqual ?

2012-01-10 Thread Hendrik Boom
On Mon, 09 Jan 2012 16:17:02 -0500, Derek Atkins wrote:

 Hendrik Boom hend...@topoi.pooq.com writes:
 
 I thought you were working on learning to script Gnucash with Guile.

 In part, yes.  But I'm really trying to learn to write an introduction
 for people who want to learn to script Gnucash with Guile.
 
 True, and from a user perspective xaccAccountEqual() is the API way to
 test whether two account objects point to the same Account.  Just
 testing for acc1 == acc2 may work in some cases, 

My question was prompted by my surprise that tere were such cases.

 and I believe that
 xaccAccountEqual() does have that short-circuit in there.  But users
 should use the API.
 
 This isn't C++.  If it were then yes, we could have overridden the '=='
 operator to do a deep-inspection compare if the pointers are different.

And I'm happy that you didn't override ==.  That would be confusing.

 But because this is C we had to write our own API and ask users to use
 it.
 
 -derek

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: xaccAccountEqual ?

2012-01-08 Thread Hendrik Boom
On Sat, Jan 07, 2012 at 04:23:16PM -0500, Derek Atkins wrote:
 Hi,
 
 On Sat, January 7, 2012 2:35 pm, Hendrik Boom wrote:
  What's xaccAccountEqual for?  Is it actually something gnucash uses (I
  can't imagine what for), or is it just there because guile wants the smob
  to have a function that tests deep equality?
 
 I don't understand the question.  It's there to test equality of two
 Account objects. The API is used in a dozen places throughout the code.

I can see testing two pointers to Account objects to see if they point 
to the same Account object.  But I thought, perhaps wrongly, that the 
engine would make sure that no account would ever have two 
different Account objects, presumably by some kind of test before 
creating the second Account object..  

I do find myself wondering how one could ever be in the situation where 
two accounts are Equal, with Equal subaccounts, and even Equal splits 
except by amazing coincidence.  And then why that coincidence should be 
worth testing for.  Evidently I'm misunderstanding something here. 
 
-- hendrik
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: xaccAccountEqual ?

2012-01-08 Thread Hendrik Boom
On Sun, Jan 08, 2012 at 11:52:41AM -0800, John Ralls wrote:
 
 On Jan 8, 2012, at 10:40 AM, Hendrik Boom wrote:
 
  On Sat, Jan 07, 2012 at 04:23:16PM -0500, Derek Atkins wrote:
  Hi,
  
  On Sat, January 7, 2012 2:35 pm, Hendrik Boom wrote:
  What's xaccAccountEqual for?  Is it actually something gnucash uses (I
  can't imagine what for), or is it just there because guile wants the smob
  to have a function that tests deep equality?
  
  I don't understand the question.  It's there to test equality of two
  Account objects. The API is used in a dozen places throughout the code.
  
  I can see testing two pointers to Account objects to see if they point 
  to the same Account object.  But I thought, perhaps wrongly, that the 
  engine would make sure that no account would ever have two 
  different Account objects, presumably by some kind of test before 
  creating the second Account object..  
  
  I do find myself wondering how one could ever be in the situation where 
  two accounts are Equal, with Equal subaccounts, and even Equal splits 
  except by amazing coincidence.  And then why that coincidence should be 
  worth testing for.  Evidently I'm misunderstanding something here. 
 
 Not two accounts, two account objects -- both of which might have been loaded 
 from the same data in storage, or might have been deep-copied. (There was a 
 partially-completed book closing implementation that did that as the first 
 step. We're slowly weeding out the remnants.) 
 
 I thought you were working on learning to script Gnucash with Guile.

In part, yes.  But I'm really trying to learn to write an introduction 
for people who want to learn to script Gnucash with Guile.

 Why are you worrying about the internals? 

Because

(a) it's hard to know which things are internal and which aren't.  And 
everyone trying to write scripts is going to have to figure out what 
they really need to know.

(b) When I saw this, I started to wonder if I had completely 
misunderstood how gnucash works.

(c) It's impossible to write something well without knowing more than 
you're writing.  Even in fiction, it's a truism that if the author 
don't know what brand of cereal the main character eats for breakfast, 
there's a gaping hole in the story, even if that fact never really 
enters into it.

(d) Besides, I start wandering through the docs, and encounter things 
like this.

 (Yes, it's true that the scripting interface exposes too much -- *far* 
 too much -- of Gnucash's internals. That's partly laziness on the part 
 of those writing the wrapper code and partly a legacy of Gnucash 1.x 
 when it was written mostly in Guile.

There's lots more here than needed for report generation, true.  But I'm 
sure there are going to be other things the scripting interface is good 
for, for which we may need to expose those internals.  So I vote no 
change here, for now.

But when it gets documented properly, one of the things that's going to 
have to be decided is just which of the internals are going to be the 
official interface, which ought to be preserved during further 
development, and which of them, though useful in the moment, are *not* 
guaranteed to be there in the next revision.

-- hendrik
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


gnucash mentioned in guile docs.

2012-01-07 Thread Hendrik Boom
Just a matter of slight interest -- gnucash is mentioned in the guile 1.8 
documentation.  It seems that gnucash is part of a significant code eco-
system for Guile-based applications.

See the last paragraph of http://www.gnu.org/software/guile/docs/docs-1.8/
guile-ref/Scheme-vs-C.html#Scheme-vs-C

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Guile 2

2012-01-07 Thread Hendrik Boom
On Fri, 09 Dec 2011 23:52:25 +0100, Geert Janssens wrote:

 Op vrijdag 9 december 2011 10:59:31 schreef Ted Creedon:
 Is anyone working on the Guile 2 issues?
 
 Not right now, but it's on my to do list.
 
 I plan to work on it somewhere in the next couple of weeks.

Please keep me informed what's happening -- I'm trying to write 
documentation for the users who want to write their own reports and such 
in guile -- both for those who want their onw report generators invoked 
from within gnucash and those who want to use the gnucash engine in their 
own scheme code to access the database.

-- hendrik


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


xaccAccountEqual ?

2012-01-07 Thread Hendrik Boom
What's xaccAccountEqual for?  Is it actually something gnucash uses (I 
can't imagine what for), or is it just there because guile wants the smob 
to have a function that tests deep equality?

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Anyone speak french (gnucash-fr needs a new moderator)?

2012-01-07 Thread Hendrik Boom
On Fri, 06 Jan 2012 09:14:46 -0500, Derek Atkins wrote:

 Hey,
 
 Email to the moderator of the gnucash-fr mailing list has been bouncing
 for a while.  I want to ask the gnucash-fr list if there is anyone that
 would like to step up to be a moderator, but I don't speak french.  I
 presume I could just write in English and hope people there understand
 me, or I could attempt to use Google Translate to make myself somewhat
 understood.  But I was hoping someone on this list might be able to
 help?

I'm learning French.  I could try a translation with the help of a 
dictionary.  I'm still shaky on verb conjugation and such, but I might 
still be better than Google Translate.  In any case. I could at least vet 
the output from Google Translate;  I may not be able to improve it, but I 
won't make it worse.

But I really think enough of the gnucash-fr readers understand enough 
English to figure out that you're looking for a moderator, and you won't 
really need a translator.  In Europe it's usual for the school system to 
teach multiple languages.  You could even ask if one of the readers on 
gnucash-fr would translate your English message.  They'd probably do a 
better job than I.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: iPad 2 app - please?

2012-01-07 Thread Hendrik Boom
On Mon, 02 Jan 2012 17:33:25 -0800, John Ralls wrote:

 On Jan 2, 2012, at 1:32 PM, Nick Kemp wrote:
 
 I am a big gnucash fan – however, I would really love to have an ipad
 app... please?
 

 This has been discussed at length before. It isn't going to happen, not
 least because Gtk doesn't support iOS.

Also, it's not at all clear whether gnucash's use of guile would get past 
Apple's approval process.  If it was an easy port, I'd say let someone 
try it and see.  But to do a major rewrite and have it rejected would be 
annoying.

The gambit (another implementation of Scheme) implementors had a gambit 
app approved for a short while, then rejected and removed from the app 
market.  The last thing you'd want would be to start relying on it and 
then have Apple pull the app.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: iPad 2 app - please?

2012-01-07 Thread Hendrik Boom
On Sat, 07 Jan 2012 19:58:57 +, Hendrik Boom wrote:
 
 Also, it's not at all clear whether gnucash's use of guile would get
 past Apple's approval process.  If it was an easy port, I'd say let
 someone try it and see.  But to do a major rewrite and have it rejected
 would be annoying.

Technically, it is allowed to write part or all of an app in an 
interpreted language. But if the user could write his own reports in 
guile, he could write them to download code off the net and execute it, 
which is forbidden.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Explorer's log: Entering the maze

2012-01-06 Thread Hendrik Boom
On Sat, 03 Dec 2011 13:03:41 -0800, John Ralls wrote:

 
 If you haven't already, you might find it helpful to take a few minutes
 to skim over the Doxygen documentation. That will help you understand
 why the docs are structured the way they are.

People using a scripting languagee to access gnucash date structures 
would probably be most interested in the pages 
starting at src/doc/html/group__Engine.html, 
or online, at http://svn.gnucash.org/docs/HEAD/group__Engine.html

because most of the links at

http://svn.gnucash.org/docs/HEAD/index.html#doxylist

seem to refer to obsolete documentation.

-- hendrik



___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: 2.6 Release -- SCheme

2011-12-31 Thread Hendrik Boom
On Fri, 30 Dec 2011 18:19:58 +0100, Geert Janssens wrote:

 Op vrijdag 30 december 2011 09:06:58 schreef u:
 
 Swig/Guile: It looks to me like we have a much broader problem: Swig's
 Guile support is not maintained. For the short term we can try applying
 the patch from the Swig bug report and see if that gets us Guile 2.0
 support, but in the longer run it looks like we need to either switch
 back to GWrap or replace Guile with something that's better supported.
 
 Yes, this is a bad problem.

This is probably a more drastic change than guile 2.0, but:

There's another implementation of Scheme available that actually compiles 
Scheme to C or C++ -- Gambit-C.  You can actually embed C++ code within 
the C code, even #include stuff.  There's also an interpreter, but the 
interpreter doesn't have embedded C/C++ code, though it can call 
previously compiled code that does.  The Debian package is called gambc.
I have no idea whether this would be easier to use and maintain than 
using guile.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Gnucash reports using php and mysql

2011-12-29 Thread Hendrik Boom
On Thu, 29 Dec 2011 10:44:31 +0100, Gour wrote:

 On Wed, 21 Dec 2011 10:10:39 -0500
 Donald Allen donaldcal...@gmail.com wrote:
 
 My motivation was the same as yours -- I could not get what I wanted
 from the built-in reports and I felt that the cost of trying to learn
 to work within gnucash (in spite of the fact that I am a *very*
 experienced Scheme programmer) was higher than the approach I took.
 
 Huh...this does not sound optimistic for potential GC users wanting to
 customize their invoices/reports...
 
 Is there any plan to improve reporting system in 2.6 or we cannot expect
 anything before 3.0?
 
 I'd suggest
 having a look at an interesting thread, Scripting API, on
 gnucash-devel started by Hendrik Boom in November. It discusses similar
 issues and the subject of the fairly new python bindings capability
 comes up, something I have not investigated myself (only because I
 already have something that serves my purpose, developed before the
 python bindings capability became available) but is probably worth
 looking at if you are actively developing reports for yourself.

It's still on my personal TODO list, but family and other matters have 
severely diverted me from writing the necessary documentation, and 
possibly any code the documentation will suggest to me as necessary.

I still intend to get back to this.  I still thiink that the primary 
problem with the report-writing tools is not that they are unusable, but 
that no one knows how to use them.
 
-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Strategy

2011-12-04 Thread Hendrik Boom
On Sat, 03 Dec 2011 16:40:07 -0500, Donald Allen wrote:

 I've been watching with interest the messages flying by from various
 people that confirm the impression (from just trying to build it) that
 Gnucash has become a gigantic hairball. John Ralls has been saying a
 number of things that sound smart (I'll tell you later where to send the
 check, John) about design errors, problems in the data model, etc., and
 has embarked upon a re-design. Christian has taken a similar step back
 with Cutecash. Then there's the whole issue of the use of Scheme. Much
 as I love the elegance of the language, I doubt that its use is
 appropriate here, for all the reasons that we've discussed ad nauseum.
 
 So I'd like to suggest that perhaps none of the proposed ways-forward
 are radical enough. I have little to no knowledge of Gnucash internals.
 The only thing I know about the quality of the design and the code is
 what I read from the people who are currently doing the real work. But I
 do have many, many years of experience working and managing projects of
 similar and greater complexity, and there are times when you just have
 to cut your losses. Gnucash has been around for a long time, and its
 life-span covers the development of a lot of tools. If you were going to
 start with a blank sheet of paper today, I doubt very much whether you
 would do a lot of the system as it is today. The big question is, when
 is it worth it to cut your losses and start over?
 
 I don't know that Gnucash is at that point, but I'm suggesting that you
 give this question very careful consideration, before doing something
 incremental. 

Rewriting is a normal process in the design and implementation of quality 
software.  In fact, I consider it essential in maintaining clarity and 
making reliability possible.  But most rewriting is incremental in a well-
modularized program.  And rewriting that makes a program more modular is 
often the best kind.

In a large program, I often spend half my time rewriting existing code 
with no change in program behaviour.  It's essential to pave the way for 
later substantive changes.

The truth is also that it's very difficult to know how a program should 
be organized from the start.  Only if you've written a number of similar 
programs before do you have much of a chance of guessing right ab initio.  
So rewriting and reorganization had better be part of ones' strategy all 
along.

 Keep in mind that if you did start over, the current system
 wouldn't be a total loss. I'm sure there is a lot of value in things
 like accounting rules that it enforces, and other knowledge embedded in
 the code. Some of it might be salvageable by lifting parts of the code
 itself, or at least doing translations. Other cases might involve just
 transferring knowledge of how to do things and how not to do things. But
 I say don't throw good money *possibly* (not definitely) after bad
 without at least considering whether it's time for Gnucash II.

Seriously, I've thought of it before deciding to join this project in any 
role but kibitzer.  There's lots of ways I'd like to rewrite it all from  
scratch (redoing it all in Modula 3, for example).  But in my opinion it 
provides me more return for effort just participating in what's here 
already.

-- hendrik



___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Strategy

2011-12-04 Thread Hendrik Boom
On Sun, 04 Dec 2011 18:35:08 +0200, Graham Leggett wrote:

 On 03 Dec 2011, at 11:40 PM, Donald Allen wrote:
 
 Gnucash has been around
 for a long time, and its life-span covers the development of a lot of
 tools. If you were going to start with a blank sheet of paper today, I
 doubt very much whether you would do a lot of the system as it is
 today. The big question is, when is it worth it to cut your losses and
 start over?
 
 I use gnucash because a) it's been around a long time, and b) because
 gnucash is likely to be around a long time still.
 
 Anyone can start over at any time - that's called a new product - but
 when people decide to abandon what they have and start over, that's when
 you lose faith in the project and start to look somewhere else.
 
 Sure, new fandangled languages are shiny, but will they still be popular
 in 5 years? No idea. I am happy to bet that C will be around in 5 years,
 so investing in the language as unsexy as it might be for me is a good
 investment.

Yeah.  C will still be around.  Scheme is almost as old, (older if you 
consider it Lisp) and will be around too.  I'd guess Python will too, but 
I'm not nearly as sure of that.

 
 I think gnucash needs a heavy set of refactoring. I'd like to see a
 proper libgnucash split out as a separate library that I can depend on
 in other software. I'd like to use a libgnucash library as a basis for a
 restful service that will allow me to share gnucash with others, like my
 accountant. But I don't think gnucash needs to be started over.

There was once and enterprise-resource system (whatever that is) that 
comprised around 200,000 lines of C (or was it C++?) code.  They decided 
that for some new functionality they should add a scripting language.  
They picked Gambit, and implementation of Scheme, as their scripting 
tool.  Now it happens that Gambit is exceptionally compatible with C and C
++, because although it's usually interpreted, it can also be compiled to 
C or C++ (that's how it's bootstrapped, as it happens).  And in the 
compiled form, it has specific mechanisms to declare and call C 
functions, include C header files, and so forth.

After they started down this path, they discovered other stuff within the 
program that needed improvement, and found the easiest way to do it was 
to rewrite in Gambit.  Eventually in the course of two years or so, the 
200,000 lines of C/C++ had been reduced to about 15,000 lines of Gambit 
code (or was it 25,000?  I forget.  I'll look it up if it's really 
important.)  Not only that, but the program ran significantly faster, 
because of the insights they had into how badly they had been doing 
things, and because of extensive use of the profiling tools in Gambit.

The effect was a complete rewrite.  But it was all incremental change.  
Every bit of it could be seen as improvement over what was there before, 
and worked in context.  Evolutionary change.

No.  I'm in no hurry to throw Scheme out.  Nor am I eager to start a 
project to rewrite everything in Scheme, or C++ or C# or Mesa, or even 
one of my favourites, Modula 3.  Change what needs to be changed.  Change 
what's ugly and becoming unmaintainable.  Prove all things; hold fast to 
that which is good.

-- hendrik


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Explorer's log: Entering the maze

2011-12-03 Thread Hendrik Boom
Thanks for all the help so far.  I now generate the users and doxygen 
documentation, and have started exploring it.

The internal system documentation is a maze.  And unlike mazes printed in 
puzzle books, there aren't clearly identified start and finish points :)
Or, at least, I haven't found them yet. 

I'm going to try and keep a log of my adventures getting into the maze; 
it may help later when I or someone else is writing or rewriting 
documentation.  Should I send the log entries here?  Most will not be 
cries for help, but they may serve as a guide for an author of a  
StartReadingHere page or some such.  I hope my style here will be light 
and engaging, but if it doesn't turn out that way, I can only apologize.

So far I've found gnucash/src/doc/html/index.html, which looks like a 
start  page.  It contains lots of links, but has no notion of which links 
are more or less important.  The first Doxygen overviews I went to were 
Engine Framework and Engine Architecture.

Engine Framework is minimal, and doesn't seem to have anything to say 
about an engine framework.  It does have an API link, and that's perhaps 
the important part of that page.  Other than that, there's a mention of 
additional API documentatino in src/doc/design/engine.texinfo, which , 
rather helpfully, advises me not to read it as being hopeless obsolete.

The companion page, Engine Architecture, merely tells me it is becoming 
obsolete, and, rather helpfully, recommends I refer to the design 
documentation in src/doc/design for a complete description of the Engine 
architecture src/doc/design for a complete description of the Engine 
architecture.  I do so, and discover that every file with content in 
that directory is marked as hopelessly obsolete.

No, don't rush to delete them right away -- I think the history is 
valuable.  They are plainly enough marked that they won't confuse anybody 
as too the current state of affairs.

Now the API link I mentioned above (to file:///home/hendrik/dv/gnucash/
workspace/gnucash/src/doc/html/group__Engine.html) *is* important, and 
links to that kind of stuff is what should be on an API intro page, 
together with short descriptions of what one can expect to find at the 
end of each link. The group__*.html pages seem to organize the meat of 
the API.

I'll start on such a page.  I'll leave it to later to decide whether it 
should be assembled out of pieces by doxygen or written as a single 
coherent piece of prose.  I'll have to have some content before 
determining the form.

-- hendrik


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Building user documentation -- just one glitch.

2011-12-02 Thread Hendrik Boom
As John Ralls pointed out, the proper way to check out the user 
documentation is 

svn checkout http://code.gnucash.org/repo/gnucash-docs/trunk gnucash-docs

Everything was almost smooth sailing from there.

The first problem was that I didn't have the command xsltproc.
The ./configure suggested that I should have libxslt installed.  I 
already had it installed.  It turned out that xsltproc was not in the 
libxslt package, but in a package of its own, called xsltproc.

Is this a Debian testing peculiarity, or is it likely to be widespread?  
I can propose a patch to  gnucash-docs/README to add xsltproc to the list 
of prerequisites, but I'd first like to know whether this is necessary in 
general, or just a Debian testing peculiarity.

Anyway after that things went smoothly, and I got a lovely set of html 
documentation.

I haven't tried to make epub yet, and it may be a while before I do.  It 
seems to need calibre, and as far as I can tell at the moment, calibre on 
Debian testing is broken.  I boot Debian stable  when I need calibre to 
make epubs for my bookreader.  Looking into this is an entirely different 
project from gnucash, and I can live without epub for the time being.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Scripting documentation

2011-12-01 Thread Hendrik Boom
On Wed, 30 Nov 2011 15:12:31 -0500, Derek Atkins wrote:

 Hi,
 

 
 The API docs are generated via doxygen.  You can generate them yourself
 using make docs.  The sourcesof the API docs are spread out through
 the source tree.

But when I'm in the top directory of the source tree (the same placs I 
originally executed ./configure and the general make commands), when I 
execute

make docs

it tells me

make: *** No rule to make target `docs'.  Stop.

Until further notice, I'll look through the source tree for Makefiles 
that do have a docs target.

AH!

There's a doc target.  Would that be the one you mean?

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Scripting documentation

2011-12-01 Thread Hendrik Boom
On Thu, 01 Dec 2011 15:16:53 +, Hendrik Boom wrote:

 On Wed, 30 Nov 2011 21:13:58 +, Yawar Amin wrote:
 
 Hi Hendrik,
 
 The user documentation is in the gnucash-docs repository (
 http://svn.gnucash.org/trac/browser/gnucash-docs).
 
 
 Evidently there's still something I don't know, 

Sorry to waste your time.  I found it:

svn checkout http://code.gnucash.org/repo/gnucash-docs/trunk gnucash-docs

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Scripting documentation

2011-12-01 Thread Hendrik Boom
On Thu, 01 Dec 2011 15:16:05 +, Hendrik Boom wrote:

 On Wed, 30 Nov 2011 15:12:31 -0500, Derek Atkins wrote:
 
 Hi,
 
 
 
 The API docs are generated via doxygen.  You can generate them yourself
 using make docs.  The sourcesof the API docs are spread out through
 the source tree.
 
 But when I'm in the top directory of the source tree (the same placs I
 originally executed ./configure and the general make commands), when I
 execute
 
 make docs
 
 it tells me
 
 make: *** No rule to make target `docs'.  Stop.
 
 Until further notice, I'll look through the source tree for Makefiles
 that do have a docs target.
 
 AH!
 
 There's a doc target.  Would that be the one you mean?

Possibly not, because make doc tells me that doxygen.cfg is not found.

hendrik@notlookedfor:~/dv/gnucash/workspace/gnucash$ make doc
make -C src/doc doc
make[1]: Entering directory `/home/hendrik/dv/gnucash/workspace/gnucash/
src/doc'
rm -f doxygen.cfg.tmp
sed  doxygen.cfg.in  doxygen.cfg.tmp \
-e 's:@-top_srcdir-@:../..:g; s:@-VERSION-@:2.4.99:g'
mv doxygen.cfg.tmp doxygen.cfg
doc:  /home/hendrik/dv/gnucash/workspace/gnucash/src/doc
distdir: 
rm -rf html refman.pdf
doxygen.cfg
/bin/bash: doxygen.cfg: command not found
make[1]: *** [doc] Error 127
make[1]: Leaving directory `/home/hendrik/dv/gnucash/workspace/gnucash/
src/doc'
make: *** [doc] Error 2
hendrik@notlookedfor:~/dv/gnucash/workspace/gnucash$

-- hendrik


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Scripting documentation

2011-12-01 Thread Hendrik Boom
On Thu, 01 Dec 2011 11:22:34 -0500, Derek Atkins wrote:


 
 This would imply you do not have doxygen installed.

I didn't.  I do now.  It still doesn't work, failing in the same way.   
No time to investigate now.   I'll look into it further tonight.  Maybe 
there's a configure parameter I forgot.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: I probably did something wrong; having configure problems. SOLVED

2011-11-30 Thread Hendrik Boom
On Fri, 18 Nov 2011 19:44:09 +, Hendrik Boom wrote:

 Op vrijdag 18 november 2011, Geert Janssens screef:
 
 On vrijdag 18 november 2011, Hendrik Boom wrote:
 
 Do build details really depend on the presence of .svn directories?
 
 It does. Not strictly from the directories, but svn tools are used to
 check if you are working from an svn directory. If you remove the .svn
 directories, you effectively prevent svn tools from considering your
 directory as a working directory.
 
 I really never thought the version control system would be involved in
 the build process.  Live and learn.

Now I have the .svn directories and it all makes properly.
Thanks.

-- hendrik


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Scripting documentation

2011-11-30 Thread Hendrik Boom
OK. I've managed to compile gnucash and get it to pass its checks (except 
for the database back end, which I had excluded.

Now I'm ready to start prowling around looking for scripting API to 
document.  

Could someone tell me:

Is there any existing API documentation, either in the source tree (which 
now has lots of automatically generated files) or on the wiki (please let 
me know where -- it's a huge source tree).

Where are the source codes for the  scripting API -- both the X side and 
the Python/Scheme side(s).

So far I haven't found the rather extensive user documentation I'm used 
to seeing as a longtime gnucash user.  Is it in the source tree too?  Or 
somewhere else.  Do I have to use a different make target to gennerate it?

Anything else that might be useful?

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


I probably did something wrong; having configure problems.

2011-11-18 Thread Hendrik Boom
This is the actual message I get.

checking for ./src/swig-runtime.h... no
configure: error: 

It looks like you are NOT building from Subversion
but I cannot find swig-runtime.h.  Check your PATH
and make sure we can find svnversion in your PATH!
Either that or contact gnucash-devel@gnucash.org because
the tarball you downloaded is broken.


hendrik@notlookedfor:~/dv/gnucash/workspace/gnucash$ 


Now the funny things are:

(1) I am building from subversion, except that to avoid messing with my 
pristine copy, and to avoid accidentally uploading junk in case I should 
ever get upload privileges, I'm using a copy of the downloaded-by-svn 
source code that does not have the .svn directories in it.

Do build details really depend on the presence of .svn directories?

(2) I can find svnversion in my $PATH.

hendrik@notlookedfor:~/dv/gnucash/workspace/gnucash$ echo $PATH
/home/hendrik/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/hendrik/
bin/i686/:/usr/local/cm3/bin/:/usr/local/Gambit-C/current/bin/
hendrik@notlookedfor:~/dv/gnucash/workspace/gnucash$ which svnversion
/usr/bin/svnversion
hendrik@notlookedfor:~/dv/gnucash/workspace/gnucash$ 

(3) But indeed, I can't find swig-runtime.h anywhere either.  Where is it 
supposed to come from?

-- hendrik


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: I probably did something wrong; having configure problems.

2011-11-18 Thread Hendrik Boom
Op vrijdag 18 november 2011, Geert Janssens screef:

 On vrijdag 18 november 2011, Hendrik Boom wrote:
 
 Do build details really depend on the presence of .svn directories?
 
 It does. Not strictly from the directories, but svn tools are used to
 check if you are working from an svn directory. If you remove the .svn
 directories, you effectively prevent svn tools from considering your
 directory as a working directory.

I really never thought the version control system would be involved in 
the build process.  Live and learn.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Reporting system - declarative

2011-11-16 Thread Hendrik Boom
On Sat, 09 Jul 2011 18:05:48 -0400, Yawar Amin wrote:

 Hi John,
 
 On 2011-07-08, at 23:33, John Ralls wrote:
 
 […]
 
 Fun. Two questions: Can that be easily converted into a string parser
 so that normal users aren't put off by the extra parentheses,
 
 I guess we could replace all the parens with more HTML-reminiscent
 characters like  and , so you’d get stuff like (btw I’m using dots
 to represent spaces everywhere as my MUA is eating up the first blank
 space on every line):
 
 report ...
 ..defs
 def-date ...
 def-date ...
 ..


 then do a search-and-replace to turn that back into Scheme. We might
 overcome a lot of phobia if we hide the fact that we’re really making
 them write Scheme :-)

There's also the use of [ ] in the old much-forgotten Lisp 1.5 
metalanguage -- using foo[a, b, c] instead of (foo a b c).  Perhaps foo[a 
b c] would suffice.  And C uses context-prefixed curly brackets, as in do
{ ... } and else{ ... }.

 
 Another thing we could recommend is lining up the parens below the
 function names on multi-line function calls. I mean:
 
 (report ...
 ..(defs
 (def-date ...)
 (def-date ...)
 ..)
 )
 
 In the beginning I found it a lot more digestible when I didn’t have to
 deal with the mess of ‘)))’.

I still find your layout more digestible, after years or using Scheme-
related languages.  I prefer it in C with its curly brackets, too.  

Now the parentheses in List are a syntactic price that's paid to make the 
metaprogramming aspects more modular.  There's no question of what can 
fit within what, as there would be with independent pieces of context-
free grammar.  I consider uniform means of reducing the parentheses 
problem a boon.  
In my own Lisp dialect I used an additional convention:  '/' in a list 
signals the start of a sublist as its last element; thus ( a / b ) is 
equivalent to ( a ( bb )), and ( a / b / c ) equivalent to ( a ( b ( c 
))).  This eliminated most of the closer-clusters.  It ended up having a 
role similar to the that of ';' in other programming languages.  
Unfortunately, '/' and ';' now have other, incompatible meanings in 
Scheme.

But most Scheme programmers object to any suggestion that brackets are a 
problem for Real Programmers, as if methods of dealing with parentheses 
attack their virility or something like that

I just think programs should be written in a manner that makes them as 
clear as possible.  Programming is hard enough without unnecessary 
obfuscation.

 
 and is there anything about that that works in Scheme but not in C?
 
 I really, really don’t want to deal with memory management….
 
 Anyway, I kind of mercilessly hacked the ‘Hello, World’ report that
 comes with GC, in
 share/gnucash/guile-modules/gnucash/report/hello-world.scm, and wrote a
 few functions which do what I was talking about. So now I’m able to say:
 
 (d:report
 income-statement ; name
 0 ; defs
 ; Have to keep this title while experimenting in the sample report that
 ; comes with GnuCash
 Hello, World ; title
 2011-01-01 to 2011-07-31 ; subtitle (d:filter-none ; body

Is there a missing line break in this line?

   (d:p Some text.”)
   (d:p A little more text.)))
 
 … and that generates the report that you’d expect. The ‘d:’
 (‘declarative’) prefix is just to make sure I don’t clash with anything.
 Code is up on https://github.com/yawaramin/gc-decl-reports (I'm not
 pushing anything which causes a crash for me, so it should be reasonably
 safe. But caveat emptor).
 
 Regards,
 
 Yawar
 
 ___ gnucash-devel mailing
 list
 gnucash-devel@gnucash.org
 https://lists.gnucash.org/mailman/listinfo/gnucash-devel


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Feature suggestion: display account numbers in register and account selection popup

2011-11-16 Thread Hendrik Boom
On Wed, 24 Aug 2011 14:32:16 +0200, Florian Haas wrote:
 
 Some existing account hierarchies (in the de_DE locale) presently work
 around this limitation rather crudely, by including the account number
 as a prefix to the account name. Apart from that being a rather
 inelegant redundancy, it also creates a suboptimal user experience:
 GnuCash displays account names right-aligned in the register -- so for
 long account names, even if the only display leaf account names option
 is checked, the account number is often invisible.

As a workaround, perhaps you could postfix (instead of prefix) the 
account number to the account name, as part of the leaf account name?  
Then it would show up in the right-aligned register display.  Still 
inelegant, but ...

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Python script: Gnucash

2011-11-15 Thread Hendrik Boom
On Fri, 07 Oct 2011 14:38:37 +1300, Andrew Ruthven wrote:

 Also, I'm not sure if has been mentioned here already, but myself, Micha
 Lenk and mostly Philipp Kern packaged up the python bindings for Debian.
 They're in the python-gnucash package in Debian testing  unstable.

If that was recent, it explains an anomaly I noticed today.  The package 
python-gnucash has arrived in Debian wheezy according to aptitude on one 
of my machines, but not on another, which uses different mirrors.

In any case, thanks.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Reporting system and potentially Python

2011-11-15 Thread Hendrik Boom
On Thu, 07 Jul 2011 20:48:27 -0500, Tim M wrote:

 What I'm looking for is this:
 
 1. Create the 'new' reporting system alongside the existing one so that
 the reports do not suffer until the existing functionality can be fully
 replaced by the new system.  After all reports are replaced and working,
 the old scheme code could be pulled.
 2. Create a set of libraries and/or use the existing gnucash libraries
 for querying information from the database.  Based on the discussion, I
 presume C or Objective C would be best and just avoid Python/Scheme
 altogether (I am not sure how the scheme system actually performs the
 data queries right now).  If all the necessary code is already in place,
 then this does not require any work.

As far as I've been able to figure out so far, the python and scheme 
bindings use the existing gnucash libraries to access the data base.  So 
if the current reports are what you need, why rewrite in C?  But it does 
make sense to allow the Scheme reporting system to generate XML.

And if it's essential for some reason to have them compiled, the Gambit C 
implementation of Scheme (as in Debian package gambc) is capable of 
compiling Scheme into (rather unreadable) C.  Of course there are subtle 
differences between Gambit and guile, and including another tool into 
gnucash would be a big step.

 3. Using these libraries, create the code for aggregating the data (also
 in C or Objective C) for each report.  A single prototype report would
 be OK to start.  Output the report data as structured XML.  The XML data
 should adhere to an XML schema.

All in favour of allowing reports to be in XML.  It probably won't take 
too much effort to allow this.

It's what I'm already doing with my personal reporting tool that reads 
the gnucash XML file.  It's written  in C++ and has to be changed every 
year or so to adapt to changes in teh gnucash file.  All I needed for 
neat output was a .css file.  It's quite effective.

 4. For each report, create an XSLT file which will transform the data
 into HTML/XHTML for display.

 5. A small amount of javascript would be needed to perform the actual
 XSLT transformation but it would be pretty small. 6. Style the page
 elements using CSS.  Also, I think the jqplot patch that has been made
 could be migrated in to the new reporting system, as those graphs look
 really nice.

If we're brainstorming about report-describing formalisms, has anyone 
looked at RPG, a commercial workhorse from back in the 1960's?  It 
wouldn't be directly applicable unless it's changed drastically since 
then, but some of its ideas may be.

 
 I think there are several benefits to this approach:
 
 1. Currently reports can only be exported as HTML.  By making the
 reporting code export an XML data structure, reports could be easily
 exported from GnuCash as XML (pre-transformation) or as HTML
 (post-transformation).

Much desired.  But could probably be achieved with only minor changes in 
the present system.

 6. No reliance
 on Scheme or Python. Minimal Javascript, but that should be handled
 easily by webkit.

To achieve advantage 6 would require major changes, though.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Reporting system and potentially Python

2011-11-15 Thread Hendrik Boom
On Fri, 08 Jul 2011 23:33:16 -0400, John Ralls wrote:

 On Jul 8, 2011, at 8:15 PM, Yawar Amin wrote:
 
 
 If we stick with Scheme, we can take advantage of all the low-level
 functions that already exist for data extraction and report layout. But
 we can also move to a declarative model where we can have convention
 (re-use the report definitions as options) over configuration (build an
 options dialog box).
 
 Also, is it still true that we have to restart GnuCash every time we
 change a Scheme report, to see the changes? In any case, we need to
 make it dead easy for users to import and run and custom reports.
 
 Best,
 
 Yawar
 
 * I find that I’m saying ‘declarative’ a lot nowadays–I think it has to
 do with the fact that I’m learning Haskell :-)
 
 
 Fun. Two questions: Can that be easily converted into a string parser so
 that normal users aren't put off by the extra parentheses, and is there
 anything about that that works in Scheme but not in C?

One of the hallmarks of Scheme is its metaprogrammability, for 
applications just like this.  And its simple syntax promotes this.

Not that it isn't  possible to write string parsers and the like, and 
many Scheme systems come with packages for this.  But once you go this 
route, coding tends to become inflexible, like in C.

But as I've said elsewhere, the greatest barrier users encounter in 
trying to use the existing reporting tools isn't that they're written in 
Scheme.  It's that the API they use is undocumented.  That's something I 
hope to do something about.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Scripting

2011-11-13 Thread Hendrik Boom
On Sat, 12 Nov 2011 12:55:08 -0500, Derek Atkins wrote:

 Hi,
 
 Hendrik Boom hend...@topoi.pooq.com writes:
 
 [snip]
 (1) The bulk of the code for gnucash should be a shared library, whose
 API (s) provide all the essential functionality of gnucash.  This would
 include code for starting up gnucash, shutting it down, reading gnucash
 fies, opeining the usual gnucash window, and so forth.  The current
 work of converting ad-hoc code to use Gobjects could go a long way to
 making this API consistent.

 (2) The gnucash main program itself should operate entirely by using
 this library's API.

 Maybe (1) and (2) is how gnucash is already structured; I don't know.
 
 This is already the case..  However it's not a single Shared Library.
 It's a ton of shared libraries.

Good.

 
 (3) This library would be the basis for scripting interfaces to
 gnucash. The API would make the gnucash library itself indifferent to
 the scripting language being used.  Of course, the API must still be
 clearly documented, or it will be practically useless.  Documentation
 in the header files may suffice.
 
 This is also the case.  The Scheme and Python bindings are based on the
 C APIs by wrapping using SWIG.

Good.  By the Scheme bindings do you mean the hooks for the report-
generating guile code?

 
 [snip]
 
 But now I'm getting far in advance of myself.  I'm currently arguing
 only for a clear, conprehensive, documented API that others could use
 to build their own edifices on top of gnucash.  That would open the
 gates to all kinds of unexpected collaborations.
 
 I agree wholeheartedly.  Are you willing to help document the APIs that
 exist?

Yes, in principle.

I hadn't known about the python bindings.  First, it would make sense for 
me to try to use the python bindings to see if I can do what I need, 
writing a kind of a diary of what I discover I need to know and producing 
bits of preliminary documentation as I go.  How does collaboration work 
with documentation?  Is it a wiki?  or svn access?  or something else?

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: developer account created mchochlov

2011-11-13 Thread Hendrik Boom
On Tue, 01 Nov 2011 15:41:47 -0400, GnuCash Admin wrote:

 This is an automated e-mail via the add-new-developer script ($Revision:
 1.7 $).
 
 Developer account Muslim Chochlov has been created:
 mchoch...@code.gnucash.org.
 
 Admins (root) should update CVS access for this user.

Are you still using CVS?  Or does this message need to be changed?  Or is 
this completely out of your control?

-- hendrik

 
 Welcome to the team.


___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Scripting API

2011-11-12 Thread Hendrik Boom
On Sat, 12 Nov 2011 11:35:46 -0500, Nicolae Crisan wrote:

 I am 100% on-board this score. Again, finding the boots on the ground
 to do this is another matter altogether.

The existing Python scripting API would be a good place to start.  Maybe, 
all told, it's all we really need, except users who are obsessive about 
their language preferences.  If I were to try using Python and still felt 
I needed something more, I'd be tempted to volunteer for this.

Wasn't there an attempt to devise a common run-time system for dynamic 
languages some time ago?  If so, could that provide some scripting-
language independence?  This is far-off stuff, not really a gnucash 
issue, though.

 An accessible and well documented API is definitely a worth while
 venture in my opinion. API's have the effect of not only opening up
 other possibilities to the programs reach, but it generally has the
 effect of cleaning up other parts of the application that have not been
 so heavily developed or carefully attended to.

Yes.  Any formal review of a large code body usually finds places where 
it can be improved.
 
 Question, would this API change affect the portable nature of GnuCash or
 would it have absolutely no effect whatsoever? I'm used to working with
 languages and libraries that are provided everywhere I'm programming, so
 I'm not used to the portable aspect of programming. Most of my work is
 heavily based on server-side scripting (PHP, mainly) as well as local
 client scripting (JS, CSS, HTML, etc.).

Having the API by itself should have no effect on the portability of 
gnucash.  It would be just more code written in the same language as the 
rest of gnucash.But *use* of the API as a shared library would be 
possible only on systems that have shared libraries.  And the semantics 
of sharing may differ substantially between operating systems.  I seem to 
remember that Windows shared libraries share writable data, whereas Linux 
ones don't.  Can anyone confirm this?

Where things could be really nonportable is in the scripting languages 
that might be implemented (by us or others) on top of the API.  There are 
probably lots of nonportable scripting languages.

 
 In regards to your comment on creating some sort of front-end web-based
 architecture ... I have some reservations about this feature set. While
 I completely agree that would enhance and extend the reach of GNC, I
 would recommend that by default such a feature set be DISABLED. I know
 we're talking about stuff way in the future here, ,but just thought I'd
 point that out.

I wouldn't want gnucash to provide a front-end web-based architecture at 
all.  That's strictly for people who want to put financial information on 
the web.  Let them do the web programming to suit their aesthetic, 
practical, and security needs as part of their website implementation. 
All that the API would do is give them the hooks they need.

If I did anything like this at home, I'd restrict all access to my LAN, 
for a starter.  Now I have been producing XML reports with CSS.  But 
they're not connected to my web server at all.  I leave them as files on 
the hard drive, accessible only to local users who can use file:/// URLs. 
Occasionally I produce updated ones.

 
 Hope to see more support for development of an API. As I am pursuing my
 Accounting degree at the moment ... I unfortunately cannot partake in a
 big way (at least I'll tlel the wife I can't!) right at this moment.
 But, if I can get a sense that this community is really behind this,
 I'll be more than happy to drop everything and contribute. It's crazy,
 I've been an IT professional for over 10 years, and I'm now pursuing my
 Accounting degree, what an awsome mix!

IT and Accounting would indeed be good skills combination.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Scripting

2011-11-11 Thread Hendrik Boom

A few years ago I wanted some printouts of gnucash data formatted in a 
form that my wife and I could use.  It was frustrating to me that the 
easiest way to accomplish that was to reverse-engineer the gnucash file 
and hand-coding a C++ program that read in the XML file and further 
processed it.  The initial, usable, form of this program was written in C+
+ in about a day.  Over the years, I've embellished it in various ways, 
sometimes to change functionality, sometimes to accomodate subtle changes 
in the gnucash file format.

But it seems silly to duplicate stuff that's probably in gnucash itself, 
and is even maintained by the gnucash implementers.  And it's obvious 
that with the shift to a database, I should consider reading the database 
instead of the (probably derivative and deprecated) XML file.

I had looked at the gnucash source code, but I found it much harder to 
understand than the XML file itself.  I had asked for information about 
an API for understanding the internal gnucash state and was referred to 
some (IIRC machine-generated) documentation.  It didn't help much 
either.  In particular, it didn't make it clear what I had to do to set 
up the internal gnucash state that it was reporting on.  While a fine API 
for code that ws embedded within gnucash, it didn't really suffice for  
external code.

And looking at the guile interface for reports didn't help much  either, 
even though I was an experienced Lisp/Scheme programmer.  At the time (is 
this still the case?) the only usable documentation to the reporting 
subsystem was the source code for the reports themselves.  This 
definitely wasn't enough.  The report code was full of functions with 
obscure names and equally obscure significance.

  This isn't a problem with Scheme being a difficult language to learn.  
It isn't difficult.  It can be learned by a competent programmer in a day 
or two.  It's a problem with obscurity of the API the reporting subsystem 
provides to the Scheme programmer.

In subsequent years I've wanted to produce report output in forms other 
than HTML, which, as far as I know, is the only one supported by gnucash.

I've also wanted to write some custom data-entry software for getting 
data into gnucash.

Now presumably, given enough time, I'd have been able to overcome these 
obstacles to interfacing with gnucash code the way it obviously wants to 
be used.  But, of course, at the moments I was faced with the need to 
produce, there wasn't enough time.

***

Now I'm not really interested in just complaining.  If you'll forgive a 
lurker, but long-time user, from speaking up, let me at least make a 
proposal.  Yes, I know it will probably be a lot of work, and who will be 
found to do it, etc.  What I'd like to hear is whether there are serious 
flaws here, and whether it's ever likely to gain the social support to 
make it worthwhile to try, etc.

(1) The bulk of the code for gnucash should be a shared library, whose API
(s) provide all the essential functionality of gnucash.  This would 
include code for starting up gnucash, shutting it down, reading gnucash 
fies, opeining the usual gnucash window, and so forth.  The current work 
of converting ad-hoc code to use Gobjects could go a long way to making 
this API consistent. 

(2) The gnucash main program itself should operate entirely by using this 
library's API.

Maybe (1) and (2) is how gnucash is already structured; I don't know.

(3) This library would be the basis for scripting interfaces to gnucash.  
The API would make the gnucash library itself indifferent to the 
scripting language being used.  Of course, the API must still be clearly 
documented, or it will be practically useless.  Documentation in the 
header files may suffice.



It's worth noting here that some systems that can be used as scripting 
languages are capable of handling the C and C++ interfacing on their own, 
requiring no significant footprint in the gnucash library itself.  (I'm 
thinking specifically  about Gambit C here, which is an implementation of 
Scheme taht can compile to C.  No doubt there are others.)

Other languages that different users might want to use on top of gnucash? 
JavaScript, Python, Ruby and Erlang have been mentioned as languages that 
are in the Lisp camp as far as semantics goes.  Several of them are 
interpreted.  Google has recently put out a language that's designed for 
programs that partly run on a server and partly on a browser.  Accessing 
gnucash from a browser, even only read-only, could be useful.

But now I'm getting far in advance of myself.  I'm currently arguing only 
for a clear, conprehensive, documented API that others could use to build 
their own edifices on top of gnucash.  That would open the gates to all 
kinds of unexpected collaborations.

-- hendrik

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Working more closely with GNOME

2000-07-22 Thread Hendrik Boom

 On Thu, 20 Jul 2000, you wrote:
  Terry [EMAIL PROTECTED] writes:
  
   On Wed, 19 Jul 2000, you wrote:
   
   As a biased observer and gnucash user, I would agree that this is probably good
   with some reservations from a user standpoint. Right now gnucash works with
   both gnome and KDE. If gnucash developers become committed to gnome, does that
   preclude running gnucash under KDE in the future? or would gnucash become a
   gnome only app. Or are the KDE and gnome APIs becoming closer and better
   coordinated so as to preclude gnome/KDE only apps. I may switch from KDE to
   Gnome in the future or I may use both at different times, but as a user I
   definitely do not want apps that work only on one or the other Right now I
   think having both Gnome and KDE is a big win/win/win situation for Linux,
   Gnome, KDE and all the users. This is especially so if Gnome and KDE APIs
   continue being coordinated so that everybody can use one or the other or both.
  
  Well, there are two levels on which I could answer your
  question. First, using the GNOME APIs does not preclude an application
  from running under a KDE desktop enviornment. Second, a project does
  not need to commit to being "GNOME only" to be involved in the GNOME
  Foundation. For example, Sawmill and Gtk+ both consider themselves to
  have broader reach than just GNOME.
  
   - Maciej

I've certainly had no trouble running pre 1.4 versions of gnucash under KDE,
though I started it from a shell instead of from an icon.

-- hendrik


___
gnucash-devel mailing list
[EMAIL PROTECTED]
http://www.gnumatic.com/cgi-bin/mailman/listinfo/gnucash-devel



Re: GNUCash

2000-07-10 Thread Hendrik Boom

[EMAIL PROTECTED] write:
 
 OK, my turn:  Bob, do you know what an octothorpe is?  :-)
 
   Clark
 

Isn't it the thing everyone calls the number sign or the hash mark on the
12-key touch-tone telephone keybiard?


 


-- hendrik


___
gnucash-devel mailing list
[EMAIL PROTECTED]
http://www.gnumatic.com/cgi-bin/mailman/listinfo/gnucash-devel



denominators

2000-07-08 Thread Hendrik Boom

One of the big issues seems to be whether we have just one denominator
for a commodity, or many.  Examples are being thrown around about
whether there is a quantum unit of a commodity,  whether it changes,
and how often, and whether the quantum unit is so intrinsic to a commodity
that, say,  milk bought by the gallon is a different commodity from
milk bought by the quart.  Indeed, if every transaction involves its
own denominator, independent of any other, using a fixed denominator
would seem to be madness.  It all transactions can be expressed in the
same denominator, which is known a priori, there is no need to store it
with every transaction. The choice of data representation is merely an
optimization issue.

Reality does not seem to be as neat as either of these extremes,
though, and so the optimisation issue may have to resolved by a compromise.

Let each commodity to have its own common denominator, but change this
denominator when new transactions make it necessary.  The new denominator
be a multiple of the old one.  Changing a denominator involves retroactively
rewrite all existing transactions that involved that denominator.

In typical situations the I imagine, the denominator for any commodity
will settle down after a few transactions, after which all remaining
transactions will be expressible in exact multiples of the final
quantum.  Even if an exchange redenominates fron 1/64 to 1/100,
this would only change our common denominator for one of its
commodities from 1/64 to 1/1600.

-

There is one nightmare situation for this approach: a series of
transactions in a commodity whose amounts have relatively prime
denominators.  For example you might buy milk on consecutive days:
1/liter, 1/3 liter, 1/5 liter, 1/7 liter, 1/11 liter, 1/13 liter,
1/17 liter, 1/19 liter, 1/23 liter, 1/29 liter.  The denominator will
skyrocket, and reach the limit of 32 or 64-bit integer representation
rather quickly, after which your grocery-budget accountant will
worry about thee gnucash integer overflow.

Actually, a problem that none of the proposals in this mailing list
addresses is the possibility that a commodity mught be bought and
sold in units whose conversion factors are irrational.  Can you, for
example buy angles in degrees and sell them in radians?  Now the accountant
can no longer  remain silent.  He formally accuses you of being a
mathematician. :-)

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: RFC : Correcting some problems in rounding/number handling

2000-07-08 Thread Hendrik Boom

 
 Hmmm... I don't recall anybody mentioning "time" as the unit of measure...
 convert to seconds? minutes?  hours?  days?  weeks?  months?  years?
 I often deal with measurements in nanoseconds...  many things get charged
 for by unit time... e.g., phone calls, wages, room rents, ...
 
An excellent example of a commodity whose units are changing.
Remember when phone calls were charged by the minute?

If we use a common unit of nanoseconds, how many bits will be need to
account for years or centuries?

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: denominators

2000-07-08 Thread Hendrik Boom

 
   Actually, a problem that none of the proposals in this mailing list
   addresses is the possibility that a commodity mught be bought and
   sold in units whose conversion factors are irrational.
  
  As I said before, you can have irrational pricing but not irrational prices.
  The ledgers represent inventories. Inventories can be counted.
  Prices are exchange ratios. You trade items in one inventory for items in a 
  different inventory. As such, field theory tells us that we will never have 
  to deal with values that cannot be mapped onto the rational numbers.
 
 People do _not_ use irrational numbers; supposing they count in radians,
 the one situation where it might _appear_ to be an exception, they're
 likely basing this on _integer fractions_ of radians, which means that
 the unit of measure is an integer fraction that just happens to get
 multiplied by Pi so as to make it _appear_ irrational.
 
Good Grief, that irrational number thing was a joke!

Can you, for example buy angles in degrees and sell them in radians?
  
  humor
  Well, I won't "buy" that angle. 
  Where did you buy your degree?
  Radian's already been sold.
  /humor

But not marked as such because I was unaware of the HTML humor tag. :-(
Or is that a joke, too? :-)

  


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: denominators

2000-07-08 Thread Hendrik Boom

 
 Unfortunately, it is sometimes difficult to distinguish humor from lack of 
 understanding.
 

There may be good reason for this difficulty.  I suspect humour may
have eveolved as a social mechanism by which those who do not understand
can express same without embarassment.

I suspect this thread has now wandered completely off topic.

-- hendrik.


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: RFC : Correcting some problems in rounding/number handling

2000-07-07 Thread Hendrik Boom

 
 I don't think there is one; the _arguable_ counterexample would be the
 situation where a market changes "denominations," but that may also be
 argued to redenominate the commodity, which means it's not really the
 same commodity anymore...
 --

When I owe someone 12 1/2 shares of some security on a futures contract
and the exchange redenominates to decimal, he is likely to accept
12.5 shares instead.  It really is the same commodity.

-- hendrik.


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: help on disabling preferences widgets

2000-07-05 Thread Hendrik Boom

 
 I agree that error handling is a PITA in functional languages.

Actually, it's not functional languages in general with this problem.

 Unfortunately, your proposal only works one level deep.
 One of the real advantages of "functional" languages is that you nest calls.
 
 (let ((x (f1 (f2 (f3 foo)) (f4 bar)
 
 Now, since f3 might return an error, you either have to manually "compile" a 
 string of 'and-let's  
 
 NB: Switching languages because a procedural language better illustrates the 
 process.
 
 x = f1(f2(f3(foo)),f4(bar));
 
 becomes
 
 temp3 = f3(foo);
 temp2 = f2(temp2);
 temp4 = f4(bar);
 temp1 = f1(temp2,temp4);
 x = temp1;
 
 Now, there are three approaches to handling the errors.
 1) The language compiler can handle exceptions.
 2) The caller can handle exceptions by placing a test BETWEEN each of the 
 function calls. (This is what 'and-let' does)
 3) Each function return a {status, result}-tuple and check each of its 
 arguments for an error status
   f1(a1,a2)
 begin
  if (!valid(a1)) return a1
  elseif (!valid(a2)) return a2
  elseif (*BadThing*) return {ERROR, BadThing}
  else return {VALID, answer}
 end
 
 Each approach has its problems.
 Primarily.
 1) The language of choice may not handle the problem.
 2) Nested function calls become unreadable
 3) There is a danger that a programmer will forget the properly implement all 
 arguments in -tuple format and properly revert to non-tuples for calls to 
 sections written to a different convention.

Typed functional languages that include possibly launched exceptions
in the function's data type can do better -- if you forget to
handle an exception, you are so informed by the compiler.
But Scheme is not a typed functional language.
And, for reasons I have yet to fathom, typed scripting languages
are as scarce as hen's teeth.

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: RFC : Correcting some problems in rounding/number handling

2000-07-04 Thread Hendrik Boom

 On Fri, Jun 30, 2000 at 01:39:07PM -0500, Bill Gribble wrote:
  Clark Jones [EMAIL PROTECTED] writes:
   in stockmarket quotations, e.g., nonsense like "73 213/256".  However,
   the SEC has told the U.S. stock markets "thou shalt decimalize", and though
 
  Partially true, but stock prices are an important part of gnucash, and
  while the US stock exchange is going decimal "pretty soon", there are
  historical prices which will always be in 64ths and the bond market is
  not likely to decimalize any time soon (according to Jon Trowbridge,
  who does this stuff for a living; is that a correct interpretation of
  your mail to me?).
 
 Yes.  There are also lots of other examples from futures markets,
 which are a wonderful source of pricing perversity.  For example, 10yr
 and 30yr US Govt Bonds trade in 32nds, and 5yr Bonds trade in 64ths.
 Soybeans futures (as well as Corn, Oats and Wheat) are quoted in 1/8th
 of a cent per bushel.

These are all powers of two. Powers of two can all be represented exactly
in decmal.  The converse fails: poers of ten cannot always be exactly
represented in binary.

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: RFC : Correcting some problems in rounding/number handling

2000-07-04 Thread Hendrik Boom

 Well, floating point is definitely NOT the proper solution for US dollars
 (or any other currency of which I am aware -- anybody know a currency
 still in use that isn't decimal?  The UK abandoned the "shillings 
 pence" in the '60's).

I believe some former British colonies still use pounds, shillings, and pence.

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: backup v2

2000-06-30 Thread Hendrik Boom

 On Wed, 28 Jun 2000, Robert Graham Merkel wrote:
  But what if some catastrophic event happens while the modified log
  file is written to disk?  Couldn't you possibly lose the entire log?
 
 I think not, but I don't know for sure.  I was thinking that GnuCash
 would open() the log for appending only, and every now and then write a single
 log entry using a single write() call.  What are the chances of a write error
 destroying data earlier in the log?  War stories, anyone?
   (When chopping off the front of a log, GnuCash would use the same
 write-and-move procedure as it would when saving the database.)

When appending to a file, unless the end of file is exactly aligned
on a physical block boundary, the entire last block must be rewritten.
This puts the (partial) contents of the last block at risk.
Note that physical blocks on modern hard disks are much larger than
the nominal 512 bytes oa 1k that Linux uses internally.

-- hendrik

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: RFC : Correcting some problems in rounding/number handling

2000-06-30 Thread Hendrik Boom

 Clark Jones writes:
 
   A thought has occurred to me:  A possible solution would be to "migrate"
   to C++ (not a humongous project, since a quick look through a "tar -tvzf"
   of a source-tarball reveals that it's mostly in C) and then use C++'s
   ability to "overload" the normal operators to, in essence, construct
   "custom fixed-point data types".
   
 
 It's a good thought, and the use of C++ operator overloading is
 convenient for this kind of thing, but there is a rather large
 problem.
 

Don't want to start a language flame war, but after listening to several
weeks of C++ propaganda, I am no longer able to remain silent.
In my experience (which includes writing a C++ parser and semantic
analyser in C++ --- I'm not exactly a C++ novice), C++ is a slippery
slope.  You start out innocently enough defining a few operators to
improve notation, and maybe a machanism for automating
reference counting.  After a while, you start using more and more of the
metaprogramming tools built into the system and it becomes more
and more difficult to know what your program is doing (and if it is
doing the right thing).  It takes ths utmost discipline to refrain
from this behaviour in C++, a discipline that is alien to the gung
ho style with whoch the C++ language was invented.  In fact, the discipline
needed is very close to restricting oneself to the subset of C++ that is
essentially equivaleng to C semantically, which poses the question,
why not stick with C?

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: RFC : Correcting some problems in rounding/number handling

2000-06-22 Thread Hendrik Boom

 After discussion with some of the other developers, it is becoming
 clear that most if not all of the problems people are having with
 rounding and fractional cents are because, in fact, gnucash does not
 know that there is a minimimum quantum of transactions for certain
 types of accounts.  This is an attempt to lay out the problem and a
 possible solution.  Please discuss.
 
 Bill Gribble
 
 ==
 
 PROBLEM:  gnucash does not take into consideration the possibility
 that a financial institution may not conduct transactions in fractional
 currency units.

I've heard that there are *laws* regulating how rounding is carried
out.  It probably differs from jurisdiction to jurisdiction. :-(
Anyone have any details?


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: SaveAs label?

2000-06-22 Thread Hendrik Boom

 
 I think someone mentioned an auto-save feature, and that sure would be
 nice, too, especially if there were a disable option in a
 Preferences... dialog. How about a single autosave after 30 minutes of
 no activity in the Registry window?

We already maintain a log, which does not eat disk in huge chunks.
All that is needed is to enable gnucash to read the log.


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: Log File behaviour

2000-06-19 Thread Hendrik Boom

 On Thu, Jun 15, 2000 at 07:41:29PM -0500, Richard Wackerbarth wrote:
  On Thu, 15 Jun 2000, Dave Peticolas wrote:
  
Now, those .xac files - are they the previous data file, or are they
written in parallel with the main file? (Or copied after the main file
is written?)
  
   They are written immediately after the main file is written.
  
  So, if I have (only) a main file and start to edit it, are you
  saying that at the end, I have two copies of the modified file and
  NO copies of the original?
 
 Furthermore, while the main file is being written, there is no valid
 copy of the data?  Surely at least the backup files should be written
 _before_ the main file is modified.

You would still have the backup file that was created *last time*.

 
 --Dylan Thurston
   [EMAIL PROTECTED]
 
 --
 Gnucash Developer's List
 To unsubscribe send empty email to: [EMAIL PROTECTED]
 
 


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: denominating currency

2000-06-17 Thread Hendrik Boom

 When bankers first used mainframes, some slick programmers established
 "hidden accounts" which received the tinsy fractional part of the
 interest, the part lost when rounding DOWN to integer pennies ...
 
 It wasn't much, but as it happen at the end of every day, on every
 savings account ...  they made money for themselves.  A case of one
 procedure for me, another for all the rest of you. :-)

I heard of this story, too, back in the 70's.
Apparently the programmer inserted this into the program he was writing,
and placed the stray pennies into his own account.  (The pennies originated
from him rounding up on one end of a transaction and down on the other).

After a while, the bank wondered where their breakage was.  It seems
the bank had also been doing this themselves, and now this revenue stream
mysteriously disappeared when they automated.  They tracked down the
code, and found the programmer's bank account number...


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: denominating currency

2000-06-16 Thread Hendrik Boom

 
 You are correct. 32 bits are inadequate. It would be sufficient for MY 
 personal accounts :-( 
 but not those of Mr. Gates.

Mr Gates is unlikely to use gnucash on Linux.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: denominating currency - was: non-functional 'if clause

2000-06-15 Thread Hendrik Boom

 Prices are handled differently from amounts.
 
 The price is multiplied by the quantity and that result is adjusted to the
 "integral" amount of exchange.
 At one time the US used "mils" ($0.001). However, clerks worked for $1 per day
 or less. With inflation, the smallest exchange is now the penny ($0.01) and
 commerce is conducted in those units.
...
 Each currency has its own "primitive" amount and all transactions are 
 conducted in terms of that unit. Prices are often expressed to a higher 
 precision or as a rational fraction of that unit.

This suggests that we should be storing integers that indicate
how many of the primitive amount are to be used.  For US$ this would
me an exact count of pennies.

The range of integers must be greater than 32-bits, because
that would limit amounts to about #40,000,000.00.
So the obvious type is int64, which is not quaranteed to be present
by either C or glib, but often is; the less obvious type is
double, provided we make sure we only store integer values in the double
variables (i.e., frequent rounding to integral).  Thus, for display purposes,
we may have to know the primitive amount for each currency as well
as the format to be used.

-- hendrik.

I've always been doubtful about the use of floating point by gnucash.


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





version 1.3.100 on SuSE?

2000-06-14 Thread Hendrik Boom

I'm starting to install version 1.3.100 on SuSE Linux.

First, I notice I don't have g-wrap.  Unless I am mistaken, this package
does not appear in either the SuSE 6.3 or 6.4 distribution.
I download g-wrap-0.9.1-1.i386.rpm from the gnucash web site.

I rpm -i --test g-wrap-0.9.1-1.i386.rpm, and am told:

error: failed dependencies:
guile-devel is needed by g-wrap-0.9.1-1
libguile.so.4 is needed by g-wrap-0.9.1-1
libreadline.so.3 is needed by g-wrap-0.9.1-1   
 

I look for them:
guile-devel
I did not find guile-devel in SuSE.
I did find a package called guile,
which does contain a lot of .h files.
Are these the files I need?
libguile.so.4
Package guile contains a libraries
usr/lib/libguile.so
usr/lib/libguile.so.6
usr/lib/libguile.so.6.0.0
Is this a problem?
libreadline.so.3
I appear to have a library
/usr/lib/libreadline.a
This will probably not do.

Any suggestions?

I could try to compile g-wrap myself, but its documentation
does not make it clear that I can control where it places all its files.
(nor is it clear I can uninstall cleanly -- anybodu know?)
I do *not* want components I compile myself getting mixed up with
the ones installed by RPMs.  It's too hard to track them down during
reinstallation or upgrade.

-- hendrik.



--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





version 1.3.100 on SuSE? (fwd)

2000-06-14 Thread Hendrik Boom


 I'm starting to install version 1.3.100 on SuSE Linux.
 
 First, I notice I don't have g-wrap.  Unless I am mistaken, this package
 does not appear in either the SuSE 6.3 or 6.4 distribution.
 I download g-wrap-0.9.1-1.i386.rpm from the gnucash web site.
 
 I rpm -i --test g-wrap-0.9.1-1.i386.rpm, and am told:
 
 error: failed dependencies:
 guile-devel is needed by g-wrap-0.9.1-1
 libguile.so.4 is needed by g-wrap-0.9.1-1
 libreadline.so.3 is needed by g-wrap-0.9.1-1   
  
 
 I look for them:
...
 libreadline.so.3
   I appear to have a library
   /usr/lib/libreadline.a
   This will probably not do.

I just found
 usr/lib/libguilereadline.a
 usr/lib/libguilereadline.la
 usr/lib/libguilereadline.so
 usr/lib/libguilereadline.so.0
 usr/lib/libguilereadline.so.0.0.0

Any chance that these will do?

By the way, the README.SuSE file seems to have disappeared.
Is there some reason for this?

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: Stability of 1.3.99

2000-06-14 Thread Hendrik Boom

 T.Pospisek's MailLists writes:
   On 13 Jun 2000, Bill Gribble wrote:
   
Ben Stanley [EMAIL PROTECTED] writes:
 When I last entered all of my transactions, which would have taken me
 about an hour, I had just finished and then GNUcash had a crash. I can't
 remember if it was a seg fault or bus error or what, but I subsequently
 had to re-enter everything I had just put in, by referring to the log
 file. 

Ouch.  I'm sorry :( I guess that's yet another case where "save early,
save often" is your friend.
   
   What about having a:
   
   [] autosave ever [] minutes
   
   option? That is by default set to ... let's say 1 minute?
 
 That's a good idea, but it'll of course have to wait till 1.5.
 
 For implementing this, what about checking a "time since last
 autosave" every time a transaction is committed (language might be
 less than precise here, correct me if I'm wrong).  If we're over the
 threshold, autosave.  Comments, anyone?  

It seems to me that recover-from-log is a cleaner solution.
We make the logs for this purpose and keep them continuously
up-to-date, don't we?

This should fit in the engine, or immediately above it; the data base
could be considered to consist of the existing file togetner
with the log of all more recent transactions.  When you load a file,
you could automatically check whether it has any associated
more-recent logs.  This could be treansparent, or you could ask
the user for advice if you find any.

-- hendrik.


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: Re-opening a file.

2000-06-10 Thread Hendrik Boom

 Glen Ditchfield writes:
  If I open an account file with GnuCash 1.3.99, and if I immediately re-open
  the file (either through the File  Open... dialog or by selecting
  the file directly from the recent file list under File), I get an error alert
  saying that "the file /home/gjditchf/rats-nest.xac appears to be in use by
  another user...".  

Perhaps the messge should say,  "You have already opened this file,"
assuming Gnucash know what files are open.

 If I make any changes before re-opening the file, I am prompted to save th
  changes first, but then I get the error alert.
 My first thought was that GnuCash should treat this as a no-op and just
  leave the file open, but perhaps it should ask whether I want to revert to th
  saved version?
 



--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: 64 bit nonportability

2000-06-04 Thread Hendrik Boom

 On Sat, 03 Jun 2000 22:06:09 PDT, the world broke into rejoicing as
 Dylan Paul Thurston [EMAIL PROTECTED]  said:
  On Sat, Jun 03, 2000 at 10:20:40AM -0700, Peter C. Norton wrote:
   On Sat, Jun 03, 2000 at 05:01:51AM -0500, Richard Wackerbarth wrote:
I agree. Using gint32 rather than int only solves part of the problem.
foo_t is much more flexible.It reduces the architecture dependency to a 
single point in the code.
   How is this different from using already-created typedefs in glib?  glib
   seems to provide a lot of the types necessary, already done.
  
  I think the point is that you might decide to change the size of one
  of the types at some point.
 
 Ah, yes.
 
 Basic idea being that it might be good to have a single type, of
 platform-independent shape, that GnuCash uses.
 
 Thus, perhaps, the
 gcint
 type.
 
 Thus, everything in GnuCash would use the gcint type.
 
 gcint is defined via:
   typedef gint32 gcint;
 
 which accordingly references whatever glib.h provides.
 
 Note that this costs us _nothing_ at runtime, as the evaluation of types
 is done by the C preprocessor, and this gets expanded, by the compiler, 
 to whatever is the "real" type from its perspective.

I've always had trouble getting constants to have the right type.
I don't think the preprocessor will hanle this cleanly (or have things
changed since I last looked at C?).  Evin if (gint32)7 works (I seem to
remember thst this is not what is technically called a "constant expression"),
there is still trouble with things like getting the maximum integer of type
gint32.

I see

#define G_MININTINT_MIN
#define G_MAXINTINT_MAX

in glibconfig.h, but nowhere do I see a G_MAXINT32.

Or is there something else I need to knw?

-- hendrik.



--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





speed?

2000-06-02 Thread Hendrik Boom

I'm slowly gearing up to use GnuCash on live data, and am attempting
to start parallel operation with Quicken before cutting over comletely.
As a result I am continuing to find problems, some of which are relatively
easy to fix.

But some, I suspect are not.

Is there a speed problem, or am I doing something wrong.?

I just imported *all* my Quicken accounts, and then started tracking
down duplicated entries.

Once I find one, it takes 45 seconds to delete it, starting from the
moment I confirm the deletion to the moment the register has its
new contents.  This is the performance I expect from Java.

I also notice that scrolling is quite slow.

Also, if I happen to move the delete-confirmation window by grabbing it
by its title bar, the window leaves a trail of ghosts, which slowly disappear
at the rate of about one per second.

The account I am editing has something like 7000 or so transactions.
Could this be relevant?

My guesses (using psychic debugging, without reference to source code)
is:
(a)
  - because gtk+ imposes a scrolling area limit af 32K pixels, 
you have too handle scrollong at a higher level in the protocol.
  - the higher layer is written in guile, which is interpreted (like Java)
  - so scrolling slows down quite a bit.
(b)
  - deleteing a transaction involves recalculating sizes for the entire
scroling area, and this also is done in guile, is interpreted, and
so each deletion might end up taking the same order of magnitude
of time as some of the analysis activities during importing.
(c)
  - Events are queued, and not subsumed.  So if you press the up cursor
three times in a row, you end up displaying the register in three
separate positions, instead of counting up-cursor presses and moving
the register three lines all at once.

I don't know if these analyses are correct, or whether the problems are
in gnome/gtk+ or in the guile code for gnucash.  In any case, this is
probably not something to try and fix before the 1.4 code freeze.
And perhaps the proper fix would be in gnome, not gnucash.

Any comments?

-- hendrik.

P.S. For what it's worth, my processor is a Pentium running at 39.73 BogoMIPS;
48 meg of RAM.  I'm running SuSE Linux 6.3.


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: speed?

2000-06-02 Thread Hendrik Boom

  
  I think the bottleneck is in the Gnome Canvas, which is the basis of
  the register display.  Dave P would know more about that.
 
 I suspect this is where it's happening, but we will need to do some
 profiling to be sure.

Is each entry field in the register a separate Gnome widget?
Do you suppose that the canvas does its complete set of layout calculations
over again when a transaction is deleted?  Or entered? Or changed?
Would it be useful if I looked into the Gnome source code about this?

Do you happen to know what profiling tools I should look for under
Linux? Every OS I've used has a different way of doing this, and the best
one is usually discovered by word-of-mouth, not by looking in manuals.

By the way, is there a maximum allowable size to the memo field, cheque
number field, etc? (I don't care if there are current limits on how much
is displayed (these are at worst temporary(and they resize with the window
(Aha! Four nested parentheses in an English prose. Natural language
catches up to Lisp))), as long as all the data get
into the file.)


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: importing one-ended transfers

2000-06-02 Thread Hendrik Boom

 On Wed, 31 May 2000, Hendrik Boom wrote:
  I now see the following possibility:
 
  One transaction, that
  debits the chequing account by $200, memo groceries
  debits the chequing account $10, memo cash
  debits the chequing account $90, memo allowances
  credits the allowance account $90,
  credits the cash account $210
 
  This way the Quicken splits become gnucash splits in the same accounts.
  And Quicken splits that are associated with a category end up associated
  with the appropriate account.
 
 I'm not sure that I follow your logic here. Look at it from another view:
 
 Credit Allowance $ 90
 Debit  Chequing  $300
 Credit Cash  $200 groceries
 Credit Cash  $ 10 cash

except that you lose the memo "allowances".

 
 This seems to me to be closer to the transaction items that you would 
 actually realize.

I'd be just as happy with your version as mine.
It's just that I don't clearly see how your version generalises to situations
where both ends of the transaction have been split in Quicken.

 
 I suspect that the bank only knows that you withdrew $300.
 From an accounting view, you have chosen to credit part of that to the 
 Allowance account and the rest to the Cash account. You are using the memo 
 field to represent subaccounts Cash:Groceries and Cash:Petty_Cash.
 
 --
 Gnucash Developer's List
 To unsubscribe send empty email to: [EMAIL PROTECTED]
 
 


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





importing one-ended transfers

2000-05-31 Thread Hendrik Boom

When I imported *everything* from Quicken to gnucash, I noticed the
balances were different in gnucash from in Quicken, even after fixing the
"Opening Balance" transaction.  Hoping to nail a gnucash bug,
I binary-searched throug about 8 years of transaction data, and found
that it was not Gnucash, but Quicken that seems to have been at fault.

Here's an extract from my (Quicken) [Checking] account:


12/04 pos   provigo33.67 X368.88
 1998 memo:
   cat: Groceries

12/04 cash  cash  300.00 X 68.88
 1998 SPLIT
   [cash] 200.00
 groceries
   allowances  90.00
 allowances
   [cash]  10.00
 cash

12/04   interac fee 1.25 X 67.63
 1998 memo:
   cat: Bank Chrg

12/04 039   Mini-Menage65.00 X  2.63
 1998 memo:
   cat: Cleaning





and in [cash]:


12/04   cash   210.00  49,641.91
 1998 memo:
   cat: [Checking]


As you see, one cash withdrawal is split into several purposes,
two of which are handled in the cash account.

When I import this into gnucash, the transactions become duplicated.
I get both the split transaction from checking and the unsplit transaction
from cash, presumably because it does not recognise that the split
transaction in [Checking] corresponds to the nonsplit transaction in [cash].

Now I don't expect you to run and fix this (though it would be nice)
immediately before a stable release, for fear of disturbing something else.
But if the mass import process were to produce a log of unmatched transfers,
this would help me track them down.

gif file extracts follow:

-- hendrik.

from cash:

^
D12/ 4/98
T210.00
Pcash
L[Checking]
^

from Checking:
^
D12/ 4/98
T-33.67
CX
Npos
Pprovigo
LGroceries
^
D12/ 4/98
T-300.00
CX
Ncash
Pcash
L[cash]
S[cash]
Egroceries
$-200.00
Sallowances
Eallowances
$-90.00
S[cash]
Ecash
$-10.00
^
D12/ 4/98
T-1.25
CX
Pinterac fee
LBank Chrg
^
D12/ 4/98
T-65.00
CX
N039
PMini-Menage
LCleaning
^





--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





importing one-ended transfers (fwd)

2000-05-31 Thread Hendrik Boom

Whoops! I miswrote myself.

- Forwarded message from Hendrik Boom -
"Opening Balance" transaction.  Hoping to nail a gnucash bug,
I binary-searched throug about 8 years of transaction data, and found
that it was not Gnucash, but Quicken that seems to have been at fault.
- End of forwarded message from Hendrik Boom -

As you can see from the details, the bug is in gnucash not in Quicken.

-- hendrik.

--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: importing one-ended transfers

2000-05-31 Thread Hendrik Boom

 Hendrik Boom [EMAIL PROTECTED] writes:
  Now I don't expect you to run and fix this (though it would be nice)
  immediately before a stable release, for fear of disturbing
  something else.
 
 This period of time is for bug fixes, and you've found a bug, so it's
 the perfect time to fix it.
 
 The question is, what's the right way to fix the problem?  In your
 ideal solution, would Gnucash merge the two splits into one, following
 the Cash account's representation of the event, or split the Cash
 transaction, following the Checking account's representation?


Let's see.. In chequing,

12/04 cash  cash  300.00 X 68.88
 1998 SPLIT
   [cash] 200.00
 groceries
   allowances  90.00
 allowances
   [cash]  10.00
 cash

in cash,

12/04   cash   210.00  49,641.91
 1998 memo:
   cat: [Checking]

There are two Quicken accounts involved - chequing, and cash.
There are three gnucash accounts involved - chequing, cash, and allowances.

I had trouble deciding between your two choices, until I remembered that
we do have multiple entry bookkeeping.  This means we can choose how to
split a little more cunningly that Quicken did.

I now see the following possibility:

One transaction, that
debits the chequing account by $200, memo groceries
debits the chequing account $10, memo cash
debits the chequing account $90, memo allowances
credits the allowance account $90,
credits the cash account $210

This way the Quicken splits become gnucash splits in the same accounts.
And Quicken splits that are associated with a category end up associated
with the appropriate account.

This resolution seems to specialize properly to the way you handle other
transfers and categories.

-- hendrik.


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: Problem with transfers/double accounting

2000-05-31 Thread Hendrik Boom

  I have this problem too. I'm using multi-line mode.
  
  Terminology:
  proto-transaction: a transaction which is being entered in the register
  window onto a blank transaction, and is still in one line mode (or has one
  blank split displayed below...).
  
  In gnucash 1.3.7, the transfer field is labelled `Transfer From'. Now,
  I find this label confusing, because it is only right when you receive
  money, not when you spend it... (talking about a cash account) but, let's
  keep going.
  In gnucash 1.3.8, this column is labelled `transfer to'. Entering an account
  into this column on a one-line proto-transaction causes the transaction to
  be moved to that account, and to have no connection with the originating
  account. This breaks the way I usually enter transactions.
  
  In version  1.3.7, the first line of a multi-line transaction contained the
  source account, which is always the one you are in. The other lines
  displayed the to accounts for the various splits. I found this quite
  understandable. When the transaction was displayed in one line (while
  entering the first part), the transfer field represented the destination
  account of the first split. This was convenient.
  
  I must admit that all this would be very difficult to explain to a newcomer,
  so, if you are trying to clean this up, you are to be commended. However, I
  don't understand how 1.3.8 is supposed to work, and I've gone back to 1.3.7.
 
 Well, it is pretty confusing, so we may just be better off taking
 it out for 1.4. It actually works exactly the same as in 1.3.7,
 with the exception that, in multi-line mode, where there used to
 be a blank space in the transaction line, there is now a field
 you can use to move the transaction to another account. As before,
 the transaction line refers to the current account. This is reflected
 by the fact that this field starts with the current account already
 filled in. Other than the new field, multi-line mode works exactly
 as before.

No need to take it out for 1.4.  Just label it properly.

In multiline mode, the title for the 'transfer' column
should just be a 'account'.  Each line then describes
what happens to a specific account, and what could be
more natural than to edit the account name to move the
entry to another account?

But in single-line mode, where the column has a very different meaning,
it's just fine to label it 'transfer'.

-- hendrik.
 


--
Gnucash Developer's List
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: missing xml, print; 1.3.7, SuSE

2000-05-25 Thread Hendrik Boom

 gnome-print is in series gnm: gnprint and gnprintd
 
 I added these (yet another) dependencies to SuSE-6.3.txt.
 (Perhaps we should recommend to buy a new big harddisk and
 just install the whole 6 CDROMs ;-).)
 
 Dave: Please add the attached SuSE-6.3.txt to CVS.
 
  Herbert.

Thanks. It compiles and runs now.

-- hendrik




missing xml, print; 1.3.7, SuSE

2000-05-24 Thread Hendrik Boom

When compiling 1.3.7 on SuSE 6.3, it could not find two libraries:

xml
print
 
When I installed packages libxml (and libxmld too, just in case)
from series d, the xml problem went away (although I had to delete
the source tree and reuntar it to make it find xml; a make clean
didn't work).  One or both of these (I don't know which) should be
mentioned in doc/SuSE-6.3.txt
 
Does anyone know which package contains the print library?



Re: Libraries

2000-05-24 Thread Hendrik Boom

 Hmm, how about some kind of install program? I was thinking of doing
  this as a generic thing on my spare time, but something that checks if
  certain libraries are installed, and if they are not, wgets them or
  something similiar and installs them. You might get more newbie users to
  come over from windows that way. It seems that all the major commercial
  applications come with all the libraries they need.
 
 That's a good idea. If you plan on working on this, you might
 check out the helix code installer (available at their website
 at www.helixcode.com) which seems to be pretty good.
 
 dave
 
When you install an RPM, the system usually checks which packages you need
(provided the packager of the RPM bothered to identify them).
Under SuSE, and I presume others, you have the option of having them installed
automatically too.  Admittedly, the list of packages may be system-dependent;
I suspect not all linuxes package everything in the same combinations.
But a gnucash package that is included with a distribution will presumably
not have library problems.  And *that* is, I suspect, how most naive
users will get it.

-- hendrik.





Re: QIF format ?

2000-05-19 Thread Hendrik Boom

 Richard Wackerbarth [EMAIL PROTECTED] writes:
  I am thinking in terms of a "plugin" to reformat the "memo"
  information into the fields, like cheque number and Payee, which are
  more appropriate.
 
 Could you clarify this last part a bit?  Have you observed the QIF
 memo field to be used in place of the existing QIF check number and
 payee fields?  
 
 Thanks,
 Bill Gribble
 
While we're opn the subkect, my bank puts the transaction date into the
memo field on credit card statements.  The cleared date is in the
date field.

^
M11/1/99
D11/4/99
PCOMMUNICATIONS ACCESSI MONTREAL PQ 
T-40.20
N
^

Also, note the placement of foreign currency amounts in the P line.
(for me, US is foreign, and Canadian is domestic).

^
M11/7/99
D11/8/99
PANNABELLE`S BAR + BISTRO SAN FRANCISCO CA US  AMT =   30.44US
T-45.46
N
^

Some kind of scripting seems appropriate.
But maybe I should just use a Perl script befire importing?

-- hendrik.




Re: gnucash 1.3.7 bugs.

2000-05-17 Thread Hendrik Boom

 Randolph Fritz [EMAIL PROTECTED] writes:
  Could someone tell me, please, the historical background of this odd
  use of language?  If it's already been discussed, then please point me
  to the archives.
 
 When you make a deposit in a bank account, the bank OWES YOU money.
 You become a "creditor" and the bank is a "debtor", just as if you had
 loaned the bank money.  Which you have.
 
 A "credit" is a "payment by a debtor on an amount due" by both common
 sense and accounting practice.
 
 Therefore, a withdrawal of money from the bank, which reduces the 
 balance of the account and therefore the amount that the bank owes
 you, is a "credit". 
 
 A "debit" is etymologically a "debt", i.e. an increase in the amount
 owed by a debtor, again in both common sense and accounting practice.
 
 Therefore, a deposit of money into the bank, which is an increase in
 the balance of the account and of the amount of money that the bank
 owes you, is a "debit".
 
 I had to have this explained to me a million times but now it makes
 perfect sense and I can't even think of a withdrawal being a "debit"
 any more (how's that? I don't owe the bank any money!)

Let's see if I understand this now.

Does this mean that if I overdraw my chequing account, and subsequently
deposit $16.74 to cancel the overdraft, that the $16.74 is a credit,
because I owed the bank money? And if I subsequently deposit $15.75 to
make the balance positive, the $15.75 is a debit, because it establishes the
bank's debt to me?

-- hendrik.

 
 Bill Gribble
 
 
 




debits and credits WAS: gnucash 1.3.7 bugs.

2000-05-17 Thread Hendrik Boom

 Randolph Fritz [EMAIL PROTECTED] writes:
  Could someone tell me, please, the historical background of this odd
  use of language?  If it's already been discussed, then please point me
  to the archives.

Bill, Let me make another try to understand this.  In a previous posting
you (I believe?) said that the reason terminology had become so confused
was that peoples bank statements were produced from the bank's
point of view, instead of the client's point of view.  So clients
who did not understand this (i.e., most people) ended up with an exactly
reversed meaning for the words "credit" and "debit".
But you posting I am quoting below seems to completely ognore the
point-of view issue.  Let me try to weave my confusion it into
the text and see if it makes sense.

Or should I just find a good book on accounting?

 
 When you make a deposit in a bank account, the bank OWES YOU money.
 You become a "creditor" and the bank is a "debtor", just as if you had
 loaned the bank money.  Which you have.

So the points-of-view are that of a "creditor" and a "debtor".

 
 A "credit" is a "payment by a debtor on an amount due" by both common
 sense and accounting practice.
 
 Therefore, a withdrawal of money from the bank, which reduces the 
 balance of the account and therefore the amount that the bank owes
 you, is a "credit". 

Is point of view relevant here?  Is this a credit from the bank's point
of view and a debit from yours?  Or is it a credit from any point of view?

 
 A "debit" is etymologically a "debt", i.e. an increase in the amount
 owed by a debtor, again in both common sense and accounting practice.
 
 Therefore, a deposit of money into the bank, which is an increase in
 the balance of the account and of the amount of money that the bank
 owes you, is a "debit".

And is this a debit from the bank's point of view and a credit from yours?
Because you now have an increased assets, and the bank has reduced assets?

Or is the terminology independent of point of view?

 
 I had to have this explained to me a million times but now it makes
 perfect sense and I can't even think of a withdrawal being a "debit"
 any more (how's that? I don't owe the bank any money!)
 
 Bill Gribble
 
-- hendrik.
 




Re: gnucash 1.3.7 bugs.

2000-05-16 Thread Hendrik Boom

  How about, as a first step, we make the reconcile window be
  configurable to use, e.g., 'Funds In' and 'Funds Out' instead
  of debit/credit as you suggest?
 
 Something like that is probably necessary.
 
 Gnucash looks to me like one of the crucial tools that will get Linux onto
 desktops everywhere.  But that's going to be a lot harder if "normal" users
 find the interface confusing.  I think it's more important for people to be
 able to handle their finances without getting confused or worrying about
 getting things wrong than having the technically correct terminology.

What we *have* to avoid is using the technically correct terminology with
an incorrect meaning.  An option for using informal language is perfectly
OK by me, as long as the informality does not consist of using correct words
with incorrect meanings.




Re: on-line banking qif import

2000-05-14 Thread Hendrik Boom

 On Sat, 13 May 2000, Hendrik Boom wrote:
   On Fri, 12 May 2000, Hendrik Boom wrote:
 As for changing "reconciled" transactions, it is unclear to me what
 relationship exists between the "transaction" and the "JEs".
   
It is the JEs that get reconciled.
  
   Right. But to what does the "Payee" belong?
 
  I presume whoever you wrote the cheque out to.
 
 I think that you missed by point. My question was
 "With respect to reconciliation, when is the 'payee' field considered to be 
 reconciled?"

I guess I missed your point because I don't understand what it means
to reconcile a 'payee' field.

 Remember that a "transaction" has to be reconciled multiple times, once for 
 each of the JE splits that make up the transaction.
 




Re: on-line banking qif import

2000-05-13 Thread Hendrik Boom

 On Fri, 12 May 2000, Hendrik Boom wrote:
   As for changing "reconciled" transactions, it is unclear to me what
   relationship exists between the "transaction" and the "JEs".
 
  It is the JEs that get reconciled.
 
 Right. But to what does the "Payee" belong?

I presume whoever you wrote the cheque out to.
Payees are not necessarily in one-to-one correspondence with the
accounts at the other ends of transactions.
(a) The payee might be the name of an agent for whomever you are paying.
(b) the other account might be more like a Quicken category than a payee,
perhaps "Automobile expense" instead of "Jim's gas station".

 
  I occasionally do change the date when I find the date on which I actually
  wrote the cheque (the bank only gives cleared dates).
 
 Which brings us to a slight problem. For tax purposes, I must use the date 
 written. That can make it difficult to match up with the file from the bank.
 
 Do we need to store both a transaction date and the posted date?
 

I thought we already did store both dates.

-- hendrik.



Re: on-line banking qif import

2000-05-12 Thread Hendrik Boom

 On Thu, 11 May 2000, Hendrik Boom wrote:
   In general, I think that we must assume no correlation between importing
   data and reconciliation. All that we know is that each entry imported
   from the bank must appear in the ledger and that it has cleared the bank.
   A JE must progress through the following "reconciliation states" 1)
   Entered
   2) Cleared
   3) Candidate
   4) Reconciled
 
  That's right.  Only I like to add a note to each candidate and reconciled
  transaction to pair it
 I'm not sure that I would allow you to alter the entry while it is 
 "reconciled". However, I would assume that you are happy to do it in the 
 "candidate" state.

With Quicken, I often change reconciled entries.
Wjat I never do is change the amounts.  It's not umusual for me
to find out more information about an entry after it is cleared
and reconciled (for example, who it was really paid to, when I finally
find my chequebook at the back of the kitchen utensil drawer.  I wonder how
it gets there??)



Re: on-line banking qif import

2000-05-12 Thread Hendrik Boom

 
 As for changing "reconciled" transactions, it is unclear to me what 
 relationship exists between the "transaction" and the "JEs".

It is the JEs that get reconciled.

 
 Each JE would get reconciled separately. Therefore you could have a 
 transaction transferring funds from one account to another with one entry 
 reconciled and the other still pending. Changing the "Payee" would not affect 
 the JEs. However, changing the date could.

I occasionally do change the date when I find the date on which I actually
wrote the cheque (the bank only gives cleared dates).  However, in Gnucash,
this would probably not be necessary -- I would merely be providing extra
information when I find the chequebook.




Re: Order of transactions

2000-05-11 Thread Hendrik Boom

 
 I'm not sure how it works in Quicken. I was referring to just sorting
 by the date of entry, not changing it. But now that I think of it, if
 we switch to sorting by the date of entry, we could go ahead and show
 the date of entry in the left column instead of the 'real' date typed
 in, and allow the user to edit that. Any thoughts about that?
 

Unfortunately, if you happen to edit the date-typed-in by mistake,
there is no way of finding the error by looking for recently entered
(or recently changed) transactions.

Also, if the date-changed is to be used for audit, it won't be much use
if it is easy to change.

Also, it we are to be doing audits, it would be useful to retain
the old transactions after a change -- not so that they would be
actively displayed and added into totals and such, but that
they could be found and used to check whether the change was correct (or,
possibly, to restore the old version if the change were wrong).

Also, if we are going to be doing all this, we should record the name of
the person making the change.  In Linux, would a numerical user-id be
sufficient?

-- hendrik.



Re: on-line banking qif import

2000-05-11 Thread Hendrik Boom

 On Tue, May 09, 2000 at 12:50:09AM -0500, Linas Vepstas wrote:
  
  I was talking to someone about on-line banking  gnucash.  I hadn't
  thought about ti much, but a large part of on-line banking is
  reconciling statements against what the bank has.  Now, many 'online
  banks' use QIF export as a way of sending statements to users.  Sooo 
  (sound of lightbulb turning on) isn't the right way to import QIF files
  is to run them through a reconcile-like dialogue?  
  
  Anyone out there using gnucash and also looking at thier bank-staements
  on-line?  What do y'all think?
  

Last time I looked, my bank's qif imports give me all the transactions
since the last statement, not since the last qif import.

If gnucash were to remember the complete text of the qif-version of the
transactions, it could easily and reliably eliminate duplicate
qif-transactions.  Matching them with the manually entered ones
should not be automatic -- except, of course if gnucash recognizes
that a new qif transaction is identical to a previously matched
qif-transaction.

Reconciling with monthly bank statements is a separate issue, because
monthly bank statements (a) do not repeat transactions, and (b) are
a separate sequence of consistent data from the downloads.

Maybe some users do download consistent, non-verlapping batches of
qif transactions.  They should then be reconcilable independently from
paper statements.

 
 That's exactly what I am currently doing manually, once a week.  My
 Credit Union can provide transaction records in QIF format, but there
 doesn't seem to be a good way to use them with GnuCash.  One of the
 things I like about this combination of services is the amount of work
 it saves; errors are caught early, and there is no need to laboriously
 drag through a month or more of transactions to unsnarl mistakes.

 
 -- 
 Randolph Fritz
 Eugene, Oregon, USA
 




Re: on-line banking qif import

2000-05-11 Thread Hendrik Boom

 In general, I think that we must assume no correlation between importing data 
 and reconciliation. All that we know is that each entry imported from the 
 bank must appear in the ledger and that it has cleared the bank.
 A JE must progress through the following "reconciliation states"
 1) Entered
 2) Cleared
 3) Candidate
 4) Reconciled

That's right.  Only I like to add a note to each candidate and reconciled
transaction to pair it off with a specific line on the bank statement.
My credit card statements contain line numbers, and i use them
in the ledger to establish a one-to-one correspondence.

 
 The act of reconciliation is that of selecting candidates so that they match 
 the statement to which they are being reconciled. When it is complete, the 
 "commit" operation moves all the candidates to the reconciled state.
 From a user's POV, it is convenient to be able to invoke a function which 
 moves all "Cleared" entries to the "Candidate" state if they are on or before 
 the closing date of the statement. The user can then manually select 
 exceptions.

Except that when I reconcile, I match up the transactiuons with the statement
one at a time and check them off on the paper statement.  If I Converted
I would lose track of which lines on the paper statement had been matched.

 I don't think that it is necessary to attempt to remember the complete text.
 Transaction(cheque) identifier(number) and amount should be adequate to 
 identify most transactions once they have been matched the first time.

Except a lot of the transactions I get don't have meaningful numbers on
the bank statement -- whether .qif or paper.

-- hendrik.




Re: question: What is a JE?

2000-05-11 Thread Hendrik Boom

[Charset iso-8859-1 unsupported, filtering to ASCII...]
 
 
  -Original Message-
  From: Richard Wackerbarth [mailto:[EMAIL PROTECTED]]
  Sent: Thursday, May 11, 2000 12:33 PM
  To: Herbert Thoma; [EMAIL PROTECTED]
  Subject: Re: question: What is a JE?
  
  
  On Thu, 11 May 2000, Herbert Thoma wrote:
   ...
  
A JE must progress through the following "reconciliation states"
  
   ...
  
   I read it several times now, what does JE mean???
  Sorry for the shorthand.  JE==Journal Entry.
 
 It'll cause less confusion, but won't eliminate it.
 
 I tend to think of "Journal Entries" as being like GnuCash "transactions"
 (i.e., a collection of splits that are related and balance).  The splits
 themselves I tend to think of as "Ledger Entries", since they correspond to
 an individual entry in a ledger book.

Maybe "Ledger Entry", abbreviated "LE", would be a better term.

- hendrik





Re: multiple currencies

2000-04-18 Thread Hendrik Boom

 Christopher Browne wrote:
  
  
  My inclination (which is somewhat educated in the matter :-)) is to have
  the register report _Cost._  Cost does not change over time, and since
  it tends to reflect cash changing hands, it is _fairly_ objective.
 
 I agree. But I think that the engine does not work this way, although
 I don't know the engine well enough to be sure. I think the engine
 works this way: It has a balance of total shares and the most recent
 price per share. The reported balance then gets total_shares x price_per_share.
 To do it right we may have to change the engine and the stock register.
 
 All those who know the engine better, please comment.

It sounds to me that when the balance changes because of price changes,
this needs to be realized by a transaction, which, of course, needs to
be balanced by an entry into some kind of unrealized capital gains account.

-- hendrik.
 


--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: Dividends

2000-04-14 Thread Hendrik Boom

 
 So GnuCash definetly needs a currencies conversion. For EURO, we can hardcode
 a fixed table of all "Euro currencies" since they are NOT supposed to
 evolve. For the other, we can have a table updated by the user (and
 automagically by gnc-prices).

I woudn't rely on fixed exchange rates until the old national currencies
are so obsolete that no one uses them any more.  Since the fixed exchange
rates were defined by politics, they can be changed by politics,
no matter how permanent the politicians say they are.

We still need a solution to the general problem of (variable)
exchange rates.  If we have one, it should handle the euro automagically.
If we don't, we'll still need to build one, and then special effort on the
euro will have been wasted.

Is there something I don't understand here?

-- hendrik.

--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: budgets Was: quicken migration

2000-04-03 Thread Hendrik Boom


 Hendrik Boom [EMAIL PROTECTED] writes:
 
  P.S. Maybe some thing this perverse, but I enjoy the practice we seem
  to have of quoting the entire discussion in each message.
 
 It's certainly not a practice all of us have (or like).

When I wrote the P.S., I thought " Everyone will probably think I am being
sarcastic, but I'm not."
In retrospect, I probably was being sarcastic and didn't realize it because
I was tired.

What's really needed is not massive quoting (quadratic bandwidth usage),
but a way to reconcile multiple partially quoted partially edited messages
so that you can, if you choose, see the entire conversation history easily.
But that's probably not a problem for gnucash to solve.

-- hendrik.

 
 -- 
 Rob Browning [EMAIL PROTECTED] PGP=E80E0D04F521A094 532B97F5D64E3930
 
 --
 Gnucash Developer's List 
 To unsubscribe send empty email to: [EMAIL PROTECTED]
 
 

--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: quicken migration

2000-03-30 Thread Hendrik Boom

 Hello.
 
 Just wondering what the consensus is for migrating savings goal
 accounts.  One idea I have

I'm not clear what a savings goal account is, but it sounds
like a budgeting issue.
Does it make sense to represent budgets as accounts?



--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: budgets Was: quicken migration

2000-03-30 Thread Hendrik Boom

What I've always wanted was a way to relate each transaction to the
budget category and period it belongs to.  So if I put off paying a bill
for a few months (maybe there's a dispute as to the correct amount
or something), when I finally do pay it it sould count against the
budget period it logically belonged to, not the one in which the
payment finally occurred.  And it would be wrong to say I had
managed to go $1000 under budget simply because I postponed
paging a large bill.

There would seem to be a planned envelope of spending for each budget period,
estimates of committed spemding (which ought to fit within the
spending envelope), and actual spending when the cheque is in the
mail.

I'd like some mechanism that keeps track of all this gracefully.

But a savings-goal subaccount is a lovely stopgaps to make one feel
worried at the right moments about the big picture.

-- hendrik.

P.S. Maybe some thing this perverse, but I enjoy the practice we seem
to have of quoting the entire discussion in each message.  It provides
a really convenient, printable summary.  And I can delete old messages
that have been followed up on so as not to fill up the 20gig hard disk I've
just ordered :-).

Well, it's not quite perfect; sometimes there are several replies ot one
message. :-(


 Of course, what I suggested in the last message could probably be simply
 accounted for by having the budgeting module automatically put a Budgeting
 Balance transaction, similar to an Opening Balance transaction into every
 Expense and Income account.  The Budgeting Balance would be adjusted every
 day to account for the increased money allowed for spending.  This
 transaction could be turned on or off by a user interface switch.
 
   -Patrick
 
 On Thu, 30 Mar 2000, Bryan Larsen wrote:
 
  On Thu, 30 Mar 2000, Patrick Baker wrote:
Expenditures are *discrete* events.  I do not see the difference betweeen your
"velocity of money" approach and Quicken/MSMoney's approaches.  The only
difference is that your base time period is much smaller (1 day rather than 1
month).   Over the long term, your approach works, but in the short term it
falls down.
   The reason I was thinking more about this approach than a report scenario
   is because I don't tend to do a budget reconciliation at a particular time
   of year.  I would like more of a continuous approach, and thus took the
   logical extreme in considering a velocity rather than looking at discrete 
   transactions.  I admit that it's a unfamiliar way of looking at things,
   and if it is not obvious to most then it should not be implemented.
  
  Mine's not all that familiar either.
  
   
   I also was thinking about my approach because it's nice to have the
   expense accounts show how much you're allowed to spend at a particular
   moment in time, rather than the amount already spent from an aribitrary
   date when you started keeping track. 
  
  That's exactly what I want.  From my example:
  
  if the budget report says that a line item has a lower limit of $18 and
  an upper limit of $36, and an actual of $14, that means I can blow $4 on
  anything, and $18 on the line item.
  

   Integrating budgeting with accounts then allows you to do things like
   transfer money between budget accounts if you want to cut back on
   something in order to do something else.
   
 -Patrick Baker
  
  In the budget realm, that's simply called adjusting your budget.  I've never
  used the Quicken virtual savings accounts, though.
  
  Bryan
  
   

With my prototype budget report, you can ask it for a budget report for any
arbitrary period, and it will give you a real answer on whether you are
spending too much or too little.

For example, it knows that you are paid on the 1st of the month, or on a Friday
every 2 weeks.  If you have a 17 day budget report that encompasses two pay
periods, there should be 2*pay in your budget, not 17*pay/14.

Other expenses occur fairly regularly, but not on a known date.  I fill up my
car for $18 approximately every 6 weeks (gotta love diesels).  If I ask for
a report for the last 9 weeks, there should be either 1 or 2 fill ups, not 1.5
fill ups, so  $18 is under budget and  $36 is over budget.

It's still possible to trick the system.  For example, a 5.9 week report would
consider $36 over budget.  No big deal -- you know your tank is full, so you
aren't worried.  Conversely, a 6.1 week report where you didn't spend anything
on fuel, but your tank is empty.

Extraordinary/contingency expenses are handled very similarly, but are handled
slightly differently.  If you set up the above diesel expense as a
contingency instead, a 9 week budget report would have a lower limit of $9 and
an upper limit of $45.  ($18/6 * 9 +/- $18)  The idea is that you can be hit
with 

QIF import *and* save/load trouble

2000-03-23 Thread Hendrik Boom

 Hendrik Boom [EMAIL PROTECTED] writes:
  However, transactions which in Quicken had been reconciled in only
  one account show up as reconciled in both accounts.  This is wrong,
  but I can probably track then down by hand and hand-edit them.
 
 That's definitely a bug... I wasn't thinking straight when I added
 the reconcile handling.  

It looks as if tracking them down and hand-editing won't be very useful --
as described below, reconciliation status does not appear to be conserved
during save-restore.

Just to be clear, I'm running version 1.3.3, downloaded
as gnucash-1.3.3.tar.gz and compiled under SuSE Linux.
No patches have been applied.

 
 You mentioned that Opening Balance transactions are still duplicated?
 Can you explain the situation before and after the import wrt 
 Opening Balance?  

Before the imports, there is *nothing* in the register.

After, there are two Opening Balance transactions:

7/31/1992Opening Balance   chequing n  13,433.91-17,475.43
7/31/1992Opening Balance   chequing n-13,433.91 -17,475.43

And here's an extrace from the .qif file:

^
D7/26/92
T-1,110.12
CX
N221
PScotiabank Visa (prof)
^
D7/31/92
T13,433.91
CX
POpening Balance
L[Checking]
^
D8/ 2/92
T-400.00
CX
PCash, Royal Bank
^

The opening balance, by the way, is *not* the first transaction in the account.
There is, however, another entry

^
D12/ 1/92
T-107.36
CX
POpening Balance Adjustment
Ladjustment
^

which I must have put in by hand for some reason some time.  But it's
probably not relevant, and show up properly, just  once, in ther register.

I'm also a little puzzled by the 'R' column.  Last  night I had both
reconciled and nonreconciled entries.  After saving last night and
reloading this morning, they have all turned into "n"'s.  (Including
the incorrect 'r' entries I mentioned in my previous letter.  Also,
jump no longer works to get to the other end of transfers.  The UI accepts
the menu item, the menu disappears, and then nothing noticable happens.
It looks as if something has gone wrong during save-restore.

 
 I'm actually treating an Opening Balance transaction as a real
 transaction from an Equity account (by default) into the target.  Some
 programs uses the OB as just a trick to get an account name in the
 file, and it's a transfer from the account to itself.  Literally
 interpreting this results in a zero opening balance.

My opening balance entry is there to establish an opening balance.
'Jump" gets me nowhere from either 'Opening Balance' line.

However (surprise), from 'Opening Balance Adjustment', 'Jump'
*does* get me to the account for the 'adjustment' category.
I tried a few other transactions.  It looks as if jump works
to and from  accounts created from Quicken categories, but not
to accounts created from Quicken accounts. This behaviour is
different from that before the save/restore.

 
 Do banks put Opening Balance transactions in incremental downloads
 just to identify the account?  If so, I'll end up putting multiple
 real transfers of money into the account where they shouldn't be.

I don't know about banks.  The .qif files I am dealint with were saved
by an old DOS version of Quicken on December 31, 1999, just before Y2K.

 
 b.g.
 

-- hendrik.

--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: QIF import (fwd)

2000-03-23 Thread Hendrik Boom


  Somehow I failed to notice the separation between the two mappings:
  file-name onto Quicken account name
  Quicken account name to gnucash account name
  Maybe it would help to emphasize these two mapping in the documentation
  or in the UI.  
 
 How would you suggest that the UI change to make this clearer?  The
 right half of the Files tab is intended to capture information
 globally relevant to a selected QIF file, including the Quicken
 account it references, and the Accounts and Categories tabs are
 intended to specify the mappings from Quicken accounts/categories to
 Gnucash accounts.

I came up with a few ideas, but when I tried importing again today
(successfully) I noticed that the import dialogue already had them.
So I'll definitely have to think about it some more.

 
 Thanks,
 Bill Gribble
 
 --
 Gnucash Developer's List 
 To unsubscribe send empty email to: [EMAIL PROTECTED]
 
 


--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: i18n and check printing and Europe (fwd)

2000-03-23 Thread Hendrik Boom

I passed the number formatting problem on to a friend of mine
who happens to be a linguist as well as a computer hacker.
(there I go again, using a word in an older, this time respectable,  meaning)
He replied as follows:

-- hendrik

- Forwarded message from stephen p spackman -

From [EMAIL PROTECTED]  Wed Mar 22 15:35:40 2000
Message-ID: [EMAIL PROTECTED]
Date: Wed, 22 Mar 2000 15:48:42 -0500
From: stephen p spackman [EMAIL PROTECTED]
Organization: pooq.com
X-Mailer: Mozilla 4.7 [en] (Win98; U)
X-Accept-Language: en-GB,en,fr,de
To: Hendrik Boom [EMAIL PROTECTED]
Subject: Re: i18n and check printing and Europe (fwd)
References: [EMAIL PROTECTED]

[Hendrik: forward to the group if you deem appropriate]

Even in English we have, in many dialects, "five hundreds of dollars" (as opposed to 
"five
hundred dollars") not to mention "threescore dollars and twelve". I believe my 
grandfather
wrote "Seventy-Five Pounds and 26/100", but "Seventy-Five Pounds Only"; yet "One 
Hundred Pounds
Exactly".

French (in France and Quebec) expresses 71 as 60+11 and 91 as 4*20+11, of course. Other
variants of French have words for 70 and 90.

And it is of not to be forgotten that the U.S. "one hundred ten" is "one hundred and 
ten" for
the rest of us.

Evidently european languages differ in whether a milliard is more or less than a 
million.
Britain is currently in flux as to whether a billion is a thousand million (following 
the U.S.
and the "billionaire's" ego) or a million million (following tradition, logic, and the 
rest of
the world). Fortunately the thousand million/million million formulations themselves 
are
unambiguous and acceptable. There also seem to be variants of English that use 
milliard and
billiard; I don't know where these are spoken, though.

It gets worse: some languages - I think Japanese among them, could be wrong - use 
different
number series for counting different things (much as eggs come in dozens and shoes 
come in
pairs, but much, much worse), so if you care about more than just dollar values on 
cheques
there are. You might need to worry about gender agreements as well.

The moral: you need a methodology before you start making tables. The tables need to be
editable, and they need to take the form of ordered rules with number theoretical 
guards on the
left and grammatical productions on the right. Attribute grammars for maths.

In the following, (x ! y) is (x - x % y); ~0 means "nonzero"; $ is the quantity we're 
encoding.
An empty lhs matches anything. We use e3 etc. as an abbreviation for 1000.

Sorry for all the _notation_ being ad hoc; I've already spent too long thinking about 
the
content :-).

-- one variant of english

eng.UK.centAmount:
0:  nothing
~0 % 100: [dollarAmount $ / 100] and [number $ % 100] cents
~0 % e4: [dollarAmount $ / 100] only
:  [dollarAmount $ / 100] exactly

eng.UK.dollarAmount:
0:  no dollars
1:  one dollar
:  [number $] dollars

eng.UK.number:
0:  zero
1:  one
2:  two
3:  three
4:  four
5:  five
6:  six
7:  seven
8:  eight
9:  nine
10:  ten
11:  eleven
12:  twelve
13:  thirteen
15:  fifteen
20:  [$ % 10]teen
20:  twenty
30:  thirty
40:  forty
50:  fifty
100  0%10: [$/10]ty
100:  [$ ! 10]-[$ % 10]
~0 % 100: [$ ! 100] and [$ % 100]
e3:  [$ / 100] hundred
~0 % e3: [$ ! e3] [$ % e3]
e6:  [$ / e3] thousand
~0 % e6: [$ ! e6] [$ % e6]
:  [big(million) $ / e6]

eng.UK.big($1):
 e6:  [number $] $1
~0 % e6: [big(million $1) $ / e6] [$ % e6]
:  [big(million $1) $ / e6]

-- e.g.

[centAmount 1234567890123456789044]
[dollarAmount 12345678901234567890] and [number 44] cents
[number 12345678901234567890] dollars and [number 40]-[number 4] cents
[number 12345678901234567800] and [number 90] dollars and forty-four cents
[number 12345678901234567000] [number 8] hundred and [number 9]ty dollars...
[number 1234567890123400] [number 567] thousand eight hundred and ninety ...
[big(million) 12345678901234] [number 500] and [number 67] thousand eight ...
[big(million million) 12345678] [big(million) 901234] [number 5] hundred and [number
60]-[number 7] thousand ...
[big(million million million) 12] [big(million million) 345678] [number 901234] 
million five
hundred and [number 6]ty-seven thousand ...
[number 12] million million million [number 345678] million million [number 901200] 
and [number
34] million five hundred and sixty-seven thousand ...
twelve million million million [number 345600] and [number 78] million million [number 
901000]
[number 200] and [number 30]-[number 4] million five ...
twelve million million million [number 345000] [number 600] and [number 70]-[number 8] 
million
million [number 901] thousand [number 2] hundred and thirty-four million five ...
twelve million million million [number 345] thousand [number 6] hundred and [number 
7]ty-eight
million million [number 900] and [number 1] thousand two hundred ...
twelve million million million [n

Re: QIF import (fwd)

2000-03-23 Thread Hendrik Boom

A few more details about the transaction(s?) in my previous note:

 For example, the register for account "chequing" now contains (in multiline
  mode):
 
 
 11/23/1998 nettransfer to visa  r  1,000.00   
450,788.03
   33038681  visa - personal1,000.00
 
 and a few lines later,
 
 11/23/1998 ov013  transfer to visa  n  1,000.00  452,288.
   33038681  visa - personal1,000.00


For the record, here ate the qif entries for this transaction in
the qif files.

First, in the file "chq":
^
D11/23/98
T-1,000.00
CX
Nnet
Ptransfer to visa
M33038681
L[visa - personal]
^

And in the file "visapers.old"

^
D11/23/98
T1,000.00
Nov013
Ptransfer to visa
M33038681
L[Checking]
^

When I used the "Accounts" tab in the import dialog, I informed it that
accounts "chq" and "Checking" were to be the gnucash account "chequing",
and that "visapers" and "visa - personal" were to be "visa - personal".


Does this help you to duplicate the problem?

-- hendrik


--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: i18n and check printing and Europe (fwd), Re: i18n and check printingand Europe (fwd)

2000-03-23 Thread Hendrik Boom

 
  Even in English we have, in many dialects, "five hundreds of
  dollars" (as opposed to "five hundred dollars") not to mention
  "threescore dollars and twelve". I believe my grandfather wrote
  "Seventy-Five Pounds and 26/100", but "Seventy-Five Pounds Only";
  yet "One Hundred Pounds Exactly".
 
 Bear in mind here that we don't need to be able to parse all of the
 possible valid constructions in a given language, we just need to be
 able to output *one* valid construction for each language, which is a
 much simpler problem.

Yes, parsing is harder than determinstic generation.
But:

Some constructions are allowable in English (but not mandatory).
Such constructions are within the gamut of the language center
of the human brain.  Virtually any natural-language syntactic
construction that can be processed by the human brain turns out
to be mandatory in some language, somewhere.  Indeed, given the thousands
of languages of astonishing variability that exist, it would be
astonishing if this were not so.

So chances are that some language or culture, somewhere, will require
a construction like this.  If our formalism for describing number
notations can handle it, people will be able to do their own
linguistic customization.  (and contribute the results to our
internationalization library, natch).

Whether we want to do all this now, instead of just letting everyone
program their own number code in Scheme, is another matter, or course.
But Stephen's ad-hoc notation may indicate regularities that could simplify
our code in the long run.

 
 -- 
 Rob Browning [EMAIL PROTECTED] PGP=E80E0D04F521A094 532B97F5D64E3930
 

-- hendrik.

--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]





Re: duplicate transactions

2000-03-21 Thread Hendrik Boom

  Well, I got gnucash 3.6.2 running on SuSE Linux 6.3.
  
 You mean gnucash 1.3.2?

Yes. Stupid typo.

 
  When I import my entire financial state from a set of Quicken exports (one
  for each account, natch), all the transfers from one account to another get
  duplicated.
  
  A transfer is physically present in the .qif files of both the "from" and
  the "to" account; presumably the duplication is a simple-mided consequence
  of this.  When the transfer has been reconciled in one account but not the
  other, one of the two resulting transactions is reconciled; the other is not.
  What I would want is one transaction which is reconciled at one end only.
  
  The obvious workaround is to delete one of the two transactions, but then
  I also have to get a way of unreconciling one end or reconciling the other
  end of each such transaction.  Is there an easy way of accomplishing this
  edit?  And I have about six years' worth of data to convert -- maybe three of
  four hundred transfers altogether.  It's hard to imagine editing it all
  correctly by hand.
  
  It seems there should be a more elegant way to handle this, perhaps with
  special handling of imports.  I suspect that a transfer should be
  considered to be a duplicate if there is already another transaction
  bearing the same date and amount and bank accounts (and such pairs must
  be paired off during inporting so that if you see four of them you still
  end up with two).
  
  I do not know where to even start looking in the source code to do
  something about it.  Any suggestions?  Or am I missing
  something obvious?
  
 There is a new qif importer in gnucash 1.3.3 which allows you to
 import multiple qif files at once. You might try that.

It appeared a day or so ago while I was hacking 1.3.2.
Thanks, I will.

Where is the code that checks for duplicate transactions during import?
I suspect my problem may be that Quicken does not force identity across
transfers for some details (such as cheque number) that gnucash compares.
If I were to patch gnucash (even temporarily, for just one run) to ignore
cheque numbers and memos and such for transfers between bank, credit, and cash
accounts (but not for income or expense accounts) my data would likely import
flawlessly.  The obvious place to make the changes in  xaccSplitMatch or
xaccTransMatch, but I can't seem to find how they are called from QIFIO
or gc-import-qifs.  Am I still missing something here?

  (actually, I tried changing some of the scheme code as a first step,
  to get it to write out the list of transactions as one humongous
  S-expression (so that I might examine it by other means) but my changes seem 
  to have no effect whatsoever.
  Evidently there's something I still don't know about Scheme or
  about the Makefiles.)
  
 What scheme code did you change?

the function gnc:import-file-into-account-group  in gc-import-qifs.
I now gather from a doc file that qif imports may still be done in QIFIO.c
and not yet in Scheme.  Is this still true?  If so, I expect that editing
gc-import-qifs can be expected to have no effect.

 
 
  Is there an easy way to
(a) uninstall?
 
 No, not with the current build system.

But if I make an gnucash RPM for SuSE I might be able to uninstall that.

 
(b) build an RPM?
 
 Have you built one before? The gnucash.spec file in the rpm
 directory is what I have used.

Thanks.  No, I haven't.  It looks as if I have some reading to do.

 
 dave
 




duplicate transactions

2000-03-20 Thread Hendrik Boom

(revised message -- yesterday's version bounced)

Well, I got gnucash 3.6.2 running on SuSE Linux 6.3.

When I import my entire financial state from a set of Quicken exports (one
for each account, natch), all the transfers from one account to another get
duplicated.

A transfer is physically present in the .qif files of both the "from" and
the "to" account; presumably the duplication is a simple-mided consequence
of this.  When the transfer has been reconciled in one account but not the
other, one of the two resulting transactions is reconciled; the other is not.
What I would want is one transaction which is reconciled at one end only.

The obvious workaround is to delete one of the two transactions, but then
I also have to get a way of unreconciling one end or reconciling the other
end of each such transaction.  Is there an easy way of accomplishing this
edit?  And I have about six years' worth of data to convert -- maybe three of
four hundred transfers altogether.  It's hard to imagine editing it all
correctly by hand.

It seems there should be a more elegant way to handle this, perhaps with
special handling of imports.  I suspect that a transfer should be
considered to be a duplicate if there is already another transaction
bearing the same date and amount and bank accounts (and such pairs must
be paired off during inporting so that if you see four of them you still
end up with two).

I do not know where to even start looking in the source code to do
something about it.  Any suggestions?  Or am I missing
something obvious?

(actually, I tried changing some of the scheme code as a first step,
to get it to write out the list of transactions as one humongous
S-expression (so that I might examine it by other means) but my changes seem to have 
no effect whatsoever.
Evidently there's something I still don't know about Scheme or
about the Makefiles.)

Is there any way to mass-import a whole directory full of .qif files?
Or do I have to do it one at a time?

Is there an easy way to
  (a) uninstall?
  (b) build an RPM?
The crucial desideratum for either of these is the list of installed files.

-- hendrik.





Re: installung gnucash-1.3.0 on SuSE-6.3

2000-03-18 Thread Hendrik Boom

 Hendrik Boom wrote:
  Since you seem to have succeeded in your installation, you presumably
  have the missing file.  Have I left out something from my SuSE
  that would explain this problem?
 
 Yes, you need to install the gettext package, which is in the d series,
 I think.

This helped.  It now gets past the ./configure.
Unfortunately, now the make gnome fails.  Mresumably I'm missing snother useful
package, the one containing various include files whose names start
starting with "gdk_".  The tail end of the installation log follows.

These initials sound familiar, but I can't quite place them.

Can you tell me where to find these?

And, to save some email, do you know of any handy way to search the SuSE
disks for packages that contains specific files that are *not* installed?

 
 One additional hint: You may need to run gnucash once as root, so that guile
 can set up a catalog for slib.

Didn't quite get this far.

-- hendrik.


...
...
...
make[3]: Entering directory `/home/hendrik/cash/expand/gnucash-1.3.0/src'
gcc -Wp,-MD,obj/gnome/MultiLedger.d.tmp -c -g -O2  -I/usr/X11R6/include -I. -I.. 
-I./engine -I./register -Ireports -I./../include -I/usr/local/include  -pg -I./gnome 
-I/opt/gnome/include -DNEED_GNOMESUPPORT_H -I/opt/gnome/lib/gnome-libs/include 
-I/usr/X11R6/include -I/usr/lib/glib/include -DGNOME -o obj/gnome/MultiLedger.o 
MultiLedger.c 
In file included from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/gnome.h:7: gdk_imlib.h: No such file or directory
In file included from /opt/gnome/include/libgnomeui/libgnomeui.h:10,
 from /opt/gnome/include/gnome.h:9,
 from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/libgnomeui/gnome-animator.h:28: gdk_imlib.h: No such file or 
directory
In file included from /opt/gnome/include/libgnomeui/gnome-animator.h:30,
 from /opt/gnome/include/libgnomeui/libgnomeui.h:10,
 from /opt/gnome/include/gnome.h:9,
 from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/libgnomeui/gnome-pixmap.h:7: gdk_imlib.h: No such file or directory
In file included from /opt/gnome/include/libgnomeui/libgnomeui.h:19,
 from /opt/gnome/include/gnome.h:9,
 from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/libgnomeui/gnome-canvas-image.h:16: gdk_imlib.h: No such file or 
directory
In file included from /opt/gnome/include/libgnomeui/libgnomeui.h:21,
 from /opt/gnome/include/gnome.h:9,
 from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/libgnomeui/gnome-canvas-load.h:5: gdk_imlib.h: No such file or 
directory
In file included from /opt/gnome/include/libgnomeui/libgnomeui.h:27,
 from /opt/gnome/include/gnome.h:9,
 from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/libgnomeui/gnome-color-picker.h:13: gdk_imlib.h: No such file or 
directory
In file included from /opt/gnome/include/libgnomeui/libgnomeui.h:51,
 from /opt/gnome/include/gnome.h:9,
 from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/libgnomeui/gnome-icon-list.h:15: gdk_imlib.h: No such file or 
directory
In file included from /opt/gnome/include/libgnomeui/libgnomeui.h:106,
 from /opt/gnome/include/gnome.h:9,
 from register/table-gnome.h:33,
 from register/table-allgui.h:103,
 from register/splitreg.h:54,
 from MultiLedger.h:31,
 from MultiLedger.c:30:
/opt/gnome/include/libgnomeui/gnome-druid-page-start.h:23: gdk_imlib.h: No such file 
or directory
In file included from /opt/gnome/include/libgnomeui/libgnomeui.h:107,
 from /opt/gnome/include/gnome.h:9,
 from register/table-

Re: installung gnucash-1.3.0 on SuSE-6.3

2000-03-18 Thread Hendrik Boom

 
 This helped.  It now gets past the ./configure.
 Unfortunately, now the make gnome fails.  Mresumably I'm missing snother useful
 package, the one containing various include files whose names start
 starting with "gdk_".  The tail end of the installation log follows.
 
 These initials sound familiar, but I can't quite place them.
 
 Can you tell me where to find these?
 
 And, to save some email, do you know of any handy way to search the SuSE
 disks for packages that contains specific files that are *not* installed?

Thanks for the hints.
The package I wanted turned out to be imlibdev.
Please mention *this* in the README.SuSE, too.

Now it is running nicely, except that importing quicken files seems to
be *awfully* slow.  It looks as if the program crashes, but come back after doing the 
laundry, and, lo, the import has finished.

I guess I only have to do this once. loacing ans saving are fast enough, though.

 
  
  One additional hint: You may need to run gnucash once as root, so that guile
  can set up a catalog for slib.

I guess I have to find out about guile to know what this means.
Just doing it worked fine, though.

-- hendrik.

--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]




installung gnucash-1.3.0 on SuSE-6.3

2000-03-16 Thread Hendrik Boom

I tried installing gnucash-1.3.0 on SuSE-6.3 using the version of your
instructions distributed with gnucash-1.3.2 (it describes the installation
of 1.3.0).  Unfortunately I encountered a missing file error during
the ./configure step:



creating po/extract-macros.perl
creating include/messages_i18n.h
creating lib/Makefile
creating lib/Xbae-4.6.2-linas/Makefile
creating lib/Xbae-4.6.2-linas/src/Makefile
creating lib/ComboBox-1.33/Makefile
creating config.h
linking ./intl/libgettext.h to intl/libintl.h
configure: error: ./intl/libgettext.h: File not found
hendrik@topoi:~/cash/expand/gnucash-1.3.0  

Since you seem to have succeeded in your installation, you presumably
have the missing file.  Have I left out something from my SuSE
that would explain this problem?

--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]




  1   2   >