Example #1
0
 /**
  * Initialize quote item object
  *
  * @param \Magento\Framework\Object $request
  * @param Product $product
  *
  * @return \Magento\Quote\Model\Quote\Item
  */
 public function init(Product $product, $request)
 {
     $item = $this->quoteItemFactory->create();
     $this->setItemStoreId($item);
     /**
      * We can't modify existing child items
      */
     if ($item->getId() && $product->getParentProductId()) {
         return $item;
     }
     $item->setOptions($product->getCustomOptions());
     $item->setProduct($product);
     if ($request->getResetCount() && !$product->getStickWithinParent() && $item->getId() === $request->getId()) {
         $item->setData('qty', 0);
     }
     return $item;
 }
 /**
  * @covers \Magento\Catalog\Model\Product::addCustomOption
  * @covers \Magento\Catalog\Model\Product::setCustomOptions
  * @covers \Magento\Catalog\Model\Product::getCustomOptions
  * @covers \Magento\Catalog\Model\Product::getCustomOption
  * @covers \Magento\Catalog\Model\Product::hasCustomOptions
  */
 public function testCustomOptionsApi()
 {
     $this->assertEquals([], $this->_model->getCustomOptions());
     $this->assertFalse($this->_model->hasCustomOptions());
     $this->_model->setId(99);
     $this->_model->addCustomOption('one', 'value1');
     $option = $this->_model->getCustomOption('one');
     $this->assertInstanceOf('Magento\\Framework\\DataObject', $option);
     $this->assertEquals($this->_model->getId(), $option->getProductId());
     $this->assertSame($option->getProduct(), $this->_model);
     $this->assertEquals('one', $option->getCode());
     $this->assertEquals('value1', $option->getValue());
     $this->assertEquals(['one' => $option], $this->_model->getCustomOptions());
     $this->assertTrue($this->_model->hasCustomOptions());
     $this->_model->setCustomOptions(['test']);
     $this->assertTrue(is_array($this->_model->getCustomOptions()));
 }
Example #3
0
 /**
  * Check product representation in item
  *
  * @param   \Magento\Catalog\Model\Product $product
  * @return  bool
  */
 public function representProduct($product)
 {
     $itemProduct = $this->getProduct();
     if (!$product || $itemProduct->getId() != $product->getId()) {
         return false;
     }
     /**
      * Check maybe product is planned to be a child of some quote item - in this case we limit search
      * only within same parent item
      */
     $stickWithinParent = $product->getStickWithinParent();
     if ($stickWithinParent) {
         if ($this->getParentItem() !== $stickWithinParent) {
             return false;
         }
     }
     // Check options
     $itemOptions = $this->getOptionsByCode();
     $productOptions = $product->getCustomOptions();
     if (!$this->compareOptions($itemOptions, $productOptions)) {
         return false;
     }
     if (!$this->compareOptions($productOptions, $itemOptions)) {
         return false;
     }
     return true;
 }
Example #4
0
 /**
  * Check product representation in item
  *
  * @param   \Magento\Catalog\Model\Product $product
  * @return  bool
  */
 public function representProduct($product)
 {
     $itemProduct = $this->getProduct();
     if ($itemProduct->getId() != $product->getId()) {
         return false;
     }
     $itemOptions = $this->getOptionsByCode();
     $productOptions = $product->getCustomOptions();
     if (!$this->compareOptions($itemOptions, $productOptions)) {
         return false;
     }
     if (!$this->compareOptions($productOptions, $itemOptions)) {
         return false;
     }
     return true;
 }
 /**
  * {@inheritdoc}
  */
 public function getCustomOptions()
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getCustomOptions');
     if (!$pluginInfo) {
         return parent::getCustomOptions();
     } else {
         return $this->___callPlugins('getCustomOptions', func_get_args(), $pluginInfo);
     }
 }