Magento - 如何将产品放入购物车时检查产品的折扣

时间:2011-11-15 12:27:26

标签: magento

我想让Magento告诉我如果放入购物车,产品会有任何折扣。做这个的最好方式是什么?是否有任何模型或帮助者可以传递产品并返回折扣金额?

由于

此致 加布里埃尔

1 个答案:

答案 0 :(得分:3)

我在Shipping Estimator扩展程序中实现了类似的功能。您可以选择的选项很少:

  1. 创建临时报价对象,向其添加产品,重新计算总计并检查报价项目的折扣。
  2. 使用客户使用的现有报价对象并向其添加产品。但在这种情况下,将适用所有折扣规则,包括已经在购物车中的产品。
  3. 以下是用于shipping estimator的代码示例:

        $request = new Varien_Object($addToCartInfo);
    
        if ($product->getStockItem()) {
            $minimumQty = $product->getStockItem()->getMinSaleQty();
            if($minimumQty > 0 && $request->getQty() < $minimumQty){
                $request->setQty($minimumQty);
            }
        }
    
        $result = $quote->addProduct($product, $request);
    
        if (is_string($result)) {
            Mage::throwException($result);
        }
    
        Mage::dispatchEvent('checkout_cart_product_add_after',
                            array('quote_item' => $result, 'product' => $product));
    
        $quote->collectTotals();
        $result = $quote->getShippingAddress()->getGroupedAllShippingRates();
    

    正如我之前所说,引用可以用两种不同的方式初始化:

    1. 新报价:

      $quote = Mage::getModel('sales/quote');
      
    2. 现有客户报价:

      $quote = Mage::getSingleton('checkout/session')->getQuote();
      
    3. 对于报价项目中的折扣检索,它将是您的作业:)