我正在尝试获取给定邮政编码的税率(百分比,而不是货币),以便我可以在第三方报价 PDF 打印输出中显示它(与 Magento 用作购物车预结账的“报价”无关) . 虽然我对 Magento 还比较陌生,但 getRateRequest() 和 getRate() 似乎是两个主要函数,它们根据所有变量(产品税类、客户税类等)获取税率。
由于这是用于第三方扩展并且我们所有的产品都是应税的,我想我只需使用带有正确 Varien Object 输入的 getRate(),它就会返回税率。经过一周的反复试验,我无法弄清楚为什么我总是得到零利率。我已经确认我正在调用 getRate() 函数,并且它没有从检查 Country 和 Customer/Product 类 ID 的第一个 if() 语句返回零。此外,我已经确认所有变量都在 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 查找公式,尽管这可能会有点混乱。由于我们的 Web 开发团队并未完全遵循良好的编码标准,因此一旦初始启动修复程序(全部 4 页)完成,最终的网站重写将在我的未来。
感谢您的帮助并花时间阅读本文。
编辑 - 堆栈溢出很棒:)