Follow-up from #1944 / PR #2044.
A transferred-in registration's balance lives on its source registration, so it owes nothing to the new event. Reporting totals already exclude it (dashboard billable basis + EventRevenueFigures), but the roster payment-status filter does not: EventRegistration.not_paid_in_full (raw SQL summing allocations vs events.cost_cents) still matches a transferred-in reg (0 allocations, cost > 0), so it shows up under payment_status: "unpaid".
Suggested fix
- Exclude transferred-in regs from
not_paid_in_full (and treat them consistently in paid_in_full / the payment_status scope), e.g. AND transferred_from_registration_id IS NULL, mirroring not_transferred_in.
- Confirm the roster "Paid/Unpaid" counts and the
payment_status filter agree with the dashboard's billable basis.
Context
Follow-up from #1944 / PR #2044.
A transferred-in registration's balance lives on its source registration, so it owes nothing to the new event. Reporting totals already exclude it (dashboard billable basis +
EventRevenueFigures), but the roster payment-status filter does not:EventRegistration.not_paid_in_full(raw SQL summing allocations vsevents.cost_cents) still matches a transferred-in reg (0 allocations, cost > 0), so it shows up underpayment_status: "unpaid".Suggested fix
not_paid_in_full(and treat them consistently inpaid_in_full/ thepayment_statusscope), e.g.AND transferred_from_registration_id IS NULL, mirroringnot_transferred_in.payment_statusfilter agree with the dashboard's billable basis.Context
app/models/event_registration.rb—paid_in_full/not_paid_in_full/payment_statusscopes;not_transferred_inscope already exists.