首页 文章

Magento购物车规则折扣级价格

提问于
浏览
2

Magento中可能出现以下情况吗?

分层定价和批量折扣将适用于同一订单 . 我想要超过200美元的4%折扣 . 但是,分级定价产品价格不会被视为批量折扣规则 .

我有4个产品

product 1 price = 10  and having tier price = $8 for 5+ products
product 2 price = 10
product 3 price = 100
product 4 price = 140

所以,如果我订购喜欢

product 1 qty-6  price = $48
priduct 2 qty-1  price = 10
priduct 3 qty-1  price = 100
priduct 4 qty-1  price = 140

我们对产品1应用层级定价,但不符合批量定价的条件 . 但是,剩余金额仍有资格进行批量定价 . 这意味着,4%的折扣将适用于250美元(10 100 140) .

我需要减去在购物车中应用了等级价格的产品总额,并且需要根据我的购物车规则检查剩余产品总数以获得折扣 .

任何人都可以指导我如何实现这一目标?

1 回答

  • 0
    public static function calculatePrice($basePrice, $specialPrice, $specialPriceFrom, $specialPriceTo,
                $rulePrice = false, $wId = null, $gId = null, $productId = null)
        {
            Varien_Profiler::start('__PRODUCT_CALCULATE_PRICE__');
            if ($wId instanceof Mage_Core_Model_Store) {
                $sId = $wId->getId();
                $wId = $wId->getWebsiteId();
            } else {
                $sId = Mage::app()->getWebsite($wId)->getDefaultGroup()->getDefaultStoreId();
            }
    
            $finalPrice = $basePrice;
            if ($gId instanceof Mage_Customer_Model_Group) {
                $gId = $gId->getId();
            }
    
            $finalPrice = self::calculateSpecialPrice($finalPrice, $specialPrice,          $specialPriceFrom, $specialPriceTo, $sId);
    
            if ($rulePrice === false) {
                $storeTimestamp = Mage::app()->getLocale()->storeTimeStamp($sId);
                $rulePrice = Mage::getResourceModel('catalogrule/rule')
                    ->getRulePrice($storeTimestamp, $wId, $gId, $productId);
            }
    
            if ($rulePrice !== null && $rulePrice !== false) {
                $finalPrice = min($finalPrice, $rulePrice);
            }
    
            $finalPrice = max($finalPrice, 0);
            Varien_Profiler::stop('__PRODUCT_CALCULATE_PRICE__');
            return $finalPrice;
        }
    

    在Mage_Catalog_Model_Product_Type_Price中

    if ($rulePrice === false) {
                $storeTimestamp = Mage::app()->getLocale()->storeTimeStamp($sId);
                $rulePrice = Mage::getResourceModel('catalogrule/rule')
                    ->getRulePrice($storeTimestamp, $wId, $gId, $productId);
            }
    

    因此,在$ rulePrice == false中检查产品的数量以及是否适用批量定价

    if ($rulePrice === false) {
                $storeTimestamp = Mage::app()->getLocale()->storeTimeStamp($sId);
                $flag = $this->someCheckFunction()  // This function you will have to write
                if($flag == 1) {
    
                $rulePrice = Mage::getResourceModel('catalogrule/rule')
                    ->getRulePrice($storeTimestamp, $wId, $gId, $productId);
               }
            }
    

相关问题