Skip to content

Forslag: Forbedret kundekort med permanente rettigheter

1. Problem

Dagens system behandler hver booking isolert. Kundespesifikke rettigheter som gir rabatt (legeerklæring) eller gratis leie (abonnement) må legges inn manuelt for hver eneste booking. Dette er ineffektivt, feilutsatt og skalerer ikke.

2. Mål

Etablere et sentralt "kundekort" i databasen hvor permanente og tidsstyrte rettigheter kan lagres. Dette vil automatisere prisberegningen og redusere manuelt arbeid for ProShop/admin.

Dette inkluderer to konkrete funksjoner: 1. Permanent legeerklæring: Kundens legeerklæring-status skal "huskes" av systemet. 2. Abonnement: Kunder skal kunne ha et tidsstyrt abonnement som gir gratis leie.

3. Løsningsforslag

Løsningen er tredelt: utvide datamodellen, bygge admin-verktøy for å administrere rettighetene, og oppdatere bookinglogikken til å bruke dem.

Steg 1: Utvidet datamodell for kunde

Vi utvider kundedokumentet i members/{id} med to nye felt:

{
  "name": "Kari Nordmann",
  "email": "kari.nordmann@example.com",
  "golfboxId": "73-12345", // Primær, ikke-redigerbar ID. Fremtidig oppslagsfelt mot GolfBox API.

  // Felt 1: Permanent legeerklæring
  "hasDoctorsNote": true,

  // Felt 2: Tidsstyrt abonnement
  "subscription": {
    "type": "half_year_jul_dec",
    "validFrom": "2026-07-01",
    "validTo": "2026-12-31"
  }
}
  • hasDoctorsNote: En boolean. Hvis true, gis rabatt.
  • subscription: Et objekt. Hvis det finnes og er gyldig for bookingdatoen, blir prisen 0 kr. Hvis ikke, er feltet null.

Steg 2: Admin-verktøy for "Kundekort"

På "Kunder"-siden i admin-portalen utvikler vi en detaljvisning for hver kunde.

Visuell beskrivelse (Admin/ProShop):

Kundekort: Kari Nordmann * GolfBox ID: 73-12345 (Ikke-redigerbar) * ...andre kundefelt (navn, e-post, etc.)

Her kan clubAdmin og proShop:

  1. Håndtere Legeerklæring:

    • En enkel checkbox: [x] Har legeerklæring.
    • Lagring oppdaterer hasDoctorsNote-feltet på kundens dokument.
  2. Håndtere Abonnement:

    • En seksjon som viser aktivt abonnement og gyldighetsperiode.
    • En knapp for [ Legg til nytt abonnement ] åpner en dialog.
    • I dialogen velger admin abonnementstype fra en liste:
      • Måned
      • Halvår (jan-jun)
      • Halvår (jul-des)
    • Systemet setter validFrom og validTo automatisk basert på valget.
    • En [ Fjern ]-knapp setter subscription til null.

Steg 3: Oppdatert prislogikk i bookingflyten

Når en kunde identifiseres i bookingflyten, hentes kundekortet fra databasen. Prisberegningen følger et nytt, strengt hierarki:

  1. Sjekk Abonnement: Har kunden et subscription-objekt, og er bookingdatoen innenfor validFrom/validTo?

    • Ja? Pris settes til 0 kr. Gå ikke videre.
    • UI-krav: I kundeportalen skal prisen bare vises som "0 kr" uten forklaring. I admin/proshop-portalen skal det stå "0 kr (Abonnement)" for å gi kontekst til de ansatte.
  2. Sjekk Legeerklæring: Er hasDoctorsNote satt til true?

    • Ja? Standard rabattpris for legeerklæring benyttes. UI viser "Rabatt for legeerklæring" (dette er OK for både kunde og admin). Gå ikke videre.
  3. Standardpris: Hvis ingen av de overnevnte slår til, benyttes standardprisen for 9/18 hull.

Denne løsningen gir et solid og fremtidsrettet fundament for all kundespesifikk logikk.