当用户输入增值税时,Magento 1.9在结账时取消税

时间:2017-01-14 03:08:57

标签: php magento magento-1.9

当用户在结账时输入增值税号码时,我正试图进行magento修改。从订单中删除税款。

我在stackoverflow上找到了一个支持magento旧版本的代码,但它不适用于新版本1.9

我为工作条件做了一些修改并返回0,即使它返回0结帐仍然显示税。

这是我的代码,存档

/app/code/core/Mage/Tax/Model/Calculation.php line number 268



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


           //my code
            $ctax= Mage::getSingleton('checkout/session')->getQuote()->getCustomerTaxvat();


            if ($this->getCustomer() && $ctax !='') {
                //echo 'test';
                return 0;          
            }
        //end my code   


            $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];
        }

当用户在结账时输入增值税号码时,任何人都可以帮助我减税0,非常感谢

3 个答案:

答案 0 :(得分:4)

我已成功通过以下线程解决了我的问题:Modify tax rate on cart quote items and recalculate

我在事件for each PUB."Art": display PUB."Art".IdArt end. 中添加了一个观察者。

以下是我的观察者的内容,非常简单:

sales_quote_collect_totals_before

如果客户免税,我会获取当前购物车内容,并且对于每件商品,我将产品税类设置为0.必须不保存产品或商品。这里的目的是为以下计算设置一个值,而不是将其保存在数据库中。税类需要保持在db中的初始值。

答案 1 :(得分:0)

您可以使用sales_quote_collect_totals_before事件。

然后你必须在结帐页面上定义删除tax的逻辑。

您可以参考此link

答案 2 :(得分:0)

转到Calculation.php并找到calcTaxAmount()并添加结算条件

public function calcTaxAmount($price, $taxRate, $priceIncludeTax = false, $round = true)
    {
          $billing = Mage::getModel('checkout/session')->getQuote()->getCustomerTaxvat();
        if($billing !="")
         {
           return 0;
         }
    }