Payment reporting: monthly per-instructor view + CSV export #8

Closed
opened 2026-06-05 12:57:38 +00:00 by thatguygriff · 1 comment
Owner

Monthly payments view per instructor with a downloadable spreadsheet (CSV) export. Studio admin sees all instructors and can filter; instructors see only their own.

Spec: docs/features/payment-reporting.md

Scope

  • Built on {prefix}us_payments (no new table); group by month + instructor; join student + offering for display
  • Caps: view_all_payments (admin, all + filter), view_own_payments (instructor, own only), export_payments
  • Admin Payments page: month picker, instructor filter (admin), monthly total, Export button
  • REST: GET /payments and GET /payments/export (returns text/csv with attachment header); query month=YYYY-MM, instructor_id
  • PaymentReportController, PaymentExporter, PaymentRepository::report()

Depends on

Payments

Acceptance

  • Report scoping matches caller's caps; CSV export matches the filtered rows; tests under tests/Unit/Payment/ passing
Monthly payments view per instructor with a downloadable spreadsheet (CSV) export. Studio admin sees all instructors and can filter; instructors see only their own. **Spec:** `docs/features/payment-reporting.md` ## Scope - Built on `{prefix}us_payments` (no new table); group by month + instructor; join student + offering for display - Caps: `view_all_payments` (admin, all + filter), `view_own_payments` (instructor, own only), `export_payments` - Admin **Payments** page: month picker, instructor filter (admin), monthly total, **Export** button - REST: `GET /payments` and `GET /payments/export` (returns `text/csv` with attachment header); query `month=YYYY-MM`, `instructor_id` - `PaymentReportController`, `PaymentExporter`, `PaymentRepository::report()` ## Depends on Payments ## Acceptance - Report scoping matches caller's caps; CSV export matches the filtered rows; tests under `tests/Unit/Payment/` passing
thatguygriff added the paymentsfeature labels 2026-06-05 12:57:38 +00:00
Author
Owner

Closing as complete. Implemented and merged in PR #27 (monthly per-instructor report + CSV export, with HST aggregation).

Closing as complete. Implemented and merged in PR #27 (monthly per-instructor report + CSV export, with HST aggregation).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Unsupervised/unsupervised-scheduler#8