Skip to content

Fase 3: Boarding + Paw Vouchers

29 user stories, 9 scenario’s + 5 edge cases.

Admin configureert kamers met types, capaciteit en beschikbaarheid.

Dekt: 3.1.1, 3.1.2

Voorwaarden: Admin ingelogd

  1. Ga naar /admin/settings, sectie Kamers
  2. Voeg kamer toe met velden: naam (bijv. “Kamer 3”), type (outside_ac, ac_room, ac_deluxe of presidential), capaciteit (aantal honden), airco (ja/nee), notities (vrij tekstveld)
  3. Check dat per kamertype een beschrijving en foto zichtbaar is in de klantflow (stap 3 van boarding boeken)
  4. Voeg kamers toe van alle 4 types met bijbehorende dagprijzen (40/45/55/65 AWG)
  5. Deactiveer een kamer. Check dat deze niet meer meetelt in beschikbaarheid
  6. Ga naar /admin (dashboard). Bekijk kamerbezetting: per kamer welke hond, eigenaar, tot wanneer, vrije kamers per type, statusindicator (bezet/vrij)
  7. 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.

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

  1. Ga naar /bookings/new, kies “Boarding / Hotel”. Optie is alleen zichtbaar voor honden met goedgekeurde testdag
  2. Selecteer hond via checkboxes. Vaccinatiecheck: verlopen = geblokkeerd, bijna verlopen (binnen 30 dagen) = waarschuwing
  3. Kies kamertype uit de 4 opties. Systeem toont beschikbaarheid per type. Niet-beschikbare types zijn disabled
  4. Kies datums via kalender (begin- en einddatum). Systeem checkt kamerbeschikbaarheid per type voor de gehele periode
  5. Per hond: vul bijzondere instructies in (optioneel, vrij tekstveld)
  6. 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
  7. Voeg geautoriseerde ophalers toe: naam en contactgegevens
  8. 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
  9. 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.

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

  1. Boek 2 honden in dezelfde kamer. Check 20% korting op de 2e hond (op de kamerprijs)
  2. Boek 1 hond voor 31 dagen. Check 10% langverblijfkorting. Grens is “langer dan 30 dagen”, dus 30 dagen = geen korting, 31 dagen = wel korting
  3. Boek 2 honden voor 31 dagen in dezelfde kamer. Check 20% korting (hoogste wint)
  4. Controleer dat kortingen niet stapelen: alleen de hoogste korting wordt toegepast per hond
  5. 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
  6. 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.

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

  1. Na bevestiging: factuur met 50% aanbetaling en Sentoo betaallink per mail
  2. Check dat “niet-restitueerbaar” label zichtbaar is op de factuur bij de aanbetalingsregel
  3. Betaal 50%. Reservering status wordt bevestigd
  4. 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
  5. Scenario B: bij check-in, admin toont resterende 50%. Admin maakt tweede factuur aan met Sentoo betaallink, of klant betaalt cash/pin aan balie
  6. 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.

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)

  1. Check op /admin dashboard: concept-facturen sectie toont facturen met een status-indicator “concept” die nog bewerkt moeten worden
  2. Open factuur op /admin/invoices/[id]
  3. Wijzig kortingspercentage
  4. Pas factuurregels aan (toevoegen, wijzigen, verwijderen)
  5. Voeg notities toe (zichtbaar op de factuur)
  6. Check dat BBO/BAZV automatisch herberekend wordt bij wijzigingen
  7. Keur factuur goed en verstuur met Sentoo betaallink naar klant per email
  8. 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

  1. 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)
  2. Hond wordt gekoppeld aan kamer. Kameroverzicht op /admin dashboard toont de hond, eigenaar en tot-wanneer datum
  3. Bij check-out: systeem toont lijst geautoriseerde ophalers (naam + contactgegevens) en de naam van de eigenaar
  4. Admin verifieert de persoon die zich meldt tegen de lijst
  5. Ophaler staat op de lijst: check-out doorgaan, kamer wordt automatisch vrijgegeven, tijdstip vastgelegd
  6. 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.

Systeem berekent correcte dagentelling bij verschillende ophaaltijden.

Dekt: 3.7.1, 3.7.2

Voorwaarden: Boarding boeking actief

  1. Hond opgehaald voor 12:00 (ochtend). Telt niet als extra dag
  2. Hond opgehaald na 12:00 (middag). Telt als extra dag, extra kosten berekend
  3. Hond niet opgehaald voor sluitingstijd. Automatisch ingeboekt voor overnachting, nachtarief in rekening gebracht
  4. 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.

Admin beheert boarding-specifieke taken: openstaande betalingen, herinneringen, concept-facturen.

Dekt: 3.8.1, 3.8.2, 3.8.3

Voorwaarden: Actieve boarding boekingen

  1. Admin dashboard /admin: check openstaande betalingen sectie (totaalbedrag + aantal facturen, klikbaar naar factuuroverzicht met filter “openstaand”)
  2. Check concept-facturen sectie (facturen die nog bewerkt moeten worden)
  3. 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.

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

  1. Ga naar /bookings/new (dienst: Paw Voucher) of /subscriptions. Bekijk 6 staffels met prijs-per-eenheid transparant zichtbaar:
