Изменить программно изменение налогового правила - установить массив налоговых ставок
-
16-10-2019 - |
Вопрос
После предыдущего вопроса в качестве простого руководства:
Как программатически создавать налоговые ставки
Вместо того, чтобы создавать налоговое правило программно, я хотел бы изменить существующее правило, в частности, массив «TAME_RULE» (который должен содержать список идентификаторов налоговой ставки, которые действительны для этого правила.
Эти ставки можно найти с помощью:
$ruleModel = Mage::getModel('tax/calculation_rule')->load($id);
Zend_Debug::dump($ruleModel->getRates());
Это должно вернуть массив идентификаторов налоговой ставки, которые применяются к этому правилу.
С использованием $ruleModel->setRates($array)->save()
Просто испортит это правило, удаляя другие значения, которые были ранее сохранены (имя правила, приоритет и т. Д.).
Как я могу просто загрузить существующую модель ставки и обновить поле «Tax_Rate», чтобы включить дополнительную налоговую ставку? Если существующий массив array(5,7,9)
Я хотел бы обновить массив, чтобы включить новое значение, т.е. array(5,7,9,15)
.
Решение
Если кто -то другой не столкнется с этим вопросом и не знает правильного ответа, кажется, что Magento не хранит ставки внутри tax/calculation_rule
но вместо этого в tax/calculation
стол. Когда ставки правила обновляются в бэкэнде, Magento изначально отбросит все строки в таблице, связанные с правилом, и создаст новые. Об этом свидетельствует тот факт, что значение идентификатора каждой строки автоматически вводится, даже если ни одно из значений этой строки не изменилось.
Моя цель состояла в том, чтобы создать новые ставки динамически, а затем добавить к существующему правилу. Я также решил просто создать новое правило динамически. Таким образом, он создаст больше накладных расходов в БД (каждая налоговая ставка имеет свое собственное налоговое правило), но я не вижу этого чистого пути.