0

我有一个小脚本,可以在我的 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();}

?>
4

1 回答 1

0

我认为输入数据有误。Magento 不保存可配置产品的数量。我认为您不应该更新可配置产品的库存项目。

此外,您正在加载产品模型,但您没有使用它。尝试评论这一行

$product->load($productId);

你的脚本应该快得多。

于 2013-04-06T19:32:30.810 回答