Обновление уровней запасов в Magento от CSV - PullRequest
0 голосов
/ 17 января 2012

У меня есть скрипт, который будет обновлять количество товара в Magento на основе соответствия SKU. Это прекрасно работает, если заголовки в CSV совпадают с полями в Magento, которые они обновляют, например,

ы, шт

ABC123,20

ABC124,20

Однако в моем исходном CSV заголовки называются «идентификатор продукта» и «количество», например,

идентификатор продукта, количество

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);

1 Ответ

0 голосов
/ 17 января 2012

Вы можете попробовать следующую статью, которая прекрасно работает:http://www.blog.magepsycho.com/updating-product-qty-in-magento-in-an-easier-faster-way/которая просто основана на необработанных SQL-запросах и очень быстра даже для миллионов обновлений qty.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...