Wie kann ich Kontakt zum Entwickler aufnehmen?

Der Programmierer freut sich immer über Rückmeldungen!!! Welche Funktionen fehlen? Gibt es Probleme? Wurden Fehler entdeckt?

Feedback kann an s.pichel@ordersprinter.de gemailt werden. Auch die Webapplikation enthält ein Feedback-Modul, über das jeder Benutzer Kontakt zum Programmierer aufnehmen kann.


Gibt es einen grafischen Tischplan?

Ja, das ist ab Version 1.0.24 möglich! Der Administrator muss die Tischpläne in der Verwaltungsansicht eingeben. Das Verfahren sieht vor, dass Bilder oder Fotos der Gasträume hinterlegt werden und die Tische darauf markiert werden.


Gutscheine

Bei Gutscheinen muss man zwischen Warengutscheinen und Wertgutscheinen unterscheiden. Nach meinem Verständnis der Rechtslage werden in Deutschland Warengutscheine beim Verkauf mit 19% Umsatzsteuer berechnet, während bei Wertgutscheinen keine Leistung erbracht wird, sondern quasi nur ein Umtausch in eine andere Währung stattfindet. Was bedeutet dies für die Nutzung in OrderSprinter:

Warengutscheine: Es ist das Anlegen eines Produktes Warengutschein mit Fixsteuersatz 19% in einer Kategorie erforderlich, bei denen die Produkte nicht Küche, Bar bzw. Bereitschaft durchlaufen. Nutzt man den Arbeitsbon-Ablauf, bedeutet die Einstellung, dass der Gutschein nicht auf Arbeitsbons gedruckt wird (sie müssen schließlich nicht zubereitet werden). Als Einheit legt man Eingabe fest, so dass bei der Buchung des Warengutscheins der Verkaufswert abgefragt wird. Wird der Gutschein schließlich eingelöst, muss bei der Bestellung des Produkts, welches mit dem Gutschein erworben wird, der Preis auf 0 Euro eingestellt werden (z.B. über die Rabattknöpfe, von denen man einen mit Gutschein beschriften kann.

Wertgutscheine: Die Verwendung von Wertgutscheinen ist etwas aufwändiger. Zunächst muss auch hier ein Gutschein Wertgutschein angelegt werden (Einheit: Eingabe, Fixsteuersatz: 0%). Außerdem benötigt man einen weiteren Artikel Einlösung Wertgutschein mit gleichen Parametern (Einheit: Eingabe, Fixsteuersatz: 0%). Beim Einlösen muss man den Artikel Einlösung Wertgutschein hinzubuchen, und zwar mit negativem Betrag (das beim Verkauf eingenommene Geld wird quasi wieder zurückgegeben).

Hinweis: Ich bin kein Steuerrechtler, sondern gebe die Informationen so weiter, wie ich sie verstanden habe. Für Korrekturhinweise bin ich jederzeit dankbar. Auf alle Fälle gilt, dass jeder Anwender sich selbst informieren sollte und prüfen muss, ob die Funktionalität im OrderSprinter für eine ordentliche Behandlung von Gutscheinen ausreicht.

Warum verwendet OrderSprinter intern digitale Signaturen?

Jeder Gastronom muss Vorgaben der GoBS und GdPdU erfüllen (siehe Wikipedia und BMF-Schreiben). Die in den GoBS festgelegten wesentlichen Merkmale revisionssicherer Archivsysteme sind, dass die Informationen wieder auffindbar, nachvollziehbar, unveränderbar und verfälschungssicher archiviert sind. Die Sicherstellung der Unveränderbarkeit ist technisch jedoch kaum umsetzbar und wird auch in den GoBS nur sehr unscharf formuliert ("Die Unveränderbarkeit der Daten, Datensätze, elektronischen Dokumente und elektronischen Unterlagen (...) kann sowohl hardwaremäßig (z. B. unveränderbare und fälschungssichere Datenträger) als auch softwaremäßig (z. B. Sicherungen, Sperren, Festschreibung, Löschmerker, automatische Protokollierung, Historisierungen, Versionierungen) als auch organisatorisch (z. B. mittels Zugriffsberechtigungskonzepten) gewährleistet werden.").

Aber die Manipulationsmöglichkeit kann durch programmtechnische Maßnahmen sehr erschwert werden:
  • Zugriff über die Applikation: Alle Änderungen, die über die OrderSprinter-Applikation vorgenommen werden, werden protokolliert und versioniert. OrderSprinter verhindert die Manipulation und/oder Löschung von Abrechnungen auf der Applikationsebene.
  • Digitale Signaturen ab Version 1.0.6: Wie die meisten anderen Kassensysteme nutzt natürlich auch OrderSprinter eine Datenbank für die Speicherung der Daten. Im Falle von OrderSprinter ist dies eine MySQL-Datenbank. Auf eine solche Datenbank kann man natürlich auch direkt zugreifen und die Daten ändern. Um Manipulationen jedoch zu verhindern, nutzt OrderSprinter digitale Signaturen, mit denen die Korrektheit der Datenbank geprüft werden kann. Wird über einen Direktzugriff der umsatzrelevante Inhalt der Datenbank verändert, so merkt OrderSprinter dies anhand der digitalen Signaturen und verweigert den Datenexport manipulierter Daten mit einem Hinweis auf die Inkonsistenz der Daten.

Wer demnach in betrügerischer Absicht die Daten in der Datenbank modifizieren möchte, muss zur Umgehung der Prüfung mit digitalen Signaturen neben dem Zugriff auf die Datenbank auch Programmierkenntnisse in PHP und tiefe Einblicke in die programmtechnische Struktur von OrderSprinter haben. Diese Aussage gilt ähnlich auch für die Kassensoftware der anderen Anbiter.

Siehe zum Thema GdPdU und GoBS auch die entsprechende Unterseite.


Gibt es OrderSprinter auch als App?

Nein, denn der Vorteil einer App gegenüber einer Webapplikation ist im Gastronomiebereich begrenzt. Er besteht hauptsächlich darin, dass auch kurzfristig ohne Verbindung zum Webserver weiter gearbeitet werden kann. Aber eine App müsste für jedes Betriebssystem (iPhone, Android, Windows Phone) individuell entwickelt werden. Der Aufwand für die Programmierung dieser Webapplikation, die mit allen gängigen Internetbrowsern bedienbar ist, ist bereits sehr groß. OrderSprinter ist ein Freizeit-Projekt, daher gibt es keine Motivation für die zusätzliche Programmierung von Apps.


Wie kann beim lokalen Drucken der Druckdialog umgangen werden?

Das Problem tritt nur auf, wenn lokales Drucken ausgewählt wurde. Unter Firefox in der Adresszeile about:config eingeben. Es erscheint eine Warnung, dass man dabei sei, Änderungen an den Standardeinstellungen vorzunehmen. Diese muss man bestätigen. Anschließend kann man den Schlüssel print.use_native_print_dialog hinzufügen und dessen Wert auf False setzen. Im Folgenden wird stets auf dem Standarddrucker gedruckt.

Wie kann man beim lokalen Drucken die Seitenränder entfernen?

Die Seitenränder werden unter Seite einrichten innerhalb des Druckdialogs des Internetbrowsers festgelegt. Hier lässt sich einstellen, dass weder die Adresszeile der Webseite, die Seitenzahl oder ähnliches erscheinen darf. Ebenso ist es wichtig, dass die Seitenränder auf 0mm eingestellt werden, damit auf einem Bondrucker keine störenden weißen Ränder unnötig Platz auf dem ohnehin sehr schmalen Bonstreifen verschwenden.

Beim Serverprint übernimmt diese Einstellung übrigens der Printserver.

Lassen sich mobile Gürteldrucker benutzen?

Wenn es sich um WLAN-Gürteldrucker handelt, ist der Einsatz im Zusammenspiel mit dem OrderSprinter-Printserver möglich. Ein Test mit dem Toshiba B-EP4 war erfolgreich.

Gibt es einen 24/7-Support?

Nein, ich biete OrderSprinter nur als Software zum freien Download an, aber einen kommerziellen Rund-um-die-Uhr-Support kann ich nicht leisten. Trotzdem versuche ich jede Frage zu beantworten und technische Probleme in neuen Programmversionen zu lösen. Sollte es eine Firma geben, die als Serviceleistung einen kommerziellen Support für OrderSprinter anbieten möchte, werde ich diese gerne auf meiner Webseite aufführen.

Wer einen fehlende 24/7-Hotline als absolutes No-Go betrachtet, den möchte ich auf die ebenso großartige Software diverser anderer Anbieter verweisen: Gastrofix, Orderbird, Bistro-Cash, Orderman, Posbill, Pepperbill und viele andere exzellente Systeme.

Beim Installieren auf einem Raspberry Pi bekomme ich einen Internal Server Error

Dieser Fehler sollte nur bei leistungsschwachen Raspberry Pis der ersten Generation passieren. Im Logfile /var/log/apache2/error.log werden Sie wahrscheinlich folgende Meldung sehen:
[PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /var/www/.../install/installer.php on line 385, referer: http://raspberrypi/lebeauvoisin/install.html
Die Installation ist ein zeitintensiver Prozess und erfordert in der PHP-Apache-Konfiguration einen größeren Wert als 30 Sekunden. Sie können diesen Wert in der php.ini (meist in /etc/php5/apache2/php.ini) auf einen größeren Wert einstellen (bzw. einige Webhoster bieten eine eigene Konbfigurationsschnittstelle für PHP an). 300 ist ein guter Wert:
max_execution_time = 300
Anschließend muss der Apache-Webserver neugestartet werden (apache2ctl restart)

Warum ist das Logo auf dem Kassenbon kaum erkennbar?

Thermo-Bondrucker können nur entweder schwarz oder weiß drucken, Grautöne sind nicht möglich. Daher findet eine Umwandlung des Logo-Bildchens in schwarz-weiß statt. Ein interner Schwellwert bestimmt, welche Farbpixel noch weiß sein sollen und welche als schwarz zu interpretieren sind. Wenn das Bild also nicht richtig auf dem Ausdruck erscheint, sollte dessen Kontrast verstärkt werden.

Außerdem kann es sein, dass das Logo-Bild zu klein auf dem Kassenbon erscheint, dann kann man die Skalierung vergrößern. Beim Java-Printer muss in der config.json der Wert für logoscale angepasst werden.


Das Logo wurde neu geladen, aber auf den Ausdrucken ist das alte Logo zu sehen

Starten Sie den Printserver neu, damit er das neue Logo vom Webserver übernehmen kann. Aus Geschwindigkeitsgründen lädt sowohl der Windows- als auch für der Java-Printserver das Logobildchen nur beim Start.

Verzögert der Druck des Logos den Bondruck?

Das sollte eigentlich nicht der Fall sein. Siehe Video vom Druck (über den Javaprinter am angeschlossenen Raspberry Pi) - zum Abspielen Bild anklicken:

Video über Druck eines Bons mit Logo

Es ist mir im Forum berichtet worden, dass der Ausdruck des Logos bei einem Anwender länger dauert als der Druck des restlichen Bons. Das kann ich mir nicht recht erklären. Zwar muss das Bild vom normalen Bildformat in ein zum ESC/POS-Standard passenden Format umgerechnet werden, aber der Rechenprozess sollte vernachlässigbar sein, so dass ich von einer druckerspezifischen Eigenart des Geräts vom Anwender ausgehe.



Nach 24 Minuten Inaktivität ist man ausgeloggt.

In der Standardeinstellung vom Apache-Webserver wird die Session nach 24 Minuten beendet, wenn keine Aktion darüber stattgefunden hat. Beim nächsten Mal muss man sich erneut einloggen. Sie können diesen Wert in der php.ini (meist in /etc/php5/apache2/php.ini) auf einen größeren Wert einstellen (bzw. einige Webhoster bieten eine eigene Konfigurationsschnittstelle für PHP an).
session.gc_maxlifetime = 3600


OrderSprinter bleibt hängen

Einige Aktionen (Erstellung Tageserfassung etc.) triggern den Versand einer Email, wenn in der Konfiguration SMTP-Settings hinterlegt wurden. Sind diese jedoch falsch, so dass der SMTP-Host beispielsweise nicht erreicht werden kann, so steht OrderSprinter solange, bis ein Timeout für den Verbindungsaufbau zuschlägt.

Kann man Produkte mit zusätzlichen Optionen konfigurieren?

Seit der Version 1.0.13 ist dies möglich. Die Extras müssen in der Produktansicht zunächst festgelegt werden (jeweils Name und Preis) und anschließend den einzelnen Produkten zugewiesen werden. Damit stehen sie während des Bestellvorgangs automatisch bei Anwahl eines Produktes mit zugewiesenen Extras zur Auswahl.

Statt PDF-Reports gibt es eine Fehlermeldung über eine fehlende zlib-Bibliothek

Für die Erstellung von PDF-Dateien benutzt OrderSprinter die Bibliothek FPDF. Diese benötigt zur Einbindung von Bildern die zlib-Erweiterung von PHP. Diese muss also installiert sein und in der php.ini auch aktiviert werden. Wenn die zlib-php-Erweiterung auf einem Linux-System über die Distributions-Installationssoftware installiert wird, wird diese Anpassung in der Regel automatisch vorgenommen. Anschließend ist allerdings der Webserver neu zu starten, damit die Änderungen auch wirksamm werden.

Javaprinter beendet sich direkt nach dem Start mit einer Exception

Der Javaprinter benötigt Java mindestens in der Version 1.8. Ansonsten die Ausführung nicht möglich. Stürzt der Javaprinter erst ab, sobald en Druckjob zu verarbeiten ist, so liegt vermutlich eine sehr alte Javaprinter-Version vor, die nicht mehr kompatibel zur OrderSprinter-Version ist, die auf dem Webserver läuft.

Größe des Webserver-Logfiles

Die Webserver-Logfiles können sehr groß werden, wenn man nicht aufpasst. OrderSprinter fragt z.B. regelmäßig die anstehenden Druckaufträge sowie gewisse Zustände wie beispielsweise den Druckerstatus beim Webserver an, so dass das Access-Logfile auf dem Webserver auch dann anwächst, wenn man das System gar nicht aktiv benutzt. Es gibt aber je nach eingesetztem Webserver verschiedene Möglichkeiten, die Menge und Größe der Logfiles zu begrenzen. Entweder setzt man das Loglevel passend, räumt regelmäßig ältere Logfiles auf, nutzt die im Webserver eingebauten Logfile-Management-Funktionen, oder oder oder...

Beim Apache heißt das Zauberwort z.B. Logrotate. Da es bereits so viel Informationen darüber im Netz gibt, verweise ich dazu auf eine gepflegte Google-Suche.

Das Logo wird nicht angezeigt, obwohl es angeblich erfolgreich hochgeladen wurde

Zum Handling von Bildern greift OrderSprinter auf die GD-Bibliothek zu. Soll also das Bild in der Verwaltungsansicht unter Konfiguration dargestellt werden, so ist das Vorhandensein dieser Bibliothek Vorraussetzung. Diese Bibliothek ist normalerweise bei kommerziellen Webhosting-Angeboten bereits installiert. Auf dem heimischen Rechner ist dies nicht immer der Fall. Bei OpenSuse heißt das zu installierende Paket php5-gd. Unter Ubuntu heißt der Befehl sudo apt-get install php5-gd. Anschließend ist der Webserver neu zu starten, damit die Änderungen auch wirksamm werden.

Der Email-Versand schlägt stets fehl, wie ist die korrekte Konfiguration?

In der Tat ist die Meldung im Fehlerfall nicht sehr hilfreich (wenn mal viel Zeit da ist, werde ich das verbessern). Häufig wird ein Fehler bei der Konfiguration des Felder Email-Absender gemacht, hier gehört nicht der Name, sondern die Email-Adresse hinein, von der gesendet werden soll. Eine funktionierende Konfiguration für eine GMX-Adresse kann z.B. so aussehen:
Email-Absender: meine-beispiel-email@gmx.de
Email für schlechte Bewertungen: meine-beispiel-email_2@gmx.de
Email für Kundenkontaktwunsch: meine-beispiel-email_2@gmx.de
Standard-Email-Empfänger: meine-beispiel-email_2@gmx.de
SMTP-Host: mail.gmx.net
SMTP-Authentifizierung: Ja
SMTP-Benutzername: meine-beispiel-email@gmx.de
SMTP-Password: ThisIsSecret
SMTP-Protokoll: TLS
SMTP-Port: 587

Email für schlechte Bewertungen, Email für Kundenkontaktwunsch und Standard-Email-Empfänger sind die Zieladressen, während Email-Absender die Absendeadresse darstellt. An die in Standard-Email-Empfänger hinterlegte Adresse wird z.B. eine Zusammenfassung einer Tageserfassung nach dessen Erstellung geschickt.


Stefan Pichel, Juni 2017