/** * * @loadFixture testPrepareCart * @dataProvider provider__testPrepareCartObserverQty * The main goul of this test is to check if the error will be araised if items are added one by one * */ public function testPrepareCartObserverQty($dealId, $qty, $productId, $expectedPrice, $infoBuyRequest, $count, $uid) { $deal = Mage::getModel('collpur/deal')->load($dealId); /* set deal id in request */ Mage::app()->getRequest()->setParam('deal_id', $dealId); Mage::app()->getRequest()->setParam('product', $productId); $observer = new Varien_Object(); $buyRequest = new Varien_Object(); $product = Mage::getModel('catalog/product')->load($productId); $buyRequest->setQty($qty); $observer->setBuyRequest($buyRequest); $observer->setProduct($product); /* set quote id and replace existing one in session */ $quote = $this->getModelMock('sales/quote'); $quoteItemsCollection = array(); for ($i = 0; $i < $count; $i++) { $item = $this->getModelMock('sales/quote_item'); $optionByCode = new Varien_Object(); $optionByCode->setValue($infoBuyRequest); $item->expects($this->any())->method('getOptionByCode')->will($this->returnValue($optionByCode)); $item->expects($this->any())->method('getQty')->will($this->returnValue(1)); $quoteItemsCollection[] = $item; } $quote->expects($this->any())->method('getId')->will($this->returnValue(1)); $quote->expects($this->any())->method('getItemsCollection')->will($this->returnValue($quoteItemsCollection)); Mage::getSingleton('checkout/session')->replaceQuote($quote); if ($uid == '002') { $this->setExpectedException('Mage_Checkout_Exception'); } Mage::getModel('collpur/observer')->prepareCart($observer); }
public function configureAction() { $id = (int) $this->getRequest()->getParam('id'); $quoteItem = null; $cart = $this->_getCart(); if ($id) { $quoteItem = $cart->getQuote()->getItemById($id); } if (!$quoteItem) { $this->_getSession()->addError($this->__('Quote item is not found.')); $this->_redirect('checkout/cart'); return; } try { $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $params->setBuyRequest($quoteItem->getBuyRequest()); $id = $quoteItem->getProduct()->getId(); $parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($id); if (is_array($parentIds) && count($parentIds)) { $id = current($parentIds); } Mage::helper('catalog/product_view')->prepareAndRender($id, $this, $params); } catch (Exception $e) { $this->_getSession()->addError($this->__('Cannot configure product.')); Mage::logException($e); $this->_goBack(); return; } }
public function viewformAction() { // Prepare data $configureResult = new Varien_Object(); try { $orderItemId = (int) $this->getRequest()->getParam('item_id'); if (!$orderItemId) { Mage::throwException($this->__('Quote item id is not received.')); } $orderItem = Mage::getModel('sales/order_item')->load($orderItemId); if (!$orderItem->getId()) { Mage::throwException($this->__('Quote item is not loaded.')); } $configureResult->setOk(true); $configureResult->setBuyRequest($orderItem->getBuyRequest()); $configureResult->setCurrentStoreId($orderItem->getStoreId()); $configureResult->setProductId($orderItem->getProductId()); } catch (Exception $e) { $configureResult->setError(true); $configureResult->setMessage($e->getMessage()); } // Render page /* @var $helper Mage_Adminhtml_Helper_Catalog_Product_Composite */ $helper = Mage::helper('spacemariachi_custopt'); $helper->renderConfigureResult($this, $configureResult); return $this; }
/** * Action to reconfigure cart item * Modified to allow configuration of simple items assigned to configurables. */ public function configureAction() { // Extract item and product to configure $id = (int) $this->getRequest()->getParam('id'); $quoteItem = null; $cart = $this->_getCart(); if ($id) { $quoteItem = $cart->getQuote()->getItemById($id); } $productId = $quoteItem->getProduct()->getId(); //Check to see if this is a simple assigned to a configurable. if ($quoteItem->getOptionByCode('cpid')) { $cpid = $quoteItem->getOptionByCode('cpid')->getValue(); $productId = (int) $cpid; } if (!$quoteItem) { $this->_getSession()->addError($this->__('Quote item is not found.')); $this->_redirect('checkout/cart'); return; } try { $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $params->setBuyRequest($quoteItem->getBuyRequest()); Mage::helper('catalog/product_view')->prepareAndRender($productId, $this, $params); } catch (Exception $e) { $this->_getSession()->addError($this->__('Cannot configure product: ' . $quoteItem->getProduct()->getId())); Mage::logException($e); $this->_goBack(); return; } }
/** * Ajax handler to response configuration fieldset of composite product in customer's wishlist * * @return Mage_Adminhtml_Customer_Wishlist_Product_Composite_WishlistController */ public function configureAction() { $configureResult = new Varien_Object(); try { $this->_initData(); $configureResult->setProductId($this->_wishlistItem->getProductId()); $configureResult->setBuyRequest($this->_wishlistItem->getBuyRequest()); $configureResult->setCurrentStoreId($this->_wishlistItem->getStoreId()); $configureResult->setCurrentCustomerId($this->_wishlist->getCustomerId()); $configureResult->setOk(true); } catch (Exception $e) { $configureResult->setError(true); $configureResult->setMessage($e->getMessage()); } /* @var $helper Mage_Adminhtml_Helper_Catalog_Product_Composite */ $helper = Mage::helper('adminhtml/catalog_product_composite'); $helper->renderConfigureResult($this, $configureResult); return $this; }
public function configureQuoteItemsAction() { // Prepare data $configureResult = new Varien_Object(); try { $quoteItemId = (int) $this->getRequest()->getParam('id'); if (!$quoteItemId) { Mage::throwException($this->__('Quote item id is not received.')); } $quoteItem = Mage::getModel('buyback/quote_item')->load($quoteItemId); if (!$quoteItem->getId()) { Mage::throwException($this->__('Quote item is not loaded.')); } $configureResult->setOk(true); $optionCollection = Mage::getModel('buyback/quote_item_option')->getCollection()->addItemFilter(array($quoteItemId)); $quoteItem->setOptions($optionCollection->getOptionsByItem($quoteItem)); $configureResult->setBuyRequest($quoteItem->getBuyRequest()); $configureResult->setCurrentStoreId($quoteItem->getStoreId()); $configureResult->setProductId($quoteItem->getProductId()); $sessionQuote = Mage::getSingleton('adminhtml/session_quote'); $configureResult->setCurrentCustomerId($sessionQuote->getCustomerId()); } catch (Exception $e) { $configureResult->setError(true); $configureResult->setMessage($e->getMessage()); } // Render page /* @var $helper Mage_Adminhtml_Helper_Catalog_Product_Composite */ $helper = Mage::helper('adminhtml/catalog_product_composite'); $helper->renderConfigureResult($this, $configureResult); return $this; }
/** * Action to reconfigure cart item */ public function configureAction() { // Extract item and product to configure $id = (int) $this->getRequest()->getParam('id'); $quoteItem = null; $cart = $this->_getCart(); if ($id) { $quoteItem = $cart->getQuote()->getItemById($id); } if (!$quoteItem) { $this->_getSession()->addError($this->__('Quote item is not found.')); $this->_redirect('checkout/cart'); return; } try { $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $params->setBuyRequest($quoteItem->getBuyRequest()); Mage::helper('Mage_Catalog_Helper_Product_View')->prepareAndRender($quoteItem->getProduct()->getId(), $this, $params); } catch (Exception $e) { $this->_getSession()->addError($this->__('Cannot configure product.')); Mage::logException($e); $this->_goBack(); return; } }
/** * Action to reconfigure wishlist item */ public function configureAction() { $id = (int) $this->getRequest()->getParam('id'); try { /* @var $item Mage_Wishlist_Model_Item */ $item = Mage::getModel('wishlist/item'); $item->loadWithOptions($id); if (!$item->getId()) { Mage::throwException($this->__('Cannot load wishlist item')); } $wishlist = $this->_getWishlist($item->getWishlistId()); if (!$wishlist) { return $this->norouteAction(); } Mage::register('wishlist_item', $item); $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $buyRequest = $item->getBuyRequest(); if (!$buyRequest->getQty() && $item->getQty()) { $buyRequest->setQty($item->getQty()); } if ($buyRequest->getQty() && !$item->getQty()) { $item->setQty($buyRequest->getQty()); Mage::helper('wishlist')->calculate(); } $params->setBuyRequest($buyRequest); Mage::helper('catalog/product_view')->prepareAndRender($item->getProductId(), $this, $params); } catch (Mage_Core_Exception $e) { Mage::getSingleton('customer/session')->addError($e->getMessage()); $this->_redirect('*'); return; } catch (Exception $e) { Mage::getSingleton('customer/session')->addError($this->__('Cannot configure product')); Mage::logException($e); $this->_redirect('*'); return; } }
/** * Action to reconfigure cart item */ public function configureAction() { // Extract item and product to configure $id = (int) $this->getRequest()->getParam('id'); $quoteItem = null; try { $cart = $this->_getCart(); $quoteItem = $cart->getQuote()->getItemById($id); if (!$quoteItem) { $this->_message($this->__('Quote item is not found.'), self::MESSAGE_STATUS_ERROR); return; } $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $params->setBuyRequest($quoteItem->getBuyRequest()); $productHelper = Mage::helper('catalog/product'); $buyRequest = $params->getBuyRequest(); /** @var $product Mage_Catalog_Model_Product */ $product = $productHelper->initProduct($quoteItem->getProduct()->getId(), $this, $params); if ($buyRequest) { $productHelper->prepareProductOptions($product, $buyRequest); } if ($params->hasConfigureMode()) { $product->setConfigureMode($params->getConfigureMode()); } $this->loadLayout(false); $this->getLayout()->getBlock('xmlconnect.catalog.product')->setProduct($product); $this->renderLayout(); } catch (Exception $e) { $this->_message($this->__('Cannot configure product.'), self::MESSAGE_STATUS_ERROR); Mage::logException($e); return; } }
/** * Ajax handler to response configuration fieldset of composite product in customer's cart * * @return Mage_Adminhtml_Customer_Cart_Product_Composite_CartController */ public function configureAction() { $configureResult = new Varien_Object(); try { $this->_initData(); $quoteItem = $this->_quoteItem; $optionCollection = Mage::getModel('Mage_Sales_Model_Quote_Item_Option')->getCollection()->addItemFilter($quoteItem); $quoteItem->setOptions($optionCollection->getOptionsByItem($quoteItem)); $configureResult->setOk(true); $configureResult->setProductId($quoteItem->getProductId()); $configureResult->setBuyRequest($quoteItem->getBuyRequest()); $configureResult->setCurrentStoreId($quoteItem->getStoreId()); $configureResult->setCurrentCustomer($this->_customer); } catch (Exception $e) { $configureResult->setError(true); $configureResult->setMessage($e->getMessage()); } /* @var $helper Mage_Adminhtml_Helper_Catalog_Product_Composite */ $helper = Mage::helper('Mage_Adminhtml_Helper_Catalog_Product_Composite'); $helper->renderConfigureResult($this, $configureResult); return $this; }
/** * Ajax handler to response configuration fieldset of composite product in customer's cart * * @return Mage_Adminhtml_Customer_Cart_Product_Composite_CartController */ public function configureAction() { $configureResult = new Varien_Object(); try { $this->_initData(); $quoteItem = $this->_quoteItem; $optionCollection = Mage::getModel('sales/quote_item_option')->getCollection()->addItemFilter($quoteItem); $quoteItem->setOptions($optionCollection->getOptionsByItem($quoteItem)); $configureResult->setOk(true); $configureResult->setProductId($quoteItem->getProductId()); $configureResult->setBuyRequest($quoteItem->getBuyRequest()); $configureResult->setCurrentStoreId($quoteItem->getStoreId()); $configureResult->setCurrentCustomer($this->_customer); } catch (Exception $e) { $configureResult->setError(true); $configureResult->setMessage($e->getMessage()); } /* @var $helper Mage_Adminhtml_Helper_Catalog_Product_Composite */ $helper = Mage::helper('adminhtml/catalog_product_composite'); // During order creation in the backend admin has ability to add any products to order Mage::helper('catalog/product')->setSkipSaleableCheck(true); $helper->renderConfigureResult($this, $configureResult); return $this; }
/** * Configure failed item options * * @return void */ public function configureFailedAction() { $id = (int) $this->getRequest()->getParam('id'); $qty = $this->getRequest()->getParam('qty', 1); try { $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $buyRequest = new Varien_Object(array('product' => $id, 'qty' => $qty)); $params->setBuyRequest($buyRequest); Mage::helper('catalog/product_view')->prepareAndRender($id, $this, $params); } catch (Mage_Core_Exception $e) { $this->_getCustomerSession()->addError($e->getMessage()); $this->_redirect('*'); return; } catch (Exception $e) { $this->_getCustomerSession()->addError($this->__('Cannot configure product')); Mage::logException($e); $this->_redirect('*'); return; } }
public function editAction() { $id = (int) $this->getRequest()->getParam('id'); $quoteItem = null; $cart = $this->_getCart(); if ('POST' != $this->getRequest()->getMethod()) { if ($id) { $quoteItem = $cart->getQuote()->getItemById($id); } if (!$quoteItem) { $this->_getSession()->addError(Mage::helper('checkout')->__('Quote item is not found.')); $this->_goBack(); return; } try { $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $params->setBuyRequest($quoteItem->getBuyRequest()); Mage::helper('icart/catalog_product_view')->prepareAndRender($quoteItem->getProduct()->getId(), $this, $params); } catch (Exception $e) { $this->_getSession()->addError(Mage::helper('checkout')->__('Cannot configure product.')); Mage::logException($e); $this->_goBack(); return; } return; } $params = $this->getRequest()->getParams(); if (!isset($params['options'])) { $params['options'] = array(); } try { if (isset($params['qty'])) { $filter = new Zend_Filter_LocalizedToNormalized(array('locale' => Mage::app()->getLocale()->getLocaleCode())); $params['qty'] = $filter->filter($params['qty']); } $quoteItem = $cart->getQuote()->getItemById($id); if (!$quoteItem) { Mage::throwException(Mage::helper('checkout')->__('Quote item is not found.')); } if (isset($params['qty']) && $params['qty'] == 0) { $isRemoveItemFlag = true; $cart->removeItem($id); } else { $isRemoveItemFlag = false; $item = $cart->updateItem($id, new Varien_Object($params)); if (is_string($item)) { Mage::throwException($item); } if ($item->getHasError()) { Mage::throwException($item->getMessage()); } $related = $this->getRequest()->getParam('related_product'); if (!empty($related)) { $cart->addProductsByIds(explode(',', $related)); } } $cart->save(); $this->_getSession()->setCartWasUpdated(true); Mage::dispatchEvent('checkout_cart_update_item_complete', array('item' => $item, 'request' => $this->getRequest(), 'response' => $this->getResponse())); if (!$this->_getSession()->getNoCartRedirect(true)) { if (!$cart->getQuote()->getHasError()) { if ($isRemoveItemFlag) { $message = Mage::helper('icart')->__('%s was deleted form your shopping cart.', Mage::helper('core')->htmlEscape($quoteItem->getName())); } else { $message = Mage::helper('checkout')->__('%s was updated in your shopping cart.', Mage::helper('core')->htmlEscape($item->getProduct()->getName())); } $this->_getSession()->addSuccess($message); } //$this->_goBack(); } } catch (Mage_Core_Exception $e) { if ($this->_getSession()->getUseNotice(true)) { $this->_getSession()->addNotice($e->getMessage()); } else { $messages = array_unique(explode("\n", $e->getMessage())); foreach ($messages as $message) { $this->_getSession()->addError($message); } } $this->getRequest()->setParam('error', 1); } catch (Exception $e) { $this->_getSession()->addException($e, Mage::helper('checkout')->__('Cannot update the item.')); Mage::logException($e); $this->getRequest()->setParam('error', 1); } $this->_forward('added'); }
public function loadOptionsAction() { $result = array(); try { $alertError = Mage::getSingleton('core/session')->getMiniCartAlertError(true); // Get initial data from request $categoryId = (int) $this->getRequest()->getParam('category', false); $params = new Varien_Object(); $params->setCategoryId($categoryId); $params->setSpecifyOptions($this->getRequest()->getParam('options')); $finalPrice = null; $qty = null; if ($this->getRequest()->getParam('item_id')) { /** @var $quote Mage_Sales_Model_Quote */ $quote = Mage::getSingleton('checkout/session')->getQuote(); /** @var $item Mage_Sales_Model_Quote_Item */ $item = $quote->getItemById($this->getRequest()->getParam('item_id')); if (!$item->getId()) { throw new Exception('Product is not loaded'); } $item->setQuote(Mage::getSingleton('checkout/session')->getQuote()); $productId = $item->getProduct()->getId(); $params->setBuyRequest($item->getBuyRequest()); $finalPrice = Mage::helper('tax')->displayCartPriceInclTax() ? Mage::helper('checkout')->getPriceInclTax($item) : $item->getCalculationPrice(); $qty = $item->getTotalQty(); } else { $productId = $this->getRequest()->getParam('product_id'); if (!$productId) { $requestPath = $this->getRequest()->getParam('request_path'); if (is_numeric($requestPath)) { $productId = $requestPath; } else { $productId = (int) $this->_getProductIdByRequestPath($requestPath); } } } /** @var $productHelper Mage_Catalog_Helper_Product */ $productHelper = Mage::helper('catalog/product'); if (method_exists($productHelper, 'initProduct')) { $product = $productHelper->initProduct($productId, $this, $params); } else { $this->getRequest()->setParam('id', $productId); $product = $this->_initProduct(); } if (!$product) { throw new Exception('Product is not loaded'); } $buyRequest = $params->getBuyRequest(); if ($buyRequest) { $productHelper->prepareProductOptions($product, $buyRequest); } Mage::dispatchEvent('catalog_controller_product_view', array('product' => $product)); if (method_exists($productHelper, 'initProduct')) { Mage::helper('catalog/product_view')->initProductLayout($product, $this); } else { $this->_initProductLayout($product); } if ($product->getTypeId() == 'grouped') { $viewBlockGrouped = $this->getLayout()->getBlock('product.info.grouped'); $html = $viewBlockGrouped->toHtml(); if ($this->getDataHelper()->isEnabledGroupedConfiguration()) { $html .= '<script type="text/javascript">optionsPrice = {};if(typeof tierPriceElement == \'undefined\'){tierPriceElement = {update:function(){}};}</script>'; $html .= '<div id="product_addtocart_form"></div>'; $html .= str_replace('var optionsPrice', 'optionsPrice', $this->getLayout()->getBlock('grouped_product_edit')->toHtml()); $html = str_replace('var bundle', 'bundle', $html); } } else { $additionalJs = ''; $optionsBlock = $this->getLayout()->getBlock('product.info.options.wrapper'); $viewBlock = $this->getLayout()->getBlock('product.info'); if ($product->getTypeId() == 'bundle') { $viewBlockBundle = $this->getLayout()->getBlock('product.info.bundle'); $additionalJs = "taxCalcMethod = '" . Mage::helper('tax')->getConfig()->getAlgorithm($product->getStore()) . "';"; $additionalJs .= "CACL_UNIT_BASE = '" . Mage_Tax_Model_Calculation::CALC_UNIT_BASE . "';"; $additionalJs .= "CACL_ROW_BASE = '" . Mage_Tax_Model_Calculation::CALC_ROW_BASE . "';"; $additionalJs .= "CACL_TOTAL_BASE = '" . Mage_Tax_Model_Calculation::CALC_TOTAL_BASE . "';"; $additionalJs .= 'optionsPrice.tierPrices = [];bundle = new Product.Bundle(' . $viewBlockBundle->getJsonConfig() . ');'; $additionalJs .= "if(typeof Itoris.BundlePromotions == 'undefined'){Itoris.BundlePromotions = Class.create();}"; } $html = '<script type="text/javascript">'; $html .= 'optionsPrice = new MiniCartProductOptionsPrice(' . $viewBlock->getJsonConfig() . ');'; $html .= $additionalJs . '</script>'; if ($product->getHasOptions() || $product->getTypeId() != 'simple') { $calendar = Mage::app()->getLayout()->createBlock('core/html_calendar')->setTemplate('page/js/calendar.phtml'); $html .= $calendar->toHtml() . $optionsBlock->toHtml(); } } if ($this->getDataHelper()->isEnabledDynamicProductOptions()) { $html = $this->_addDynamicOptionsHtml($html); } $result = array('content' => $html, 'product_name' => $product->getName(), 'product_id' => $product->getId(), 'product_type' => $product->getTypeId(), 'price' => Mage::app()->getStore()->formatPrice($finalPrice ? $finalPrice : Mage::helper('tax')->getPrice($product, $product->getFinalPrice()), false), 'qty' => $qty ? (int) $qty : 1, 'alert_error' => $alertError); } catch (Exception $e) { $result['error'] = 'Product has not been loaded'; } $this->getResponse()->setBody(Zend_Json::encode($result)); }
public function checkoutCartConfigure($observer) { $action = $observer->getEvent()->getControllerAction(); if ($action->getRequest()->getParam('iswebposcart') == 'true') { $id = (int) $action->getRequest()->getParam('id'); $quoteItem = null; $cart = $this->_getCart(); if ($id) { $quoteItem = $cart->getQuote()->getItemById($id); } $result = array(); if (!$quoteItem) { $action->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); return $action->getResponse()->setBody(''); } $viewHelper = Mage::helper('catalog/product_view'); $params = new Varien_Object(); $params->setCategoryId(false); $params->setConfigureMode(true); $params->setBuyRequest($quoteItem->getBuyRequest()); $productHelper = Mage::helper('catalog/product'); $productId = $quoteItem->getProduct()->getId(); try { $product = $productHelper->initProduct($productId, $action, $params); if (!$product) { $this->_getSession()->addError($viewHelper->__('Product is not loaded')); } else { if ($buyRequest = $params->getBuyRequest()) { $productHelper->prepareProductOptions($product, $buyRequest); } $product->setConfigureMode(true); Mage::dispatchEvent('catalog_controller_product_view', array('product' => $product)); $viewHelper->initProductLayout($product, $action); $result['hasOptions'] = true; /* Daniel - doesn't allow add out of stock product to cart */ if (!$product->isAvailable()) { $result['outofstock'] = true; } /* end */ } } catch (Exception $e) { $this->_getSession()->addError(Mage::helper('checkout')->__('Cannot configure product.')); } $action->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); $params = $action->getRequest()->getParams(); try { if (isset($params['groupmessage']) && $action->getLayout()->getMessagesBlock()) { $action->getLayout()->getMessagesBlock()->addMessages($this->_getSession()->getMessages(true)); $action->getLayout()->getMessagesBlock()->setEscapeMessageFlag($this->_getSession()->getEscapeMessages(true)); $result['message'] = $action->getLayout()->getMessagesBlock()->getGroupedHtml(); } else { $this->_getSession()->getMessages(true); $this->_getSession()->getEscapeMessages(true); } if (isset($result['hasOptions'])) { if ($typeBlock = Mage::getStoreConfig("webpos/product/{$product->getTypeId()}")) { $productBlock = $action->getLayout()->createBlock($typeBlock, 'ajaxcart_product_view'); } else { $productBlock = $action->getLayout()->createBlock('webpos/product_view', 'ajaxcart_product_view'); } $productBlock->setData('submit_route_data', array('route' => 'checkout/cart/updateItemOptions', 'params' => array('id' => $id))); /* add all js $result['optionjs'] = $productBlock->getJsItems(); */ /* Daniel - updated - js from colorselectorplus */ $optionjss = array(); /* add js from other extensions - for example: $optionjss[] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS).'cjm/colorselectorplus/colorselected.js'; $optionjss[] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);.'js/colorselectorplus/colorselected.js'; */ $result['optionjs'] = $optionjss; /* end */ $result['optionhtml'] = $productBlock->toHtml(); } } catch (Exception $e) { } $action->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); } }