Expense Types & Requirements
Feature Detail
Description
This feature provides a configurable catalog of expense types (kilometer allowance, toll, parking, public transport, etc.) together with the rules that govern each type - required fields, receipt thresholds, mutually exclusive combinations, and auto-approval criteria. The catalog and rules are managed per organization so each tenant can reflect its own reimbursement policy without code changes, while the mobile app consumes the catalog at runtime to render the expense form.
Sources & reasoning
Section 2.1 and 3.3 describe a per-tenant configurable expense-type catalog with exclusion rules and threshold-based auto-approval, distinct from the user-facing registration flow. It sits in Phase 2 (Core Product) alongside the rest of the reimbursement stack.
-
docs/source/likeperson.md · line 40-43Faste valg for utleggstype - ikke fritekst - for Ä hindre feilkombinasjon (f.eks. bÄde km og bussbillett). ... Automatisk godkjenning under 50 km / uten utlegg, manuell attestering ellers (HLF).
-
docs/source/likeperson.md · line 71Detaljert refusjonsstyring med faste valg som gjÞr feilkombinasjon teknisk umulig (f.eks. km + bussbillett kan ikke velges samtidig). Automatisk godkjenning under terskel.
Analysis
Different organizations have materially different expense policies - HLF demands strict mutual exclusion and auto-approval below 50 km, while other organizations have looser rules. Hardcoding policy would force every change into a release cycle and prevent the platform from scaling to additional tenants. A configurable expense-type catalog and rules engine lets organizations encode their accounting policy declaratively, eliminates a whole class of operator errors (e.g. claiming both kilometer and bus on the same trip), and supports the threshold-based auto-approval flow that materially reduces coordinator workload.
Model expense types as tenant-scoped records with attributes for unit (km, NOK, hours), required-fields list, receipt threshold, and exclusion groups. A small rules engine evaluates submitted claims server-side against the active rules and emits validation errors or marks them auto-approved. The mobile app fetches the catalog at session bootstrap (alongside the enabled module set and labels) and caches it offline so the form remains usable without connectivity. The admin portal exposes CRUD for expense types in the expense-reimbursement settings page.
Quality Assurance
Peer Mentor (Likeperson) â submitter using the tenant-configured expense type pickerPeer Mentor (Likeperson)
Quick UAT
- Logg inn i Meander-mobilappen som Likeperson og Ă„pne Utlegg â Nytt utlegg.
- Trykk pÄ feltet Utleggstype og bekreft at picker-en kun viser kategoriene organisasjonen har aktivert (f.eks. Kilometer, Bompenger, Parkering, Kollektiv).
- Velg Kilometer og bekreft at regelteksten 'Automatisk godkjenning under 50 km' vises som hint under feltet.
- ForsĂžk Ă„ velge Kollektiv i tillegg til Kilometer og bekreft at appen blokkerer kombinasjonen med meldingen 'Kan ikke kombineres med Kilometer'.
- Velg Bompenger med belĂžp 150 kr og bekreft at feltet Kvittering markeres som obligatorisk (terskel 100 kr).
- Lagre utlegget og bekreft at det vises i Mine utlegg med riktig type og status Til godkjenning.
Quick UAT â Accessibility
-
Logg inn i Meander-mobilappen som Likeperson og Ă„pne Utlegg â Nytt utlegg.
- Screen reader VoiceOver/TalkBack annonserer sideoverskrift 'Nytt utlegg' og fĂžrste skjemafelt.
- Keyboard / focus Tab-rekkefĂžlge: tilbake-knapp â skjemafelter i lesbar rekkefĂžlge.
- Focus visibility Synlig fokusring pÄ fÞrste interaktive element.
-
Trykk pÄ feltet Utleggstype og bekreft at picker-en kun viser kategoriene organisasjonen har aktivert (f.eks. Kilometer, Bompenger, Parkering, Kollektiv).
- Screen reader Picker annonseres som 'Utleggstype, knapp, dobbelttrykk for Ä Äpne'; ved Äpning leses antall valg og hvert alternativ som rolle 'valg'.
- Keyboard / focus Piltaster opp/ned navigerer mellom alternativer; Enter velger.
- Touch target Picker-knapp er minst 24x24 CSS px (faktisk minst 44x44 anbefalt).
-
Velg Kilometer og bekreft at regelteksten 'Automatisk godkjenning under 50 km' vises som hint under feltet.
- Screen reader Hjelpetekst er aria-describedby-koblet til feltet og leses sammen med feltlabelen.
- Contrast Hjelpetekst har minst 4.5:1 kontrast og er ikke kun formidlet via grÄ-pÄ-grÄ farge.
-
ForsĂžk Ă„ velge Kollektiv i tillegg til Kilometer og bekreft at appen blokkerer kombinasjonen med meldingen 'Kan ikke kombineres med Kilometer'.
- Live region 'Kan ikke kombineres med Kilometer' annonseres via aria-live=assertive.
- Contrast Feilmelding bruker bĂ„de ikon og tekst â status er ikke kun formidlet via farge.
-
Velg Bompenger med belĂžp 150 kr og bekreft at feltet Kvittering markeres som obligatorisk (terskel 100 kr).
- Screen reader Kvittering-feltet annonseres som 'Kvittering, obligatorisk' nÄr terskelen utlÞses.
- Focus visibility Det nylig obligatoriske feltet fÄr synlig markering uten Ä stjele fokus midt i innskriving.
-
Lagre utlegget og bekreft at det vises i Mine utlegg med riktig type og status Til godkjenning.
- Live region 'Utlegg lagret. Status: Til godkjenning' annonseres polite.
- Zoom Listen Mine utlegg er brukbar ved 200% zoom uten horisontal scrolling.
Role Boundaries
2 role(s) must NOT access this feature-
Global Administrator
Har ikke tilgang til organisasjonens utleggsdata uten tidsbegrenset support-flagg; mobilappen er ikke tilgjengelig for Global Admin.
-
Prospective Buyer
Salgssiden har ingen pÄlogging eller utleggsfunksjonalitet; deep-link til mobil/admin returnerer 403.
Expected End State
Tenant-konfigurert utleggskatalog styrer hvilke kategorier likepersonen kan velge, hvilke kombinasjoner som er tillatt, og nĂ„r kvittering kreves â ulovlige kombinasjoner blokkeres ved innsending, og lagrede utlegg har gyldig type i henhold til organisasjonens regler.
Components (5)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.