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.