Я использую Magento CE 1.9.1.
Я создал скрипт импорта для импорта продуктов из xml-ленты провайдера.
Этот канал обновляется каждый день в 3 часа ночи. Мой профайдер отправляет мне в своем XML только продукты, которые есть на складе в его магазине.
Итак, как я могу обновить статус моего запаса товара на складе (по артикулу товара), если артикула товара нет в канале xml?
Я положил пример, чтобы объяснить, что я хочу, данные представлены в XML:
Monday : Tuesday :
Sku qty Sku qty
ABC 22 ABC 12
BDE 30 FGH 4
FGH 15
Что я должен сделать: во вторник я должен программно установить для моего продукта BDE «нет в наличии», потому что он не отображается в xml.
Вот мой скрипт импорта:
$file = 'feed.xml';
$feed = simplexml_load_file($file);
foreach($feed as $product){
//some datas in xml feed
$sku = $product->identifiant_unique;
$prix = $product->prix;
$titre = $product->categorie3;
$quantiteStock = $product->quantiteStock;
$poid = $product->poids_net;
//Setters
$produit = Mage::getModel('catalog/product');
$produit->setName($titre.' '.$sku);
$produit->setSku($sku);
$produit->setWeight($poid);
$produit->setAttributeSetId(4);
$produit->setDescription($titre.' '.$sku);
$produit->setShortDescription($titre.' '.$sku);
$produit->setTypeId($product['type_id'])->setWebsiteIds(array(1))->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
$produit->setPrice($prix);
$produit->setIsMassupdate(true);
$produit->setExcludeUrlRewrite(true);
$produit->save();
// For Inventory Management
$stockItem = Mage::getModel('cataloginventory/stock_item');
$stockItem->assignProduct($produit);
$stockItem->setData('is_in_stock', 1);
$stockItem->setData('stock_id', 1);
$stockItem->setData('store_id', 1);
$stockItem->setData('manage_stock', 1);
$stockItem->setData('use_config_manage_stock', 0);
$stockItem->setData('min_sale_qty', 1);
$stockItem->setData('use_config_min_sale_qty', 0);
$stockItem->setData('max_sale_qty', 1000);
$stockItem->setData('use_config_max_sale_qty', 0);
$stockItem->setData('qty', $quantiteStock);
$stockItem->save();
}
Спасибо
Ответы:
Вы можете создать одну таблицу в своей базе данных со всей записью продукта.
После обновления в понедельник состав БД.
Во вторник установите флаг 1 для доступного номера. Так что после этого во вторник структура БД.
извлеките все sku с флагом = 0 и установите их is_in_stock на 0. После этого обновите свою таблицу с доступными sku во вторник и установите их флаг на 0 на следующий день.
После обновления во вторник состав БД.
источник