sdac-validate-function-codes
Purpose
Checks 4-digit function code format and flags indirect cost function codes with claimable amounts.
Tool type
Deterministic (rule-based)
Tool ID
sdac-validate-function-codes
Inputs
report_id(string)record_ids(number[], optional)
Outputs
success,passederror_count,warning_counterrors,warnings,executed_rules
Example output
{
"success": true,
"passed": false,
"error_count": 1,
"warning_count": 0,
"errors": [
{
"rule_id": "FUNCTION_CODE_INVALID_FORMAT",
"row_number": 33,
"current_value": "21A0",
"message": "Function codes must be four-digit numeric values.",
"severity": "ERROR"
}
],
"warnings": [],
"executed_rules": [
"FUNCTION_CODE_FORMAT",
"FUNCTION_CODE_ALLOWED_SEPARATOR"
]
}
Functional details
- Validates 4-digit function code format and allowed ranges.
- Flags indirect-cost function codes with non-zero claimable amounts.
- Normalizes multi-code rows into a consistent validation list.
Implementation details
- Uses
FunctionCodesParsedJSON orFunctionCodefallback. - Validates 4-digit range (1000–9999); failures emit
FUNCTION_CODE_FORMAT. - Indirect ranges (2300–2324, 2500–2549) and code 2591 emit
FUNCTION_CODE_INDIRECT_NONZEROwhen claimables > 0. - Calculates claimable total as
ClaimableSalary + ClaimableFringefor indirect checks. - Uses
parseJsonArray()to normalize multi-code rows.
Code Location: packages/domain-sdac/src/tools/validate-function-codes.tool.ts