Example #1
0
 /**
  * @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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 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;
 }
Example #6
0
 /**
  * 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;
 }