Jahrelang habe ich Faktura + Auftrag von Lexware als Rechnungssoftware eingesetzt. Im Großen und Ganzen war ich, abgesehen von der Update-Politik und dem nicht offenem Datenformat, auch ganz zufrieden. Ich hatte allerdings wenig Lust für ein neues Frontend jedes Jahr ein Update kaufen zu müssen, zumal ich für meine Auftragsverwaltung nur die Grundfunktionen nutzte. Nachdem ich vor Kurzem von Windows auf Linux umgestiegen bin, wurde es Zeit sich etwas Neues zu überlegen. Also habe ich mich mal umgeschaut. Es gibt eine Reihe von brauchbaren online Rechnungsverwaltungen auf dem Markt, mein Problem damit ist nur, dass ich Kunden und Rechnungsdaten nicht online bei Anbietern speichern möchte.
Also *hands on* – in 2 1/2 Wochen habe ich eine einfache Rechnungsverwaltung mit Webtechnologien geschrieben. Es gab keine große Vorabplanung, ich wusste am Anfang nur, welche Funktionen ich benötige und habe bei der Entwicklung die ein oder andere Library zum Selbstzweck ausprobiert, die Anwendung einfach strukturiert und *frontend first* entwickelt.
Herausgefallen ist Version 0.0.8, die ich schon im Produktiveinsatz verwende.
Voraussetzungen&Eingesetzte Techniken
Lokaler Webserver mit PHP 5.3+
Bibliotheken/Frameworks: JQuery, PURE CSS, perfect-scrollbar, jquery-ui, font-awesome, hover-css, jquery.redirect, fpdf, animatesModal.js
Frontend
Kundenverwaltung und Auftragsverwaltung im Überblick
Einfache Kundenverwaltung
Auftragsverwaltung
Backup
Die integrierte Backupfunktion sichert sowohl die komplette Datenbank als auch alle Dateien im Anwendungsverzeichnis. So ist sichergestellt, dass man erstmal immer eine konsistente Anwendungssicherung erstellen kann.
PDF-Ausgabe von Aufträgen
Ich habe noch einige Ideen zur Erweiterung, aber dafür muss sich die Zeit erst noch finden. Darunter:
Refaktorisierung&Sicherheit
Der Code ist gewachsen und wie gesagt ohne große Planung entstanden. Es gibt zahlreiche Optimierungsmöglichkeiten. Zum Beispiel wäre es wichtig die Data Klasse in verschiedene Klassen aufzusplitten. Hier sei auch noch mal darauf hingewiesen, dass die Anwendung nicht dafür gedacht ist, sie auf einem Online-Webserver laufen zu lassen. Sicherheitsaspekte, wie z.B. SQL-Injections wurden bisher nicht berücksichtigt, weil die Anwendung dafür gedacht ist auf einem lokalen Webserver zu laufen. Über die Datenbankstruktur lässt sich sicher auch noch mal nachdenken …
Filter&Pagination
- Filter zur Ausgabe der Kundenliste nach Alphabet mit A B C D …
- Filter zur Ausgabe aller Rechnungen nach Zeitraum (Monat, Quartal, Jahr)
- Filter zur Ausgabe aller Rechnungen, die noch unbezahlt sind
- Pagination für Kunden- und Auftragsliste
Installation-Skript
Schön wäre eine Installationsroutine, in der die Firmendaten (Tabelle: settings) eingegeben werden können und dass die Einrichtung der Datenbank-Struktur samt Beispielinhalte und optional die Übernahme einer alten Sicherung übernimmt.
Automatischer E-Mail-Versand
Ein optional automatischer E-Mail-Versand mit kundenspezifischem Anschreiben.
Download
Installation: Quick Start
- Importiere den MySQL Dump ’sql/sampleData.sql‘
- Schau Dir die Datenbank ‚rechnungen‘ an. Hier findest Du die Tabelle ’settings‘. Ändere die Werte entsprechend.
- Bearbeite die Datei ‚Config.php‘ und gib dein Datenbank-Zugangsdaten ein
- Öffne im Browser die Anwendung bspw. über: http://localhost/Faktura
Feedback erwünscht
Wenn Dir die Anwendung gefällt bin ich über konstruktive Erweiterungsvorschläge, Bugreports und Optimierungsempfehlungen in den Kommentaren dankbar. Du kannst das Projekt natürlich demnächst auch forken und selbst weiterentwickeln.