2008-10-01

jGnucashLib - Java-Gnucash library, viewer and scriptable editor with Plugins

Hello,

it could be interesting for you, that version 2.0.0 of jGnucashLib is released.
(actually even 2.0.3)

http://apps.sourceforge.net/mediawiki/jgnucashlib/index.php?title=Main_Page

In prior GPL-versions you could only read gnucash-files with your own
java-programs.
Now you can do so much more:

* jGnucashLib can read and write and used the features of Java6.
(Use it to write your own programs that utilize gnucash-files)
Uppon chances in a gnucash-file everything else including line-breaks
is kept. The library has proven itself to be completely safe in years of
daily use.
If you don't trust it not to damage your data or want to debut sth.:
UnGZip the file before and after the change and do a diff. You'll
see meaningfull output.

* jGnucashViewer is a standalong viewer as a directly executable jar-file.

* jGnucasEditor is where it gehts interesting.
It is not a replacement for Gnucash but a simple editor acting as a frame
for plugins and scripts to automate accounting-tasks..
The most important plugin up to now is the HBCI-homebanking-plugin:

HBCI-transactions are not only booked in a gnucash-account representing your
bank-account and everything goes to "expenses-other", no. For repeated
types of transactions you can have regular expressions and scripts in any
of a large number of scripting-languages..

common things:
* Existing transactions that are simply a day or two off will be moved to when
the bank says they actually happened.
* Transactions that apear in the gnucash-file but not on your bank-account will
be marked with a TODO-comment.
* Transactions with a comment TODO, NAK, OK and unbalanced transactions
are highlighted in different ways to make them stand out.
* After every day that contains newly imported transactions a new, empty
transaction is added with a comment telling the account-saldo as the bank
says it is, as gnucash says it should be and the difference. (To
easy the manual work)
* Imported transactions contain the original-HBCI-data in an invisible attribute
that is not touched by Gnucash. This way they can be associated with
their hbci-
transaction in later HBCI-imports.

scripts:
* Every script has a regular expression and is run only on newly imported HBCI-
transactions that match thus expession.
(e.g. ".*ARAL.*" -> run script to book sales-tax and net-value to 2
acounts given in the script)
* For very easy cases you can just give an alternate target-account to
book the value to instead of
running a full script.
* Every of the numerous scripting-languages used by JSR223-scripting can be used
(defaults to Javascript but alsoPHP, Python, Perl, ... can be used).
* Scripts can access the gnucash-data and any external data with no limits
(e.g. to find out if and how much reserved have been booked for an order or
to set the status of a detected CoD-payment on an external web-site)

script-editor:
* There is a script-editor that openes if wanted to every time no
existing script is matching
and you choose to write a new one.
* The editor marks the regular expression depending of it matching the
current transaction
or not.
* The editor can test-run scripts on an empty gnucash-file while
implicitely creating any
account requested via getAccountbyID or getAccountbyName and show
resulting transaction(s)
the script generated.

examples for using the existing plugins:
* book known, repeated transactions with the correct sales-tax
* When financial authorities take tax-money from your account, split it
into the different taxes by parsing the description-text.
* Split payments to your insurance-companies the same way when they
have combined the payments for multiple insurances in one transaction,

examples for future plugins:
* parse PDF and text -invoices/paypal/ebay-emails, credit-card-statements,...
and book them with minimal human efford
* automatically book inventory-deviations
* automate payments for ebay-sales and associate them with the sale.


Have fun with it,
Marcus Wolschon

jGnucashLib - Java-Gnucash Bibliothek, Viewer und scriptbarer Editor mit Plugins

Hallo,

euch könnte interessieren, daß Version 2.0.0 von jGnucashLib fertig ist.
(eigentlich sogar 2.0.3)

http://apps.sourceforge.net/mediawiki/jgnucashlib/index.php?title=Main_Page

Früher konnte man mit der GPL-Version nur Gnucash-Dateien durch
eigene Java-Programme lesen. Jetzt gibt es wesentlich mehr:

* jGnucashLib kann lesen und schreiben und nutzt die Features von Java6.
(Um eigene Programme zu schreiben, die Gnucash lesen und schreiben sollen)
Bei Änderungen an einer Gnucash-Datei bleiben incl. Zeilenumbrüchen
alle nicht geänderten Teile erhalten. Die Bibliothek hat sich im
jahrelangen Einsatz
als sicher bewiesen.
Wer dem nicht traut: Ein Text-diff zwischen original und mit dieser Bibliothen
veränderter Datei (nach einem gunzip natürlich) ergiebt eine einfach
für Menschen
mit XML-Erfahrung verständliche Ausgabe.

