Beispiel #1
0
 /**
  * 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;
 }