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();}
?>