So begrüßte uns Magento mit der Fehlermeldung "Der Lagerbestand des Artikels ist ungültig" sobald ein Artikel in den Warenkorb gelegt wurde. Ein direktes suchen der Fehlermeldung bei Google half leider nicht direkt weiter. Was tun? Ganz einfach. Zuerst haben wir fix einmal die englische Meldung aus der Datei app/locale/de_DE/Mage_CatalogInventory.csv extrahiert: "The stock item for Product is not valid". Schnell die Meldung gegoogelt und, in der Tat, wir fanden einen Artikel von Zachary mit genau dem Problem.
<?php
include 'htdocs/app/Mage.php';
// Set store defaults for Magento
$storeId = Mage::app()->getStore()->getId();
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$pModel = Mage::getModel('catalog/product');
$products = $pModel->getCollection();
foreach ($products as $product) {
$stockData = $product->getStockData();
if (!$stockData) {
$product = $product->load($product->getId());
$stockData = array(
'manage_stock' => 0,
'is_in_stock' => 1,
'qty' => 1
);
$product->setStockData($stockData);
echo ".";
ob_end_flush();
try {
$product->save();
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
Was war passiert?
Wenn Produkte falsch bzw. unvollständig angelegt wurden fehlt in Magento das Stock-Item. In der Datei app/code/core/Mage/CatalogInventory/Model/Observer.php quittiert Magento das in Zeile 426 direkt mit einer Fehlermeldung:
$stockItem = $quoteItem->getProduct()->getStockItem();
/* @var $stockItem Mage_CatalogInventory_Model_Stock_Item */
if (!$stockItem instanceof Mage_CatalogInventory_Model_Stock_Item) {
Mage::throwException(Mage::helper('cataloginventory')->__('The stock item for Product is not valid.'));
}