ExpenseApprovalService
Component Detail
Service Layer
medium complexity
backend
0
Dependencies
0
Dependents
6
Entities
0
Integrations
Description
Business logic layer that processes reviewer decisions on expense claims. Validates reviewer permissions against organizational hierarchy, applies approval/rejection state transitions, and triggers downstream notifications to the submitting peer mentor.
expense-approval-service
Sources & reasoning
Source lines 68-70 establish that HLF requires threshold-based manual attestation for expenses above the auto-approval limit, implying a manual review queue is needed in the admin portal. Line 342 places reimbursement handling in Phase 2 (v1.0). The blueprint lists this as an admin-web-portal feature under admin-expense-approval.
-
docs/source/likeperson.md · line 68-70Begge organisasjoner har behov for registrering av kilometergodtgjørelse, bompenger, parkering og kollektivt. Behovene er like, men HLF har mest detaljert krav: - Automatisk godkjenning under 50 km / uten utlegg, manuell attestering ellers (HLF).
-
docs/source/likeperson.md · line 342Reiserefusjonshåndtering (faste valg, terskelbasert godkjenning)
Responsibilities
- Validate that the acting reviewer has authority over the claim's organizational unit
- Execute state transitions (pending → approved / rejected / correction-requested)
- Send notifications to submitters upon decision
- Retrieve filtered and paginated claim lists for the queue view
- Log approval decisions with reviewer identity and timestamp for audit trail
Interfaces
getQueue(reviewerId: string, filters: QueueFilters, page: number, pageSize: number): PagedResult<ExpenseClaim>
approveClaim(reviewerId: string, claimId: string): ApprovalResult
rejectClaim(reviewerId: string, claimId: string, reason: string): ApprovalResult
requestCorrection(reviewerId: string, claimId: string, note: string): ApprovalResult
getClaimDetail(reviewerId: string, claimId: string): ExpenseClaimDetail
Related Data Entities (6)
Data entities managed by this component