Steuerregel ändern - Steuersatzarray festlegen
-
16-10-2019 - |
Frage
Befolgen Sie eine frühere Frage als einfache Anleitung:
So programmatisch Steuersätze erstellen
Anstatt programmgesteuert eine Steuerregel zu erstellen, möchte ich eine vorhandene Regel ändern, insbesondere das Array 'Tax_rule' (das eine Liste von Steuersatz -IDs enthalten sollte, die für diese Regel gültig sind.
Diese Raten können unter Verwendung von: gefunden werden:
$ruleModel = Mage::getModel('tax/calculation_rule')->load($id);
Zend_Debug::dump($ruleModel->getRates());
Dies sollte eine Reihe von Steuersatz -IDs zurückgeben, die für diese Regel gelten.
Verwendung $ruleModel->setRates($array)->save()
Misch einfach diese Regel durch und beseitigt andere Werte, die zuvor gespeichert wurden (Regelname, Priorität usw.).
Wie kann ich einfach ein vorhandenes Zinsmodell laden und das Feld 'Tax_rate' so aktualisieren, dass ein zusätzlicher Steuersatz aufgenommen wird? Wenn das vorhandene Array ist array(5,7,9)
Ich möchte das Array aktualisieren, um auch einen neuen Wert einzuschließen, dh array(5,7,9,15)
.
Lösung
Wenn jemand anderes auf diese Frage stößt und eine ordnungsgemäße Antwort kennt tax/calculation_rule
aber stattdessen in tax/calculation
Tisch. Wenn die Preise einer Regel im Backend aktualisiert werden, löscht Magento alle Zeilen in der mit der Regel verknüpften Tabelle und erstellt neue. Dies zeigt sich durch die Tatsache, dass der ID-Wert jeder Zeile automatisch inkrementiert ist, auch wenn sich keiner der Werte dieser Zeile geändert hat.
Mein Ziel war es, neue Zinsen dynamisch zu erstellen und dann zu einer vorhandenen Regel hinzugefügt. Ich habe mich dafür entschieden, auch dynamisch eine neue Regel zu erstellen. Auf diese Weise wird es in der DB mehr Gemeinkosten schaffen (jeder Steuersatz hat seine eigene Steuerregel), aber ich sehe keinen sauberen Weg.