/** * @magentoDataFixture Mage/Catalog/_files/product_simple.php * @expectedException Mage_Core_Exception */ public function testCheckProductBuyStateException() { $product = new Mage_Catalog_Model_Product(); $product->load(1); // fixture $this->_model->checkProductBuyState($product); }
public function checkProductBuyState($product = null) { Mage_Catalog_Model_Product_Type_Abstract::checkProductBuyState($product); $product = $this->getProduct($product); $productOptionIds = $this->getOptionsIds($product); $productSelections = $this->getSelectionsCollection($productOptionIds, $product); $selectionIds = $product->getCustomOption('bundle_selection_ids'); $selectionIds = unserialize($selectionIds->getValue()); $buyRequest = $product->getCustomOption('info_buyRequest'); $buyRequest = new Varien_Object(unserialize($buyRequest->getValue())); $bundleOption = $buyRequest->getBundleOption(); if (empty($bundleOption)) { Mage::throwException($this->getSpecifyOptionMessage()); } $skipSaleableCheck = Mage::helper('catalog/product')->getSkipSaleableCheck(); foreach ($selectionIds as $selectionId) { /* @var $selection Mage_Bundle_Model_Selection */ $selection = $productSelections->getItemById($selectionId); if (!$selection || !$selection->isSalable() && !$skipSaleableCheck) { Mage::throwException(Mage::helper('bundle')->__('Selected required options are not available.')); } } /* $product->getTypeInstance(true)->setStoreFilter($product->getStoreId(), $product); $optionsCollection = $this->getOptionsCollection($product); foreach ($optionsCollection->getItems() as $option) { if ($option->getRequired() && empty($bundleOption[$option->getId()])) { Mage::throwException( Mage::helper('bundle')->__('Required options are not selected.') ); } } */ return $this; }
/** * Check if product can be bought * * @param Mage_Catalog_Model_Product $product * @return Mage_Catalog_Model_Product_Type_Abstract * @throws Mage_Core_Exception */ public function checkProductBuyState($product = null) { parent::checkProductBuyState($product); $product = $this->getProduct($product); $option = $product->getCustomOption('info_buyRequest'); if ($option instanceof Mage_Sales_Model_Quote_Item_Option) { $buyRequest = new Varien_Object(unserialize($option->getValue())); $attributes = $buyRequest->getSuperAttribute(); if (is_array($attributes)) { foreach ($attributes as $key => $val) { if (empty($val)) { unset($attributes[$key]); } } } if (empty($attributes)) { Mage::throwException($this->getSpecifyOptionMessage()); } } return $this; }
public function checkProductBuyState($product = null) { parent::checkProductBuyState($product); $product = $this->getProduct($product); $option = $product->getCustomOption('info_buyRequest'); if ($option instanceof Mage_Sales_Model_Quote_Item_Option) { $buyRequest = new Varien_Object(unserialize($option->getValue())); $mode = true; if (defined('Mage_Catalog_Model_Product_Type_Abstract::PROCESS_MODE_FULL')) { $mode = Mage_Catalog_Model_Product_Type_Abstract::PROCESS_MODE_FULL; } $this->_validateAndGetAmount($buyRequest, $product, $mode); } return $this; }
/** * Check if product can be bought * * @param Mage_Catalog_Model_Product $product * @return Mage_Catalog_Model_Product_Type_Abstract * @throws Mage_Core_Exception */ public function checkProductBuyState($product = null) { parent::checkProductBuyState($product); $product = $this->getProduct($product); $option = $product->getCustomOption('info_buyRequest'); if ($option instanceof Mage_Sales_Model_Quote_Item_Option) { $buyRequest = new Varien_Object(unserialize($option->getValue())); $this->_validate($buyRequest, $product, self::PROCESS_MODE_FULL); } return $this; }
/** * Check if product can be bought * * @param Mage_Catalog_Model_Product $product * @return Mage_Bundle_Model_Product_Type * @throws Mage_Core_Exception */ public function checkProductBuyState($product = null) { parent::checkProductBuyState($product); $product = $this->getProduct($product); $productOptionIds = $this->getOptionsIds($product); $productSelections = $this->getSelectionsCollection($productOptionIds, $product); $selectionIds = $product->getCustomOption('bundle_selection_ids'); $selectionIds = unserialize($selectionIds->getValue()); foreach ($selectionIds as $selectionId) { /* @var $selection Mage_Bundle_Model_Selection */ $selection = $productSelections->getItemById($selectionId); if (!$selection || !$selection->isSalable()) { Mage::throwException(Mage::helper('bundle')->__('Selected required options are not available.')); } } return $this; }