Tägliche Administrator-E-Mail für Produkte, die an diesem Tag nicht mehr vorrätig waren


7

Ich versuche, ein Skript einzurichten, mit dem tägliche E-Mails an meinen Administrator gesendet werden, um ihn darüber zu informieren, was nur an diesem Tag ausverkauft war .

Es muss nichts Besonderes sein, vielleicht sogar Artikel in eine Textdatei zu schreiben, da Produkte bis zum Ende eines Tages, wenn diese Textdateien als E-Mail verschickt und für den nächsten Tag gelöscht werden, nicht mehr vorrätig sind?

Vielen Dank!


1
Haben Sie hier eine Antwort gefunden? Wenn ja, markieren Sie es bitte als Lösung.
Fabian Blechschmidt

Antworten:


8

Abgesehen von dem integrierten RSS-Feed gibt es zwei Möglichkeiten, sich selbst eine E-Mail zu senden - die eigentliche Antwort auf Ihre eigentliche Frage:

Kaufen Sie eine Erweiterung:

Ich habe keine Erfahrung mit dieser Erweiterung, wurde aber auf einem StackOverflow erwähnt:

http://www.magentocommerce.com/magento-connect/irzoo-lowstockreport-1278.html

Mach es selbst:

Erstellen Sie einen Beobachter für cataloginventory/stock_itemdas Ereignis "Speichern". Alle Modelle verfügen über Sicherungsereignisse von Mage_Core_Model_Abstract. Beim Speichern wird Ihr Beobachter angerufen, Sie können den Lagerbestand an diesem Punkt überprüfen.

<global>
    <events>
        <cataloginventory_stock_item_save_after>
            <observers>
                <mymodule_stock_item_save>
                    <type>singleton</type>
                    <class>yourmodel/observer</class>
                    <method>lowStockReport</method>
                </mymodule_stock_item_save>
            </observers>
        </cataloginventory_stock_item_save_after>
    </events>
</global>

Observer.php:

<?php

class MyCompany_MyModule_Model_Observer
{
    public function lowStockReport($observer)
    {
        $event = $observer->getEvent();
        $stockItem = $event->getItem();

        if($stockItem->getQty() < $stockItem->getNotifyStockQty()){

            //stock is lower than the notify amount, send email

            $product = Mage::getModel('catalog/product')->load($stockItem->getProductId());

            $body = "{$product->getName()} :: {$product->getSku()} just Ran out of stock:\n\n";
            $body .= "Current Qty: {$stockItem->getQty()}\n";
            $body .= "Low Stock Date: {$stockItem->getLowStockDate()}\n";

            $mail = new Zend_Mail();
            $mail->setType(Zend_Mime::MULTIPART_RELATED);
            $mail->setBodyHtml($body);
            $mail->setFrom('lowstock@yourwebsite.com', 'Low Stock Notifier');
            $mail->addTo('youremail@gmail.com', 'Your Name Here');
            $mail->setSubject('[Notice] An Item Has Gone Out of Stock');
            $mail->send();
        }
    }
}

Dies sendet jedes Mal eine E-Mail, wenn ein Lagerartikelmodell gespeichert wird und die verfügbare Menge niedriger ist als die unter Admin> Katalog> Produkte verwalten festgelegte Benachrichtigungsmenge.

Ich hoffe, das hilft.


2
Die DIY-Route hier ist auf dem richtigen Weg. Das OP bat jedoch um eine einzelne E-Mail pro Nacht, daher würde ich eine Tabelle mit den Spalten "product_id", "timestamp" und "notified" vorschlagen. Wenn ein Produkt nicht mehr vorrätig ist, fügen Sie einen Eintrag hinzu. Wenn es zurückkommt, entfernen Sie den Eintrag. Jeden Abend senden Sie eine E-Mail für alle nicht benachrichtigten und setzen das Flag. Dies verhindert, dass Sie mehrmals für jedes Produkt benachrichtigt werden. Sie erhalten jedoch eine Benachrichtigung, wenn das Produkt das nächste Mal ausverkauft ist.
Lee Saferite

1
Leider wird das cataloginventory_stock_item_save_afterEreignis beim Kauf nicht ausgelöst, zumindest in neueren Magento-Versionen. Alternative Lösungen finden Sie hier: magento.stackexchange.com/questions/25207/…
Fabian Schmengler

Eine kleine Änderung an der wunderbaren Erklärung von @philwinkle Anstelle von: $ stockItem = $ Observer-> getEvent () Verwenden Sie: $ stockItem = $ Observer-> getEvent () –getItem ()
Diazwatson

1

Alte Frage, aber ich habe nicht das Gefühl, dass sie jemals wirklich beantwortet wurde. Ich würde der Datei config.xml in einem benutzerdefinierten Modul ein und cronjob hinzufügen, herausfinden, welche Produkte in der E-Mail enthalten sein müssten, indem ich die Sammlung erstelle (siehe unten), und dann die Ergebnisse per E-Mail senden.

    $date = strtotime('yesterday');

    $collection = Mage::getModel('cataloginventory/stock_item')
    ->getCollection()
    ->addFieldToFilter('backorders', 0) 
    ->addFieldToFilter('is_in_stock', 0) 
    ->addFieldToFilter('manage_stock', 1) 
    ->addFieldToFilter('low_stock_date', array('date' => true, 'from' => date("Y-m-d", $date)))
    ->getAllIds();

-1

Magento ist zwar keine Warnung vor Fehlbeständen, wird jedoch mit einem RSS-Feed mit geringem Lagerbestand geliefert, der möglicherweise Ihren Anforderungen entspricht.

Niedriger RSS-Feed


Wie kann ich einen herunterladbaren Bericht erhalten? RSS siehe nur den Bericht
Gem

-1

Sie können einfach den nativen RSS-Feed für das Inventar verwenden - einen Unterschied zum Bestand des Vortages durchführen (dh herausfinden, was sich nur geändert hat) - und dann eine E-Mail basierend auf dem Ergebnis auslösen.

Es wäre ein super einfaches ~ 10-zeiliges PHP-Skript.


Wenn Sie als anspruchsvolle Erweiterung etwas Anspruchsvolleres wünschen, müssen Sie dem order_saveIndex oder den Aktienindex einen Beobachter hinzufügen - um erfassen zu können, dass ein Wert unter 0 fällt - und eine Zusammenfassung basierend auf diesen Werten erstellen.


Ich habe leider nicht die Erfahrung, dies zu bauen, aber wenn Sie dies tun, wären Sie an einer Gebühr für Ihre Dienstleistungen interessiert? Mein Kunde würde wirklich davon profitieren.
Adam Ross
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.