📋 Handleiding Kassasysteem

Deze handleiding beschrijft alle functies van het kassasysteem. Het systeem draait lokaal op een server in het netwerk en is bereikbaar via de browser op elk apparaat dat op hetzelfde netwerk is aangesloten.

1 Aan de slag

Schermoverzicht

Het kassascherm is verdeeld in drie kolommen:

┌─────────────────┬──────────────────────────┬─────────────────┐ │ LINKER KOLOM │ MIDDEN KOLOM │ RECHTER KOLOM │ │ │ │ │ │ Tafels / │ Productcategorieën │ Winkelmandje │ │ Groepen / │ (tabbladen bovenaan) │ │ │ Offertes │ │ Items + totaal │ │ │ Productkaarten │ │ │ + Groep │ (klik om toe te voegen) │ [Afrekenen] │ │ + Offerte │ │ [✏️ Bewerken] │ └─────────────────┴──────────────────────────┴─────────────────┘
KolomFunctie
LinksTafels, groepen en offertes selecteren. De actieve rekening is groen gemarkeerd.
MiddenProducten per categorie. Klik op een product om het aan de rekening toe te voegen. Bovenaan de ⚙️ Admin knop.
RechtsHet winkelmandje van de geselecteerde rekening. Toont items, subtotaal en de afrekenknop.

PIN en toegang

Bij het openen van de configuratie wordt om een PIN gevraagd. Deze is instelbaar via Configuratie → 🔑 PIN wijzigen. De kassa zelf heeft geen PIN — die is direct beschikbaar.

💡 De kassa is bereikbaar op http://[server-ip]:5000/kassa. Voeg deze URL toe als snelkoppeling op het beginscherm van de iPad voor snel toegang.

2 De kassa

Rekening openen

Elke tafel heeft een vaste rekening. Klik op een tafel in de linkerkolom om die te selecteren. De geselecteerde tafel kleurt groen. Het winkelmandje rechts toont de items van die tafel.

Voorbeeld — tafel 3 selecteren
Klik op Tafel 3 in de linkerkolom → het label bovenaan het winkelmandje verandert naar "Tafel 3" → voeg producten toe via het midden.
📝 Als de tafelsfunctie is uitgeschakeld verschijnt er één grote 🛒 KASSA knop in de linkerkolom. Die wordt automatisch geselecteerd bij het opstarten.

Producten toevoegen

Klik op een productkaart in het midden om het toe te voegen aan de actieve rekening. Het product verschijnt in het winkelmandje rechts.

Bon bewerken

Via de ✏️ knop naast de afrekenknop kun je de actieve rekening direct bewerken zonder af te rekenen. Dit is handig voor maatwerk of afwijkende prijsafspraken.

💡 Het totaal wordt live bijgewerkt terwijl je typt. Vrije regels verschijnen met een groene rand.

Korting geven

De kortingsfunctie is beschikbaar als die is ingeschakeld via de functies-instellingen.

⚠️ Korting wordt altijd als bedrag ingevoerd, niet als percentage. Een korting van €5,00 op een bon van €25,00 geeft een totaal van €20,00.

Afrekenen

Klik op ✅ Afrekenen rechtsonder. Het afrekenvenster opent aan de rechterkant.

Beschikbare betaalmethoden

MethodeBeschrijving
💳 PINHandmatige PIN betaling via eigen terminal. De kassa registreert de betaling na bevestiging.
💶 CashContante betaling. Wordt geregistreerd zonder verdere actie.
📟 CarbonBetaling via myPOS Carbon terminal. Selecteer de terminal en de betaling wordt automatisch verstuurd.
💳 Mollie PINBetaling via gekoppelde Mollie terminal. Selecteer de terminal — klant betaalt op het apparaat.
🏦 BankoverschrijvingFactuur wordt aangemaakt. Optioneel direct per e-mail verstuurd met PDF bijlage.
📋 Op rekeningWordt gekoppeld aan een kredietklant. Verschijnt op de maandelijkse factuur.
⋯ AndersAangepaste betaalmethoden die je zelf hebt aangemaakt (bijv. Tikkie, cadeaubon).
📝 De knop Op rekening is alleen zichtbaar als er klanten zijn geconfigureerd die op rekening mogen betalen.

Stappen bij afrekenen

Gesplitst afrekenen

Bij een gezelschap dat apart wil betalen gebruik je de splitsfunctie. Elke persoon kiest zijn eigen betaalmethode, inclusief Mollie PIN.

💡 Het totaalbedrag wordt automatisch gelijkmatig verdeeld. Het restbedrag (na afronding) wordt aan de laatste persoon toegewezen. Met de ✕ Stoppen knop annuleer je de hele split en ga je terug naar normaal afrekenen.

