Beispiel #1
0
 /**
  * @param \Generated\Shared\Transfer\CartChangeTransfer $cartChangeTransfer
  *
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 public function expandItems(CartChangeTransfer $cartChangeTransfer)
 {
     foreach ($cartChangeTransfer->getItems() as $cartItem) {
         $cartItem->setGroupKey($this->buildGroupKey($cartItem));
     }
     return $cartChangeTransfer;
 }
 /**
  * @param \Generated\Shared\Transfer\CartChangeTransfer $change
  *
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 public function expand(CartChangeTransfer $change)
 {
     foreach ($change->getItems() as $item) {
         $item->setGroupKey($this->buildGroupKey($item));
     }
     return $change;
 }
 /**
  * @return void
  */
 public function testPluginExpandsCartItemWithExpectedProductData()
 {
     $localeName = Store::getInstance()->getCurrentLocale();
     $localeTransfer = $this->localeFacade->getLocale($localeName);
     $taxRateEntity = new SpyTaxRate();
     $taxRateEntity->setRate(self::TAX_RATE_PERCENTAGE)->setName(self::TAX_RATE_NAME);
     $taxSetEntity = new SpyTaxSet();
     $taxSetEntity->addSpyTaxRate($taxRateEntity)->setName(self::TAX_SET_NAME);
     $productAbstractEntity = new SpyProductAbstract();
     $productAbstractEntity->setSpyTaxSet($taxSetEntity)->setAttributes('')->setSku(self::SKU_PRODUCT_ABSTRACT);
     $localizedAttributesEntity = new SpyProductLocalizedAttributes();
     $localizedAttributesEntity->setName(self::PRODUCT_CONCRETE_NAME)->setAttributes('')->setFkLocale($localeTransfer->getIdLocale());
     $productConcreteEntity = new SpyProduct();
     $productConcreteEntity->setSpyProductAbstract($productAbstractEntity)->setAttributes('')->addSpyProductLocalizedAttributes($localizedAttributesEntity)->setSku(self::SKU_PRODUCT_CONCRETE)->save();
     $changeTransfer = new CartChangeTransfer();
     $itemTransfer = new ItemTransfer();
     $itemTransfer->setSku(self::SKU_PRODUCT_CONCRETE);
     $changeTransfer->addItem($itemTransfer);
     $this->productCartConnectorFacade->expandItems($changeTransfer);
     $expandedItemTransfer = $changeTransfer->getItems()[0];
     $this->assertEquals(self::SKU_PRODUCT_ABSTRACT, $expandedItemTransfer->getAbstractSku());
     $this->assertEquals(self::SKU_PRODUCT_CONCRETE, $expandedItemTransfer->getSku());
     $this->assertEquals($productAbstractEntity->getIdProductAbstract(), $expandedItemTransfer->getIdProductAbstract());
     $this->assertEquals($productConcreteEntity->getIdProduct(), $expandedItemTransfer->getId());
 }
 /**
  * @param \Generated\Shared\Transfer\CartChangeTransfer $change
  *
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 public function expandProductOptions(CartChangeTransfer $change)
 {
     foreach ($change->getItems() as $cartItem) {
         $this->expandProductOptionTransfers($cartItem);
     }
     return $change;
 }
 /**
  * @param \Generated\Shared\Transfer\CartChangeTransfer $change
  *
  * @throws \Spryker\Zed\PriceCartConnector\Business\Exception\PriceMissingException
  *
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 public function addGrossPriceToItems(CartChangeTransfer $change)
 {
     foreach ($change->getItems() as $cartItem) {
         if (!$this->priceFacade->hasValidPrice($cartItem->getSku(), $this->grossPriceType)) {
             throw new PriceMissingException(sprintf('Cart item %s can not be priced', $cartItem->getSku()));
         }
         $cartItem->setUnitGrossPrice($this->priceFacade->getPriceBySku($cartItem->getSku(), $this->grossPriceType));
     }
     return $change;
 }
Beispiel #6
0
 /**
  * @return void
  */
 public function testExpandItemMustNotChangeGroupKeyWhenGroupKeyIsSet()
 {
     $itemTransfer = new ItemTransfer();
     $itemTransfer->setSku(self::SKU);
     $itemTransfer->setGroupKey(self::SKU);
     $changeTransfer = new CartChangeTransfer();
     $changeTransfer->addItem($itemTransfer);
     $plugin = new SkuGroupKeyPlugin(new Factory('Cart'), Locator::getInstance());
     $plugin->expandItems($changeTransfer);
     $this->assertSame(self::SKU, $changeTransfer->getItems()[0]->getGroupKey());
 }
 /**
  * @param \Generated\Shared\Transfer\CartChangeTransfer $change
  *
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 public function expandItems(CartChangeTransfer $change)
 {
     foreach ($change->getItems() as $cartItem) {
         $productConcreteTransfer = $this->productFacade->getProductConcrete($cartItem->getSku());
         $cartItem->setId($productConcreteTransfer->getIdProductConcrete())->setSku($productConcreteTransfer->getSku())->setIdProductAbstract($productConcreteTransfer->getIdProductAbstract())->setAbstractSku($productConcreteTransfer->getProductAbstractSku())->setName($productConcreteTransfer->getName());
         if ($productConcreteTransfer->getTaxRate() !== null) {
             $cartItem->setTaxRate($productConcreteTransfer->getTaxRate());
         }
     }
     return $change;
 }
 /**
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 protected function createCartChangeTransfer(array $cartItems)
 {
     $changeTransfer = new CartChangeTransfer();
     foreach ($cartItems as $cartItem => $options) {
         $cartItem = new ItemTransfer();
         foreach ($options as $option) {
             $cartItem->addProductOption($option);
         }
         $changeTransfer->addItem($cartItem);
     }
     return $changeTransfer;
 }
Beispiel #9
0
 /**
  * @param \Generated\Shared\Transfer\CartChangeTransfer $cartChangeTransfer
  *
  * @return \Generated\Shared\Transfer\QuoteTransfer
  */
 public function removeItems(CartChangeTransfer $cartChangeTransfer)
 {
     $existingItems = $cartChangeTransfer->getQuote()->getItems();
     $cartIndex = $this->createCartIndex($existingItems);
     foreach ($cartChangeTransfer->getItems() as $itemTransfer) {
         $this->isValidQuantity($itemTransfer);
         $itemIdentifier = $this->getItemIdentifier($itemTransfer);
         if (isset($cartIndex[$itemIdentifier])) {
             $this->decreaseExistingItem($existingItems, $cartIndex[$itemIdentifier], $itemTransfer);
         }
     }
     return $cartChangeTransfer->getQuote();
 }
 /**
  * @expectedException \Spryker\Zed\PriceCartConnector\Business\Exception\PriceMissingException
  * @expectedExceptionMessage Cart item 123 can not be priced
  *
  * @return void
  */
 public function testIsNotPriceAbleWithInvalidPrice()
 {
     $priceFacadeStub = $this->createPriceFacadeStub();
     $priceFacadeStub->addPriceStub('123', 1000);
     $priceFacadeStub->addValidityStub('123', false);
     $itemCollection = new CartChangeTransfer();
     $item = new ItemTransfer();
     $item->setId(123);
     $item->setSku(123);
     $itemCollection->addItem($item);
     $priceCartToPriceBridge = new PriceCartToPriceBridge($priceFacadeStub);
     $priceManager = new PriceManager($priceCartToPriceBridge, 'grossPrice');
     $priceManager->addGrossPriceToItems($itemCollection);
 }
