/** * Assign options to item * * @param Mage_Sales_Model_Quote_Item $item * @param array $options */ protected function _assignOptionsToItem(Mage_Sales_Model_Quote_Item $item, $options) { if ($optionIds = $item->getOptionByCode('option_ids')) { foreach (explode(',', $optionIds->getValue()) as $optionId) { $item->removeOption('option_' . $optionId); } $item->removeOption('option_ids'); } if ($item->getOptionByCode('additional_options')) { $item->removeOption('additional_options'); } $item->save(); if (!empty($options['options'])) { $item->addOption(new Varien_Object(array('product' => $item->getProduct(), 'code' => 'option_ids', 'value' => implode(',', array_keys($options['options']))))); foreach ($options['options'] as $optionId => $optionValue) { $item->addOption(new Varien_Object(array('product' => $item->getProduct(), 'code' => 'option_' . $optionId, 'value' => $optionValue))); } } if (!empty($options['additional_options'])) { $item->addOption(new Varien_Object(array('product' => $item->getProduct(), 'code' => 'additional_options', 'value' => serialize($options['additional_options'])))); } return $this; }
/** * @param Mage_Sales_Model_Quote_Item $lineItem * @param Vbw_Punchout_Model_Sales_Stash $stash * @param Mage_Checkout_Model_Cart $cartObj * @param $options */ public function unstashLineItemData($lineItem, $stash, $cartObj, $options) { $customData = Mage::getStoreConfig('vbw_punchout/order/stash_item_list'); $customData = unserialize($customData); if (!empty($customData)) { foreach ($customData as $datum) { $info = $stash->stash($datum['key']); if (!empty($info) || is_numeric($info)) { if (preg_match('/^([^\\/]+)\\/([^\\/]+)$/', $datum['key'], $s)) { $src = $s[1]; $code = $s[2]; switch ($src) { case "option": $option = array('code' => $code, 'value' => $info); $lineItem->addOption($option); } } else { $lineItem->setData($datum['key'], $info); } } } } Mage::dispatchEvent('punchout_cart_item_unstash', array('stash_item' => $stash, 'item' => $lineItem, 'cart' => $cartObj, 'options' => $options)); Mage::helper('vbw_punchout')->debug('unstash item ' . print_r(Mage::helper('vbw_punchout/debug')->debugData($lineItem->getData()), true)); }