I have created a event observer module that will trigger and remove any product that is out of stock from Upsell, but for some reason it is removing the products that are in stock. I have included the module code below and let me know if I am missing anything.
File name: kevz_upsellobserver.xml
<?xml version="1.0"?>
<config>
<modules>
<kevz_upsellobserver>
<codePool>local</codePool>
<active>true</active>
</kevz_upsellobserver>
</modules>
</config>
File name: config.xml
<?xml version="1.0"?>
<config>
<modules>
<kevz_upsellobserver>
<version>0.0.1</version>
</kevz_upsellobserver>
</modules>
<global>
<models>
<kevzupsellobserver>
<class>upsellobserver_Model</class>
</kevzupsellobserver>
</models>
<events>
<catalog_product_upsell>
<observers>
<kevzupsellobserver>
<type>singleton</type>
<class>Kevz_Upsellobserver_Model_Observer</class>
<method>filterUpsells</method>
</kevzupsellobserver>
</observers>
</catalog_product_upsell>
</events>
</global>
</config>
File name: Observer.php
<?php
class Kevz_Upsellobserver_Model_Observer {
public function filterUpsells($observer) {
$collection = $observer->getEvent()->getCollection();
foreach ($collection as $item) {
if (!$item->getIsSalable()) {
$collection->removeItemByKey($item->getId());
}
}
}
}
?>