Expense Type Service
Component Detail
Service Layer
high complexity
backend
1
Dependencies
1
Dependents
4
Entities
0
Integrations
Description
Core business logic service that manages the expense type catalogue and enforces all associated business rules. Handles CRUD operations for expense types scoped to each organisation, evaluates mutual-exclusivity constraints, validates documentation requirements, and re-validates submitted expenses against current rules on the backend to prevent race conditions between client cache and rule changes.
expense-type-service
Responsibilities
- Manage organisation-scoped expense type CRUD operations
- Evaluate mutual-exclusivity rules for expense type combinations
- Validate documentation requirements against submitted expense data
- Re-validate expenses server-side against current rules at submission time
- Seed default expense type catalogues during organisation onboarding
Interfaces
getExpenseTypeCatalogue(String orgId): List<ExpenseType>
createExpenseType(String orgId, ExpenseTypeInput input): ExpenseType
updateExpenseType(String typeId, ExpenseTypeInput input): ExpenseType
deactivateExpenseType(String typeId): void
getMutualExclusivityGroups(String orgId): List<ExclusivityGroup>
setMutualExclusivityGroup(String orgId, List<String> typeIds): ExclusivityGroup
removeMutualExclusivityGroup(String groupId): void
validateExpenseAgainstRules(ExpenseSubmission submission): ValidationResult
getDocumentationRequirements(String typeId): DocumentationRequirements
getApprovalThreshold(String typeId): double?
seedDefaultCatalogue(String orgId, String orgType): void
checkTypeCompatibility(String typeId, List<String> selectedTypeIds): CompatibilityResult
Relationships
Related Data Entities (4)
Data entities managed by this component