我知道它已经过时了,但是因为即使在 1.7.0.1 中也没有解决这个问题,所以我想出了一个更好的解决方案。
在 1.5.1 及更高版本上测试:
\app\code\core\Mage\CatalogInventory\Model\Observer.php
在
公共函数refundOrderInventory($observer)
后
Mage::getSingleton('cataloginventory/stock')->revertProductsSale($items);
//add this
foreach ($creditmemo->getAllItems() as $item) {
$productId = $item->getProductId();
$product = Mage::getModel('catalog/product')->load($productId);
if(!$product->isConfigurable()){
$stockItem = $product->getStockItem();
//$stockItem->setQty($item->getQty());
$stockItem->setIsInStock(1);
$stockItem->save();
$product->setStockItem($stockItem);
$product->save();
}
}