コード例 #1
0
ファイル: Sales.php プロジェクト: Eximagen/pfizer
 /**
  * get a product option based on quote option
  *
  * @param Mage_Sales_Model_Quote_Item_Option $option
  * @return Mage_Catalog_Model_Product_Option|null
  */
 public function getOptionProductOption($option)
 {
     $optionId = null;
     if (strpos($option->getCode(), Mage_Catalog_Model_Product_Type_Abstract::OPTION_PREFIX) === 0) {
         $optionId = str_replace(Mage_Catalog_Model_Product_Type_Abstract::OPTION_PREFIX, '', $option->getCode());
         if ((int) $optionId != $optionId) {
             $optionId = null;
         }
     }
     $productOption = null;
     if ($optionId) {
         /** @var $productOption Mage_Catalog_Model_Product_Option */
         $productOption = Mage::getModel('catalog/product_option')->load($optionId);
     }
     if (!$productOption || !$productOption->getId() || $productOption->getProductId() != $option->getProductId()) {
         return null;
     } else {
         return $productOption;
     }
 }
コード例 #2
0
ファイル: Item.php プロジェクト: relue/magento2
 /**
  * Register option code
  *
  * @param   Mage_Sales_Model_Quote_Item_Option $option
  * @return  Mage_Sales_Model_Quote_Item
  */
 protected function _addOptionCode($option)
 {
     if (!isset($this->_optionsByCode[$option->getCode()])) {
         $this->_optionsByCode[$option->getCode()] = $option;
     } else {
         Mage::throwException(Mage::helper('Mage_Sales_Helper_Data')->__('An item option with code %s already exists.', $option->getCode()));
     }
     return $this;
 }
コード例 #3
0
 /**
  * Implementation of product specify logic of which product needs to be assigned to option.
  * For example if product which was added to option already removed from catalog.
  *
  * @param  Mage_Catalog_Model_Product $optionProduct
  * @param  Mage_Sales_Model_Quote_Item_Option $option
  * @param  Mage_Catalog_Model_Product $product
  * @return Mage_Catalog_Model_Product_Type_Abstract
  */
 public function assignProductToOption($optionProduct, $option, $product = null)
 {
     if ($optionProduct) {
         $option->setProduct($optionProduct);
     } else {
         $option->getItem()->setHasError('error');
         $option->getItem()->addMessage(Mage::helper('catalog')->__('Selected configuration is not available.', $this->getProduct($product)->getName()));
     }
     return $this;
 }
コード例 #4
0
ファイル: Configurable.php プロジェクト: nemphys/magento2
 /**
  * Implementation of product specify logic of which product needs to be assigned to option.
  * For example if product which was added to option already removed from catalog.
  *
  * @param  Mage_Catalog_Model_Product|null $optionProduct
  * @param  Mage_Sales_Model_Quote_Item_Option $option
  * @param  Mage_Catalog_Model_Product|null $product
  * @return Mage_Catalog_Model_Product_Type_Configurable
  */
 public function assignProductToOption($optionProduct, $option, $product)
 {
     if ($optionProduct) {
         $option->setProduct($optionProduct);
     } else {
         $option->getItem()->setHasConfigurationUnavailableError(true);
     }
     return $this;
 }
コード例 #5
0
ファイル: Abstract.php プロジェクト: jauderho/magento-mirror
 /**
  * Implementation of product specify logic of which product needs to be assigned to option.
  * For example if product which was added to option already removed from catalog.
  *
  * @param Mage_Catalog_Model_Product $optionProduct
  * @param Mage_Sales_Model_Quote_Item_Option $option
  * @param Mage_Catalog_Model_Product $product
  * @return Mage_Catalog_Model_Product_Type_Abstract
  */
 public function assignProductToOption($optionProduct, $option, $product = null)
 {
     if ($optionProduct) {
         $option->setProduct($optionProduct);
     } else {
         $option->setProduct($this->getProduct($product));
     }
     return $this;
 }
コード例 #6
0
ファイル: Configurable.php プロジェクト: relue/magento2
 /**
  * Implementation of product specify logic of which product needs to be assigned to option.
  * For example if product which was added to option already removed from catalog.
  *
  * @param  Mage_Catalog_Model_Product $optionProduct
  * @param  Mage_Sales_Model_Quote_Item_Option $option
  * @param  Mage_Catalog_Model_Product $product
  * @return Mage_Catalog_Model_Product_Type_Abstract
  */
 public function assignProductToOption($optionProduct, $option, $product)
 {
     if ($optionProduct) {
         $option->setProduct($optionProduct);
     } else {
         $option->getItem()->setHasError('error');
         $message = Mage::helper('Mage_Catalog_Helper_Data')->__('Selected configuration is not available.', $product->getName());
         $option->getItem()->addMessage($message);
     }
     return $this;
 }
コード例 #7
0
ファイル: Abstract.php プロジェクト: okite11/frames21
 /**
  * Implementation of product specify logic of which product needs to be assigned to option.
  * For example if product which was added to option already removed from catalog.
  *
  * @param Mage_Catalog_Model_Product $optionProduct
  * @param Mage_Sales_Model_Quote_Item_Option $option
  * @param Mage_Catalog_Model_Product $product
  * @return Mage_Catalog_Model_Product_Type_Abstract
  */
 public function assignProductToOption($optionProduct, $option, $product = null)
 {
     $option->setProduct($optionProduct ? $optionProduct : $this->getProduct($product));
     return $this;
 }
コード例 #8
0
 public function afterRequest4quoteOrder($observer)
 {
     $event = $observer->getEvent();
     $quote = $event->getQuote();
     $cart = $event->getCart();
     $optionsArr = array();
     foreach ($quote->getAllVisibleItems() as $item) {
         $quoteOptions = Mage::getModel('request4quote/quote_item_option')->getCollection()->addFieldToFilter('item_id', $item->getId());
         foreach ($quoteOptions as $quoteOption) {
             $optionsArr[$quoteOption->getData('product_id')][$quoteOption->getData('code')] = $quoteOption->getData('value');
         }
     }
     if (count($optionsArr)) {
         foreach ($cart->getQuote()->getAllVisibleItems() as $item) {
             foreach ($optionsArr[$item->getData('product_id')] as $code => $val) {
                 if ($code == 'info_buyRequest') {
                     continue;
                 }
                 $model = new Mage_Sales_Model_Quote_Item_Option();
                 $model->setData('item_id', $item->getId());
                 $model->setData('product_id', $item->getData('product_id'));
                 $model->setData('code', $code);
                 $model->setData('value', $val);
                 $model->save();
             }
         }
     }
 }
コード例 #9
0
ファイル: Quote_Item.php プロジェクト: ronseigel/agent-ohm
 /**
  * Register option code
  *
  * @param   Mage_Sales_Model_Quote_Item_Option $option
  * @return  Mage_Sales_Model_Quote_Item
  */
 protected function _addOptionCode($option)
 {
     if (!isset($this->_optionsByCode[$option->getCode()])) {
         $this->_optionsByCode[$option->getCode()] = $option;
     } else {
         AO::throwException(AO::helper('sales')->__('Item option with code %s already exist', $option->getCode()));
     }
     return $this;
 }