Magento CE 1.9.1
を使用しています。プロバイダーのXMLフィードから製品をインポートするためのインポートスクリプトを作成しました。
このフィードは毎日午前3時に更新されます。私のプロフィーダーは、自分のショップに在庫がある商品のみをxmlで送ってくれます。
では、製品skuがxmlフィードに存在しない場合、どうすれば製品の在庫状況を在庫切れ(製品skuごと)に更新できますか?
私が何をしたいかを説明するために例を置き、データはxmlで提供されます:
Monday : Tuesday :
Sku qty Sku qty
ABC 22 ABC 12
BDE 30 FGH 4
FGH 15
私がしなければならないこと:火曜日xmlに表示されないため、プログラムで製品のBDEを「在庫なし」に設定する必要があります。
私のインポートスクリプトがあります:
$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();
}
ありがとう
まったく同じ問題があります。ここには2つのオプションがあります。両方のスクリプトを(2日ベースで)保持して比較し、不足している製品の在庫をなくします。または、在庫切れの製品について、stocks = 0と同じファイルを提供するようにデータプロバイダーに指示してください(これは私の意見では最もクリーンな方法です)。
—
Julien Lachal
返事が遅れて申し訳ありません。どうやら私たちのプロバイダーとの契約では、彼は私たちに在庫切れの製品を提供できないので、最初のオプションを使用する必要があります
—
JayD
さて、あなたに幸運は、簡単な作業ではありません。
—
Julien Lachal 16