Установить налоговую ставку в Magento на основе кода скидки / купона - PullRequest
1 голос
/ 11 января 2011

Я пытался установить ставку налога или класса клиента для magento на основе используемого кода скидки. Я использую только код скидки, так как я могу использовать его для входа.

Кто-нибудь знает, как этого можно достичь или какие-либо указатели?

С уважением

Chris

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Нет способа сделать это по умолчанию. Вы должны установить класс клиента для него через администратора, чтобы они всегда получали свою конкретную налоговую ставку, не вводя ничего.

1 голос
/ 13 января 2011

Это то, что я в итоге сделал для этого.Должно оказаться весьма полезным.Скопируйте этот файл 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];
}

Я изменил это на это.Это жестко заданный код скидки и идентификатор класса налога на продукт, основанный на моих требованиях к этому проекту.

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

Приветствует помощь по этому вопросу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...