当客户在结账时输入增值税号时,Magento禁用税

时间:2013-09-16 09:19:41

标签: php magento magento-1.7

我有magento 1.7网站,如果他们在结帐页面输入税号,我就很难从客户那里取消税。

我有两个国家荷兰和比利时的税收规则都有10%的税。默认国家是比利时

当比利时客户在结账页面输入增值税号时,我需要删除增值税。

我厌倦了使用税收规则,但没有运气。

任何人都知道如何使用magento后端或使用代码级别来做到这一点。我很感激。 谢谢

1 个答案:

答案 0 :(得分:3)

超越Magento的Tax Model getRate()函数就是我们做类似的事情。

class My_Module_Model_Tax_Calculation extends Mage_Tax_Model_Calculation
{

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

        $country_id = $request->getCountryId();

        if ($country_id == 'BE' && $this->getCustomer() && $this->getCustomer()->getTaxvat()) {
            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];
    }
}