[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