ofx and generic import infrastructure

Christian Stimming stimming@tuhh.de
Wed, 20 Nov 2002 23:22:55 +0100


-----BEGIN PGP SIGNED MESSAGE-----

On Mittwoch, 20. November 2002 19:45, Benoit Grégoire wrote:
> So, let's start the discussion:

Sure.

> Here are the GUI services currently offered by the generic import module
> It would also need to add:
> -Destination account autoselection (auto-split creation) as part of the
> transaction matching (There is no choice but to put it on the same page,
> there are plenty of examples where two successive transactions will need a
> different match) .

Err... are you saying that the destination account matching *has* to be on the 
same page as on the transaction matching/duplicate detection? If that is what 
you want to say, then I definitely disagree... those are two different tasks 
and I can easily imagine those happening in different windows (or druid pages 
or whatever). Maybe you prefer to have both happening in one window (and I 
prefer the other) -- but if you think that there are important reasons for 
the one-window concept, can you elaborate more on that?

> -Reconcile window invocation (I see it as a list of accounts for which a
> balance was downloaded.  You check those for which you want to invoque a
> reconcile).  Since HBCI supports it, is suppose Christian wrote some code
> for this.

:-) Not really. My "Reconcile window invocation" happens in 
src/import-export/hbci/gnc-hbci-getbalance.c line 169. Not really much code, 
is it? :-) In the current HBCI implementation, the user simply gets a dialog 
window popping up in his face (line 148) asking "Reconcile now? Yes/No", and 
if the user answers yes,  the reconcile window is opened by 
recnWindowWithBalance from RecnWindow.h. That's all there is. 

> Now, I've taken a lot of heat in the past for the event based, "pop in your
> face" design of the current generic importer.  Derek and Christian want it
> to be druid based.  

Ok, this point is still up for discussion, but there are several issues with 
it, and since you asked, I'm just going to state those:

* One thing that keeps buggin me about the gnc_import_add_trans function is 
that it operates on static, hidden GUI data, which is obvious by the fact 
that it only takes one argument, the Transaction to add. IMHO the natural 
question here is "this thing adds transaction TO WHERE?" What I definitely 
would prefer here is a function like 

void gnc_import_add_trans(GenericImporter *importer, Transaction *trans);

and having the additional function

GenericImporter *gnc_import_importer_new (GtkWidget *parent);

and so on. Note that this point is still totally independent from the 
Druid/One-Window discussion. It is, however, clearly not independent from the 
point you raised about different programming styles colliding here. :-)

* Same point (different programming styles): I would kindly ask you that if 
you define function prototypes in a header file, *please* put the 
implementation in a .c file *of the same name*. Otherwise the header file 
IMHO is almost useless -- I still have to grep for the actual implementation 
of that function, which is quite a bummer. Of course this can lead to the 
fact that you create a whole lot of header files, and maybe some of those are 
almost empty -- but IMHO this is totally valid and only reflects the *actual* 
*real* function interdependencies/ program structure. Note that this point 
can perfectly be done during the next days, since it shouldn't change the 
behaviour of the code at all.

> To be honest, my motivation for GnuCash isn't at an all time high, and I no
> longer have 20 hours a week to spend on ofx and GnuCash as I had in the
> last 6 months.  

Well, everyone here has times of higher spare time for Gnucash, and times of 
less so. I'd just like to add one comment about that you worked on your code 
*alone*: I spent all summer fighting with the OpenHBCI programmers about API 
questions, which mostly were due to different coding styles (literally -- 
Martin Preuss will easily confirm that). If I had joined you and worked on 
the same code parts as you did, I would've first needed to start such fights 
all over again (the above two points are really easy ones :). I eventually 
decided that the overall outcome for the project is probably higher if I just 
let your code alone (and IMHO results are confirming that). In other words: 
You shouldn't feel disappointed because nobody else is editing the files you 
do -- instead, this has just proven to be the most effective way of dividing 
up the work, especially in OpenSource projects. Not doing so (i.e. editing 
the *same* files) immediately requires a whole different level of 
understanding and communication, which IMHO might be necessary for a big, 
multi-purpose API (OpenHBCI) but not really for one part inside a big 
application. Gee. I'm pretty sure we'll come to a nicely working application 
in the end. Thanks for your comments.

Christian
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iQCVAwUBPdwLP2XAi+BfhivFAQH6nwQAmjec2UjHpNCrhBKk+PwP5s9cuZjiVs1e
koryGnXT7o5CKRych/ezq/txoxQ32H0+MCR3hlapQg4pKGjTnAXA1Vjrbt3/GdiA
vxW+PFzDy2AjHrBXEk41b1/wWbos5u8xz+gp+XkgqK7hYlXAJU/mVv8Za26ozVml
E23gkZIyqUM=
=Tnjy
-----END PGP SIGNATURE-----