我有一个小脚本,它在我的Magento商店中导入我的卖家库存。 它与简单的产品和儿童产品完美配合,但对可配置产品有一些奇怪的问题。 当脚本运行时,将随机产品配置为“不可用”。 我必须去管理员,选择所有可以配置视图“目录/搜索”的产品(确保只选择父可配置产品)并将库存中的所有属性更改为“可用”。
有没有办法让库存检查只对可配置产品有效? 这是我的脚本,任何人都可以看到错误或者可以帮助我如何进行另一次检查以确保所有可配置产品都可用?
<?php
define('MAGE_BASE_DIR', realpath(dirname(__FILE__)));
require_once(MAGE_BASE_DIR.'/app/Mage.php');
$file = MAGE_BASE_DIR."/var/import/stock.csv";
$handle = @fopen($file, "r");
if ($handle) {
require_once(MAGE_BASE_DIR.'/app/Mage.php');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
while (!feof($handle)) {
$linea = fgets($handle);
$linea2 = str_replace('"', '', $linea);
$dati = explode(";", $linea2);
$ref = trim($dati[0]);
$sku = trim($dati[1]);
$titolo = trim ($dati[2]);
$qta = trim($dati[3]);
$disponibile = trim($dati[4]);
$product = Mage::getModel('catalog/product');
$stockItem = Mage::getModel('cataloginventory/stock_item');
$productId = $product->getIdBySku($sku);
if ($productId !== false) {
$product->load($productId);
$stockItem->loadByProduct($productId);
$stockItem->setData('qty', $qta);
$stockItem->setData('is_in_stock', ($qta > 0) ? 1 : 0);
try {
$stockItem->save();
echo "<span style='color:#ff0000; weight:bold;'>{$sku} elaborato correttamente.</span> ";
} catch(Exception $e) {
$countException++;
echo "{$sku} errore ({$e->getMessage()}). ";
}
} else {
echo "{$sku} non trovato.";
}
unset($product);
unset($stockItem);
}
fclose($handle);
} else {
echo "Errore apertura file. ({$file})";
exit();}
?>
在这里输入代码
感谢所有
答案 0 :(得分:0)
我认为输入数据有误。 Magento不为可配置产品保存数量。我认为您不应该更新可配置产品的库存项目。
此外,您正在加载产品型号,但您没有使用它。试着评论这一行
$product->load($productId);
你的脚本应该快得多。