/** * Filter collection by removing not available product types * * @param Mage_Core_Model_Resource_Db_Collection_Abstract $collection * @return Mage_Core_Model_Resource_Db_Collection_Abstract */ public function applySalableProductTypesFilter($collection) { $productTypes = Mage::getConfig()->getNode('adminhtml/sales/order/create/available_product_types')->asArray(); $productTypes = array_keys($productTypes); foreach ($collection->getItems() as $key => $item) { if ($item instanceof Mage_Catalog_Model_Product) { $type = $item->getTypeId(); } else { if ($item instanceof Mage_Sales_Model_Order_Item) { $type = $item->getProductType(); } else { if ($item instanceof Mage_Sales_Model_Quote_Item) { $type = $item->getProductType(); } else { $type = ''; } } } if (!in_array($type, $productTypes)) { $collection->removeItemByKey($key); } } return $collection; }