Getränkeabrechnung mittels PHP
3.3 Kassenwart-Interface
Kommen wir zur Verwaltungsoberfläche. Der Kassenwart kann hier im wesentliche die Benutzer, Artikel und Preise verwalten. Ferner lassen sich die eMail-Benachrichtigungen einstellen, Artikel- und Benutzerlisten drucken sowie eine rudimentäre Preiskalkulation durchführen.
3.3.1 Kontostände
Eine Übersicht über Schulden und Guthaben bietet diese Seite. Per Klick auf einen Benutzer kommt man direkt auf die Einzelbuchungsseite und kann die Buchungen und ihre Zeitstempel einsehen. Ein weiteres Feature der Seite ist die Übersicht am Ende über potentielle Beträge: Grün ist hier die Summe der Schulden dargestellt, welche hoffentlich noch eingezahlt und damit beglichen werden, rot ist die Summe der Guthaben der Benutzer, die bei Ausscheiden potentiell auszuzahlen wären.
3.3.2 Buchungen
Für jeden Benutzer lassen sich hier alle Buchungen aufrufen und mit den jeweiligen Links am Ende einer Zeile bearbeiten. Zu beachten ist, dass „Löschen“ tatsächlich einen Eintrag löscht, wohingegen „Stornieren“ lediglich die Anzahl der Zeile auf 0 (numerische Null, nicht der SQL-Datenwert null) setzt.
3.3.3 Barkasse
In der Barkasse werden die Ausgaben und Einnahmen des Systems festgehalten. Nachdem die Barkasse nur aus einer einzigen relationalen Tabelle besteht, ist viel Logik in der Präsentationsschicht enthalten, ohne jedoch Normalformen zu verletzen.
Jeder Vorgang, und sei es nur der Kauf einer Tüte Milch, wird zunächst als eigenständiger Eintrag erfasst. Eine intelligente Gruppierung anhand eines Beschreibungsfeldes und des Buchungsdatums sorgt dafür, dass dennoch die Übersicht sauber und zusammenhängend dargestellt wird.
Es werden die folgenden drei Fälle von Buchungen unterschieden, darunter jeweils die Maske einzugebenden Werte:
- Mitarbeiter zahlt einen Betrag ein.
Gruppierung: leer, wird automatisch ausgefüllt.
Datum: entsprechendes Datum, an dem die Einzahlung stattfand.
Benutzer: Für wen soll die Gutschrift gelten
Artikel: „Einzahlung“
Anzahl: leer
Betrag: Bareinzahlungsbetrag - Mitarbeiter war einkaufen und erhält eine Gutschrift.
Gruppierung: leer, wird automatisch ausgefüllt.
Datum: entsprechendes Datum, an dem der Einkauf stattfand (Kassenzettel).
Benutzer: Welcher Mitarbeiter hat eingekauft
Artikel: Auswählen, welchen Artikel sie/er eingekauft hat.
Anzahl: Wieviele Packungen des Artikels wurden gekauft?
Betrag: Wieviel hat der Mitarbeiter bezahlt? Wird 1:1 als Gutschrift erstellt, aber nicht in die Barkasse als Geld eingebucht. - Kassenwart bezahlt Lieferung eines Lieferanten.
Gruppierung: zum Beispiel „Einkauf Walmart, Rechnung 200043“, muss bei jedem Artikel des gleichen Kassenzettels identisch sein.
Datum: entsprechendes Datum, an dem der Einkauf stattfand.
Benutzer: „Kein Benutzer“
Artikel: Auswählen, welchen Artikel sie/er eingekauft hat.
Anzahl: Wieviele Packungen des Artikels wurden gekauft?
Betrag: Wieviel haben die Artikel gekostet (ohne Pfand, das ist ein eigener Artikel)?
Wichtig bei Einkäufen ist es, den Flaschenpfand zusätzlich zu erfassen; es existiert ein eigener Artikel dafür.
In der Ansicht werden nun Einträge mit gleicher Gruppierung und gleichem Datum zu einer Zeile zusammengefasst. Erst durch Klick auf „Details“ öffnet sich die Zeile vollständig und gibt die Einzelartikel preis. Alle Vorgänge bleiben so gespeichert und lassen sich über die Jahre hinweg nachvollziehen.
Die Daten werden übrigens mit Hilfe von JavaScript maskiert, das heißt, dass das Rendern nach 10 Jahren schon einige Zeit dauern kann. Ob noch einmal eine Seitenaufteilung („pagination“) vorgenommen wird, ist derzeit nicht absehbar.
3.3.4 Artikel
In der Artikelmaske werden die Produkte des Systems verwaltet. Sowohl die buchbaren, sprich käuflichen Artikel, wie auch die nicht-buchbaren, z.B. Spülmittel, Küchenutensilien und andere. Hintergrund ist, dass die Kosten der letzteren Produkte umgelegt werden müssen auf die buchbaren Getränke.
Neben dem Artikelnamen können auch die Verpackung, ein Bild und die EAN erfasst werden. Diese wird vom Barcode-Scanner zur Identifikation benötigt und ist deswegen verpflichtend.
Der Parameter „aktiv“ gibt an, ob ein Artikel noch gebucht werden kann und in Listen, Aushängen und den Grafiken angezeigt wird. Nachdem sich im Allgemeinen der Bestand an Artikeln nicht groß ändert, ist dieses Flag nicht historiert, es wird somit nicht festgehalten, wann welcher Artikel sichtbar war.
Ob ein Artikel gebucht werden kann, oder als Kostenpunkt erfasst wird, lässt sich mit dem „Buchbar“-Flag erfassen. Später in der automatischen Kalkulation wird das wichtig werden. Außerdem wird ein nicht-buchbarer Artikel nicht vom Scanner akzeptiert werden.
Zusätzlich wird gespeichert, ob ein Artikel sichtbar ist in Listen. Das ist für Artikel gedacht, die nur wenigen Benutzern zur Verfügung stehen sollen und deren Barcode nicht öffentlich aushängen wird (z.B. Tasse Kaffee für Mitarbeiter gegenüber Kanne Kaffee mit anderem Pulver für den Chef).
Ein wesentliches Feature (danke an Christian Schneider und Jonas Pfoh) ist das Ranking.
Für jeden der gerankten Artikel wird monatlich der größte Konsument ermittelt und in den Grafiken textuell unten dargestellt. In seiner eigenen Sicht erhält der Benutzer auf der jeweiligen Säule eine Krone, wie hier links abgebildet.
Das Ranking kann dynamisch ein- und ausgeschaltet werden für jeden einzelnen Artikel, die Grafiken passen sich dabei dynamisch an.
4 Kommentare zu “Getränkeabrechnung mittels PHP”
Hallo,
kann man die „Kühlschranksoftware“ irgendwo downlaoden ?
MFG
Dietmar
Öhm, im Moment nein, in welchem Zusammenhang fragst Du denn? Cheers, Christoph
Hallo,
wir haben in der Firma einen Kühlschrank.
Selbstbedieungsladen 🙂 und ich hätte gerne was auf meinen
WAMP Server gestellt, wo meine Kollegen Ihren Kühlschrankverbrauch
eingeben können, damit ich Ende Monat das Geld einsammeln kann.
Gruss Dietmar
Hallo Christophn,
du scheinst dir sehr viel Gedanken zu deinem Software gemacht zu haben – sehr interessantes Konzept!
Mir ist kürzlich auch der Gedanke gekommen etwas in dieser Richtung einzuführen. Ich wohne in einem Studentenwohnheim und wir haben hier ein großes Problem mit unseren Strichlisten.
Ich würde mich sehr freuen, wenn du mit mir Kontakt aufnehmen würdest.
Beste Grüße,
Manuel
Einen Kommentar hinterlassen