VoucherPrijs AWGPrijs per credit
1x3535,00
5x17034,00
10x29529,50
15x39526,33
20x49524,75
30x69523,17
  1. Koop een 10x voucher. Factuur 100% vooraf met Sentoo betaallink
  2. Betaal. Credits worden direct bijgeschreven op het account
  3. Boek daycare op /bookings/new. Optie “Daycare Paw Voucher” verschijnt (alleen als saldo > 0)
  4. Selecteer voucher als betaalmethode. Boeking bevestigd. Er wordt geen factuur aangemaakt
  5. Bij check-in (niet bij boeking): 1 credit wordt automatisch afgetrokken van de voucher
  6. Ga naar /subscriptions. Bekijk per hond: resterende credits en gebruikshistorie (datum + gekoppelde boeking per afgeschreven credit)
  7. Gebruik tot 2 credits over. Check dat het systeem een notificatie stuurt naar de klant met “lage credits” waarschuwing
  8. Boek daycare met 0 credits. Optie “Daycare Paw Voucher” is niet zichtbaar
  9. Check dat voucher met 0 credits nog wel zichtbaar is in de historie op /subscriptions (maar niet als betaaloptie)
  10. 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.

Complexe annuleringsscenario’s.

Versterkt: S-2.6, S-3.4

  1. Annulering van boeking in status “checked_in”. Onmogelijk (zowel klant als admin)
  2. Annulering op de dag zelf (boeking voor vandaag, nog niet ingecheckt). Toegestaan of niet?
  3. Boarding annulering na 50% aanbetaling. 50% niet-restitueerbaar, boeking verwijderd, kamer vrijgegeven
  4. Admin annuleert boarding namens hotel na 50% aanbetaling. Volledige terugbetaling (ook de 50%)
  5. Annulering van boeking die via voucher betaald is. Credit teruggeboekt op voucher
  6. Annulering. Capaciteit meteen vrijgegeven. Andere klant kan nu boeken

Resultaat: Annulering consistent per status en betaalwijze, capaciteit altijd bijgewerkt.

Exact-op-de-grens berekeningen voor kortingen.

Versterkt: S-3.3

  1. Verblijf van precies 30 dagen. Geen langverblijfkorting (grens is > 30, dus 31+)
  2. Verblijf van 31 dagen, 1 hond. 10% korting op kamerprijs
  3. 2 honden, aparte kamers. Geen multi-hond korting (moet zelfde kamer zijn)
  4. 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?)
  5. 3 honden, 2 in kamer A, 1 in kamer B. Korting alleen op 2e hond in kamer A
  6. Korting + medicatietoeslag. Korting geldt alleen over kamerprijs, niet over medicatie (5 AWG/medicijn/dag)
  7. 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.

Exacte tijdsgrenzen bij ochtend/middag ophalen.

Versterkt: S-3.7

  1. Ophalen om 11:59. Ochtend (geen extra dag)
  2. Ophalen om 12:01. Middag (extra dag)
  3. Exact 12:00: check of dit als ochtend of middag telt (scheidpunt definitie)
  4. Hond niet opgehaald. Automatische overnachting. Factuur bijgewerkt. Klant geinformeerd
  5. Hond 3 dagen niet opgehaald. 3 extra overnachtingen correct berekend
  6. Check-out zondag (gesloten). Hoe afhandelen? (verplicht zaterdag ophalen?)

Resultaat: Tijdgrens eenduidig, automatische overnachting betrouwbaar.

Grensgevallen bij strippenkaarten.

Versterkt: S-3.9

  1. Voucher kopen maar niet betalen. Credits niet bijgeschreven
  2. Twee actieve vouchers tegelijk. Welke wordt eerst afgeschreven? (FIFO, oudste eerst)
  3. 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
  4. Admin corrigeert credits naar negatief getal. Geblokkeerd (minimum 0)
  5. Voucher met 0 credits. Niet getoond als betaaloptie, maar nog zichtbaar in historie op /subscriptions
  6. Klant koopt 30x voucher, annuleert na 5 gebruik. Refund beleid? (waarschijnlijk niet, 100% vooraf)
  7. 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.

Grensgevallen bij factuurbewerking.

Versterkt: S-3.5

  1. Admin probeert een al betaalde factuur te bewerken. Geblokkeerd
  2. Admin probeert een al verstuurde/goedgekeurde factuur te bewerken. Geblokkeerd of versie 2?
  3. Admin verwijdert alle factuurregels. Validatie: minimaal 1 regel vereist
  4. Admin zet korting hoger dan 100%. Geblokkeerd
  5. Admin bewerkt factuur. BBO/BAZV wordt automatisch herberekend

Resultaat: Factuur alleen bewerkbaar in concept-status, validatie op alle velden.