Bon printen

Na het afrekenen verschijnt een bevestigingsscherm met de knop 🖨️ Print bon. Dit vereist een thermische bonprinter die is geconfigureerd op de server. De bon wordt automatisch opgemaakt met bedrijfslogo, BTW-uitsplitsing en betaalwijze.

3 Groepen

Groepen zijn vooraf geregistreerde reserveringen — een gezelschap dat op een bepaalde datum en tijd komt. Ze worden automatisch zichtbaar in de kassa op de geplande dag.

Groep registreren

Voorbeeld
Naam: Familie Jansen | Datum: 15 augustus | Tijd: 18:30 | 8 personen | Betaling: Bankoverschrijving | E-mail: jansen@voorbeeld.nl

Betaalmethode instellen

KeuzeEffect bij afrekenen
Contant / PIN / MollieNormaal afrekenen in de kassa
BankoverschrijvingFactuur wordt automatisch aangemaakt én per e-mail verstuurd met PDF
Op rekeningFactuur aangemaakt, verschijnt op maandoverzicht klant

Op de dag zelf

Bij het openen van de kassa op de geplande dag verschijnt de groep automatisch in de linkerkolom — je hoeft niets handmatig te doen. De groep heeft dan een eigen rekening waaraan producten kunnen worden toegevoegd.

💡 De activering gebeurt bij het laden van de kassa via /init. Herlaad de pagina als de groep nog niet zichtbaar is.

Groep afrekenen

Selecteer de groep in de linkerkolom → voeg consumptie toe → klik Afrekenen. Als de groep op bankoverschrijving staat wordt de factuur automatisch verstuurd bij het afsluiten.

Niet gekomen

Als een groep niet verschijnt: klik op het op het groepskaartje → kies ❌ Niet gekomen. Er wordt om bevestiging gevraagd. De groep verdwijnt uit de kassa maar blijft zichtbaar in de planning voor administratie.

Ongedaan maken via Admin → 📅 Planning → klik op de groep op de betreffende dag → ↩ Herstel.

4 Offertes

Een offerte maak je vanuit de kassa — je voegt producten toe zoals bij een normale rekening, past eventueel prijzen aan, en maakt dan een offerte. De offerte kan per e-mail worden verstuurd met een professionele PDF bijlage.

Offerte aanmaken

Voorbeeld
Naam: Bedrijf BV | Datum activiteit: 3 september 14:00 | 20 personen | Referentie: Teamdag 2026 | Geldig: 30 dagen

Producten: Lunch arrangement × 20 (€27,50 p.p.) + Zaalkosten (€150,-)
Totaal: €700,-

Statusflow

📝 Concept
📧 Verstuurd
✅ Geaccepteerd
📅 Ingepland
👥 Aanwezig
💶 Afgerekend
Afwijkingen:
❌ Niet gekomen
⌛ Vervallen
StatusBetekenisVolgende actie
ConceptAangemaakt, nog niet verstuurdVerstuur per e-mail
VerstuurdE-mail met PDF verstuurd aan klantWacht op reactie klant
GeaccepteerdKlant heeft akkoord gegevenInplannen in planning
IngeplandDatum bevestigd, staat in agendaMarkeer als aanwezig op de dag
AanwezigGroep is aanwezigOmzetten naar rekening → afrekenen
AfgerekendBetaling voldaan
Niet gekomenGeannuleerd of geen showHerstel mogelijk via planning

Offerte bewerken

Via Admin → 📋 Offertes → klik op ✏️ Bewerken naast een offerte. Je kunt alle klantgegevens, de activiteitsdatum en alle regels aanpassen. Na opslaan wordt de status automatisch teruggezet naar Concept — verstuur de offerte daarna opnieuw.

Omzetten naar rekening

Als de klant akkoord is gegaan en de groep daadwerkelijk aanwezig is:

💡 Als de activiteitsdatum van de offerte vandaag is én de status geaccepteerd of ingepland is, verschijnt de rekening automatisch in de kassa — je hoeft niet handmatig om te zetten.

5 Planning

De planningspagina toont een weekkalender met alle geplande groepen en geaccepteerde offertes. Bereikbaar via Admin → 📅 Planning.

Weekkalender

De kalender toont 7 dagen per rij. Navigeer met de ◀ ▶ pijltjes of klik Vandaag om terug te gaan naar de huidige week.

Kleur kaartjeBetekenis
■ BlauwGroep
■ GroenGeaccepteerde of ingeplande offerte
■ GeelOfferte aanwezig
■ RoodNiet gekomen
■ GrijsAfgerekend

