以编程方式修改税收规则 - 设置税率数组
-
16-10-2019 - |
题
按照之前的问题作为简单指南:
我不想以编程方式创建税收规则,而是想修改现有规则,特别是“tax_rule”数组(其中应包含对此规则有效的税率 ID 列表)。
这些费率可以通过以下方式找到:
$ruleModel = Mage::getModel('tax/calculation_rule')->load($id);
Zend_Debug::dump($ruleModel->getRates());
这应该返回适用于该规则的税率 ID 数组。
使用 $ruleModel->setRates($array)->save()
只是搞乱了这个规则,删除了之前保存的其他值(规则名称、优先级等)。
如何简单地加载现有的税率模型并更新“tax_rate”字段以包含附加税率?如果现有数组是 array(5,7,9)
我想更新数组以包含新值,即 array(5,7,9,15)
.
解决方案
除非其他人遇到这个问题并知道正确的答案,否则 Magento 似乎不会将费率存储在其中 tax/calculation_rule
但相反 tax/calculation
桌子。当规则的费率在后端更新时,Magento 将本机删除表中与该规则关联的所有行并创建新行。每行的 ID 值都会自动递增,即使该行的任何值都没有更改,这一事实证明了这一点。
我的目标是动态创建新费率,然后将其添加到现有规则中。我也选择动态创建新规则。以这种方式,它将在数据库中产生更多的开销(每个税率都有自己的税收规则),但我没有看到一个干净的方法来解决这个问题。