Esempio n. 1
0
 /**
  * @param array $data
  *
  * @return \Generated\Shared\Transfer\ProductAbstractTransfer|\Generated\Shared\Transfer\ProductConcreteTransfer
  */
 protected function generateTypedProduct(array &$data)
 {
     if (empty($data[self::PRODUCT_ABSTRACT_REFERENCE])) {
         $product = new ProductAbstractTransfer();
     } else {
         $product = new ProductConcreteTransfer();
         $product->setProductAbstractSku($data[self::PRODUCT_ABSTRACT_REFERENCE]);
     }
     unset($data[self::PRODUCT_ABSTRACT_REFERENCE]);
     unset($data[self::BUNDLED_PRODUCTS_REFERENCES]);
     //@todo handle bundle creation
     return $product;
 }
Esempio n. 2
0
 /**
  * @param \Generated\Shared\Transfer\WishlistTransfer $wishlist
  *
  * @return void
  */
 public function expandProductDetails(WishlistTransfer $wishlist)
 {
     foreach ($wishlist->getItems() as $item) {
         $productData = $this->productClient->getProductAbstractFromStorageByIdForCurrentLocale($item->getIdProductAbstract());
         foreach ($productData['product_concrete_collection'] as $product) {
             if ($product['sku'] !== $item->getSku()) {
                 continue;
             }
             $productConcrete = new ProductConcreteTransfer();
             $productConcrete->setName($product['name']);
             $productConcrete->setSku($product['sku']);
             $productConcrete->setAttributes($product['attributes']);
             $item->setProductConcrete($productConcrete);
         }
     }
 }
Esempio n. 3
0
 /**
  * @param \Generated\Shared\Transfer\ProductConcreteTransfer $productConcreteTransfer
  *
  * @return bool
  */
 public function writeProduct(ProductConcreteTransfer $productConcreteTransfer)
 {
     $this->productStatement->execute([':sku' => $productConcreteTransfer->getSku(), ':isActive' => (int) $productConcreteTransfer->getIsActive(), ':attributes' => json_encode($productConcreteTransfer->getAttributes()), ':productAbstractSku' => $productConcreteTransfer->getProductAbstractSku()]);
     foreach ($productConcreteTransfer->getLocalizedAttributes() as $localizedAttributes) {
         $this->attributesStatement->execute([':productSku' => $productConcreteTransfer->getSku(), ':name' => $localizedAttributes->getName(), ':attributes' => json_encode($localizedAttributes->getAttributes()), ':fkLocale' => $this->localeTransfer->getIdLocale()]);
     }
     return true;
 }
Esempio n. 4
0
 /**
  * @param string $concreteSku
  *
  * @throws \Spryker\Zed\Product\Business\Exception\MissingProductException
  *
  * @return \Generated\Shared\Transfer\ProductConcreteTransfer
  */
 public function getProductConcrete($concreteSku)
 {
     $localeTransfer = $this->localeFacade->getCurrentLocale();
     $productConcreteQuery = $this->productQueryContainer->queryProductWithAttributesAndProductAbstract($concreteSku, $localeTransfer->getIdLocale());
     $productConcreteQuery->select([self::COL_ID_PRODUCT_CONCRETE, self::COL_ABSTRACT_SKU, self::COL_ID_PRODUCT_ABSTRACT, self::COL_NAME]);
     $productConcrete = $productConcreteQuery->findOne();
     if (!$productConcrete) {
         throw new MissingProductException(sprintf('Tried to retrieve a product concrete with sku %s, but it does not exist.', $concreteSku));
     }
     $productConcreteTransfer = new ProductConcreteTransfer();
     $productConcreteTransfer->setSku($concreteSku)->setIdProductConcrete($productConcrete[self::COL_ID_PRODUCT_CONCRETE])->setProductAbstractSku($productConcrete[self::COL_ABSTRACT_SKU])->setIdProductAbstract($productConcrete[self::COL_ID_PRODUCT_ABSTRACT])->setName($productConcrete[self::COL_NAME]);
     return $productConcreteTransfer;
 }
 /**
  * @group ProductCategory
  *
  * @return void
  */
 public function testCreateAttributeTypeCreatesAndReturnsId()
 {
     $abstractSku = 'AnAbstractTestProduct';
     $concreteSku = 'ATestProduct';
     $categoryName = 'ATestCategory';
     $localeName = 'ABCDE';
     $abstractName = 'abstractName';
     $categoryKey = '100TEST';
     $locale = $this->localeFacade->createLocale($localeName);
     $productAbstractTransfer = new ProductAbstractTransfer();
     $productAbstractTransfer->setSku($abstractSku);
     $productAbstractTransfer->setAttributes([]);
     $localizedAttributes = new LocalizedAttributesTransfer();
     $localizedAttributes->setAttributes([]);
     $localizedAttributes->setLocale($locale);
     $localizedAttributes->setName($abstractName);
     $productAbstractTransfer->addLocalizedAttributes($localizedAttributes);
     $idProductAbstract = $this->productFacade->createProductAbstract($productAbstractTransfer);
     $productConcreteTransfer = new ProductConcreteTransfer();
     $productConcreteTransfer->setSku($concreteSku);
     $productConcreteTransfer->setAttributes([]);
     $productConcreteTransfer->addLocalizedAttributes($localizedAttributes);
     $productConcreteTransfer->setIsActive(true);
     $this->productFacade->createProductConcrete($productConcreteTransfer, $idProductAbstract);
     $categoryTransfer = new CategoryTransfer();
     $categoryTransfer->setName($categoryName);
     $categoryTransfer->setCategoryKey($categoryKey);
     $idCategory = $this->categoryFacade->createCategory($categoryTransfer, $locale);
     $categoryNodeTransfer = new NodeTransfer();
     $categoryNodeTransfer->setFkCategory($idCategory);
     $categoryNodeTransfer->setIsRoot(true);
     $this->categoryFacade->createCategoryNode($categoryNodeTransfer, $locale, false);
     $this->productCategoryFacade->createProductCategoryMapping($abstractSku, $categoryName, $locale);
     $this->assertTrue($this->productCategoryFacade->hasProductCategoryMapping($abstractSku, $categoryName, $locale));
 }