Per kaartje zie je: tijdstip, naam, aantal personen, bedrag, notities en status.

Status bijwerken

Klik op een kaartje om het detailvenster te openen. Beschikbare acties afhankelijk van de huidige status:

iCal / agenda synchronisatie

De planning kan worden gesynchroniseerd met de Agenda-app op iPhone of iPad via een iCal abonnement.

📝 De iCal feed bevat alleen items met status geaccepteerd, ingepland, aanwezig en afgerekend. Concept-offertes en niet-gekomen items staan er niet in. De feed toont ook verleden items zodat je altijd kunt terugkijken.
💡 Omdat de iPad altijd op hetzelfde WiFi-netwerk zit als de kassa, synchroniseert de iPad automatisch en deelt de agenda daarna via iCloud met alle gekoppelde apparaten.

6 Bestelapp

De bestelapp is een aparte webpagina die op een smartphone of tablet geopend kan worden. Medewerkers kunnen hiermee bestellingen plaatsen die direct in de kassa verschijnen — zonder naar de kassa te lopen. Ook kunnen klanten via de bestelapp direct afrekenen via Mollie.

Instellen & QR-code

Elke medewerker heeft een unieke bestelapp-URL. Zo wordt de bestelling direct aan de juiste medewerker gekoppeld.

Voorbeeld URL
http://192.168.1.134:5000/bestel/jan-1234567890

Deze URL is uniek per medewerker. De medewerkersnaam en een timestamp vormen samen het ID.

Bestelling plaatsen

De bestelapp toont dezelfde productcategorieën en producten als de kassa. Een medewerker selecteert:

  1. De tafel waarvoor besteld wordt
  2. De producten (klik om toe te voegen)
  3. Klik op Bestelling plaatsen

De bestelling verschijnt direct in de kassa met een 🛎️ badge op de bestelknop. De producten worden automatisch aan de juiste tafelrekening toegevoegd.

Bestellingen verwerken in de kassa

In de kassa is rechtsboven de knop 🛎️ Bestellingen zichtbaar met het aantal nieuwe bestellingen. Klik erop om het bestellingenoverzicht te openen.

Betalen via de bestelapp

De bestelapp biedt ook een afrekenfunctie — ideaal voor situaties waarbij de klant zelf wil betalen via zijn eigen telefoon, of een medewerker een betaling wil starten op zijn eigen apparaat.

Hoe het werkt

📝 De Mollie terminal die gebruikt wordt is de terminal die gekoppeld is aan de medewerker in de configuratie. Per medewerker kan een andere terminal worden ingesteld.
💡 Dit maakt het mogelijk om bij een tafel te betalen zonder naar de centrale kassa te lopen. De medewerker heeft de terminal bij zich, start de betaling op de bestelapp, en de klant betaalt ter plekke.

7 Admin & Rapportage

Het admin-gedeelte is bereikbaar via de ⚙️ Admin knop rechtsbovenin de kassa. Hier vind je omzetoverzichten, exports, facturen en groepenbeheer.

Omzetoverzicht

Via Admin → 📊 Kassa Omzet zie je een overzicht van alle afgesloten bons. Filteren kan op:

Per bon kun je:

Excel export (boekhouder)

Via de exportknop in het omzetoverzicht kun je een gedetailleerde Excel downloaden.

Tab in ExcelInhoud
AfrekeningenElke bon op regelniveau: datum, product, BTW, bedrag, medewerker, betaaltype
BTW samenvattingTotalen per BTW-tarief (0%, 9%, 21%) per periode
KostenIngevoerde kostenposten
Voorbeeld — export voor de boekhouder
Kies in het omzetoverzicht het kwartaal Q2 2026 → klik 📥 Export Excel → download het bestand → stuur naar de boekhouder.

De export bevat alle bons van april t/m juni met datum, BTW-uitsplitsing per tarief en het totaalbedrag per betaalmethode.

Facturen

Via Admin → 📄 Facturen zie je alle aangemaakte facturen. Facturen worden automatisch aangemaakt bij:

Per factuur:

💡 Bij elke verstuurde factuur wordt automatisch een BCC gestuurd naar het e-mailadres van het bedrijf — zodat je altijd een kopie in je eigen mailbox hebt.

8 Configuratie

De configuratiepagina is bereikbaar via ⚙️ Admin → 🔧 Configuratie. Er wordt om een PIN gevraagd.

Bedrijfsgegevens

Via Configuratie → 🏢 Bedrijfsgegevens stel je in:

Medewerkers

Via Configuratie → Medewerkers beheer je alle medewerkers:

