/**
  * Registry next period if current period has complete calculation.
  *
  * @param \Praxigento\BonusBase\Service\Period\Response\GetForPvBasedCalc $result
  * @param int $calcTypeId
  * @param string $periodType see \Praxigento\Core\Tool\IPeriod::TYPE_*
  * @param \Praxigento\BonusBase\Data\Entity\Period $periodData
  * @return \Praxigento\BonusBase\Service\Period\Response\GetForPvBasedCalc
  */
 public function _registryNextPeriod(\Praxigento\BonusBase\Service\Period\Response\GetForPvBasedCalc $result, $calcTypeId, $periodType, \Praxigento\BonusBase\Data\Entity\Period $periodData)
 {
     $periodEnd = $periodData->getDstampEnd();
     /* calculate new period bounds */
     $periodNext = $this->_toolPeriod->getPeriodNext($periodEnd, $periodType);
     $dsNextBegin = $this->_toolPeriod->getPeriodFirstDate($periodNext);
     $dsNextEnd = $this->_toolPeriod->getPeriodLastDate($periodNext);
     /* check "right" bound according to now */
     $periodNow = $this->_toolPeriod->getPeriodCurrent(time(), $periodType);
     $dsNowEnd = $this->_toolPeriod->getPeriodLastDate($periodNow);
     if ($dsNextEnd < $dsNowEnd) {
         /* registry new period */
         /* create new period for given calculation type */
         $newPeriod = new EPeriod();
         $newPeriod->setCalcTypeId($calcTypeId);
         $newPeriod->setDstampBegin($dsNextBegin);
         $newPeriod->setDstampEnd($dsNextEnd);
         $periodId = $this->_repoPeriod->create($newPeriod);
         $newPeriod->setId($periodId);
         /* create related calculation */
         $newCalc = new ECalculation();
         $newCalc->setPeriodId($periodId);
         $dateStarted = $this->_toolDate->getUtcNowForDb();
         $newCalc->setDateStarted($dateStarted);
         $newCalc->setState(Cfg::CALC_STATE_STARTED);
         $calcId = $this->_repoCalc->create($newCalc);
         $newCalc->setId($calcId);
         $result->setPeriodData($newPeriod);
         $result->setCalcData($newCalc);
     } else {
         $msg = "New period can be registered in the past only (to register: {$dsNextBegin}-{$dsNextEnd}, " . "current end: {$dsNowEnd}).";
         $this->_logger->warning($msg);
         $result->setErrorCode(ResponsePv::ERR_PERIOD_CAN_BE_REGISTERED_IN_PAST_ONLY);
     }
     return $result;
 }