根据折扣/优惠券代码在Magento设定税率

时间:2011-01-11 09:49:15

标签: magento

我一直在尝试根据使用的折扣代码为magento设定税率或客户等级。我只使用折扣代码,因为我可以用它来输入。

有没有人知道如何实现这一目标或任何指针?

亲切的问候

克里斯

2 个答案:

答案 0 :(得分:2)

没有默认的方法。您应该通过管理员为他们设置客户的课程,这样他们就可以随时获得特定的税率,而无需输入任何内容。

答案 1 :(得分:1)

这就是我最终为此所做的。应该证明非常有用。将此文件app / code / core / Mage / Tax / Model / Calculation.php复制到app / code / local / Mage / Tax / Model / Calculation.php然后在第178行将此函数复制

 public function getRate($request)
    {
        if (!$request->getCountryId() || !$request->getCustomerClassId() || !$request->getProductClassId()) {
            return 0;
        }

    $cacheKey = $this->_getRequestCacheKey($request);
    if (!isset($this->_rateCache[$cacheKey])) {
        $this->unsRateValue();
        $this->unsCalculationProcess();
        $this->unsEventModuleId();
        Mage::dispatchEvent('tax_rate_data_fetch', array('request'=>$request));
        if (!$this->hasRateValue()) {
            $rateInfo = $this->_getResource()->getRateInfo($request);
            $this->setCalculationProcess($rateInfo['process']);
            $this->setRateValue($rateInfo['value']);
        } else {
            $this->setCalculationProcess($this->_formCalculationProcess());
        }
        $this->_rateCache[$cacheKey] = $this->getRateValue();
        $this->_rateCalculationProcess[$cacheKey] = $this->getCalculationProcess();
    }
    return $this->_rateCache[$cacheKey];
}

我已将此更改为此。根据我对此项目的要求,它是一个硬编码的折扣代码和产品税类ID。

public function getRate($request)
    {
        if (!$request->getCountryId() || !$request->getCustomerClassId() || !$request->getProductClassId()) {
            return 0;
        }

    $cacheKey = $this->_getRequestCacheKey($request);
    if (!isset($this->_rateCache[$cacheKey])) {
        $this->unsRateValue();
        $this->unsCalculationProcess();
        $this->unsEventModuleId();
        Mage::dispatchEvent('tax_rate_data_fetch', array('request'=>$request));
        if (!$this->hasRateValue()) {
            $rateInfo = $this->_getResource()->getRateInfo($request);
            $this->setCalculationProcess($rateInfo['process']);
            $thisDiscountCode = Mage::getSingleton('checkout/session')->getQuote()->getCouponCode();
            $thisProductClassCode = $request->getProductClassId();
            if($thisDiscountCode == "0000" && $thisProductClassCode == "5"):
            $this->setRateValue(0);
            else:    
            $this->setRateValue($rateInfo['value']);
            endif;            
        } else {
            $this->setCalculationProcess($this->_formCalculationProcess());
        }
        $this->_rateCache[$cacheKey] = $this->getRateValue();
        $this->_rateCalculationProcess[$cacheKey] = $this->getCalculationProcess();
    }
    return $this->_rateCache[$cacheKey];
}

欢呼为此提供帮助