我使用的是Magento CE 1.9.1,
我制作了一个导入脚本以从提供程序xml提要中导入产品。
该提要每天凌晨3点更新。我的教授将他的XML产品发送给我,而这是他的商店中有库存的产品。
因此,当xml feed中不存在产品sku时,如何将我的产品库存状态更新为缺货(按产品sku)?
我举了一个例子来解释我想要的,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();
}
谢谢
我有完全一样的问题。您在这里有2个选项。保留两个脚本(每两天一次)并进行比较,然后将缺少的产品缺货。或者告诉您的数据提供者为您提供的库存相同产品的库存= 0的同一文件(我认为这是最干净的方法)。
—
Julien Lachal '16
这么晚才回复很抱歉。显然,与我们的提供商签订了合同,他无法为我们提供缺货的产品,因此我需要使用您的第一种选择
—
JayD
好吧,祝您好运,绝非易事。
—
Julien Lachal