Skip to main content

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, passed
  • error_count, warning_count
  • errors, 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 FunctionCodesParsed JSON or FunctionCode fallback.
  • Validates 4-digit range (1000–9999); failures emit FUNCTION_CODE_FORMAT.
  • Indirect ranges (2300–2324, 2500–2549) and code 2591 emit FUNCTION_CODE_INDIRECT_NONZERO when claimables > 0.
  • Calculates claimable total as ClaimableSalary + ClaimableFringe for indirect checks.
  • Uses parseJsonArray() to normalize multi-code rows.

Code Location: packages/domain-sdac/src/tools/validate-function-codes.tool.ts