I've just discovered something rather disturbing. I had given my participants the ability to pay for their events/past events where they had previously chosen offline payment using the "Make Payment" button on the Registration History page.
But it turns out, that by allowing that, there's a bug where they can make themselves dissapear from the roster and their debt is wiped away.
When the user clicks "Make Payment" and then chooses a payment method and then clicks "Process registration" their payment method is immediately changed, and their payment status set to "Pending" and they are taken to the payment processor Page (iDeal, PayPal, etc).
If they choose "cancel and go back to merchant", they are taken to a page that says "Your registration has been cancelled."
They no longer show up at all in backend registrant management, even though they're in the DB.
I knew the registration id of the test case, so I was able to load it.
His payment method shows as "PayPal" and his payment status still shows "Pending". It seems this is not a use case you allowed for in your display code, so the registration is totally hidden.
This is a BIG problem, as it's a get-out-of-debt free card for users who registered and are now trying to make payment
The registration history page needs to restore their previous payment method and status if they back out of the payment process.
I'm not sure if this is possible, but I think the simplest solution would be to not alter the registration status of the historical registration before sending the user to the payment page. It should be left on "Offline Payment" / "Pending" until a successful payment is made. Once the payment processor returns them to our page, then we would update the Payment method, transaction ID, and payment status all at once.