Application Kata "Cashbook"

Develop an application for keeping a cash book for small businesses.

The "movements" in cash held in the cash register should be entered in the cash book on a monthly basis. Money can be deposited (cash deposit), i.e. an addition to the cash balance. Or money can be withdrawn (cash withdrawal).

The date, the type of movement and the gross amount must be noted for each movement.

The current cash balance and the carryover from the previous month are displayed. Example:

Application Kata Kassenbuch - Clean Code Developer Akademie

The cash balance cannot be changed directly; this always requires an entry with the date and type.

After starting the program, the cashbook sheet for the current month is proposed for entry. However, you can also open any other month in the past.[1]

Changes can be made in the current month without further ado - and in previous months after confirming a request when opening the sheet. This is to prevent old sheets from being changed carelessly.

In any case, the storage of the cashbook sheets should be "audit-proof", i.e. all changes to the cashbook must be traceable. It should therefore be considered whether postings that have already been made can be changed - or whether only compensating postings are possible.[2]

A graphical UI is not absolutely necessary. The main focus is on speed and correctness when posting. Anyone who has to enter receipts in the cash book has little desire to do so. The work should therefore be easy.

If desired, an overview of the cash movements can be displayed over a monthly range or a year (report). This could also be done as an export in CSV format so that further processing with Excel is possible.

Multi-user capability is not necessary. However, the movements should be stored in such a way that they can be accessed from several computers.

Variation #1

Users must log in. There are different rights, e.g. only for recording in the current month, for recording in all months, for correction postings, report creation, etc.

User administration can initially simply take place in a text file. However, entries could be added to this text file via an admin UI so that passwords are stored hashed.

Endnotes

[1] This freedom can be usefully restricted. Cashbook sheets could be selected from a hierarchical menu (year/month), which of course does not extend as far into the past as desired, but perhaps only one year or as far back as the cashbook sheets have actually been completed.

[2] In the case of a compensatory booking, a justification could still be requested.

en_USEnglish