• Teaser Home

    Clean Code Developer School

    Saubere Softwareentwicklung üben – regelmäßig, fokussiert, individuell, angeleitet

Kassenbuch

Application Kata „Kassenbuch“

Entwickle eine Anwendung zur Führung eines Kassenbuches für kleine Unternehmen.

Monatsweise sollen in das Kassenbuch die „Bewegungen“ im Bargeld eingetragen werden, das in der Kasse liegt. Es kann Geld eingelegt werden (Bareinlage), d.h. ein Zugang zum Kassenbestand. Oder es kann Geld entnommen werden (Barentnahme).

Zu jeder Bewegung ist das Datum, die Art der Bewegung und der Bruttobetrag zu notieren.

Angezeigt wird der aktuelle Kassenbestand und der Übertrag vom vorherigen Monat. Beispiel:

Der Kassenbestand kann nicht direkt verändert werden; dafür ist immer eine Buchung mit Angabe von Datum und Art nötig.

Nach Programmstart wird das Kassenbuchblatt für den aktuellen Monat zur Erfassung vorgeschlagen. Man kann aber auch jeden anderen Monat in der Vergangenheit öffnen.[1]

Änderungen sind im aktuellen Monat ohne weiteres möglich – und in Vormonaten nach Bestätigung einer Nachfrage bei Aufschlagen des Blattes. Dadurch soll verhindert werden, dass man leichtfertig alte Blätter verändert.

Die Speicherung der Kassenbuchblätter soll in jedem Fall aber „revisionssicher“ sein, d.h. es müssen alle Veränderungen am Kassenbuch nachvollziehbar sein. Es ist daher zu überlegen, ob einmal getätigte Buchungen verändert werden können – oder ob nur kompensierenden Buchungen möglich sind.[2]

Ein graphisches UI ist nicht zwingend nötig. Hauptsächlich geht es um Geschwindigkeit und Korrektheit bei der Buchung. Wer Belege ins Kassenbuch eintragen muss, hat dazu wenig Lust. Die Arbeit sollte daher leicht von der Hand gehen.

Auf Wunsch kann eine Übersicht der Kassenbewegungen über einen Monatsbereich bzw. ein Jahr angezeigt werden (Report). Das könnte auch als Export im CSV-Format geschehen, so dass eine Weiterverarbeitung mit Excel möglich ist.

Mehrbenutzerfähigkeit ist nicht nötig. Allerdings sollte die Speicherung der Bewegungen so stattfinden, dass von mehreren Rechnern darauf zugegriffen werden kann.

Variation #1

Benutzer müssen sich anmelden. Es gibt unterschiedliche Rechte, z.B. nur für die Erfassung im aktuellen Monat, für die Erfassung in allen Monaten, für Korrekturbuchungen, Reporterstellung usw.

Die Benutzerverwaltung kann zunächst einfach in einer Textdatei stattfinden. Über ein Admin-UI könnten allerdings dieser Textdatei Einträge hinzugefügt werden, so dass Passworte gehasht gespeichert werden.


[1] Diese Freiheit kann sinnvoll eingeschränkt werden. Kassenbuchblätter könnten aus einem hierarchischen Menü (Jahr/Monat) ausgewählt werden, das natürlich nicht beliebig weit in die Vergangenheit reicht, sondern vielleicht nur ein Jahr bzw. so weit, wie tatsächlich Kassenbuchblätter ausgefüllt vorliegen.

[2] Bei einer kompensierenden Buchung könnte noch eine Begründung erfragt werden.