Magento - 产品页面上的库存通知不足

时间:2013-03-14 10:20:22

标签: php magento notifications e-commerce

我正在使用Magento 1.7.0.2。在产品页面上,如果客户尝试添加的数量大于我们库存的数量,他们会收到一条消息,指出“......请求的数量不可用”。

当发生这种情况时,magento有没有办法发送电子邮件或登录?即我收到一封自动电子邮件,说明客户试图添加X项X项?这样我就可以识别由于我们没有足够的特定商品库存而导致的销售损失?

之前有没有人遇到过这样的事情,或者甚至可能会这样?

提前谢谢

迈克普伦蒂斯

3 个答案:

答案 0 :(得分: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
但是不是免费的。

答案 1 :(得分:0)

是的,这是可能的 你必须为此编码。 我曾经遇到过这个问题,以及我在下面做过的事情。

我已经制作了一个观察员事件来检查客户是否正在请求数量更多,如果可以的话,我发送电子邮件给管理员。

你可以做的是为chekout_cart_add_before事件创建一个观察者,在这个事件中你可以把你的逻辑。

或者你可以使用magento功能延期交货你可以在库存标签中找到它,如果你启用它,那么客户可以订购甚至要求的数量>可用数量,客户可以在购物车页面中查看有关延期交货的一条消息。

答案 2 :(得分: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 的函数。 在该函数内部,您需要在设置每个错误消息之后和return语句之前使用 $ this-> notifyOutOfStock($ this-> getProductId()); 调用新函数。

所以:

 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添加到数组中。 这意味着您可以在页面加载显示“库存不足”通知后立即访问模板文件中的信息。

因此,在您的一个模板文件中,您可以添加一些代码来呈现必要的JavaScript。 我选择了header.phtml,因为它加载到每个页面上。 (用户可以在购物车页面和产品视图页面中向购物车添加数量的商品)。

应用/设计/前端/ CUSTOMNAME /默认/模板/页/ 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 Feed更好,因为您可以将其与其他分析一起分析。