Saya menggunakan Magento CE 1.9.1
Saya membuat skrip impor untuk mengimpor produk dari penyedia xml feed.
Umpan ini diperbarui setiap hari pada jam 3 pagi. Profider saya mengirimi saya produk xml-nya saja di mana stoknya ada di tokonya.
Jadi bagaimana saya bisa memperbarui statut stok produk saya menjadi kehabisan stok (dengan sku produk) ketika sku produk tidak ada dalam umpan xml?
Saya memberi contoh untuk menjelaskan apa yang saya inginkan, data yang disediakan di xml:
Monday : Tuesday :
Sku qty Sku qty
ABC 22 ABC 12
BDE 30 FGH 4
FGH 15
Apa yang harus saya lakukan: Selasa saya harus mengatur secara program BDE produk saya menjadi "kehabisan stok" karena tidak muncul di xml.
Ada skrip impor saya:
$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();
}
Terima kasih
Jawaban:
Anda dapat membuat satu tabel di database Anda dengan semua entri produk di dalamnya.
Setelah pembaruan pada hari Senin struktur DB.
Pada hari Selasa tetapkan bendera ke 1 untuk sku yang tersedia. Jadi setelah itu pada hari Selasa struktur DB.
ambil semua sku dengan flag = 0 dan atur 'is_in_stock' menjadi 0. setelah itu perbarui tabel Anda dengan sku yang tersedia pada hari Selasa dan atur benderanya menjadi 0 untuk hari berikutnya.
Setelah pembaruan pada hari Selasa struktur DB.
sumber