RECORDGOD/app
type-two 5351cfb9c2 feat(pos): rebuild Sales — 3 tabs, smooth checkout + tender/change, print+email receipts
7 tabs → Register / History / Settings. Register: search/scan + cart + checkout flow
(cash tender→change, split tenders, layby deposit, notes) → completes → receipt auto-pops.
Receipts now server-rendered (app/receipts.py, one template) with per-item discounts, GST
breakdown, split lines, tendered/change, store header/footer; Print opens a clean window
(no visibility hack); Email via app/mailer.py (stdlib SMTP, creds in vault, admin-only) with
a Settings 'send test' button. History merges past sales + laybys (reprint/collect). Settings
holds currency/GST/discount + receipt header/footer + promotions. sales gains amount_tendered
+ notes; SaleIn carries tendered/notes; /sales/{id}/receipt + /{id}/email + /email-test added.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 16:29:42 +10:00
..
__init__.py feat: RecordGod founding — service scaffold + MariaDB→Postgres migration 2026-06-19 17:18:50 +10:00
admin_routes.py feat(staff): time clock — clock on/off = shift = timecard 2026-06-23 15:40:02 +10:00
auth.py feat(auth): staff accounts + roles — operators run the store, admins keep the keys 2026-06-23 15:33:19 +10:00
collections_routes.py feat(collections): interactive editor — click-map crate select, genre/style/price/year rules, live match stats, priority 2026-06-22 21:33:15 +10:00
db.py feat: RecordGod founding — service scaffold + MariaDB→Postgres migration 2026-06-19 17:18:50 +10:00
disc_images.py fix(images): /img/r serves local copy else 302 to discogs webp (server-side fetch is CF-blocked); drop unused pillow 2026-06-22 21:48:08 +10:00
layout_routes.py feat(shop): P4 wantlist — public 'request a record' page + admin queue 2026-06-23 01:29:00 +10:00
mailer.py feat(pos): rebuild Sales — 3 tabs, smooth checkout + tender/change, print+email receipts 2026-06-23 16:29:42 +10:00
main.py feat(pos): rebuild Sales — 3 tabs, smooth checkout + tender/change, print+email receipts 2026-06-23 16:29:42 +10:00
mirror.py feat: self-contained enrichment — disc_cache (own catalog copy), no external DB dependency 2026-06-21 13:16:56 +10:00
navigator_routes.py feat(nav): colour crates by type in the rack diagram (material_color) 2026-06-23 11:26:34 +10:00
receipts.py feat(pos): rebuild Sales — 3 tabs, smooth checkout + tender/change, print+email receipts 2026-06-23 16:29:42 +10:00
sales_routes.py feat(pos): rebuild Sales — 3 tabs, smooth checkout + tender/change, print+email receipts 2026-06-23 16:29:42 +10:00
settings_routes.py feat(pos): rebuild Sales — 3 tabs, smooth checkout + tender/change, print+email receipts 2026-06-23 16:29:42 +10:00
shop_routes.py feat(shop): P4 wantlist — public 'request a record' page + admin queue 2026-06-23 01:29:00 +10:00
vault.py feat: standalone RecordGod web UI — landing, control-room dash, encrypted secrets vault 2026-06-21 12:40:07 +10:00
virtual.py feat(virtual): finish the 3D store port — per-room scoping, decals, portals 2026-06-21 21:00:02 +10:00
wowplatter_v1.py feat: deploy-ready — env-aware Discogs enrichment + Dockerfile 2026-06-21 13:08:49 +10:00