[gnucash-de] generic-exporter, Konzeptansatzfür mehrOnline-Integration

C. Gatzemeier c.gatzemeier at tu-bs.de
Sam Jun 21 00:27:56 CDT 2003


Hallo Liste!

Es gibt im Wiki eine Seite mit Ideen für gewünschte und/oder sinnvolle 
Features die vielleicht mal aufgegriffen werden könnten.

Viele der beschriebenen Features könnten wahrscheinlich mit einem Schlag 
(allerdings einem etwas kräftigerem) erledigt werden wenn man komplementär 
zum Importer einen Exporter implementieren würde.

Außerdem könnte damit die "Bankinteraktion" in GnuCash weiter integriert 
werden.

Ich habe die Weiterentwicklungseite im Wiki mal bearbeitet und die Idee zum  
'''generic-exporter ''' etwas konkretisiert. Es wäre natürlich interessant 
welche anderen ideen es noch so gibt.

Hier die Ideen zur Diskussion, weiterehin kann und soll das Konzept natülich 
im Wiki weiter verfeinert werden.
http://www.linuxwiki.de/GnuCash/WeiterEntwicklung


Der generic-exporter müsste

   * Buchungen die in GnuCash stehen und als unerledigter "Online Auftrag" 
markiert sind lesen,
   * Konto, BLZ, Empfänger, Ausführungsdatum und Betrag aus den GnuCash 
Datenfeldern extrahieren und
   * an OpenHBCI (bzw. einer anderem Bankschnittstelle (Datenträger, 
Webinterface, etc)) übergeben.
   * Den Status der Buchung in GnuCash entspechend auf in Arbeit oder 
Ausgeführt setzen.

'''Realisierungsideen:'''

Also der Exporter sucht nach Buchungen die er zur Bankschnittstelle übergeben 
soll. Das sind die jenigen in dessen

 1. Aktionsfeld ein Geschäftsvorfall steht das er interprtieren kann z.B. 
"Überweisung" oder "Lastschrift"
 2. Status noch "zu senden" ist.

Dazu müsste natürlich evtl. der Wertebereich des Statusfeldes in GnuCash 
erweitert werden.
Zusätzlich bräuchte man wohl noch mindestens einen zusätzlichen Status
s="senden online" oder so, zu den vorhandenen n="noch nicht bestätigt" und
b="bestätigt".

Die gefundenen Buchungen müssen nun interpretiert werden.

Ein Problem stellt sicher der Unterschied der Datenfelder zwischen GnuCash und 
der Bankschnittstelle dar. 
'''CS:''' Man vergleiche 
http://openhbci.sourceforge.net/doc/api/classHBCI_1_1Transaction.html mit den 
dokumentierten Zugriffs-Funktionen in src/engine/Transaction.h

Unabhängig ob HBCI, Datenträgeraustausch, oder Webinterface, müssen der Bank 
Transaktionendaten übergeben werden die in GnuCash nicht explizit vorhanden 
sind:

Unkritisch sind Datum, Betrag, Währung und Kontoinhaber.

Doch
   * Empfängername
   * Empfängerkonto
   * Empfängerbank

sind fraglich denn GnuCash kennt nur Beschreibung und Buchungstext

Sofern die Empfängerangaben nicht von sich aus zu parsen sind müssten sie 
natürlich idenentifizierbar gemacht werden, indem man sie in einer bestimmten 
Art und Weise kenntlich macht. Kontonummer und BLZ lassen sich 
schätzungsweise über KtoBLZcheck identifizieren.

Der Exporter müsste also Beschreibung und Buchungstext durchsuchen Z.B.


Beschreibung: "Hans Musterman" Verwendungszweck
Buchungstext: Konto 123456789 Bank 10000000 noch Verwendungszweck

Schlüsselzeichen wären die Anführungszeichen Konto und Bank. Der Rest würde 
als Verwendungszweck identifiziert.

mit ktoBLZcheck könnte es auch genügen wenn der Empfängername in 
Anführungszeichen steht:

Beschreibung: "Hans Musterman" 123456789 10000000
Buchungstext: Verwendungszweck

Optional könnten die Daten z.B. zur Konfliktauflösung auch explizit angegeben 
werden

Beschreibung: "Hans Musterman" Konto(123456789) Bank(10000000)
Buchungstext: Memo(Bankgebühren für erstes Konto) für drei Monate

oder kürzerer Vorschlag:
Beschreibung: Bankgebühren für erstes Konto <# für drei Monate>
Buchungstext: "Hans Musterman" <123456789 at 10000000>


Das müßte nätürlich noch etwas genauer durchgedacht werden (Eindeutigkeit 
Sonderzeichen etc.) aber prinzipiell nicht unmachbar.

----

Nun die von Exporter "geschluckten" dann integrierte Feature Wünsche:

   * '''Sammlung von HBCI-Aufträgen in einer Job-Liste'''
 um sie später gemeinsam [in einem Rutsch kuzzeitig dafür Online gehen, und 
mit einer Pin-Abfrage] ausführen zu können.

 RS: Die Job-Liste könnte dabei generell alle ausgeführten und noch 
auszuführenden Transaktionen beinhalten. Eine noch nicht ausgeführte 
Transaktion hätte dann eben einen anderen Status, als eine bereits 
ausgeführte Transaktion.

 '''CS''': Das Sammeln von Aufträgen und Abschicken in einem Rutsch ist in 
