E-mail di notifica stock per prodotti configurabili


8

Di recente ho riscontrato un problema con un negozio, quando ho iniziato a notare che alcune e-mail di notifica delle scorte non venivano inviate. Tutte le e-mail per prodotti semplici vanno bene, ma quando si tratta di prodotti configurabili, ecco il mio problema:

Al momento, i clienti possono iscriversi alle e-mail di notifica delle scorte. Il processo cron funziona correttamente e il sistema li invia logicamente solo quando sono effettivamente disponibili e non impostati su 0. I prodotti configurabili sono tuttavia sempre impostati su 0 e i prodotti semplici che appartengono a questo configurabile effettuano la modifica dello stock. Quindi quello che succede ora è che le persone sono in grado di abbonarsi a un prodotto solo quando TUTTE le taglie sono esaurite (quindi non sono nemmeno in grado di selezionare una taglia di cui desiderano ricevere informazioni), ma poi quando le scarpe, ad esempio, vengono rifornite , non ricevono una notifica perché il configurabile (che è il prodotto a cui si sono abbonati) è ancora a 0.

Sono sicuro di non essere la prima persona a riscontrare questo problema, quindi mi chiedevo se qualcuno è stato in grado di aggirare il problema o trovare una soluzione?

Risposte:


1

Sembra che dovrai modificare il codice in due punti. Innanzitutto, dove il codice verifica per ciascun prodotto se i clienti sono autorizzati a sottoscriverlo. In secondo luogo, dove il tuo codice (il cron job presumo) controlla le variazioni delle scorte per i prodotti.

In primo luogo, è possibile consentire l'abbonamento se uno qualsiasi dei prodotti secondari è esaurito:

    $allowSubscriptionForProduct = false;
    if ($product->getData('type_id') == 'configurable') {
        $childProductIds = Mage::getModel('catalog/product_type_configurable')
            ->getChildrenIds($product->getId())
        foreach ($childProductIds[0] as $childProductId) {
            $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($childProductId);
            if ($stock->getData('is_in_stock') == 1) {
                $allowSubscriptionForProduct = true;
                break;
            }
        }
    }
    if ($allowSubscriptionForProduct === true) {
        // change a product attribute to let customers subscribe to this product. 
    }

NB: $ childProductIds ha una struttura strana. Mi aspetterei un array di ID, ma getChildrenIds () racchiude quell'array in un altro array. Da qui lo [0] nel ciclo foreach.

Nella seconda istanza, è necessario passare dal prodotto figlio al prodotto configurabile principale.

    foreach ($simpleProductThatWasOutOfStock as $outOfStockSimpleProduct) {
        $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($outOfStockSimpleProduct->getId());
        if ($stock->getData('is_in_stock') == 1) {
            $configurableProductIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($outOfStockSimpleProduct->getId())
            foreach ($configurableProductIds as $configurableProductId) {
                // use the code that schedules/sends the email notifications 
            }
        }
    }

Senza il codice effettivo che si sta utilizzando, è difficile essere più precisi. Spero che questo ti porti almeno sulla buona strada.

Queste voci possono anche essere utili. Per verificare lo stato dello stock:

https://stackoverflow.com/a/2703800

https://stackoverflow.com/a/31612963

Passando dal prodotto figlio al genitore configurabile:

https://stackoverflow.com/a/1706297

https://magento.stackexchange.com/a/30245


0

Potrebbe essere necessario un codice personalizzato o utilizzare qualsiasi estensione che fornisca funzionalità come il lavoro prodotto configurabile basato sul prodotto principale e non sul prodotto semplice.

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.