J'utilise Magento CE 1.9.1
J'ai créé un script d'importation pour importer des produits à partir d'un flux xml de fournisseur.
Ce flux est mis à jour tous les jours à 3 heures du matin. Mon profider m'envoie dans son xml uniquement les produits en stock dans sa boutique.
Alors, comment puis-je mettre à jour mon statut de stock de produit en rupture de stock (par référence produit) lorsque la référence produit n'existe pas dans le flux xml?
Je mets un exemple pour expliquer ce que je veux, les données fournies dans le xml:
Monday : Tuesday :
Sku qty Sku qty
ABC 22 ABC 12
BDE 30 FGH 4
FGH 15
Ce que je dois faire: mardi, je dois définir par programmation mon produit BDE sur "en rupture de stock" car il n'apparaît pas dans le xml.
Il y a mon script d'importation:
$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();
}
Merci
Réponses:
Vous pouvez créer une table dans votre base de données contenant toutes les entrées de produit.
Après la mise à jour lundi de la structure de DB.
Mardi, définissez le drapeau sur 1 pour le sku disponible. Donc, après cela, mardi structure de DB.
récupérez tous les sku avec le drapeau = 0 et définissez leur 'is_in_stock' à 0. après cette mise à jour, vous tablez avec le sku disponible le mardi et placez leur drapeau à 0 pour le lendemain.
Après mise à jour mardi de la structure de DB.
la source