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

Description

Stateless rule-evaluation service that applies the expense type configuration rules (mutual-exclusivity groups, documentation requirements, amount thresholds) to a given expense or set of expense lines. Invoked server-side at submission time to prevent race conditions where rules have changed since the mobile client last cached the catalogue. Returns structured validation errors for display in the app or admin portal approval queue.

Feature: Expense Types & Requirements

expense-rule-validation-engine

Responsibilities

  • Evaluate mutual-exclusivity constraints across selected expense types
  • Check whether required documentation has been attached for each type
  • Validate per-type amount thresholds and flag violations
  • Return structured, localised validation error messages
  • Support both single-expense and batch validation modes

Interfaces

validateSingleExpense(expense: ExpenseSubmission, catalogue: ExpenseTypeCatalogue): ValidationResult
validateBatch(expenses: ExpenseSubmission[], catalogue: ExpenseTypeCatalogue): BatchValidationResult
checkExclusivityViolations(selectedTypeIds: string[], rules: ExclusivityGroup[]): string[]
checkDocumentationRequirements(typeId: string, attachments: Attachment[]): boolean
checkThresholdViolation(typeId: string, amountNok: number): ThresholdViolation | null
buildValidationReport(results: ValidationResult[]): ValidationReport

Relationships

Dependents (1)

Components that depend on this component

Related Data Entities (2)

Data entities managed by this component