Producten en categorieën

Producten zijn ingedeeld in categorieën. De categorie bepaalt het BTW-tarief.

InstellingToelichting
NaamWeergavenaam op de productkaart
PrijsVerkoopprijs inclusief BTW
CategorieBepaalt BTW-tarief en groepering
FotoOptioneel productfoto (geüpload via de configuratie)
ActiefInactieve producten verschijnen niet in de kassa

Tafels

Voeg tafels toe via Configuratie → 🪑 Tafels. Elke tafel heeft een naam (bijv. "Tafel 1" of "Terras 3"). De volgorde in de configuratie bepaalt de volgorde in de kassa.

📝 De tafels-sectie is alleen zichtbaar als de tafels-functie is ingeschakeld. Bij uitgeschakeld ziet men in de kassa één KASSA knop.

Betaalmethoden

Naast de standaard methoden (PIN, Cash, Mollie, Carbon) kun je eigen methoden toevoegen via Configuratie → Betaalmethoden. Voorbeelden: Tikkie, Cadeaubon, Personeelskorting.

Mollie terminal koppelen

Functies aan/uitzetten

Via Configuratie → ⚙️ Functies kun je modules aan- of uitzetten. Uitgeschakelde functies verdwijnen uit de interface.

FunctieEffect bij uitschakelen
myPOS CarbonCarbon betaalknop verborgen
Mollie PINMollie betaalknop verborgen, ook in config
KortingKortingsknop verborgen bij afrekenen
TafelsTafelkolom vervangen door één KASSA knop
Bon bewerken✏️ bewerkknop verborgen
Bestellingen🛎️ bestelknop verborgen
Tag/NFCTag-sectie verborgen in configuratie
Groepen+ Groep knop verborgen
FacturenFacturen en bankoverschrijving verborgen
Planning📅 Planning knop verborgen in admin
Offertes+ Offerte knop verborgen, offertes uit admin
VoorraadVoorraad knop verborgen in admin
⚠️ Na het opslaan van functiewijzigingen moet de kassa herladen worden (pagina vernieuwen) voordat de wijzigingen zichtbaar zijn.

9 Technisch

Backup van data

Alle data wordt opgeslagen als JSON-bestanden in de data/ map op de server. Een backup maken is eenvoudig:

# Backup maken cp -r /home/ubuntu/kassasysteem/data/ /home/ubuntu/backup-$(date +%Y%m%d)/ # Automatisch dagelijks via crontab 0 3 * * * cp -r /home/ubuntu/kassasysteem/data/ /home/ubuntu/backups/$(date +\%Y\%m\%d)/

Belangrijke bestanden:

BestandInhoud
accounts.jsonActieve rekeningen (alleen open rekeningen na migratie)
receipts.jsonAlle afgesloten bons
products.jsonProductencatalogus
invoices.jsonFacturen
offertes.jsonOffertes
groups.jsonGroepsreserveringen
company.jsonBedrijfsgegevens en instellingen
customers.jsonKlanten (voor op rekening)
smtp.jsonE-mailinstellingen

Data migratie (receipts)

Voor betere prestaties kunnen afgesloten bons worden verplaatst van accounts.json naar een apart receipts.json bestand. Dit houdt accounts.json klein en de kassa snel.

# Droog run — bekijk wat er gebeurt zonder wijzigingen python3 /home/ubuntu/kassasysteem/migrate_receipts.py # Uitvoeren (maak eerst een backup!) python3 /home/ubuntu/kassasysteem/migrate_receipts.py --execute
💡 Het script is idempotent — je kunt het veilig meerdere keren uitvoeren. Bons die al in receipts.json staan worden overgeslagen.

Automatische maandelijkse facturen

Klanten die op rekening kopen krijgen aan het einde van de maand automatisch een factuur. Dit wordt geregeld via een cron-taak op de server.

# Crontab instelling — elke 1e van de maand om 08:00 0 8 1 * * bash -c "source /home/ubuntu/kassasysteem/venv/bin/activate && \ python /home/ubuntu/kassasysteem/generate_invoices.py >> \ /home/ubuntu/kassasysteem/invoice_cron.log 2>&1" # Handmatig uitvoeren voor een specifieke maand python generate_invoices.py 3 2025 # maart 2025

Het script:

📝 SMTP moet geconfigureerd zijn via Configuratie → E-mail (SMTP) voordat automatisch versturen werkt. Zonder SMTP worden facturen wel aangemaakt maar niet verstuurd.



Kassasysteem handleiding — gegenereerd automatisch
Alle rechten voorbehouden aan de exploitant van dit systeem.