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

是的,这是可能的,您必须为此编写代码。我曾经遇到过这个问题,我在下面做了这样的事情。

我已经做了一个观察者事件来检查客户是否要求数量超过可用数量,如果我向管理员发送了电子邮件。

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

或者,您可以使用 magento 功能延期交货,您可以在库存选项卡中找到它,如果启用此功能,那么客户甚至可以订购请求数量 > 可用数量,客户可以在购物车页面中看到一条关于延期交货的消息。

于 2013-03-14T11:41:56.930 回答
0

以下是我的做法,每当客户尝试订购超过可用库存水平时,它就会发送谷歌分析跟踪事件。

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

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

app/design/frontend/CUSTOMNAME/default/template/page/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 回答