Come modificare lo stato delle scorte di prodotto a livello di codice quando lo sku del prodotto non viene visualizzato nel feed di dati del provider?


8

Sto usando Magento CE 1.9.1
Ho creato uno script di importazione per importare prodotti da un feed XML del provider.
Questo feed viene aggiornato ogni giorno alle 3 del mattino. Il mio profider mi invia nei suoi prodotti xml solo quelli disponibili nel suo negozio.

Quindi, come posso aggiornare lo statuto dello stock del mio prodotto a esaurito (per codice prodotto) quando lo SKU prodotto non esiste nel feed XML?

Ho messo un esempio per spiegare quello che voglio, i dati forniti nel file XML:

Monday :        Tuesday :

Sku   qty       Sku    qty

ABC   22        ABC    12
BDE   30        FGH    4
FGH   15

Cosa devo fare: martedì devo impostare a livello di codice il mio prodotto BDE su "esaurito" perché non appare nell'xml.

C'è il mio script di importazione:

    $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();
    }

Grazie


Ho lo stesso identico problema. Hai 2 opzioni qui. Conservare entrambi gli script (su una base di 2 giorni) e confrontarli e mettere i prodotti mancanti esauriti. Oppure dì al tuo fornitore di dati di fornirti lo stesso file con stock = 0 per i prodotti che non sono disponibili (questo è il metodo più pulito secondo me).
Julien Lachal,

Scusa per il ritardo della risposta. Apparentemente con il contratto che abbiamo con il nostro fornitore, non può fornirci prodotti esauriti, quindi
devo

Bene, buona fortuna a te, non sarà un compito facile.
Julien Lachal,

Risposte:


0

È possibile creare una tabella nel database con tutte le voci del prodotto al suo interno.

Dopo l'aggiornamento il lunedì struttura del DB.

sku   qty   created_at            flag

ABC   22    date("Y-m-d H:i:s")    0
BDE   13    date("Y-m-d H:i:s")    0
FGH   15    date("Y-m-d H:i:s")    0

Martedì imposta flag su 1 per lo sku disponibile. Quindi dopo quello martedì struttura del DB.

sku   qty   created_at            flag

ABC   12    date("Y-m-d H:i:s")    1
BDE   13    date("Y-m-d H:i:s")    0
FGH    4    date("Y-m-d H:i:s")    1

recupera tutto lo sku con flag = 0 e imposta "is_in_stock" su 0. dopo l'aggiornamento aggiorna la tabella con lo sku disponibile martedì e imposta il flag su 0 per il giorno successivo.

Dopo l'aggiornamento martedì struttura del DB.

sku   qty   created_at            flag

ABC   12    date("Y-m-d H:i:s")    0
BDE   13    date("Y-m-d H:i:s")    0 (You can remove old entry as per you logic)
FGH   04    date("Y-m-d H:i:s")    0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.