feat(settlements): make the worklist teach the case it is showing
The screen listed what was wrong with an account and stopped there. The person
reading it is a receptionist mid-shift, not an accountant with time to work out
what "مستلزم محاسَب بأكثر من سعره" means or which of nine tools fixes it — and a
case nobody understands is a case nobody touches, which is money.
So the catalogue now carries the explanation with the label: what the case
means, why it happens, the numbered handling, and which tool does it. Selecting
a case in the rail shows all of that beside the accounts it filters to. Every
row opens its own evidence in place — the months nobody billed, the free-text
lines that are really product sales, where the player stands on his kit — so the
operator reads the account before deciding, without opening the wizard to find
out whether it is worth opening.
New case, highest severity: **لا يوجد له اشتراك مسجَّل**. An active paying player
with invoice history and no enrolment row at all. Renewal billing reads
`enrollments` and nothing else, so these players are not billed late — they are
not billed at all, and no other screen in the system lists them. That is what
made OC-Sport's 95 lost accounts invisible for a month after a programme delete
took their enrolments. The row reads the programme off their last invoice line,
because the enrolment that knew it is gone and that name is what an operator
needs to put them back.
Two things the rebuild fixes on the way past:
- The scan no longer passes `only` to the scanner. Filtering there dropped the
other cases from the result, so the rail beside a selected case read zero
everywhere — which an operator reads as "those are fixed", not "those are
hidden".
- `expanded` is `#[Locked]`. It names a row whose detail is that participant's
own money; settable from the browser it is an id to aim somewhere else.
Verified against the restored tenant: 496 tests, 387 pass / 109 skip on Postgres
and 313 / 183 on SQLite, and every one of the first 40 flagged accounts renders
its detail block. Rendered and inspected at 390px, 820px and 1360px.
Co-Authored-By:
Claude Opus 5 (1M context) <noreply@anthropic.com>
Showing
This diff is collapsed.
This diff is collapsed.
Please register or sign in to comment