Magento的1.9结账除去税收,当用户输入增值税(Magento 1.9 remove tax

2019-09-26 06:24发布

我试图使Magento的修改,当用户在结账时输入增值税号从订单中移除税。

我发现了一个计算器代码支持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,非常感谢

Answer 1:

我设法按照这个线程解决我的问题: 修改上车报价项目的税率,重新计算

我增加了一个观察员事件sales_quote_collect_totals_before

这里是我的观察者的内容,很简单:

    public function removetax($observer)
    {
        $customer_id = Mage::getSingleton('customer/session')->getId();
        $customer = Mage::getModel("customer/customer")->load($customer_id);

        if($customer->getIsTaxExempt() == 1)
        {
            $items = $observer->getEvent()->getQuote()->getAllVisibleItems();
            foreach($items as $item)
                $item->getProduct()->setTaxClassId(0);
        }
    }

如果客户是免税的,我抓住当前车的内容,并对每个项目,我设置了产品税级为0。这是强制性的,不保存产品或项目。 这样做的目的是为下面的计算设置值,而不是将其保存在数据库中。 税务类需要留在DB的初始值。



Answer 2:

您可以使用sales_quote_collect_totals_before事件。

那么你必须定义逻辑删除tax结账页面上。

这个链接你可以参考。



Answer 3:

转到Calculation.php并找到calcTaxAmount()并添加计费condditions

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


文章来源: Magento 1.9 remove tax on checkout when user enter VAT