示例#1
0
 /**
  * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
  * @param \Orm\Zed\Discount\Persistence\SpyDiscount $discountEntity
  *
  * @return bool
  */
 protected function isDiscountApplicable(QuoteTransfer $quoteTransfer, SpyDiscount $discountEntity)
 {
     if ($discountEntity->getDiscountType() === DiscountConstants::TYPE_VOUCHER) {
         $voucherCode = $discountEntity->getVoucherCode();
         if ($this->voucherValidator->isUsable($voucherCode) === false) {
             return false;
         }
     }
     $queryString = $discountEntity->getDecisionRuleQueryString();
     if (!$queryString) {
         return true;
     }
     try {
         $compositeSpecification = $this->decisionRuleBuilder->buildFromQueryString($queryString);
         foreach ($quoteTransfer->getItems() as $itemTransfer) {
             if ($compositeSpecification->isSatisfiedBy($quoteTransfer, $itemTransfer) === true) {
                 return true;
             }
         }
     } catch (QueryStringException $exception) {
         $this->getLogger()->warning($exception->getMessage(), ['exception' => $exception]);
     }
     return false;
 }
示例#2
0
 /**
  * @param int $amount
  * @param string|null $voucherCoder
  *
  * @return \Orm\Zed\Discount\Persistence\SpyDiscount
  */
 protected function createDiscountEntity($amount, $voucherCoder = null)
 {
     $discountEntity = new SpyDiscount();
     $discountEntity->setVirtualColumn('VoucherCode', $voucherCoder);
     $discountEntity->setDecisionRuleQueryString('query string');
     $discountEntity->setAmount($amount);
     return $discountEntity;
 }
 /**
  * @param integer $idDiscount
  * @param \Orm\Zed\Discount\Persistence\SpyDiscount $discountEntity
  * @param \Generated\Shared\Transfer\DiscountConfiguratorTransfer $discountConfigurator
  *
  * @return void
  */
 protected function hydrateDiscountVoucher($idDiscount, SpyDiscount $discountEntity, DiscountConfiguratorTransfer $discountConfigurator)
 {
     if ($discountEntity->getFkDiscountVoucherPool()) {
         $discountVoucherTransfer = new DiscountVoucherTransfer();
         $discountVoucherTransfer->setIdDiscount($idDiscount);
         $discountVoucherTransfer->setFkDiscountVoucherPool($discountEntity->getFkDiscountVoucherPool());
         $discountConfigurator->setDiscountVoucher($discountVoucherTransfer);
     }
 }
示例#4
0
 /**
  * @param \Orm\Zed\Discount\Persistence\SpyDiscount $discountEntity
  *
  * @return string
  */
 protected function getFormattedAmount(SpyDiscount $discountEntity)
 {
     return $this->getCalculatorPlugin($discountEntity->getCalculatorPlugin())->getFormattedAmount($discountEntity->getAmount());
 }
 /**
  * @return \Orm\Zed\Discount\Persistence\SpyDiscount
  */
 protected function createDiscountEntity()
 {
     $discountEntity = new SpyDiscount();
     $discountEntity->setAmount(10)->setDecisionRuleQueryString('decisionRule string')->setDisplayName('display name')->setDescription('description')->setCollectorQueryString('collector query string')->setCalculatorPlugin('Calculator plugin')->setValidFrom('2001-01-01')->setValidTo('2001-01-01')->setIsActive(true)->setFkDiscountVoucherPool(1)->setIsExclusive(true);
     return $discountEntity;
 }
 /**
  * @param string $voucherCode
  * @param \Orm\Zed\Discount\Persistence\SpyDiscount $discountEntity
  *
  * @return \Orm\Zed\Discount\Persistence\SpyDiscountVoucher
  */
 protected function createVoucherCode($voucherCode, SpyDiscount $discountEntity)
 {
     $voucherEntity = new SpyDiscountVoucher();
     $voucherEntity->setFkDiscountVoucherPool($discountEntity->getFkDiscountVoucherPool());
     $voucherEntity->setCode($voucherCode);
     $voucherEntity->setIsActive(true);
     $voucherEntity->save();
     return $voucherEntity;
 }
示例#7
0
 /**
  * @param \Generated\Shared\Transfer\DiscountConfiguratorTransfer $discountConfiguratorTransfer
  * @param \Orm\Zed\Discount\Persistence\SpyDiscount $discountEntity
  *
  * @return void
  */
 protected function hydrateDiscountEntity(DiscountConfiguratorTransfer $discountConfiguratorTransfer, SpyDiscount $discountEntity)
 {
     $discountEntity->fromArray($discountConfiguratorTransfer->getDiscountGeneral()->toArray());
     $discountEntity->setAmount($discountConfiguratorTransfer->getDiscountCalculator()->getAmount());
     $discountEntity->setCalculatorPlugin($discountConfiguratorTransfer->getDiscountCalculator()->getCalculatorPlugin());
     $discountEntity->setCollectorQueryString($discountConfiguratorTransfer->getDiscountCalculator()->getCollectorQueryString());
     $discountEntity->setDecisionRuleQueryString($discountConfiguratorTransfer->getDiscountCondition()->getDecisionRuleQueryString());
 }