public function create($entity, $activityTypeId, $balanceChange = 0, $paidToDateChange = 0, $altEntity = null)
{
if ($entity instanceof Client) {
$client = $entity;
} elseif ($entity instanceof Invitation) {
$client = $entity->invoice->client;
} else {
$client = $entity->client;
}
// init activity and copy over context
$activity = self::getBlank($altEntity ?: ($client ?: $entity));
$activity = Utils::copyContext($activity, $entity);
$activity = Utils::copyContext($activity, $altEntity);
$activity->activity_type_id = $activityTypeId;
$activity->adjustment = $balanceChange;
$activity->client_id = $client ? $client->id : 0;
$activity->balance = $client ? $client->balance + $balanceChange : 0;
$keyField = $entity->getKeyField();
$activity->{$keyField} = $entity->id;
$activity->ip = Request::getClientIp();
$activity->save();
if ($client) {
$client->updateBalances($balanceChange, $paidToDateChange);
}
return $activity;
}