Withheld approval state renders as not-tracked, not clear

Fixkamo-internal
Ya
12 Agosti 2026, 20:15 UTC
Mwandishi
kamo
Ahadi ya
d13eb1b

attendanceState() marked every member 'clear' whenever blockingExceptions was 0 and timecardState wasn't 'SUBMITTED' — true for every member under a caller lacking FINALIZE_PAY_PERIODS, since the server sends timecardState: null for all of them. A withheld caller's compliance matrix was asserting "Clear" org-wide about a fact they were never told, and feeding score: 0 into the worst-first sort. joinMemberRows now takes an explicit approvalsWithheld signal (derived from attendance.awaitingApproval === null, same as AttentionLedger already reads) rather than inferring it from timecardState alone, so a genuinely untracked member stays distinguishable from one whose state was withheld. A real blocking exception still surfaces as 'overdue' under withholding — that data is unaffected by the payroll gate. Also widened AttentionLedger's withheld check from `=== null` to `null || undefined` to match OverviewPillars, closing the gap against a future upstream @JsonInclude(NON_NULL) silently reintroducing the same bug.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei