Estoy usando Magento CE 1.9.1.
Hice una secuencia de comandos de importación para importar productos de un proveedor de alimentación XML.
Este feed se actualiza todos los días a las 3 a.m. Mi profider me envía en su xml solo productos que están en stock en su tienda.
Entonces, ¿cómo puedo actualizar el estado de mi stock de producto a agotado (por sku de producto) cuando el sku de producto no existe en el feed xml?
Pongo un ejemplo para explicar lo que quiero, datos proporcionados en el xml:
Monday : Tuesday :
Sku qty Sku qty
ABC 22 ABC 12
BDE 30 FGH 4
FGH 15
Lo que tengo que hacer: el martes tengo que configurar programáticamente mi producto BDE a "agotado" porque no aparece en el xml.
Ahí está mi script de importación:
$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();
}
Gracias
Respuestas:
Puede crear una tabla en su base de datos con toda la entrada del producto.
Después de actualizar el lunes la estructura de DB.
El martes establezca la bandera en 1 para el sku disponible. Entonces, después de eso, el martes estructura de DB.
recupere todos los sku con el flag = 0 y establezca su 'is_in_stock' en 0. después de eso, actualice su tabla con el sku disponible el martes y establezca su flag en 0 para el día siguiente.
Después de actualizar el martes la estructura de DB.
fuente