Expense Registration Screen
Component Detail
Description
Primary mobile screen for logging travel expenses including kilometre allowances, toll fees, parking, and public transport. Uses fixed selection controls (no free-text) to prevent invalid combinations such as selecting both km allowance and bus ticket simultaneously. Supports offline entry via Drift local persistence.
expense-registration-screen
Sources & reasoning
Fixed-choice UI is explicitly required to prevent invalid expense type combinations. The screen is the primary entry point for the feature's registration workflow and must surface auto-approval eligibility so peer mentors understand whether their claim will clear automatically.
No source references — this artifact was included based on reasoning alone (see above).
Responsibilities
- Render expense type selector with mutually exclusive options (km, toll, parking, transit)
- Capture distance input for kilometre allowance claims
- Display auto-approval eligibility indicator based on configured threshold
- Submit expense record to Expense Service
- Show validation errors and field-level feedback
Interfaces
render(expenseTypes: List<ExpenseType>): Widget
onSubmit(draft: ExpenseDraft): void
onTypeSelected(typeId: String): void
onDistanceChanged(km: double): void
showAutoApprovalHint(eligible: bool): void
Related Data Entities (3)
Data entities managed by this component