2017-01-14 5 views
1

Я пытаюсь сделать модификацию magento, когда пользователь вводит номер ватта в кассе, снимает налог с заказа.Magento 1.9 убрать налог при оформлении заказа при вводе НДС

Я нашел код на 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, когда пользователь вводит номер чан на кассе, большое спасибо

ответ

0

Вы можете использовать sales_quote_collect_totals_before событие.

то вы должны определить логику для удаления tax на странице проверки.

Этот link вы можете обратиться.

+0

это, похоже, не работает помощник, я просто нужно чистое решение по редактированию/приложения/код/​​ядро ​​/ Mage/Налоги/модель/Расчет .php коды файлов –

3

мне удалось решить мою проблему, следуя эту тему: Modify tax rate on cart quote items and recalculate

Я добавил наблюдатель к событию 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. Это является обязательным, чтобы не сохранять продукт или элемент. Цель здесь - установить значение для следующего расчета, а не сохранять его в базе данных. Налоговые классы должны оставаться на начальном уровне в дБ.

+0

Нужно сохранить на magento mate, так или иначе мы купили расширение, которое решает проблему, спасибо за ответ –

0

Перейти к Calculation.php и найти calcTaxAmount() и добавить биллинг condditions

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