Domanda

A seguito di una domanda precedente, come una semplice guida:

Come creare programatically aliquote fiscali

Invece di creare una regola imposta a livello di codice, vorrei modificare una regola esistente, in particolare l'array 'tax_rule' (che dovrebbe contenere un elenco di ID di aliquote fiscali che sono valide per questa regola.

Queste tariffe si possono trovare utilizzando:

$ruleModel = Mage::getModel('tax/calculation_rule')->load($id);
Zend_Debug::dump($ruleModel->getRates());

Ciò dovrebbe restituire una matrice di ID di aliquote fiscali che si applicano a questa regola.

Utilizzando $ruleModel->setRates($array)->save() scombina solo su questa regola, la rimozione di altri valori che sono stati salvati in precedenza (nome della regola, la priorità, ecc).

Come posso semplicemente caricare un modello di frequenza esistente e aggiornare il campo 'TAX_RATE' includere un'aliquota supplementare? Se la matrice esistente è array(5,7,9) vorrei aggiornare la matrice per includere un nuovo valore pure, cioè array(5,7,9,15).

È stato utile?

Soluzione

A meno che qualcun altro si imbatte in questa domanda e conosce una risposta adeguata, sembra che Magento non memorizza le tariffe all'interno tax/calculation_rule ma invece nella tabella tax/calculation. Quando i tassi di una regola vengono aggiornate nel backend, Magento sarà nativamente cadere tutte le righe della tabella associata con la regola e crearne di nuovi. Ciò è dimostrato dal fatto che il valore ID di ogni riga viene automaticamente incrementato, anche se nessuno dei valori di tale riga modificata.

Il mio obiettivo era quello di avere nuove tariffe create in modo dinamico e quindi aggiunti a una regola esistente. Ho scelto di creare solo una nuova regola in modo dinamico anche. E 'intenzione di creare più in alto nel DB questo modo (ogni aliquota ha la sua regola fiscale), ma non vedo un modo pulito intorno a quello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top