[gnucash-de] GnuCash Verbesserungen

Hartmut Kraus hartmut.melina at web.de
Mi Mär 18 06:35:22 EDT 2015


Am 14.03.2015 um 13:48 schrieb Andreas Seidel:

> Gibt es denn keine deutschen Entwickler hier in der Mailingliste?

Überhaupt keine. Ich hab's mir selber compiliert (Version 2.6.5, weil 
die MySQL-Datenbanken unterstützt). Hier die Quelle:

http://en.sourceforge.jp/projects/sfnet_gnucash/downloads/gnucash%20%28stable%29/2.6.5/gnucash-2.6.5.tar.gz/

Mit den Sourcen wird eine Autorenliste mitgeliefert, mit Mailadressen. 
Hab' sie mal hier hochgeladen:

http://www.hkraus.eu/AUTHORS

Mail' doch mal einen oder mehrere an - ist aber fraglich, ob sie auf 
"Sonderwünsche" wie deine eingehen.

Das Compilieren kein großes Problem, hat sogar bei mir geklappt. ;)

http://wiki.ubuntuusers.de/GnuCash#Installation ("Aus dem Quellcode 
kompilieren")

"Es ist gut möglich, dass nun Fehlermeldungen erscheinen, da einzelne 
Pakete, die zur Kompilierung des Codes benötigt werden, nicht 
installiert sind. Die Ausgabe gibt Hinweise darauf, welche das sind."

Klar, ein paar Pakete musste ich auch noch installieren. Beim 4. oder 5. 
Versuch lief's dann. ;)

Kann auch MySQL nur empfehlen. (Wenn der Server in deiner Distri nicht 
schon mit drin ist, einfach installieren - der wird schon bei der 
Installation "richtig" konfiguriert, wirst da schon nach dem Passwort 
für DB-User "root" gefragt) ...

http://wiki.ubuntuusers.de/MySQL#Installation

Datenbank anlegen kein Problem - macht GNUCash ganz von selber (die 
richtige Version natürlich vorausgesetzt, und dass auf dem MySQL-Server 
ein User "gncuser" mit allen Rechten auf die DB "gnucash" angelegt ist):

"Datei" - > "Speichern unter", als Dateiformat "mysql" auswählen, 
Speichern - fertig ist die MySQL-Datenbank statt XML.  (Diese Dateien 
stelle ich mir übrigens als blanken Horror vor.) ;)

Hab' auch schon ein bisschen im Quelltext geschnüffelt - einen alten 
(Berufs- und Hobby-) Programmierer muss sowas ja interessieren. Saubere 
Arbeit, muss man den Jungs bescheinigen. Aber so ein Programm mit 
grafischer Oberfläche und Datenbankanbindung in purem C zu schreiben - 
dazu gehört schon Idealismus. Der irgendwo seine Grenzen hat. ;) Mit 
Sicherheit bei grafischen "Sonderwünschen" - in einer höheren 
Programmiersprache kein Problem, aber in C ...  (Nur der reine C- 
Quelltext sind 173 Dateien.) ;)

Ich bastele also weiter auf Shellscript- / MySQL - Ebene. Jedenfalls 
funzt der "automatische" Abgleich schon - vorausgesetzt natürlich, das 
Programm findet "seine" Konten, auf die's buchen soll. Mit einigen 
Modifikationen der Datenbank, entsprechenden Stored Procedures drin und 
Shellscripts drumrum. Ist schon (für mich jedenfalls) ;) irgendwie 
einfacher und dabei "eleganter" als nacktes C. ;)

Dialogfenster z.B. sind auch kein Problem, ich mach's mit Zenity, Beispiel:

http://www.hkraus.eu/neues-konto.png

(Ich programmiere die "automatische" Zuordnung noch über BLZ und 
Kontonr., weil die in den Dateien drin sind, die ich mir von meiner Bank 
'runterladen kann. IBAN / BIC noch nicht - bei dir schon drin? Das 
letzte, was ich von GNUCash gehört habe: Es wird dran gearbeitet. In 
meiner Datenbank sehe ich jedenfalls noch nichts davon.)

Hier meine neue DB-Tabelle für den CSV-Import - sowas Ähnliches dürfte 
bei dir ja schon existieren. Würde ich ja gerne mal sehen, um nicht das 
Fahrrad neu zu erfinden, indem ich was bastele, was kein Mensch außer 
mir gebrauchen kann. ;)

CREATE TABLE `csv_imp_70053070` (
   `buchungstag` char(10) DEFAULT NULL,
   `wertstellung` char(10) DEFAULT NULL,
   `zahlungsgegner` varchar(256) DEFAULT NULL,
   `kontonr` char(10) DEFAULT NULL,
   `blz` char(8) DEFAULT NULL,
   `verwendungszweck` varchar(2048) DEFAULT NULL,
   `betrag` char(16) NOT NULL,
   `waehrung` char(3) DEFAULT NULL,
   `guid` varchar(32) DEFAULT NULL,
   `account_guid` varchar(32) DEFAULT NULL,
   `tx_guid` varchar(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Bis 'waehrung' sind's die Felder wie in den CSV-Dateien, aus denen 
importiert wird. Die GUIDs sind standardmäßig die Schlüssel in den 
GNC-Tabellen für die Zuordung:

`account_guid` -> `accounts`.`guid` (die Tabelle `accounts` enthält die 
Konten),

`tx_guid` -> `transactions`.`guid` (die Tabelle `transactions` enthält 
die Buchungen),

`transactions`.`guid` - >`splits`.`tx_guid` - tjaaaa, was steht wohl in 
der Tabelle `splits`? ;) Richtig geraten: Die enthält zu einem Datensatz 
in `transactions` (mindestens) zweie - mit den Daten, was auf das Soll- 
und was auf das Haben-Konto gebucht wurde.

Dazu hab' ich auch schon entsprechende Stored Procedures, für die 
"automatische" Buchung und "rückwärts" für die Saldoabfrage von einem 
Konto (ja, Salden werden in der Datenbank nicht mitgeführt, das hat 
seine - buchhalterischen /und/ programmtechnischen - Gründe) ...

Gruß Hartmut

-- 
Hartmut Kraus
Weßlinger Str. 38/3
82205 Gilching

Tel.: 08105 / 90 79 82
Mobil: 01522 / 6 11 41 65
E-Mail: hartmut.melina at web.de

Web: http://www.hkraus.eu/



Mehr Informationen über die Mailingliste gnucash-de