その日に在庫がなくなった製品の毎日の管理者用メール


7

スクリプトを設定して、管理者に毎日メールを送信して、その日に在庫切れになったものだけを知らせるようにしています。

品物がテキストファイルにメールで送信されて翌日のためにクリアされる1日の終わりまで在庫がなくなると、テキストファイルにアイテムを書き込むことなど、特別なことをする必要はありませんか?

ありがとう!


1
ここで答えは見つかりましたか?はいの場合は、ソリューションとしてマークしてください。
Fabian Blechschmidt 2013年

回答:


8

組み込みのRSSフィードの他に、実際に自分にメールを送信する方法は2つあります。実際の質問に対する実際の回答です。

拡張機能を購入する:

私はこの拡張機能の経験はありませんが、StackOverflowで言及されました:

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

自分でやれ:

cataloginventory/stock_itemsaveイベントで- のオブザーバーを作成します。すべてのモデルには、によって提供される保存イベントがありMage_Core_Model_Abstractます。保存すると、オブザーバーが呼び出され、その時点での在庫レベルを調べることができます。

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

これにより、在庫アイテムモデルが保存され、手持ちの数量が[管理]> [カタログ]> [製品の管理]で設定された通知数量よりも少なくなるたびに、電子メールが送信されます。

お役に立てば幸いです。


2
ここのDIYルートは正しい道にあります。ただし、OPは1晩に1通の電子メールを要求したため、「product_id」、「timestamp」、および「notified」列を含むテーブルを提案します。商品の在庫がなくなった場合はエントリを追加し、戻ってきた場合はエントリを削除します。通知なしのメールを毎晩送信し、フラグを設定します。これにより、製品ごとに複数回通知することはできなくなりますが、次回製品が在庫切れになったときに通知が届きます。
Lee Saferite、2013年

1
残念ながら、cataloginventory_stock_item_save_after少なくとも最近のMagentoバージョンでは、イベントは購入時にトリガーされません。代替ソリューションについてはこちらをご覧ください:magento.stackexchange.com/questions/25207/...
ファビアンSchmengler

@philwinkleの素晴らしい説明に対する1つのマイナー変更の代わりに:$ stockItem = $ observer-> getEvent()use:$ stockItem = $ observer-> getEvent()
getItem

1

古い質問ですが、本当に答えられたとは思えません。カスタムモジュールのconfig.xmlファイルにとcronjobを追加し、コレクションを作成して(以下のように)電子メールに含める必要のある製品を特定し、結果を電子メールで送信します。

    $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には在庫が少ないRSSフィードが付属しており、ニーズに合う可能性があります。

在庫の少ないRSSフィード


ダウンロード可能なレポートを取得する方法、RSSはレポートを表示するだけ
Gem

-1

在庫にネイティブRSSフィードを使用する-前日の株価との差分を実行する(つまり、変更されたもののみを見つける)-結果に基づいてメールを送信することができます。

非常にシンプルな〜10行のPHPスクリプトになります。


適切な拡張としてより洗練されたものが必要な場合は、オブザーバーをorder_saveや株価指数に追加する必要があります。つまり、値を0未満にキャプチャして、それらの値に基づいて要約を作成できるようにする必要があります。


残念ながらこれを作成する経験はありませんが、作成した場合、サービスの料金に興味がありますか?私のクライアントは本当にそれから利益を得るでしょう。
アダム・ロス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.