/**
  * @param string $type
  * @param string $ruleField
  *
  * @return array|string[]
  */
 protected function transformComparators($type, $ruleField)
 {
     $comparators = $this->discountFacade->getQueryStringFieldExpressionsForField($type, $ruleField);
     foreach ($comparators as $key => $comparator) {
         $comparators[$key] = preg_replace('/\\s/i', '_', $comparator);
         if (isset($this->queryOperatorMapping[$comparator])) {
             $comparators[$key] = $this->queryOperatorMapping[$comparator];
         }
     }
     return $comparators;
 }
Пример #2
0
 /**
  * @return void
  */
 public function testDistributeShouldNotDistributeDiscountsForObjectsWithZeroGrossPrices()
 {
     $items = $this->getItems([self::ITEM_GROSS_PRICE_ZERO, self::ITEM_GROSS_PRICE_ZERO, self::ITEM_GROSS_PRICE_ZERO]);
     $discountTransfer = new DiscountTransfer();
     $discountTransfer->setAmount(self::DISCOUNT_AMOUNT_100);
     $collectedDiscountTransfer = new CollectedDiscountTransfer();
     $collectedDiscountTransfer->setDiscount($discountTransfer);
     $collectedDiscountTransfer->setDiscountableItems($items);
     $this->discountFacade->distributeAmount($collectedDiscountTransfer);
     $this->assertEquals(0, $items[0]->getOriginalItemCalculatedDiscounts()->count());
     $this->assertEquals(0, $items[1]->getOriginalItemCalculatedDiscounts()->count());
     $this->assertEquals(0, $items[2]->getOriginalItemCalculatedDiscounts()->count());
 }
 /**
  * @param array $codes
  *
  * @return bool
  */
 public function releaseUsedVoucherCodes(array $codes)
 {
     return $this->discountFacade->releaseUsedVoucherCodes($codes);
 }
 /**
  * @return void
  */
 public function testWhenMultipleVouchersFromSamePoolUsedShouldUseOnlyOnce()
 {
     $discountEntity = $this->createDiscountFixtures('', 'sku = "*"', DiscountConstants::TYPE_VOUCHER);
     $code1 = 'code1';
     $code2 = 'code2';
     $code3 = 'code3';
     $this->createVoucherCode($code1, $discountEntity);
     $this->createVoucherCode($code2, $discountEntity);
     $this->createVoucherCode($code3, $discountEntity);
     $quoteTransfer = $this->createQuoteTransfer();
     $discountTransfer = new DiscountTransfer();
     $discountTransfer->setVoucherCode($code1);
     $quoteTransfer->addVoucherDiscount($discountTransfer);
     $discountTransfer = new DiscountTransfer();
     $discountTransfer->setVoucherCode($code2);
     $quoteTransfer->addVoucherDiscount($discountTransfer);
     $discountFacade = new DiscountFacade();
     $quoteTransfer = $discountFacade->calculateDiscounts($quoteTransfer);
     $discountTransfer = $quoteTransfer->getVoucherDiscounts()[0];
     $this->assertCount(1, $quoteTransfer->getVoucherDiscounts());
     $this->assertEquals($code1, $discountTransfer->getVoucherCode());
 }