Skip to main content

Variable: STRANDED_ENTRY_STATUSES

const STRANDED_ENTRY_STATUSES: readonly ["submitted", "approved"]

Defined in: src/server/services/strandedHours.ts:25

Statuses a stranded (late, unpaid) entry can hold. Close locks draft/submitted/approved on every paid assignment (close_and_lock_payroll_batch, 0041) — but only over the CALENDAR range, while pricing spans the settling weeks (#162). So a submitted/approved entry whose paying run is closed is one of two things, split by when it was created vs the batch's pricing snapshot: created after → arrived too late, payable-but-never-paid (genuinely stranded); created before → PRICED by that run but left unlocked (a tail day outside the calendar lock range) — already paid, never to be paid again. pending_approval is deliberately excluded: pre-close ones were already paid at the contracted cap, and post-close ones must clear the overage gate first (approval flips them to approved, which lands them here). draft is not payable at all.