public function test_getForDependentCalc()
 {
     /** === Test Data === */
     $CALC_TYPE_CODE_BASE = 1024;
     $CALC_TYPE_CODE_DEPEND = 512;
     /** === Mocks === */
     $mLogger = $this->_mockLogger();
     $mConn = $this->_mockConnection();
     $mDba = $this->_mockDbAdapter(null, $mConn);
     $mToolbox = $this->_mockToolbox();
     $mCallRepo = $this->_mockCallRepo();
     $mSubDb = $this->_mockFor('Praxigento\\Bonus\\Hybrid\\Lib\\Service\\Period\\Sub\\Db');
     $mSubWriteOff = $this->_mockFor('\\Praxigento\\Bonus\\Hybrid\\Lib\\Service\\Period\\Sub\\BasedCalcs');
     // $result = $this->_subBasedCalcs->getDependentCalcData($dependentCalcTypeCode, $baseCalcTypeCode);
     $mResult = new PeriodGetForDependentCalcResponse();
     $mResult->markSucceed();
     $mSubWriteOff->expects($this->once())->method('getDependentCalcData')->willReturn($mResult);
     /**
      * Prepare request and perform call.
      */
     /** @var  $call Call */
     $call = new Call($mLogger, $mDba, $mToolbox, $mCallRepo, $mSubDb, $mSubWriteOff);
     $req = new Request\GetForDependentCalc();
     $req->setBaseCalcTypeCode($CALC_TYPE_CODE_BASE);
     $req->setDependentCalcTypeCode($CALC_TYPE_CODE_DEPEND);
     $resp = $call->getForDependentCalc($req);
     $this->assertTrue($resp->isSucceed());
 }
 /**
  * @param Request\GetForDependentCalc $request
  *
  * @return Response\GetForDependentCalc
  */
 public function getForDependentCalc(Request\GetForDependentCalc $request)
 {
     // $result = new Response\GetForDependentCalc();
     $depCalcTypeCode = $request->getDependentCalcTypeCode();
     $baseCalcTypeCode = $request->getBaseCalcTypeCode();
     $this->_logger->info("'Get latest period for Dependent Calculation' operation is started " . "(dependent={$depCalcTypeCode}, base={$baseCalcTypeCode}).");
     $result = $this->_subBasedCalcs->getDependentCalcData($depCalcTypeCode, $baseCalcTypeCode);
     $this->_logger->info("'Get latest period for Dependent Calculation' operation is completed.");
     return $result;
 }
 public function test_getForDependentCalc()
 {
     $obm = \Magento\Framework\App\ObjectManager::getInstance();
     /** @var  $call \Praxigento\Bonus\Hybrid\Lib\Service\IPeriod */
     $call = $obm->get('Praxigento\\Bonus\\Hybrid\\Lib\\Service\\IPeriod');
     $request = new Request\GetForDependentCalc();
     $request->setDependentCalcTypeCode(Cfg::CODE_TYPE_CALC_VALUE_TV);
     $request->setBaseCalcTypeCode(Cfg::CODE_TYPE_CALC_PV_WRITE_OFF);
     $response = $call->getForDependentCalc($request);
     $this->assertTrue($response->isSucceed());
 }
 public function test_getForDependentCalc()
 {
     $obm = \Magento\Framework\App\ObjectManager::getInstance();
     /** @var  $call \Praxigento\BonusBase\Service\Period\Call */
     $call = $obm->get('Praxigento\\BonusBase\\Service\\Period\\Call');
     $req = new Request\GetForDependentCalc();
     $req->setBaseCalcTypeCode('LOYALTY_BON_COMPRESS');
     $req->setDependentCalcTypeCode('HYBRID_VALUE_OV');
     $resp = $call->getForDependentCalc($req);
     $this->assertTrue($resp->isSucceed());
 }
 public function getForDependentCalc(Request\GetForDependentCalc $request)
 {
     $result = new Response\GetForDependentCalc();
     $baseCalcTypeCode = $request->getBaseCalcTypeCode();
     $dependentCalcTypeCode = $request->getDependentCalcTypeCode();
     $msg = "'Get latest period for Dependent Calculation' operation is started " . "(dependent={$dependentCalcTypeCode}, base={$baseCalcTypeCode}).";
     $this->_logger->info($msg);
     $def = $this->_manTrans->begin();
     try {
         /* get IDs for calculations codes */
         $baseCalcTypeId = $this->_repoTypeCalc->getIdByCode($baseCalcTypeCode);
         $dependentCalcTypeId = $this->_repoTypeCalc->getIdByCode($dependentCalcTypeCode);
         /* get the last base period data from repo */
         $basePeriodData = $this->_repoService->getLastPeriodByCalcType($baseCalcTypeId);
         if (is_null($basePeriodData)) {
             $msg = "There is no period for '{$baseCalcTypeCode}' calculation yet (base). " . "Depended '{$dependentCalcTypeCode}' could not be calculated.";
             $this->_logger->warning($msg);
         } else {
             /* there is period for base calculation, place base data into response */
             $result->setBasePeriodData($basePeriodData);
             $baseDsBegin = $basePeriodData->getDstampBegin();
             $baseDsEnd = $basePeriodData->getDstampEnd();
             /* then get data for depended period & calc */
             $periodId = $basePeriodData->getId();
             $result = $this->_subDepended->getDependedCalc($result, $periodId, $baseCalcTypeCode, $baseDsBegin, $baseDsEnd, $dependentCalcTypeCode, $dependentCalcTypeId);
         }
         $this->_manTrans->commit($def);
         /* mark succeed if depended data exists */
         if ($result->getDependentPeriodData() && $result->getDependentCalcData()) {
             $result->markSucceed();
         }
     } finally {
         $this->_manTrans->end($def);
     }
     $this->_logger->info("'Get latest period for Dependent Calculation' operation is completed.");
     return $result;
 }