*/ class Mage_Adminhtml_Block_Sales_Order_Create_Search_Grid extends Mage_Adminhtml_Block_Widget_Grid { public function __construct() { parent::__construct(); $this->setId('sales_order_create_search_grid'); $this->setRowClickCallback('order.productGridRowClick.bind(order)'); $this->setCheckboxCheckCallback('order.productGridCheckboxCheck.bind(order)'); $this->setRowInitCallback('order.productGridRowInit.bind(order)'); $this->setDefaultSort('entity_id'); $this->setUseAjax(true); if ($this->getRequest()->getParam('collapse')) { $this->setIsCollapsed(true); } } /** * Retrieve quote store object * @return Mage_Core_Model_Store */ public function getStore() { return Mage::getSingleton('adminhtml/session_quote')->getStore(); } /** * Retrieve quote object * @return Mage_Sales_Model_Quote */ public function getQuote() { return Mage::getSingleton('adminhtml/session_quote')->getQuote(); } protected function _addColumnFilterToCollection($column) { // Set custom filter for in product flag if ($column->getId() == 'in_products') { $productIds = $this->_getSelectedProducts(); if (empty($productIds)) { $productIds = 0; } if ($column->getFilter()->getValue()) { $this->getCollection()->addFieldToFilter('entity_id', array('in'=>$productIds)); } else { if($productIds) { $this->getCollection()->addFieldToFilter('entity_id', array('nin'=>$productIds)); } } } else { parent::_addColumnFilterToCollection($column); } return $this; } /** * Prepare collection to be displayed in the grid * * @return Mage_Adminhtml_Block_Sales_Order_Create_Search_Grid */ protected function _prepareCollection() { $attributes = Mage::getSingleton('catalog/config')->getProductAttributes(); /* @var $collection Mage_Catalog_Model_Resource_Product_Collection */ $collection = Mage::getModel('catalog/product')->getCollection(); $collection ->setStore($this->getStore()) ->addAttributeToSelect($attributes) ->addAttributeToSelect('sku') ->addStoreFilter() ->addAttributeToFilter('type_id', array_keys( Mage::getConfig()->getNode('adminhtml/sales/order/create/available_product_types')->asArray() )) ->addAttributeToSelect('gift_message_available'); Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($collection); $this->setCollection($collection); return parent::_prepareCollection(); } /** * Prepare columns * * @return Mage_Adminhtml_Block_Sales_Order_Create_Search_Grid */ protected function _prepareColumns() { $this->addColumn('entity_id', array( 'header' => Mage::helper('sales')->__('ID'), 'sortable' => true, 'width' => '60', 'index' => 'entity_id' )); $this->addColumn('name', array( 'header' => Mage::helper('sales')->__('Product Name'), 'renderer' => 'adminhtml/sales_order_create_search_grid_renderer_product', 'index' => 'name' )); $this->addColumn('sku', array( 'header' => Mage::helper('sales')->__('SKU'), 'width' => '80', 'index' => 'sku' )); $this->addColumn('price', array( 'header' => Mage::helper('sales')->__('Price'), 'column_css_class' => 'price', 'align' => 'center', 'type' => 'currency', 'currency_code' => $this->getStore()->getCurrentCurrencyCode(), 'rate' => $this->getStore()->getBaseCurrency()->getRate($this->getStore()->getCurrentCurrencyCode()), 'index' => 'price', 'renderer' => 'adminhtml/sales_order_create_search_grid_renderer_price', )); $this->addColumn('in_products', array( 'header' => Mage::helper('sales')->__('Select'), 'header_css_class' => 'a-center', 'type' => 'checkbox', 'name' => 'in_products', 'values' => $this->_getSelectedProducts(), 'align' => 'center', 'index' => 'entity_id', 'sortable' => false, )); $this->addColumn('qty', array( 'filter' => false, 'sortable' => false, 'header' => Mage::helper('sales')->__('Qty To Add'), 'renderer' => 'adminhtml/sales_order_create_search_grid_renderer_qty', 'name' => 'qty', 'inline_css'=> 'qty', 'align' => 'center', 'type' => 'input', 'validate_class' => 'validate-number', 'index' => 'qty', 'width' => '1', )); return parent::_prepareColumns(); } public function getGridUrl() { return $this->getUrl('*/*/loadBlock', array('block'=>'search_grid', '_current' => true, 'collapse' => null)); } protected function _getSelectedProducts() { $products = $this->getRequest()->getPost('products', array()); return $products; } /** * Retrieve gift message save model * * @deprecated after 1.4.2.0 * @return Mage_Adminhtml_Model_Giftmessage_Save */ protected function _getGiftmessageSaveModel() { return Mage::getSingleton('adminhtml/giftmessage_save'); } /* * Add custom options to product collection * * return Mage_Adminhtml_Block_Widget_Grid */ protected function _afterLoadCollection() { $this->getCollection()->addOptionsToResult(); return parent::_afterLoadCollection(); } }