From da9a449d5578b3a6690f469113743144324701cd Mon Sep 17 00:00:00 2001 From: James Griffin Date: Sat, 18 Jul 2026 18:06:58 -0300 Subject: [PATCH] Update README and group-classes doc to reflect shipped Stripe payments The README still listed Payments as partial with the Stripe card charge pending, and group-classes.md still described the pre-#7 payment seam. Both are behind the code: StripeGateway/PaymentEndpoint ship the live card charge, and enrolments create and link payments via PaymentService. Fixes #73 Co-Authored-By: Claude Fable 5 --- README.md | 8 ++------ docs/features/group-classes.md | 12 +++++++----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 5e549f9..8858830 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A WordPress plugin for instructor/student lesson scheduling — private lessons and group classes — with offerings, intake questions, versioned policies, account -registration, and (coming) online payments. +registration, and online payments. **Version:** 1.0.0-rc.1 · **Requires:** WordPress 6.0+, PHP 8.1+ · **License:** GPL-2.0-or-later @@ -35,13 +35,9 @@ model, REST API, classes, and tests. For contributor/architecture guidance see | Lesson booking (offering → questions → policies) | [lesson-booking.md](docs/features/lesson-booking.md) | ✅ Implemented | | Group classes (capacity-enforced enrolment) | [group-classes.md](docs/features/group-classes.md) | ✅ Implemented | | Student administration (studio-admin view) | [student-administration.md](docs/features/student-administration.md) | ✅ Implemented | -| Payments (e-transfer/comp + receipts + HST; Stripe card charge pending) | [payments.md](docs/features/payments.md) | 🟡 Partial | +| Payments (Stripe card charge + e-transfer/comp + receipts + HST) | [payments.md](docs/features/payments.md) | ✅ Implemented | | Payment reporting (monthly per-instructor + HST + CSV) | [payment-reporting.md](docs/features/payment-reporting.md) | ✅ Implemented | -> Payments are deliberately deferred to the end: booking and enrolment ship with a -> clean seam (a lesson lands `pending`, an enrolment `active`, with `payment_id` -> null) into which the pay→confirm + receipt step plugs later. - ## Shortcodes | Shortcode | Purpose | diff --git a/docs/features/group-classes.md b/docs/features/group-classes.md index 5665396..e1365ba 100644 --- a/docs/features/group-classes.md +++ b/docs/features/group-classes.md @@ -65,11 +65,13 @@ instructor's group classes if the caller has `view_own_lessons` on those offerin - Frontend: `Unsupervised\Schedular\GroupClass\GroupClassPage` (`[us_group_classes]` shortcode; `offering="…"` restricts it to a single class for embedding on a dedicated page — the block equivalent is the `offeringId` attribute) - Reuses `Registration\RegistrationGate` (intake answers + booking-scoped policy acceptance, type `enrollment`) -> **Payment seam:** payment is deferred to #7. An enrolment is created with -> `status = active` and `payment_id = null`; the pay→confirm + receipt step plugs -> in later. Instructor-specific enrolment views (the spec's "under My Lessons") -> are a follow-up — this iteration ships the studio-admin **Group Classes** page -> (`view_all_lessons`) plus per-student/per-instructor REST queries. +> **Payment:** a priced enrolment creates a payment via `Payment\PaymentService` +> (`registration_type = enrollment`) and links it as `payment_id`; unpriced +> enrolments return `payment: null` and skip the payment step. See `payments.md` +> for the card/e-transfer/comp flows. Instructor-specific enrolment views (the +> spec's "under My Lessons") are a follow-up (#71) — this iteration ships the +> studio-admin **Group Classes** page (`view_all_lessons`) plus +> per-student/per-instructor REST queries. ## Tests - `tests/Unit/GroupClass/EnrollmentTest.php` -- 2.54.0