OpenHBCI schon längst eingebaut. Es fehlt lediglich das GUI in GnuCash. 
Geschätzter Aufwand ca. 8-12 Stunden. Etwas tricksig ist die Frage, wie und 
wann zu einem HBCI-Job dann tatsächlich die GnuCash-Buchungen erstellt werden 
sollen (beim Auftrag-Sammeln? Beim Abschicken? Nach erfolgreichem 
Abschicken?). Da hatte ich auch keine einfache Antwort.

 RS: Vielleicht ließen sich dann die erledigten Jobs durch einfaches editieren  
wieder zu neuen Jobs umformulieren (Um  z. B. fast gleiche oder gleiche  
Überweisungen/Lastschriften mehrmals durchfünren zu können)

 '''CS''': Nein, das halte ich für keine so gute Idee. Besser einfach so 
Buchungs-Vorlagen programmieren, wie oben erwähnt.

'''Mit Exporter:''' Die "Jobs" stünden im Kontobuch mit entsprechendem Status. 
Dort können sie bei Bedarf selbstverständlich auch editiert/kopiert werden.


   * '''Generierung von sich ständig wiederholenden 
Überweisungen/Lastschriften'''
  (z. B. Miete).

 '''CS''': Die Verwaltung von Daueraufträgen ist in HBCI und OpenHBCI längst 
integriert -- GnuCash muß nur ein GUI dafür bieten. Die Speicherung von 
Daueraufträgen in GnuCash ist aber etwas unklar. Die Terminierten Buchungen 
haben zum einen genug eigene Probleme und zum anderen sind ein stand-alone 
Feature, wo der HBCI-Code keine zusätzlichen Datenfelder mit einbauen 
darf/kann. Also besser einfach nur eine GUI für die Dauerauftrags-Verwaltung 
bauen und sonst keine weitere Integration erwarten.

'''Mit Exporter:''' Könnten Onlineüberweisungen sofort lokal über Terminierte 
Buchungen erzeugt werden. Evtl. ließen sich auch Terminierte Buchungen als 
Daueraufträge exportieren (one notwendige neue GUI) so das sie zukünftig bei 
der Bank gespeichert sind und so automatisch ausgeführt, und über den 
Importer wieder eingelesen werden (die einzelnen Buchungen). (Als in den 
blauen Himmel geschriebenes Nonplusulta würde ein kleines Häkchen in der 
Terminieren Buchung reichen: [x] automatisch von der Bank ausführen lassen)

   * '''Adressbuch für Zahlungs- und Lastschriftempfänger'''
  Vielleicht liesse sich ja  ja das bereits in GNUCash enthaltene Adressbuch 
unter "Geschäft --> Kunden" für diesen Zweck etwas aufbohren. Oder ist das 
generell für etwas anderes gedacht?
'''Mit Exporter:''' Wäre auch das Quick-fill Feature für Online Geschäftsfälle 
nutzbar.

------------



'''CS''' hatte schon eine Anmerkung zum Exporter gemacht:

> Schöne Idee, geht aber leider nicht. HBCI ist ein add-on zu gnucash und wird 
> es aus guten Gründen auch immer bleiben. Mehr dazu schrieb ich neulich auf 
> gnucash-de:
>
> Lange Antwort: Die Datenstrukturen *sind* unterschiedlich. In HBCI *gibt* es
> mehr einzelne Textfelder als in einer Gnucash-Transaction.

Zugegeben, doch siehe Ideen zur Realisierung.

> Darüberhinaus legt auch noch jede
> HBCI-Bank andere Sachen in den Verwendungszweck-Feldern ab. Es ist schlicht
> von mir geraten, was denn zur Zeit aus den HBCI-Sachen in die (wenigen)
> gnucash-Textfelder übernommen wird.

Das ist doch Sache des Importers und funktioniert doch ganz gut. Außerdem 
lässt sich das ja wie du auch schon beschrieben hast schon jetzt nach 
belieben (im code) ändern.
Der Exporter so wie unten beschrieben könnte sogar Buchungen exportierten die 
vom derzeitigen importer importiert wurden (man müßte sie nur Duplizieren und 
dan das Aktionsfeld und den Status setzen.

> Das gnucash-Feld "Aktion" wird von mir
> nicht genutzt, da es eh nirgendwo in gnucash gescheit implementiert ist.

Gut, doch das schließt nicht aus, dass man es nicht gescheit implementieren 
könnte oder. ;-)

> Zusätzlich ist HBCI *immer* nur ein add-on Modul zu gnucash. Alle Funktionen
> davon sind nur über Menüpunkte zugänglich. Alle zusätzlichen Daten, die HBCI
> betreffen, sind in den Konten oder Transactions als zusätzlihe Daten
> gespeichert. Quickfill etc. bezieht sich immer nur auf die "nativen"
> GnuCash-Daten, (bisher) niemals auf Daten von add-on Modulen.

Das ist interessant, d.h. die Zuordnung zum HBCI Konto ist ein extra Datum im 
GnuCash Konto?

Der Beschriebene generic-exporter wäre ja auch ein add-on modul. Wenn er 
global (ein Durchlauf für alle Konten) arbeiten würde z.B. in der 
Kontoübersicht unter Aktionen im Menü zu finden. Die zu exportiernden Daten 
fänden sich aber selbstverständlich in den "nativen" GnuCash-Daten. 


Gruß
Christian