Я пытаюсь получить налоговую ставку (в процентах , а не валюта) для заданного почтового индекса, поэтому я могу отобразить его в распечатке PDF-файла сторонней цитаты (никакого отношения к «цитатам», которые Magento использует в качестве корзины перед оформлением заказа). Хотя я все еще относительно новичок в Magento, это Похоже, что getRateRequest() и getRate() — это две основные функции, которые получают налоговую ставку на основе всех переменных (налоговый класс продукта, налоговый класс клиента и т. д.)
. все наши продукты облагаются налогом, я решил, что просто использую getRate() с правильным вводом объекта Varien, и он вернет налоговую ставку После недели проб и ошибок я не могу понять, почему Я всегда получаю нулевую ставку.Я подтвердил, что вызываю функцию getRate() и что она не возвращает ноль из первого оператора if(), проверяющего идентификатор класса Country и Customer/Product. Кроме того, я подтвердил, что все переменные передаются и доступны в самой функции getRate().
Я создал объект с приведенным ниже вводом (на основе вывода getRateRequest()), который я вызываю с помощью getRate(), и надеюсь, что кто-нибудь сможет пролить свет на то, что не так с моими входными данными или почему getRate( ) всегда возвращает нулевой результат. (На самом деле я устанавливаю $variables ниже, они просто определены ранее, и одно из моих тестовых значений приведено ниже)
// UPDATED CODE (variable values come from 3rd party quote extension)
$country = 'US'; // use short country code
$region = '12'; // must be numeric!
$postcode = '95050';
// our quote extension stores the customer id ('2') which we use to get the tax class
$customer = Mage::getModel('customer/customer')->load( '2' );
$custTax = $customer->getTaxClassId();
$TaxRequest = new Varien_Object();
$TaxRequest->setCountryId( $country );
$TaxRequest->setRegionId( $region );
$TaxRequest->setPostcode( $postcode );
$TaxRequest->setStore( Mage::app()->getStore() );
$TaxRequest->setCustomerClassId( $custTax );
$TaxRequest->setProductClassId(2); // 2=taxable id (all our products are taxable)
$taxCalculationModel = Mage::getSingleton('tax/calculation');
$rate = $taxCalculationModel->getRate($TaxRequest);
Мой резервный план состоит в том, чтобы просто выполнить формулу прямого поиска SQL, хотя это, вероятно, будет немного запутанным. . Поскольку наша команда веб-разработок не совсем следовала хорошим стандартам кодирования, возможное переписывание сайта в любом случае в моем будущем, как только будут внесены первоначальные исправления запуска (все 4 страницы).
Спасибо за любую помощь и за то, что нашли время прочитать это.
РЕДАКТИРОВАТЬ. Переполнение стека — это круто :)