Ich verwende Magento CE 1.9.1.
Ich habe ein Importskript erstellt, um Produkte aus einem XML-Feed eines Anbieters zu importieren.
Dieser Feed wird täglich um 3 Uhr morgens aktualisiert. Mein Professor schickt mir in seiner XML nur Produkte, die in seinem Shop auf Lager sind.
Wie kann ich mein Produktbestandsstatut auf "Nicht vorrätig" (nach Produkt-Sku) aktualisieren, wenn das Produkt-Sku nicht im XML-Feed vorhanden ist?
Ich habe ein Beispiel gegeben, um zu erklären, was ich will, Daten in der XML bereitgestellt:
Monday : Tuesday :
Sku qty Sku qty
ABC 22 ABC 12
BDE 30 FGH 4
FGH 15
Was ich tun muss: Dienstag muss ich mein Produkt BDE programmgesteuert auf "nicht vorrätig" setzen, da es nicht in der XML erscheint.
Es gibt mein Importskript:
$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();
}
Vielen Dank
Antworten:
Sie können eine Tabelle in Ihrer Datenbank mit allen Produkteinträgen erstellen.
Nach dem Update am Montag Struktur der DB.
Setzen Sie am Dienstag die Flagge für den verfügbaren Sku auf 1. Also danach am Dienstag Struktur der DB.
Rufen Sie alle Sku mit dem Flag = 0 ab und setzen Sie deren 'is_in_stock' auf 0. Nach dieser Aktualisierung stellen Sie Ihre Tabelle mit dem verfügbaren Sku am Dienstag auf und setzen ihr Flag für den nächsten Tag auf 0.
Nach dem Update am Dienstag Struktur der DB.
quelle