Service Layer medium complexity backend
1
Dependencies
1
Dependents
13
Entities
0
Integrations

Description

Backend service handling the business logic for expense claim review workflows. Processes individual and batch approval/rejection requests via REST API endpoints, enforces role-based access control to ensure only Coordinators and Org Admins can act on claims, and writes audit log entries for every approval action to satisfy Bufdir compliance requirements.

Feature: Expense Approval Queue

expense-approval-service

Responsibilities

  • Process individual expense approve and reject actions via PATCH /api/v1/expenses/:id/approve and /reject
  • Handle batch approval and rejection for multiple expense claims in a single operation
  • Enforce RBAC ensuring only Coordinator and Org Admin roles can access the queue
  • Write audit trail entries to audit_logs for every approval action taken
  • Validate expense state transitions (pending → approved/rejected) and prevent double-processing

Interfaces

approveExpense(expenseId: string, approverId: string): Promise<ExpenseApproval>
rejectExpense(expenseId: string, approverId: string, reason: string): Promise<ExpenseApproval>
batchApprove(expenseIds: string[], approverId: string): Promise<BatchResult>
batchReject(expenseIds: string[], approverId: string, reason: string): Promise<BatchResult>
getExpenseQueue(filters: ExpenseQueueFilters, pagination: PaginationParams): Promise<PaginatedExpenses>
getExpenseDetail(expenseId: string): Promise<ExpenseWithReceipts>
validateApproverPermission(userId: string, organizationId: string): Promise<boolean>
logApprovalAction(action: ApprovalAction): Promise<void>

Relationships

Dependencies (1)

Components this component depends on

Dependents (1)

Components that depend on this component