Estou usando o Magento CE 1.9.1
. Criei um script de importação para importar produtos de um feed xml de provedor.
Este feed é atualizado todos os dias às 3 da manhã. Meu profider me envia em seu xml apenas produtos que estão em estoque em sua loja.
Então, como posso atualizar o status do meu estoque de produtos para fora de estoque (por sku do produto) quando o sku do produto não existe no feed xml?
Eu coloquei um exemplo para explicar o que eu quero, dados fornecidos no xml:
Monday : Tuesday :
Sku qty Sku qty
ABC 22 ABC 12
BDE 30 FGH 4
FGH 15
O que tenho que fazer: terça-feira, tenho que definir programaticamente o BDE do meu produto como "fora de estoque", porque ele não aparece no xml.
Aqui está o meu script de importação:
$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();
}
obrigado
Respostas:
Você pode criar uma tabela no seu banco de dados com toda a entrada do produto.
Após atualização na estrutura de segunda-feira do DB.
Na terça-feira, defina o sinalizador como 1 para o sku disponível. Então, depois disso, na terça-feira, a estrutura do DB.
recupere todo o sku com a bandeira = 0 e defina 'is_in_stock' como 0. Depois disso, atualize sua tabela com o sku disponível na terça-feira e defina sua bandeira como 0 para o dia seguinte.
Após atualização na estrutura de terça-feira do DB.
fonte