Expense Approval Service
Component Detail
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.
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
Related Data Entities (13)
Data entities managed by this component
Audit Log
16 fields
audit
Expense
23 fields
core
Expense Approval
13 fields
core
Expense Receipt
20 fields
core
Expense Type
20 fields
configuration
Reimbursement
17 fields
core
Audit Logs
14 fields
audit
Expense Approvals
13 fields
core
Expense Receipts
22 fields
core
Expense Types
25 fields
configuration
Expenses
31 fields
core
Reimbursements
21 fields
core
Users
26 fields
core