2012-01-17 7 views
0

SKUとのマッチングに基づいてMagentoの在庫数を更新するスクリプトがあります。これは、CSVの見出しが更新中のMagentoのフィールドに一致する限り、正常に機能します。CSVからMagentoの在庫レベルを更新する

SKU、数量は

ABC123,20

ABC124,20

しかし私のソースCSVを見出しは "製品ID" と "数量" と命名され、例えばインポートがうまくいくように

製品ID、数量は

ABC123,20

ABC124,20

は、どのように私は、配列のキー名をリマップでしょうか?

require_once '../app/Mage.php'; 

umask(0); 
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
$count = 0; 

$file = fopen('/home/public_html/mysite/csvs/my.csv', 'r'); 

while (($line = fgetcsv($file)) !== FALSE) { 

if ($count == 0) { 
foreach ($line as $key=>$value) { 
$cols[$value] = $key; 

} 
} 

$count++; 

if ($count == 1) continue; 

#Convert the lines to cols 
if ($count > 0) { 
foreach($cols as $col=>$value) { 
unset(${$col}); 
${$col} = $line[$value]; 

echo ${$col}; 
} 
} 

//print_r($cols); die(); 

// Check if SKU exists 
$product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku); 

if ($product) { 

$productId = $product->getId(); 
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId); 
$stockItemId = $stockItem->getId(); 
$stock = array(); 

if (!$stockItemId) { 
$stockItem->setData('product_id', $product->getId()); 
$stockItem->setData('stock_id', 1); 
} else { 
$stock = $stockItem->getData(); 
} 

foreach($cols as $col=>$value) { 
$stock[$col] = $line[$value]; 
} 

foreach($stock as $field => $value) { 
$stockItem->setData($field, $value?$value:0); 
} 



$stockItem->save(); 

unset($stockItem); 
unset($product); 
} 

echo "<br />Stock updated $sku"; 

} 
fclose($file); 
+0

プロダクトID!= SKUとソースファイルに名前を変更しやすいですか?ファイルを開いて名前を変更してください –

+0

私はSageによって自動生成されたソースファイルの名前を変更できません。 – user398894

+0

あなたはインクルードする前にPHPでそれを変更するだけです。そして、あなたのコードの他の部分については、各項目 –

答えて

関連する問題