← All tests
Item #5 — Daily Sales Report (Closed Sessions Today)
SHIPPED 2026-06-02 · revised 2026-06-03 (layout + POS + moved to Reports page) · Gate 1 12/12 · Gate 2 5/5 · regression 51/51
Reworks the broken per-session “Daily Sale” CSV into a multi-session
PDF aggregating every closed session opened today for the shop, plus a
POS More-Actions rename. Layout follows Narong’s mockup: Sales
(Session › Categories › Items), Payments, Discounts,
Session Control (Name / Expected / Counted), and a Cash rollup — each section
sub-totalled per session then summed overall.
What changed
- New report — a multi-session PDF of a day’s closed sessions (was the old broken per-session CSV). Scope: sessions where
opened_at is the report date AND status = Closed; open sessions excluded.
- Access point (Notion task 23, 2026-06-03) — printing moved to Reports → Daily Sale Report → “Print / PDF” so you no longer have to open a POS session; prints the viewed date + selected shop. Removed the daily item from the POS More-Actions menu.
- Menu rename — More Actions “Print PDF” → “Session Report (PDF)” (the single-session closing report stays in the POS menu).
- Layout polish (Narong 2026-06-03) — spacing after each section header; dashed separators between sessions in Sales / Payments / Discounts / Session Control; the Overall totals are boxed; every section’s session header carries Opened / Closed / Status; quantities show as integers (1, not 1.0).
- POS column + sort — each session header shows its register (
POS: Register #N); sessions sorted by register.
- No migration — read-only aggregation via batch DAOs (one round-trip per section).
Sample report (illustrative data, 2 sessions)
Rendered straight from the PDF builder — matches the mockup layout.
Open sample PDF ↗
Live prod output (lumiere, 2 seeded closed sessions)
Captured from the deployed route on lumiere-coffee.nixtech.app during
Gate 2 (returned 200 application/pdf); seed rows cleaned up afterward.
Open prod PDF ↗