Beispiel #11
0
 /**
  * @return void
  */
 public function testDecreaseCartItem()
 {
     $this->markTestSkipped('Tried to retrieve a concrete product with sku CONCRETE1, but it does not exist');
     $quoteTransfer = new QuoteTransfer();
     $cartItem = new ItemTransfer();
     $cartItem->setSku(self::DUMMY_1_SKU_CONCRETE_PRODUCT);
     $cartItem->setQuantity(3);
     $cartItem->setUnitGrossPrice(1);
     $quoteTransfer->addItem($cartItem);
     $newItem = new ItemTransfer();
     $newItem->setSku(self::DUMMY_1_SKU_CONCRETE_PRODUCT);
     $newItem->setQuantity(1);
     $newItem->setUnitGrossPrice(1);
     $cartChange = new CartChangeTransfer();
     $cartChange->setQuote($quoteTransfer);
     $cartChange->addItem($newItem);
     $changedCart = $this->cartFacade->decreaseQuantity($cartChange);
     $cartItems = $changedCart->getItems();
     $this->assertCount(1, $cartItems);
     /** @var \Generated\Shared\Transfer\ItemTransfer $changedItem */
     $changedItem = $cartItems[0];
     $this->assertEquals(2, $changedItem->getQuantity());
 }
 /**
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 private function getChangeTransfer()
 {
     $changeTransfer = new CartChangeTransfer();
     $itemTransfer = new ItemTransfer();
     $itemTransfer->setSku(self::CONCRETE_SKU);
     $changeTransfer->addItem($itemTransfer);
     return $changeTransfer;
 }
Beispiel #13
0
 /**
  * @return \Generated\Shared\Transfer\CartChangeTransfer
  */
 protected function createCartChangeTransfer()
 {
     $quoteTransfer = $this->getSession()->getQuote();
     $items = $quoteTransfer->getItems();
     if (count($items) === 0) {
         $quoteTransfer->setItems(new \ArrayObject());
     }
     $cartChangeTransfer = new CartChangeTransfer();
     $cartChangeTransfer->setQuote($quoteTransfer);
     return $cartChangeTransfer;
 }
 /**
  * @expectedException \Spryker\Zed\Cart\Business\Exception\InvalidQuantityExeption
  * @expectedExceptionMessage Could not change cart item "123" with "0" as value.
  *
  * @return void
  */
 public function testDecreaseWithZeroValue()
 {
     $itemId = '123';
     $newId = '123';
     $existingQuantity = 1;
     $newQuantity = 0;
     $quoteTransfer = $this->createQuoteWithItem($itemId, $existingQuantity);
     $newItem = $this->createItem($newId, $newQuantity);
     $change = new CartChangeTransfer();
     $change->addItem($newItem);
     $change->setQuote($quoteTransfer);
     $this->provider->removeItems($change);
 }