Select Expense Types with Mutual Exclusion Rules
HLF has explicitly requested that expense type selection use fixed choices rather than free text, and that the system technically prevent impossible combinations such as selecting both mileage reimbursement and public transit for the same journey. The UI should present expense types clearly, disable incompatible options when one is selected, and show accessible labels that explain why a combination is not allowed. The rule engine must be configurable per organization to accommodate different policies.
User Story
Acceptance Criteria
- Given I open the expense type selector, when the screen loads, then all available expense types for my organization are displayed as selectable options with clear labels
- Given I select 'Mileage reimbursement', when I attempt to also select 'Public transit', then the public transit option is disabled and a tooltip explains the mutual exclusion rule
- Given I select a valid combination (e.g. mileage + parking), when I proceed, then both expense types are included in the claim without error
- Given the mutual exclusion rules are configured per organization, when I register with a different organization, then the applicable rules for that organization are enforced
- Given accessibility mode is active, when I navigate the expense type selector, then all options and their disabled states are announced correctly by screen readers
- Given I select an expense type, when a calculation preview is applicable, then the reimbursement estimate updates immediately
Business Value
Preventing invalid expense combinations at the point of entry eliminates downstream accounting errors and reduces coordinator workload in rejecting and re-processing incorrect claims. Fixed selection categories also enable reliable aggregation and reporting, supporting accurate Bufdir submissions and accounting integrations with Xledger and Dynamics.
Components
- Expense Registration Screen ui
- Expense Type Selector Widget ui
- Expense Type Picker Widget ui
- Expense Selection BLoC service
- Mutual Exclusion Rule Engine service
- Expense Calculation Service service
- Expense Type Accessibility Service service
- Expense Type Repository data
- Expense Type Configuration data
- Expense Form BLoC service
- Expense Type Catalogue Repository data