Comments
The proposed workaround is:
 Following extensive investigation, the behavior is intended as design in the code below:
TransactionReversal_Vend.reversal()
if (isAdvanceReversal)
{
 reversalDate = DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());
}
 In addition, following investigation, we can also reverse prepayment invoice by click on remove prepayment functionality on the purchase order form.
The problem: Reversal date is the system date and not the invoice date or the session date. It would be better to follow the function of reversal of vendor transactions: to chose the reversal date. Otherwise I would have problems in my year end reports (balace sheet and profit and loss) if prepayment invoice posting date is different from reversal transation date!