Fase 3: Boarding + Paw Vouchers
29 user stories, 9 scenario’s + 5 edge cases.
S-3.1 Admin beheert kamers
Section titled “S-3.1 Admin beheert kamers”Admin configureert kamers met types, capaciteit en beschikbaarheid.
Dekt: 3.1.1, 3.1.2
Voorwaarden: Admin ingelogd
- Ga naar
/admin/settings, sectie Kamers - Voeg kamer toe met velden: naam (bijv. “Kamer 3”), type (
outside_ac,ac_room,ac_deluxeofpresidential), capaciteit (aantal honden), airco (ja/nee), notities (vrij tekstveld) - Check dat per kamertype een beschrijving en foto zichtbaar is in de klantflow (stap 3 van boarding boeken)
- Voeg kamers toe van alle 4 types met bijbehorende dagprijzen (40/45/55/65 AWG)
- Deactiveer een kamer. Check dat deze niet meer meetelt in beschikbaarheid
- Ga naar
/admin(dashboard). Bekijk kamerbezetting: per kamer welke hond, eigenaar, tot wanneer, vrije kamers per type, statusindicator (bezet/vrij) - Maak een kamertype helemaal vol door boekingen. Check dat het type disabled (niet selecteerbaar) is in de boekingsflow op
/bookings/new
Resultaat: Kamers CRUD werkt, bezetting overzicht actueel, volle kamertypes zijn niet selecteerbaar met melding over beschikbare alternatieven.
S-3.2 Klant boekt boarding
Section titled “S-3.2 Klant boekt boarding”Volledige boarding boekingsflow met kamertype, datums, medicatie en prijs.
Dekt: 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6
Voorwaarden: Hond met testdag goedgekeurd (trial_day_passed = true), kamers beschikbaar
- Ga naar
/bookings/new, kies “Boarding / Hotel”. Optie is alleen zichtbaar voor honden met goedgekeurde testdag - Selecteer hond via checkboxes. Vaccinatiecheck: verlopen = geblokkeerd, bijna verlopen (binnen 30 dagen) = waarschuwing
- Kies kamertype uit de 4 opties. Systeem toont beschikbaarheid per type. Niet-beschikbare types zijn disabled
- Kies datums via kalender (begin- en einddatum). Systeem checkt kamerbeschikbaarheid per type voor de gehele periode
- Per hond: vul bijzondere instructies in (optioneel, vrij tekstveld)
- Per hond: geef medicatie aan met medicijn en dosering. Kosten: 5 AWG per medicijn per dag. Test met 3 medicijnen: check dat 15 AWG/dag wordt berekend en opgeteld bij de prijs
- Voeg geautoriseerde ophalers toe: naam en contactgegevens
- Bekijk overzicht op stap 6: per hond naam + kamertype + datums, aantal nachten, basisprijs, toegepaste korting (met uitleg), medicatiekosten apart vermeld, subtotaal, BBO (6%) en BAZV (1,5%) inbegrepen in totaal, totaalbedrag
- Bevestig boeking. Status wordt
pending, factuur met 50% aanbetaling wordt aangemaakt, Sentoo betaallink per mail verstuurd
Resultaat: Flow compleet, beschikbaarheid werkt, prijs correct per type, medicatietoeslag correct berekend (inclusief meerdere medicijnen), korting zichtbaar met reden.
S-3.3 Kortingsberekening boarding
Section titled “S-3.3 Kortingsberekening boarding”Systeem berekent correcte kortingen op de kamerprijs, exclusief medicatie.
Dekt: 3.3.1, 3.3.2, 3.3.3, 3.3.4
Voorwaarden: Klant met 2 honden
- Boek 2 honden in dezelfde kamer. Check 20% korting op de 2e hond (op de kamerprijs)
- Boek 1 hond voor 31 dagen. Check 10% langverblijfkorting. Grens is “langer dan 30 dagen”, dus 30 dagen = geen korting, 31 dagen = wel korting
- Boek 2 honden voor 31 dagen in dezelfde kamer. Check 20% korting (hoogste wint)
- Controleer dat kortingen niet stapelen: alleen de hoogste korting wordt toegepast per hond
- Voeg medicatie toe aan een boeking met korting. Check dat de korting alleen over de kamerprijs gaat, niet over de medicatiekosten (5 AWG/medicijn/dag). Medicatie staat buiten de korting
- Op het factuuroverzicht: check dat het oorspronkelijke bedrag doorgestreept is naast het kortingsbedrag, met reden (bijv. “20% korting extra hond zelfde kamer”)
Resultaat: Korting correct berekend op kamerprijs, medicatie buiten korting, geen stapeling, grens exact op 31+ dagen, transparant voor klant.
S-3.4 Gesplitste betaling boarding
Section titled “S-3.4 Gesplitste betaling boarding”Boarding betaling in twee delen: 50% aanbetaling (niet-restitueerbaar) + 50% bij check-in.
Dekt: 3.4.1, 3.4.2, 3.4.3
Voorwaarden: Boarding boeking bevestigd
- Na bevestiging: factuur met 50% aanbetaling en Sentoo betaallink per mail
- Check dat “niet-restitueerbaar” label zichtbaar is op de factuur bij de aanbetalingsregel
- Betaal 50%. Reservering status wordt bevestigd
- Scenario A: niet betalen. Check dat de klant op dag 7 een notificatie ontvangt dat de reservering dreigt te vervallen. Op dag 8 wordt de reservering automatisch verwijderd, kamer komt vrij, klant ontvangt melding dat de reservering is vervallen
- Scenario B: bij check-in, admin toont resterende 50%. Admin maakt tweede factuur aan met Sentoo betaallink, of klant betaalt cash/pin aan balie
- Check dat volledige factuur als betaald staat na beide betalingen
Resultaat: Split payment werkt, “niet-restitueerbaar” label zichtbaar, 7-dagen deadline notificatie naar klant, dag 8 automatisch verwijderd, check-in betaling afgehandeld.
S-3.5 Admin bewerkt factuur
Section titled “S-3.5 Admin bewerkt factuur”Admin bewerkt een concept-factuur voordat deze naar de klant gaat.
Dekt: 3.5.1, 3.5.2
Voorwaarden: Factuur aangemaakt maar nog niet verstuurd (concept-status)
- Check op
/admindashboard: concept-facturen sectie toont facturen met een status-indicator “concept” die nog bewerkt moeten worden - Open factuur op
/admin/invoices/[id] - Wijzig kortingspercentage
- Pas factuurregels aan (toevoegen, wijzigen, verwijderen)
- Voeg notities toe (zichtbaar op de factuur)
- Check dat BBO/BAZV automatisch herberekend wordt bij wijzigingen
- Keur factuur goed en verstuur met Sentoo betaallink naar klant per email
- Check dat klant de factuur NIET kan zien zolang de status “concept” is (voor goedkeuring)
Resultaat: Factuur bewerkbaar in concept-status, concept niet zichtbaar voor klant, goedkeuring en verzending werkt, status-indicator op admin dashboard.
S-3.6 Kamertoewijzing bij check-in/out en ophalerverificatie
Section titled “S-3.6 Kamertoewijzing bij check-in/out en ophalerverificatie”Admin wijst kamers toe bij check-in, verifieert ophalers en geeft kamers vrij bij check-out.
Dekt: 3.6.1, 3.6.2, 3.6.3
Voorwaarden: Boarding boeking voor vandaag, kamers beschikbaar
- Bij check-in op
/admin/bookings/[id]: admin selecteert specifieke kamer uit lijst met vrije kamers van het geboekte type (per kamer: naam en notities) - Hond wordt gekoppeld aan kamer. Kameroverzicht op
/admindashboard toont de hond, eigenaar en tot-wanneer datum - Bij check-out: systeem toont lijst geautoriseerde ophalers (naam + contactgegevens) en de naam van de eigenaar
- Admin verifieert de persoon die zich meldt tegen de lijst
- Ophaler staat op de lijst: check-out doorgaan, kamer wordt automatisch vrijgegeven, tijdstip vastgelegd
- Ophaler niet op de lijst: waarschuwing getoond. Hond wordt niet meegegeven. Admin workflow: neem contact op met eigenaar. Eigenaar kan alsnog autoriseren, waarna admin de check-out goedkeurt. Of eigenaar weigert, ophaler wordt afgewezen
Resultaat: Toewijzing bij check-in, ophalerverificatie bij check-out met goedkeuren/weigeren workflow bij onbekende ophaler, kameroverzicht altijd actueel.
S-3.7 Dagentelling en late ophaling
Section titled “S-3.7 Dagentelling en late ophaling”Systeem berekent correcte dagentelling bij verschillende ophaaltijden.
Dekt: 3.7.1, 3.7.2
Voorwaarden: Boarding boeking actief
- Hond opgehaald voor 12:00 (ochtend). Telt niet als extra dag
- Hond opgehaald na 12:00 (middag). Telt als extra dag, extra kosten berekend
- Hond niet opgehaald voor sluitingstijd. Automatisch ingeboekt voor overnachting, nachtarief in rekening gebracht
- Check dat factuur correct wordt bijgewerkt bij extra dag of overnachting
Resultaat: Dagentelling klopt per scenario, scheidpunt is 12:00, automatische overnachtingsboeking bij niet ophalen.
S-3.8 Boarding admin taken
Section titled “S-3.8 Boarding admin taken”Admin beheert boarding-specifieke taken: openstaande betalingen, herinneringen, concept-facturen.
Dekt: 3.8.1, 3.8.2, 3.8.3
Voorwaarden: Actieve boarding boekingen
- Admin dashboard
/admin: check openstaande betalingen sectie (totaalbedrag + aantal facturen, klikbaar naar factuuroverzicht met filter “openstaand”) - Check concept-facturen sectie (facturen die nog bewerkt moeten worden)
- Open factuur op
/admin/invoices/[id], stuur handmatig een betaalherinnering (email met openstaande factuur + Sentoo betaallink)
Resultaat: Dashboard toont openstaande items en concept-facturen, herinneringen handmatig verstuurbaar.
S-3.9 Paw Voucher kopen en gebruiken
Section titled “S-3.9 Paw Voucher kopen en gebruiken”Klant koopt een strippenkaart en gebruikt credits voor daycare.
Dekt: 3.9.1, 3.9.2, 3.9.3, 3.9.4, 3.9.5, 3.9.6
Voorwaarden: Klant met hond, daycare beschikbaar
- Ga naar
/bookings/new(dienst: Paw Voucher) of/subscriptions. Bekijk 6 staffels met prijs-per-eenheid transparant zichtbaar:
| Voucher | Prijs AWG | Prijs per credit |
|---|---|---|
| 1x | 35 | 35,00 |
| 5x | 170 | 34,00 |
| 10x | 295 | 29,50 |
| 15x | 395 | 26,33 |
| 20x | 495 | 24,75 |
| 30x | 695 | 23,17 |
- Koop een 10x voucher. Factuur 100% vooraf met Sentoo betaallink
- Betaal. Credits worden direct bijgeschreven op het account
- Boek daycare op
/bookings/new. Optie “Daycare Paw Voucher” verschijnt (alleen als saldo > 0) - Selecteer voucher als betaalmethode. Boeking bevestigd. Er wordt geen factuur aangemaakt
- Bij check-in (niet bij boeking): 1 credit wordt automatisch afgetrokken van de voucher
- Ga naar
/subscriptions. Bekijk per hond: resterende credits en gebruikshistorie (datum + gekoppelde boeking per afgeschreven credit) - Gebruik tot 2 credits over. Check dat het systeem een notificatie stuurt naar de klant met “lage credits” waarschuwing
- Boek daycare met 0 credits. Optie “Daycare Paw Voucher” is niet zichtbaar
- Check dat voucher met 0 credits nog wel zichtbaar is in de historie op
/subscriptions(maar niet als betaaloptie) - Admin op
/admin/subscriptions: bekijk alle strippenkaarten, filter op actief/leeg. Op/admin/subscriptions/[id]: corrigeer credits handmatig, bekijk gebruikshistorie
Resultaat: Voucherkoop werkt met prijs-per-eenheid inzichtelijk, credit afschrijving bij check-in (niet bij boeking), lage-credits notificatie bij saldo 2 of minder, voucher met 0 credits in historie maar niet als betaaloptie, admin kan corrigeren.
Edge cases
Section titled “Edge cases”EC-10 Annulering grensgevallen
Section titled “EC-10 Annulering grensgevallen”Complexe annuleringsscenario’s.
Versterkt: S-2.6, S-3.4
- Annulering van boeking in status “checked_in”. Onmogelijk (zowel klant als admin)
- Annulering op de dag zelf (boeking voor vandaag, nog niet ingecheckt). Toegestaan of niet?
- Boarding annulering na 50% aanbetaling. 50% niet-restitueerbaar, boeking verwijderd, kamer vrijgegeven
- Admin annuleert boarding namens hotel na 50% aanbetaling. Volledige terugbetaling (ook de 50%)
- Annulering van boeking die via voucher betaald is. Credit teruggeboekt op voucher
- Annulering. Capaciteit meteen vrijgegeven. Andere klant kan nu boeken
Resultaat: Annulering consistent per status en betaalwijze, capaciteit altijd bijgewerkt.
EC-11 Boarding kortingen grensgevallen
Section titled “EC-11 Boarding kortingen grensgevallen”Exact-op-de-grens berekeningen voor kortingen.
Versterkt: S-3.3
- Verblijf van precies 30 dagen. Geen langverblijfkorting (grens is > 30, dus 31+)
- Verblijf van 31 dagen, 1 hond. 10% korting op kamerprijs
- 2 honden, aparte kamers. Geen multi-hond korting (moet zelfde kamer zijn)
- 2 honden, 1 in Standard (40 AWG), 1 als extra in dezelfde kamer. 20% korting op de 2e hond, maar welke prijs? (goedkoopste als 2e?)
- 3 honden, 2 in kamer A, 1 in kamer B. Korting alleen op 2e hond in kamer A
- Korting + medicatietoeslag. Korting geldt alleen over kamerprijs, niet over medicatie (5 AWG/medicijn/dag)
- 2 honden, 31 dagen, met medicatie. Check dat 20% korting alleen op kamerprijs zit en medicatie volledig apart wordt berekend
Resultaat: Kortingsregels glashelder in alle combinaties, medicatie altijd buiten korting.
EC-12 Dagentelling boarding grensgevallen
Section titled “EC-12 Dagentelling boarding grensgevallen”Exacte tijdsgrenzen bij ochtend/middag ophalen.
Versterkt: S-3.7
- Ophalen om 11:59. Ochtend (geen extra dag)
- Ophalen om 12:01. Middag (extra dag)
- Exact 12:00: check of dit als ochtend of middag telt (scheidpunt definitie)
- Hond niet opgehaald. Automatische overnachting. Factuur bijgewerkt. Klant geinformeerd
- Hond 3 dagen niet opgehaald. 3 extra overnachtingen correct berekend
- Check-out zondag (gesloten). Hoe afhandelen? (verplicht zaterdag ophalen?)
Resultaat: Tijdgrens eenduidig, automatische overnachting betrouwbaar.
EC-13 Paw Vouchers edge cases
Section titled “EC-13 Paw Vouchers edge cases”Grensgevallen bij strippenkaarten.
Versterkt: S-3.9
- Voucher kopen maar niet betalen. Credits niet bijgeschreven
- Twee actieve vouchers tegelijk. Welke wordt eerst afgeschreven? (FIFO, oudste eerst)
- Check-in met voucher. Hond wordt daarna door admin uitgecheckt (annulering). Credit teruggeboekt op voucher. Check timing: credit revert moet direct bij annulering gebeuren, niet met vertraging
- Admin corrigeert credits naar negatief getal. Geblokkeerd (minimum 0)
- Voucher met 0 credits. Niet getoond als betaaloptie, maar nog zichtbaar in historie op
/subscriptions - Klant koopt 30x voucher, annuleert na 5 gebruik. Refund beleid? (waarschijnlijk niet, 100% vooraf)
- Admin correctie: bij handmatig aanpassen van credits wordt een audit trail bijgehouden (wie, wanneer, reden, oud saldo, nieuw saldo). Check dat dit zichtbaar is op
/admin/subscriptions/[id]
Resultaat: Credits nooit negatief, meerdere vouchers FIFO afgehandeld, credit revert direct bij annulering, audit trail bij admin correcties.
EC-18 Factuur bewerken edge cases
Section titled “EC-18 Factuur bewerken edge cases”Grensgevallen bij factuurbewerking.
Versterkt: S-3.5
- Admin probeert een al betaalde factuur te bewerken. Geblokkeerd
- Admin probeert een al verstuurde/goedgekeurde factuur te bewerken. Geblokkeerd of versie 2?
- Admin verwijdert alle factuurregels. Validatie: minimaal 1 regel vereist
- Admin zet korting hoger dan 100%. Geblokkeerd
- Admin bewerkt factuur. BBO/BAZV wordt automatisch herberekend
Resultaat: Factuur alleen bewerkbaar in concept-status, validatie op alle velden.