Overview

Introduction

Cashbook service is an API that monitors and calculates the deposits and withdrawals of money from of a cash register in classified by different currencies and payment methods from retail transactions (sales and refunds) and other internal money movements done in retail stores. Additionally, it provides the same functionality of the retail stores vaults.

The cash register sessions are referred as settlements which is the cycle when a cash register is opened at the start of a working day and closed at the end of it, the application tracks the money deposited and withdrawn from the cash register. A similar functionality is provided for the retail stores vaults where they also have a daily session lifecycle defined in the application as vault settlements from which all cash register settlements initial cash is taken to open them and deposited back at the end of the day when the store closes, furthermore, it tracks money movements coming from and outside the store.

Capabilities

This cashbook API currently has the following capabilities:

  1. Creates cashbook settlements for cash registers and vaults in stores.
  2. Manages the state changes of settlements.
  3. Previews settlements amounts provided by the user against the amounts calculated by the API.
  4. Queries for settlements based on their attribute values.
  5. Queries for cashbook accounts available for cash register or vault settlements.
  6. Creates cashbook entries through API requests for both cash register and vault settlements.
  7. Generates printing instructions for cashbook entries created through API requests.

Cash register settlements processes

There's a one-to-one relation between the cash register and settlement.

A cash register settlement can be in one of the following three states:

Settlement states

What the system must not do

  • No cashiering without settlement.
  • Don't allow for more than one settlement to be "closing" for a cash drawer/devicehub

Open cash register settlement

  • When an unclosed settlement exists for a cash register, a user can still open a new settlement.

State diagram

Open settlement

Sequence diagram

Open settlement sequence

Close cash register settlement

  • A user cannot close a settlement for a cash register, when a previously opened settlement for this cash register exists.
  • Every user (with permission?!) can close a settlement.
  • Every user (with permission?!) can count cash.

State diagram

Close settlement

Sequence diagram

Close settlement sequence

Vault settlement operations

  • Initialize vault (only when a new store is opened)
  • count
    • preview
    • closing (and reopening of next vault cycle)
  • Money movements
    • Supply (from bank or store)
    • Dispose (to bank)

Vault settlements state transitions

  • OPEN -> CLOSED

misc incomes/expenses

  • cash drawer overflow (abschöpfung)

  • resupply

  • incomes / expenses # Changelog