User Interface medium complexity mobile
0
Dependencies
0
Dependents
3
Entities
0
Integrations

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.

Feature: Travel Expense Registration

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