3

Magento 1.7.0.2 を使用しています。製品ページで、顧客が在庫よりも多くの数量を追加しようとすると、「.. 要求された数量は利用できません」というメッセージが表示されます。

これが発生したときにmagentoがメールまたはログに記録する方法はありますか? つまり、顧客がアイテム X を X 個追加しようとしたことを示す自動メールを受け取りますか? これにより、特定のアイテムの在庫が十分にないために失われた販売を特定できますか?

誰かが以前にこのようなことに遭遇したことがありますか、それとも可能ですか?

前もって感謝します

マイク・プレンティス

4

3 に答える 3

0

少量の製品について電子メールで通知する標準機能はありません。
ただし、RSS通知があり ますhttp://www.magentocommerce.com/wiki/modules_reference/english/mage_adminhtml/system_config/edit/cataloginventory

ニーズに合わせてこの機能を拡張します。
RSSを解析し、電子メールなどを送信するスクリプトを作成できます。

編集

ここにあなたが好きかもしれないいくつかの拡張機能がありますhttp://www.magentocommerce.com/magento-connect/low-stock-email-notification.html
しかし、それは無料ではありません。

于 2013-03-14T10:31:24.163 に答える
0

これは、顧客が利用可能な在庫レベルを超えて注文しようとするたびに、Google アナリティクス追跡イベントを送信するようにする方法です。

最初のコピー: app/code/core/Mage/CatalogInventory/Model/Stock/Item.php

宛先: app/code/local/Mage/CatalogInventory/Model/Stock/Item.php

コア ファイルを変更しないようにします。

app/code/local/Mage/CatalogInventory/Model/Stock/Item.phpにこの関数を追加します

public function notifyOutOfStock($productId){
    $session = Mage::getSingleton('checkout/session');

    //Initialise as empty array, or use existing session data
    $outOfStockItems = array();
    if ($session->getOutOfStock()){
        $outOfStockItems = $session->getOutOfStock();
    }

    try {
        $product = Mage::getModel('catalog/product')->load($productId);
        $sku = $product->getSKu();

        if($sku){
            //Add the current sku to our out of stock items (if not already there)
            if(! isset($outOfStockItems[$sku]) ) {
                $outOfStockItems[$sku] = 0;
            }
        }

    } catch (Exception $e){
        //Log your error
    }

    Mage::getSingleton('checkout/session')->setOutOfStock($outOfStockItems);

}

その同じファイルには、checkQuoteItemQtyという別の関数があります。その関数内で、 $this->notifyOutOfStock($this->getProductId());を使用して新しい関数を呼び出す必要があります。各エラー メッセージを設定した直後、return ステートメントの前。

そう:

 public function checkQuoteItemQty($qty, $summaryQty, $origQty = 0)
 {
     ....
     if ($this->getMinSaleQty() && ($qty) < $this->getMinSaleQty()) {
        $result->setHasError(true)
            ->setMessage(
                $_helper->__('The minimum quantity allowed for purchase is %s.', $this->getMinSaleQty() * 1)
            )
            ->setQuoteMessage($_helper->__('Some of the products cannot be ordered in requested quantity.'))
            ->setQuoteMessageIndex('qty');

            //** Call to new function ** 
            $this->notifyOutOfStock($this->getProductId()); 

        return $result;
    }
    .....
        ->setQuoteMessageIndex('qty');

            //** Call to new function ** 
            $this->notifyOutOfStock($this->getProductId()); 

        return $result;
    .....

これにより、チェックアウト セッションで製品 SKU が配列に追加されます。これは、ページが読み込まれて「在庫不足」の通知が表示された直後に、テンプレート ファイル内のその情報にアクセスできることを意味します。

したがって、テンプレート ファイルの 1 つに、必要な JavaScript をレンダリングするためのコードを追加できます。すべてのページに読み込まれるため、header.phtml を選択しました。(ユーザーは、商品ビュー ページだけでなく、カート ページでも商品の数量をカートに追加できます)。

アプリ/デザイン/フロントエンド/カスタム名/デフォルト/テンプレート/ページ/html/header.phtml

コードの一番下のどこかにこれを追加します:

<!-- GA tracking for out of stock items -->
<script>
    try {
    <?php 
        $session = Mage::getSingleton('checkout/session');
        if ($session->getOutOfStock()){
            $outOfStockItems = $session->getOutOfStock();
            foreach($outOfStockItems as $sku=>$value) {
                if($value==0){
                  //Render the GA tracking code
                    echo "_gaq.push(['_trackEvent', 'AddToCart', 'ProductQtyNotAvailable', '".$sku."']); \r\n";
                 //Set it to 1 so we know not to track it again this session
                    $outOfStockItems[$sku] = 1; 
                }
            }
            //Update the main session
            Mage::getSingleton('checkout/session')->setOutOfStock($outOfStockItems);
        }
    ?>
    }
    catch(err) {
        //console.log(err.message);
    }
</script>

これがうまく機能することを確認できます。私の意見では、他の分析と一緒に分析できるため、メールや RSS フィードよりも優れています。

于 2014-12-04T14:27:39.793 に答える
0

はい、これは可能です。これをコーディングする必要があります。私はこの問題に一度遭遇しましたが、私は以下のようにしています。

オブザーバー イベントを 1 つ作成して、顧客が利用可能な数量よりも多くの数量を要求しているかどうかを確認しました。そうであれば、管理者にメールを送信しました。

chekout_cart_add_beforeあなたができることは、ロジックを配置できるこのイベントにイベントのオブザーバーを1つ作成することです。

または、magento 機能のバックオーダーを使用できます。これは在庫タブで見つけることができます。これを有効にすると、顧客は要求された数量 > 利用可能な数量でも注文できます。顧客はカート ページにバックオーダーに関する 1 つのメッセージを表示できます。

于 2013-03-14T11:41:56.930 に答える