* jGnucashViewer ist ein Standalone-Viewer als direkt ausführbare Jar-Datei.

* Bei jGnucasEditor wird es spannend.
Der Editor ist definitiv nicht als Ersatz für Gnucash gedacht sondern
als sehr grundlegender Editor, welcher eine Hülle für Plugins und Scripte
bietet um Fibu-Aufgaben zu automatisieren.
Das bisher wichtigste Plugin dafür ist das HBCI-Plugin:

HBCI-Buchungen werden nicht einfach nur auf ein Gnucash-Konto
eingetragen, welches das Bank-Konto representiert und gehen alle nach
"Ausgleichskonto-EUR" sondern man kann für wiederkehrende Buchungen
Reguläre Ausdrücke und Scripte hinterlegen.

Allgemeines:
* Bereits bestehende Buchungen, welche nur um 1-2 Tage zu früh oder spät
liegen, werden verschoben
* Buchungen, welche in Gnucash aber nicht auf der Bank auftauchen, werden
mit einem TODO in der Beschreibung markiert.
* Buchungen mit einem TODO oder NAK sowie mit OK und nicht ausgeglichene
Buchungen werden verscheiden markiert.
* Nach jedem Tag, für den Buchungen importiert wurden, wird eine leere
Buchung in das Ausgleichskonto eingefügt, welche in der Beschreibung das
erwartete Saldo laut HBCI, das tatsächliche Saldo laut Gnucash und die
potentielle Differenz nennt. (Zum einfachen Abgleich)
* importierte Buchungen tragen die original-Daten aus HBCI als nicht sichtbare
Attribute, so daß sie in einem späteren Import eindeutig einer Bank-Buchung
zugeordnet werden können. (Daten bleiben bei Bearbeitung mit Gnucash
erhalten.)

Scripte:
* Jedes Script hat einen regulären Ausdruck und wird für neu zu importierende
Buchungen angewendet, welche auf diesen Ausdruck passen.
(z.B. ".*ARAL.*" -> Buche Vorsteuer und Netto-Betrag auf 2 bestimmte Konten)
* Für ganz einfache Fälle kann man in einer Config statt einem Script
auch einfach
nur ein alternatives Ziel-Konto angeben.
* Jede der Unmengen an Script-Sprachen, welche Java mit JSR223 unterstützt
sind möglich. (Default ist Javascript aber auch PHP, Python, Perl, ...
geht alles)
* Scripte können uneingeschränkt auf die gnucash-Datei und externe
Daten zugreifen
(z.B. herausfinden ob und wie viel Rücklagen für eine Bestellung
gebildet wurden
oder bei einer erkannten Nachnahme-Zahlung auf externen Website den
Bestell-Status ändern)

Script-Editor:
* Es steht ein Script-Editor bereit, der auf Wunsch hoch kommt, wenn für eine
Buchung kein bestehendes Script passt und man wählt, daß man ein neues
erstellen möchte.
* Der Editor markiert den regulären Ausdruck farblich, je nachdem ob er zu der
aktuellen Buchung matched oder nicht
* Der Editor kann das Script Test-Laufen, d.h. auf einer leeren
Gnucash-Datei auf der
jedes Konto, welche das Script mit getAccountbyID oder getAccountbyName
holen will automatisch angelegt wird. Die Ergebniss-Buchungen erscheinen dann
neben dem Editor zur Kontrolle


Beispielanwendungen für bestehende Plugins:
* bekannte, wiederkehrende Ausgaben/Einnahmen-Buchungen gleich mit der korrekten
Umsatzsteuer buchen
* Abbuchungen des Fianzamtes entsprechend dem Buchungstext in
Einkommenssteuer, Umsatzsteuer und Soli aufspalten und als eine
Split-Buchung anlegen
(funktioniert hier super)
* Wiederkehrende Abbuchungen für Versicheurngen automatisch buchen
(incl. Aufteilung falls mehrere Versicherungen gesammelt abgebucht wurden)

Beispielanwendungen für geplante Plugins:
* hereinkommende PDF oder Text -Rechnungen, Paypal/ebay-Emails,
Kreditkarten-Abrechnungen,...
parsen und mit minimalem, manuellem Aufwand verbuchen
* Inventur-Differenzen automatisiert verbuchen
* den Fibu-Teil von Ebay-Bestellungen automatisieren


Viel Spaß damit,
Marcus Wolschon