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.

Feature: Expense Types & Requirements

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

Dependencies (1)

Components this component depends on

Dependents (1)

Components that depend on this component