You are not doing something right with the file then. Internal server error will indicate an error with the file itself or php syntax not with the execution of the function.
Example - If it works for QT it should work for you too - classes/XLite/Module/CDev/Coupons/Model/Order.php
Code:
/**
* Called when an order successfully placed by a client
*
* @return void
*/
public function processSucceed()
{
parent::processSucceed();
foreach ($this->getUsedCoupons() as $usedCoupons) {
$usedCoupons->markAsUsed();
}
}