Esempio n. 6
0
 /**
  * @group Product
  *
  * @return void
  */
 public function testGetAbstractSkuFromProductConcrete()
 {
     $this->assertFalse($this->productFacade->hasProductConcrete(self::SKU_PRODUCT_CONCRETE));
     $productAbstract = new ProductAbstractTransfer();
     $productAbstract->setSku(self::SKU_PRODUCT_ABSTRACT);
     $productAbstract->setAttributes([]);
     $productAbstract->addLocalizedAttributes($this->createLocalizedAttributesTransfer());
     $idProductAbstract = $this->productFacade->createProductAbstract($productAbstract);
     $productConcrete = new ProductConcreteTransfer();
     $productConcrete->setSku(self::SKU_PRODUCT_CONCRETE);
     $productConcrete->setAttributes([]);
     $productConcrete->addLocalizedAttributes($this->createLocalizedAttributesTransfer());
     $productConcrete->setIsActive(true);
     $this->productFacade->createProductConcrete($productConcrete, $idProductAbstract);
     $this->assertTrue($this->productFacade->hasProductConcrete(self::SKU_PRODUCT_CONCRETE));
     $this->assertEquals($this->productFacade->getAbstractSkuFromProductConcrete(self::SKU_PRODUCT_CONCRETE), self::SKU_PRODUCT_ABSTRACT);
 }
Esempio n. 7
0
 /**
  * @param \Generated\Shared\Transfer\ItemTransfer $wishlistItemTransfer
  * @param int $idWishlist
  * @param \Generated\Shared\Transfer\ProductConcreteTransfer $productConcreteTransfer
  *
  * @return \Orm\Zed\Wishlist\Persistence\SpyWishlistItem
  */
 protected function createNewWishlistItem(ItemTransfer $wishlistItemTransfer, $idWishlist, ProductConcreteTransfer $productConcreteTransfer)
 {
     $wishlistItemEntity = new SpyWishlistItem();
     $wishlistItemEntity->setGroupKey($wishlistItemTransfer->getGroupKey());
     $wishlistItemEntity->setFkProduct($productConcreteTransfer->getIdProductConcrete());
     $wishlistItemEntity->setFkProductAbstract($productConcreteTransfer->getIdProductAbstract());
     $wishlistItemEntity->setFkWishlist($idWishlist);
     $wishlistItemEntity->setQuantity($wishlistItemTransfer->getQuantity());
     $wishlistItemEntity->setAddedAt(new \DateTime());
     $wishlistItemEntity->save();
     return $wishlistItemEntity;
 }
Esempio n. 8
0
 /**
  * @return \PHPUnit_Framework_MockObject_MockObject|\Spryker\Zed\Wishlist\Dependency\Facade\WishlistToProductInterface
  */
 protected function getProductFacadeMock()
 {
     $productFacadeMock = $this->getMockBuilder(WishlistToProductBridge::class)->disableOriginalConstructor()->getMock();
     $productConcrete = new ProductConcreteTransfer();
     $productConcrete->setIdProductAbstract(1);
     $productConcrete->setIdProductConcrete(1);
     $productFacadeMock->expects($this->any())->method('getProductConcrete')->will($this->returnValue($productConcrete));
     return $productFacadeMock;
 }
 /**
  * @return void
  */
 public function testExpandItemsMustAddTaxSetToAllCartItemsIfPRoductHasTaxSet()
 {
     $changeTransfer = $this->getChangeTransfer();
     $productTaxRate = 19;
     $productConcreteTransfer = new ProductConcreteTransfer();
     $productConcreteTransfer->setTaxRate($productTaxRate);
     $productManager = $this->getProductManager($productConcreteTransfer);
     $result = $productManager->expandItems($changeTransfer);
     $changedItemTransfer = $result->getItems()[0];
     $this->assertSame($productConcreteTransfer->getTaxRate(), $changedItemTransfer->getTaxRate());
 }