PASS  GET /bills is 200
PASS  summary counts all bills
PASS  page 1 is the 25 newest bills
PASS  footer total charged over every matching bill
PASS  page 2 starts at offset 25
PASS  page 999 is clamped to the last page
PASS  sort by customer name, ascending, id breaks ties
PASS  sort by amount charged, descending, 10 rows
PASS  sort by outlet name, page 3 of 50 rows
PASS  a page size outside the list falls back to 25
PASS  an injected sort column is ignored (default order)
PASS  an injected outlet is ignored (no filter)
PASS  filter by outlet and status
PASS  filtered summary
PASS  filter by date range, 'to' inclusive
PASS  an impossible date is ignored
PASS  partial=1 returns only the grid fragment
PASS  a message with a forged bill id is not shown
PASS  edit=B2953 shows the inline editor
PASS  delete=B2951 asks for confirmation in the row
PASS  CSV: text/csv, attachment
PASS  CSV: BOM, header and one line per bill
PASS  CSV: a comma inside a field is quoted
PASS  CSV: rows in grid order
PASS  status queued -> finished answers 303 See Other
PASS  the redirect keeps the grid's state and names the result
PASS  the message is shown and the bill moved
PASS  the same stale edit again is a conflict
PASS  skipping a step is refused
PASS  an unknown bill is reported
PASS  a queued but partly paid bill is not deleted
PASS  a departed bill is not deleted
PASS  a queued unpaid bill is deleted
PASS  it is gone from the grid
PASS  deleting it twice says it does not exist
PASS  a POST from another origin is refused with 403
PASS  a cross-site POST (Fetch Metadata) is refused with 403
PASS  /static/grid.css is served
PASS  /static/grid-enhance.js is served
PASS  /static/profitina-logo-horizontal.png is served
PASS  database: B2953 finished at the shop clock
PASS  database: one StatusLog row written in the same transaction
PASS  database: B2951 and its log are gone
PASS  database: B2950 untouched by the refused cross-site POST

44 passed, 0 failed
--- last lines of the server log ---
127.0.0.1 - - [23/Sep/2026 22:49:00] "POST /bills/delete HTTP/1.1" 403 -
127.0.0.1 - - [23/Sep/2026 22:49:00] "POST /bills/delete HTTP/1.1" 403 -
127.0.0.1 - - [23/Sep/2026 22:49:00] "GET /static/grid.css HTTP/1.1" 200 -
127.0.0.1 - - [23/Sep/2026 22:49:00] "GET /static/grid-enhance.js HTTP/1.1" 200 -
127.0.0.1 - - [23/Sep/2026 22:49:00] "GET /static/profitina-logo-horizontal.png HTTP/1.1" 200 -
