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”

1.   Kommentar von Deitmar Koch
Erstellt am 26. Januar 2012 um 15:27 Uhr.

Hallo,
kann man die „Kühlschranksoftware“ irgendwo downlaoden ?

MFG
Dietmar

2.   Kommentar von McSeven
Erstellt am 29. Januar 2012 um 01:01 Uhr.

Öhm, im Moment nein, in welchem Zusammenhang fragst Du denn? Cheers, Christoph

3.   Kommentar von Deitmar Koch
Erstellt am 29. Januar 2012 um 12:07 Uhr.

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

4.   Kommentar von Manuel H
Erstellt am 05. September 2014 um 19:00 Uhr.

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