Dieses Projekt begann mit dem Bedarf einer Bonkasse für den Weihnachtsmarkt unseres Vereins. Nach etwas Recherche im Internet, habe ich mich dazu entschlossen, eine eigene Kassensoftware zu entwickeln.
Als Basis dazu soll ein günstiges Windows-Tablet, ein gebrauchter Bondrucker und eine Kassenlade dienen. Bondrucker lassen sich über ESC/POS Kommandos per Serieller Schnittstelle (RS232) sehr einfach ansteuern. Ich habe kurzerhand eine kleine, einfach zu bedienende Java-Anwendung entwickelt. Die erste Version der Bonkasse war geboren. Diese Version bestand insgesamt nur aus 6 Dateien - zwei Datenfiles auf SQLite-Basis, das gepackt JAR-File und zwei .dll Files zur Ansteuerung der seriellen Schnittstelle.
Hier ein kleiner Einblick in diese Version:
Mittlerweile gibt es verschiedene Versionen der Software, welche teilweise mit verschiedenen Programmiersprachen realisiert wurden. Da die Flexibilität in der ersten Version stark eingeschränkt ist, habe ich mich in Version 2.0 dazu entschieden, das Konzept nochmals neu aufzurollen. Dabei kam ich zum Entschluss, die Anwendung in drei Bestandteile aufzutrennen und somit modular aufzubauen - Frontend, Backend und Datenbank. Als Datenbank wurde mySQL, mittlerweile mariaDB gewählt. Das Server-Backend basierte in dieser Version auf Java (JAX-RS) und das Frontend aus einer einfachen PowerShell GUI, (.NET) später dann basierend auf C#. Die Kommunikation zwischen Frontend und Backend basiert auf einer REST Webschnittstelle.
(weitere Screenshots folgen)
Die Version 3.0 befindet sich aktuell noch in der Entwicklung. Das Server-Backend wird vorerst weiter auf Java basieren und das DBMS wir ebenfalls mariaDB bleiben. Hinzu kommt eine Weboberfläche zur Konfiguration, Verwaltung, Erstellung von Reports und ein Webclient. Der C# Client wird weiterhin kompatibel mit dieser Version sein. Der Teil der Druckeransteuerung wird aus dem Client gelöst und eine eigenständige Komponente. In diesem Zug wurde ebenfalls die Drucktechnologie umgestellt. Anstatt wie bisher direkt aus dem Frontend zu drucken, werden alle Druckaufträge in der Datenbank zwischengespeichert, dort aufbereitet und nur noch vom Druckerclient abgeholt (spooling). So lassen sich schlanke Druckerclients, bspw. auf einem Raspberry PI realisieren, auch mehrere Drucker sind so kein Problem mehr (Stichwort Küchendrucker, Getränkedrucker).