Совершенно необходимо обновить мой ответ, здесь так много извинений. Когда я посмотрел на функцию, как она определена в app / code / core / mage / Catalogue / Model / Product.php, я увидел эту очень странную ситуацию:
public function isInStock()
{
return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
}
Так что, пока продукт включен, isInStock всегда будет возвращать true. Функция для того, чтобы сказать, продается ли продукт, isSaleable ().