Question

Suite à une question précédente comme guide simple:

Comment créer programatically taux d'imposition

Au lieu de créer une règle fiscale programme, je voudrais modifier une règle existante, en particulier le tableau de « tax_rule » (qui devrait contenir une liste d'identifiants de taux d'imposition qui sont valables pour cette règle.

Ces taux peuvent être trouvés en utilisant:

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

Cela devrait retourner un tableau d'ID de taux d'imposition qui s'appliquent à cette règle.

Utilisation $ruleModel->setRates($array)->save() salit juste cette règle, la suppression d'autres valeurs qui ont été précédemment enregistrées (nom de la règle, la priorité, etc.).

Comment puis-je charger simplement un modèle de taux existant et mettre à jour le champ « TAX_RATE » inclure un taux d'imposition supplémentaire? Si le tableau existant est array(5,7,9) Je voudrais mettre à jour le tableau d'inclure une nouvelle valeur et, par exemple array(5,7,9,15).

Était-ce utile?

La solution

A moins que quelqu'un d'autre vient à travers cette question et connaît une bonne réponse, il semble que Magento ne stocke pas les taux à l'intérieur tax/calculation_rule mais dans la table de tax/calculation. Lorsque les taux d'une règle sont mis à jour dans le back-end, Magento baissera nativement toutes les lignes de la table associée à la règle et créer de nouveaux. Ceci est démontré par le fait que la valeur d'identification de chaque ligne est incrémenté automatiquement, même si aucune des valeurs de cette ligne a changé.

Mon objectif était d'avoir de nouveaux tarifs créés dynamiquement et ajoutés à une règle existante. Je l'ai choisi de simplement créer une nouvelle règle dynamique aussi. Il va créer plus de frais généraux dans le DB de cette façon (chaque taux d'imposition a sa propre règle fiscale), mais je ne vois pas une manière propre autour de cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top