/**
  * @param float $cost
  * @param Event $event
  * @param User $user
  * @param DateTime $now
  *
  * @return number
  */
 protected function getVariation($cost, Event $event, User $user, DateTime $now)
 {
     $variation = $cost * $event->getRegistrationInfo()->getCostVariation() / 100;
     if (!$this->talkManager->eventHasAnyApprovedTalk($event) || $event->isSpeakerPromotionalPeriod($now) && $this->talkManager->userHasAnyTalk($user, $event)) {
         return $variation * -1;
     }
     if ($event->isLateRegistrationPeriod($now)) {
         return $variation;
     }
 }