/** * @magentoDataFixture Magento/Catalog/_files/product_simple.php */ public function testGetSku() { $repository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\ProductRepository'); $product = $repository->get('simple'); // fixture $this->assertEquals('simple', $this->_model->getSku($product)); }
/** * Get sku of product * * @param \Magento\Catalog\Model\Product $product * @return string */ public function getSku($product) { $simpleOption = $product->getCustomOption('simple_product'); if ($simpleOption) { $optionProduct = $simpleOption->getProduct(); $simpleSku = null; if ($optionProduct) { $simpleSku = $simpleOption->getProduct()->getSku(); } $sku = parent::getOptionSku($product, $simpleSku); } else { $sku = parent::getSku($product); } return $sku; }
/** * Return product sku based on sku_type attribute * * @param \Magento\Catalog\Model\Product $product * @return string */ public function getSku($product) { $sku = parent::getSku($product); if ($product->getData('sku_type')) { return $sku; } else { $skuParts = [$sku]; if ($product->hasCustomOptions()) { $customOption = $product->getCustomOption('bundle_selection_ids'); $selectionIds = unserialize($customOption->getValue()); if (!empty($selectionIds)) { $selections = $this->getSelectionsByIds($selectionIds, $product); foreach ($selections->getItems() as $selection) { $skuParts[] = $selection->getSku(); } } } return implode('-', $skuParts); } }