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).

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top