/** * @magentoDataFixture Mage/Catalog/_files/product_simple.php */ public function testGetSku() { $product = new Mage_Catalog_Model_Product(); $product->load(1); // fixture $this->assertEquals('simple', $this->_model->getSku($product)); }
/** * Get sku of product * * @param Mage_Catalog_Model_Product $product * @return string */ public function getSku($product = null) { $sku = $this->getProduct($product)->getData('sku'); $simpleOption = $this->getProduct($product)->getCustomOption('simple_product'); if ($simpleOption) { $optionProduct = $simpleOption->getProduct($product); $simpleSku = null; if ($optionProduct) { $simpleSku = $simpleOption->getProduct($product)->getSku(); } $sku = parent::getOptionSku($product, $simpleSku); } else { $sku = parent::getSku($product); } return $sku; }
/** * Return product sku based on sku_type attribute * * @param Mage_Catalog_Model_Product $product * @return string */ public function getSku($product = null) { $sku = parent::getSku($product); if ($this->getProduct($product)->getData('sku_type')) { return $sku; } else { $skuParts = array($sku); if ($this->getProduct($product)->hasCustomOptions()) { $customOption = $this->getProduct($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); } }
/** * Get sku of product * * @param Mage_Catalog_Model_Product $product * @return string */ public function getSku($product = null) { $sku = $this->getProduct($product)->getData('sku'); if ($simpleOption = $this->getProduct($product)->getCustomOption('simple_product')) { //$simple_sku = $simpleOption->getProduct($product)->getSku(); $o = $simpleOption->getProduct($product); $simple_sku = is_object($o) ? $o->getSku() : null; $sku = parent::getOptionSku($product, $simple_sku); } else { $sku = parent::getSku($product); } return $sku; }