When we try to handle backend contributions sometimes we need manually change contribution statuses. Unfortunately some contribution status changes are restricted. From 'pending refund' we cannot change back to 'pending' or to 'in progress'. But even a more basic change like from 'pending' to 'in progress'.
I checked the wiki at http://wiki.civicrm.org/confluence/display/CRM/CiviAccounts+Data+Flow#CiviAccountsDataFlow-Otherchangestocontributionstatus but that does not seem totally up to date (pending refund / progress status)
Is there further documentation on an underlying reasoning and workflow logic of these restrictions? What would go wrong if this wasn't restricted? Could the check be a little too harsh?
BTW. They are handled by checkStatusValidation in CRM/Contribute/BAO/contribute.php