AqBanking3 Porting

From GnuCash
Revision as of 01:23, 13 April 2008 by Andi5 (talk | contribs)
Jump to: navigation, search

AqBanking3 (and gwenhywfar3) is the most recent library family for online banking by Martin Preuss. It is not source-compatible to aqbanking2. Hence, the current gnucash only compiles and runs with aqbanking2.

These are notes on which tasks need to be completed in order to achieve a full porting to aqbanking3:

Already done

  • Some functions are merely renamed; in gnc-hbci-utils.h line 32 you just have to activate the #ifdef so that the #defines for the renames are being used.
  • The AB_Banking_ActivateAllProviders() call is no longer necessary and can disappear.
  • The functions using GWEN_XML_Parse are no longer necessary - that job is offered by GWEN_Gui_CGui_GetRawText().
  • Instead of only calling AB_Banking_Init(), we additionally have to call AB_Banking_OnlineInit() if we intend to use the online banking features. The former is needed for when we only use the file import facilities.
  • The largest sub-task is that aqbanking2 offered in the library a caching of the entered PIN (caching in memory during one session), whereas aqbanking3 doesn't offer this anymore. Hence, gnucash needs to implement such caching itself. In the gnucash-1.8.x series which used the OpenHBCI library (or was it aqbanking1?) gnucash already had such a caching, but it was deleted subsequently because aqbanking2 did this for us.
  • Another sub-task is the processing of the data returned from the online jobs. Currently, these are retrieved from the AB_JOB after execution, but in aqbanking3, the AB_JOB won't offer any return data anymore. Instead, the returned data must be retrieved from an AB_IMEXPORTER_CONTEXT. Coincidentally this is already implemented in the file importer submodule of hbci (mt940 import, dtaus import) and only needs to be used from the online-banking parts of the hbci module.
  • Another sub-task is that the enqueing of online jobs is not anymore done in a queue which is managed by aqbanking, but instead gnucash has to pass one complete AB_JOB_LIST2 with all the jobs (well, usually only one) to aqbanking. Functionally, this isn't any different from what gnucash currently does, but it's a bunch of type and name changes.
  • Another sub-task is that the GUI callback functions are no longer registered via calls to aqbanking functions, but instead via calls to GWEN_GUI_* functions. Functionally, this isn't any different from what gnucash currently does, but it's a bunch of type and name changes only.
  • A small task is to hook up our gnucash logging functions into the gwenhywfar logging framework by using GWEN_Gui_LogHook, as Martin pointed out.

Tasks

  • Transactions, Internal Transactions, Direct Debits
  • MT940 Import, MT942 Import, DTAUS Import and Send

Further notes

The porting is work in progress and can be helped with, followed and tested on the aqbanking3 branch.