Select mutually exclusive expense type to start reimbursement claim
The expense type selector is the mandatory first step in the travel reimbursement wizard. It presents a dropdown sourced from the organisation's Supabase configuration store, rendering only the expense types permitted for the submitting user's organisation. Once a type is selected, any mutually exclusive types are disabled or hidden, preventing invalid combinations at the input stage rather than at review. The BLoC state management layer tracks the selected type and drives conditional rendering of subsequent wizard steps.
User Story
Acceptance Criteria
- Given the expense registration wizard is open, when the user lands on step one, then the expense type selector is displayed with all types permitted for their organisation loaded from the configuration store
- Given the user selects 'Kilometre allowance', when the selector re-renders, then 'Public transit' and any other mutually exclusive types are disabled and visually indicated as unavailable
- Given the user selects a fixed-amount type (toll, parking, or transit), when the selector re-renders, then 'Kilometre allowance' is disabled to prevent combination claims
- Given the organisation has customised its permitted expense types in Supabase, when the selector loads, then only the configured types are shown — no hardcoded fallback types appear
- Given the user attempts to proceed without selecting an expense type, when they tap 'Next', then a validation message prompts them to make a selection before advancing
Business Value
Enforcing mutually exclusive expense type selection at the UI layer eliminates a major source of accounting errors that currently require manual coordinator correction. Fixed dropdown choices rather than free text ensure downstream Bufdir reporting compatibility and accounting system integration (Xledger, Dynamics) receives clean, categorised data. This directly reduces back-office correction time and ensures compliance with organisational reimbursement policies.