Buchhaltung leicht gemacht

Als Selbstständiger schreibt man nur wenige Rechnungen, und das auch meist ohne physische Waren. Die meisten Buchhaltungs/Wawi-Systeme sind daher völlig überladen für diese simplen Ansprüche. Also habe ich mich mal hingesetzt und was eigenes in [RubyOnRails](http://rubyonrails.org/) geschrieben.

Das Projekt hört auf den wohlklingenden Namen [Exabuch](http://code.google.com/p/exabuch/), und besteht hauptsächlich aus ein paar Models die ich mit [ActiveScaffold](http://activescaffold.com/) zusammen gebastelt habe. Das Ganze dann in ein (hübsches?) Design gepackt und mit SQLite versehen ergibt eine sehr schlanke Alternative zu meinem jetzigen Buchhaltungs- und Rechnungsprogramm.

> __20080503__: Thomas Koll hat Exabuch übernommen. Der [Exabuch Entwicklungsblog](http://exabuch.org/) gibt Auskunft über die neuesten Entwicklungen. Ich bin sehr gespannt, was Thomas aus der Grundlage macht.

Die alte Version kann bei Google per SVN ausgecheckt werden:

$ svn co http://exabuch.googlecode.com/svn/trunk/ exabuch

Bei Google Code findet sich auch die [Projektseite zu Exabuch](http://code.google.com/p/exabuch/). Momentan ist die Software noch im BETA Stadium, auch wenn ich sie bereits produktiv einsetze. Wer bereits [Ruby+RoR auf einer virtuellen Maschine](/lighttpd-mit-ruby-on-rails-auf-einer-virtuellen-maschine-installieren.html) laufen hat, der braucht nach dem Auschecken per SVN nur noch eine Datei „logo.png“ in das Verzeichnis exabuch/public/images/ kopieren damit dieses auf dem PDF auftaucht. Eventuell müssen die Abmessungen noch angepasst werden in der Datei lib/fpdf/fpdf_invoice.rb.

__UPDATE 20071005__: Es gibt jetzt eine [ausführbare Datei für Linux](http://code.google.com/p/exabuch/downloads/list), in der alle Abhängigkeiten, Libs usw. zusammengefasst sind. Einfach das Archiv entpacken und exabuch_RXX aus dem entpackten Verzeichnis heraus starten. Die Datenbanken liegen im Unterordner „/db“ im gleichen Verzeichnis. Nach dem Starten einfach http://ip.des.servers:3000/ im Browser aufrufen.

__UPDATE 20071102__: Aufgrund einiger Probleme bei der Benutzung, hier der Befehl zur Installation der nötigen Pakete für Ubuntu bzw. Debian. Das sollte alle Abhängigkeiten auflösen:

$ sudo aptitude install sqlite3 libsqlite3-dev libsqlite3-ruby sqlite3-ruby

__Update 20080428__: Thomas R. Koll hat sich inzwischen dem Projekt angenommen und entwickelt es weiter. Der aktuelle Sourcecode [liegt bei Github](http://github.com/TomK32/exabuch/tree/master), das Google Repository ist daher momentan veraltet.

### Rechnungen als PDF erstellen
Was nützt eine _Buchhaltung_ ohne PDF-Erstellung? Richtig, nix. Also habe ich mich auf die Suche gemacht nach den [verschiedenen PDF-Möglichkeiten](http://wiki.rubyonrails.org/rails/pages/HowtoGeneratePDFs) die es für Rails gibt. Am Ende bin ich bei [Ruby FPDF](http://zeropluszero.com/software/fpdf/) gelandet, und habe eine [kleine Starthilfe bei RobbyOnRails](http://www.robbyonrails.com/articles/2005/06/04/ruby-fpdf-on-ruby-on-rails) gefunden. Zusammen mit der [Erweiterung für Tabellen](http://source.mihelac.org/2006/6/19/creating-pdf-documents-with-tables-in-ruby-rails) kann man loslegen. Rubys FPDF basiert übrigens auf der [bekannten PHP-Klasse](http://www.fpdf.org/) mit dem gleichen Namen und ist weitestgehend identisch von den Funktionen her.

Also FPDF nach $RAILS_ROOT/lib entpackt, und in der environment.rb dies hier einkommentiert und hinzugefügt:

config.load_paths += %W( #{RAILS_ROOT}/lib/fpdf )

Dann noch ein Erweiterungsmodul für die Ausgabe der Rechnungen geschrieben, einige Stunden mit dem PDF-Layout beschäftigt und fertig.

Screenshot:

Buchhaltung

Beispiel-PDF:

Beispiel-PDF Exabuch

### Exabuch portabel machen
Ich habe zwar meist einen Webserver in meiner [Virtualbox](http://virtualbox.org/) laufen, möchte aber die Anwendung an einem bestimmten Punkt einfrieren und portabel machen. Glücklicherweise ist Ruby so flexibel, daß man mit ein paar einfachen Tools eine komplette Rails-Anwendung mit allen Abhängigkeiten als [eigenständige Anwendung exportieren kann](http://www.erikveen.dds.nl/distributingrubyapplications/rails.html)! Ich habe nur ein paar Schwierigkeiten bei der Installation von ruby-sqlite3 gehabt, aber [diese Anleitung](http://daniel.lorch.cc/docs/rails_install_debian/) hat mir auch da geholfen.

Damit kann man sich eine __Buchhaltung__ erstellen, die auf Linux, Mac und Windows gleichermaßen läuft und sich mit jedem modernen Webbrowser bedienen lässt. Jetzt fehlen nur noch ein paar Features, und schon kann Le*ware einpacken 😉

Die einzig halbwegs vernünftige Alternative die ich auf dem Open-Source Markt gefunden habe war übrigens [jBilling](http://www.jbilling.com/), aber auch viel zu riesig für meine Bedürfnisse.

ExaBuch verkürzt meine Zeit für eine Rechnungserstellung von 15-30 Minuten (MySQL starten, Cao hochfahren, tausend Klicks, umständliche PDF-Generierung) auf ca. drei Minuten. Und es ist natürlich sehr viel flexibler anpassbar. Als richtige __Buchhaltung__ kann man es allerdings nicht bezeichnen, dafür fehlen einige Funktionen. Aber das wird schon noch.

Viel Spaß mit dem Programm!

21 Kommentare

  1. Gern, und wenn dir was auffällt direkt bei Google reinschreiben. Momentan mache ich noch viele kleinere Änderungen, und zum nächsten Quartalsabschluss werden dann wohl Quartals-, Monats- und Jahressummen dazukommen.

  2. Hallo, leider habe ich das ganze nicht wirklich zum laufen bekommen (Noch nichts mit ROR [unter Windows] zu tun gehabt). Wäre es vielleicht möglich ein funktionierendes Download Paket inklusive XAMPP zu bauen. Ich würde auch das Hosting von dem File übernehmen da ich noch genug Traffic auf einem Server über habe.

    Viele Grüße!

  3. Hi Alex,

    wenn das Teil stabil genug läuft baue ich eine Applikation daraus nach der Anleitung wie im Artikel verlinkt. Momentan ändert sich noch zu viel, als daß sich das lohnen würde.

    Hosting liegt eh‘ bei Google, aber danke für das Angebot 🙂

    Edit: Ich habe mich mal an die verlinkte Anleitung gewagt und eine Exe für Linux gebastelt. Gibt’s bei Google zum Download.

  4. Hallo
    habe mir das Komplettpaket für Linux heruntergeladen und entpackt. Das Webservermodul wird gestartet. Bei der Verbindung über den Browser bekomme ich folgende Fehlermeldung: RuntimeError in InvoicesController#index
    no driver for sqlite3 found

    Wo beginne ich zu suchen?
    Danke.

  5. Hallo kd,

    oh, ich dachte die Treiber werden mit gebündelt. Welches OS hast du denn? Bei Debian-basierten Distributionen reicht wahrscheinlich dies:

    $ sudo aptitude install sqlite3 libsqlite3-dev
    

    und wenn das nicht reicht noch die Ruby-Lib, obwohl die eigentlich in dem Paket mit drin sein sollte:

    $ sudo gem install sqlite3-ruby
    

    Ich hoffe das hilft!

  6. Hallo
    Danke für den Tip. Ich habe Ubuntu 7.04. Auch nach dem Installieren von sqlite3 libsqlite3-dev und libdbd-sqlite3-ruby hat sich leider nichts verändert.

  7. Hm, hast du Ruby Gems auf deinem System? Da fehlt bestimmt noch ne Abhängigkeit. Daher das gem install oben. Bei Ubuntu scheint es etwas komplizierter zu sein gems zu installieren: Ubuntu und Rails
    Ich glaube libdbd-sqlite3-ruby ist nicht das richtige Binding für Ruby.

  8. Danke für die Hinweise, aber auch diese Ansätze ändern nichts an der Fehlermeldung. Schade – Ich hätte die Software gerne ausprobiert, da ich zur Zeit auf der Suche nach einer Alternativlösung für Windowsprogramme bin.

  9. Ich habe mal Google zu der Meldung befragt, aber was richtig Passendes kam nicht dabei raus. Da kann ich von hier aus leider nicht viel zu sagen, sorry.

  10. Hallo Georg,

    1. bist du sicher, daß diese Dienste für den deutschen Markt tauglich sind und alle Auskunftspflichten gegenüber dem FA erfüllen?

    2. Ich halte meine Lösung für zukunftssicherer… sie läuft überall, auch ohne Internet oder mit Stromausfall in den USA 😀

    3. Auch in Zeiten des Web2.0 gibt es einige Sachen die ich lieber geschützt auf der heimischen Festplatte habe, wie z.B. meine Buchhaltung 😉

  11. Bei mir hat auf einem 7.10 folgender Befehl zum Erfolg geführt:

    sudo aptitude install libsqlite3-ruby

    Damit wurde die notwendige sqlite(3!) Version installiert.

    Danke für das Tool.

  12. Hallo
    habe versucht exabuch zu installieren. Beim starten des Programmes erhalte ich die folgende Fehlermeldung:
    „/home/gschr/.eee/eee.exabuch_linux.2/bin/ruby: /lib32/libc.so.6: version `GLIBC_2.4′ not found“
    BS Debian 40r.1 AMD 64

    Gruß Günther

  13. Hallo Günther,

    hast du glibc2.4 denn installiert auf dem Server? Prinzipiell sollte es auch mit 2.6 laufen, ich kann es aber momentan nicht dahingehend debuggen.

    Gruß,
    Ingo

  14. Hallo,
    habe Exabuch gemäß der Erklärungen über die Konsole installiert, flutschte auch ohne Fehlermeldung durch und nun ??? Kann das Programm nirgendwo finden. Bin noch recht Linux-frisch und habe mit Ubuntu 7.10 bis jetzt positive Erfahrungen gemacht…..

    Gruß Hartmut

  15. Hallo Hartmut, das Programm ist eine Webanwendung, d.h. sie läuft nur im Browser. Nach dem Start von Exabuch auf der Konsole, sollte sich das Programm per http://localhost:3000/ aufrufen lassen. Ich gebe aber zu, daß die Installation und Benutzung für „Anfänger“ etwas schwierig ist, da man schon ausreichend Erfahrung mit Paketabhängigkeiten und der Konsole benötigt um es richtig zum laufen zu kriegen.

    Gruß,
    Ingo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert