Modificar la regla impositiva programáticamente: establecer la matriz de tasas impositivas

magento.stackexchange https://magento.stackexchange.com/questions/6936

  •  16-10-2019
  •  | 
  •  

Pregunta

Siguiendo una pregunta anterior como guía simple:

Cómo crear programáticamente tasas impositivas

En lugar de crear una regla fiscal mediante programación, me gustaría modificar una regla existente, específicamente la matriz 'Tax_Rule' (que debe contener una lista de ID de tasa impositiva que sean válidas para esta regla.

Estas tarifas se pueden encontrar usando:

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

Esto debería devolver una variedad de identificaciones de tasas impositivas que se aplican a esta regla.

Usando $ruleModel->setRates($array)->save() Solo arruina esta regla, eliminando otros valores que se guardaron previamente (nombre de la regla, prioridad, etc.).

¿Cómo puedo simplemente cargar un modelo de tarifa existente y actualizar el campo 'Tax_Rate' para incluir una tasa impositiva adicional? Si la matriz existente es array(5,7,9) Me gustaría actualizar la matriz para incluir un nuevo valor también, es decir array(5,7,9,15).

¿Fue útil?

Solución

A menos que alguien más se encuentre con esta pregunta y conozca una respuesta adecuada, parece que Magento no almacena las tarifas dentro tax/calculation_rule Pero en cambio en tax/calculation mesa. Cuando las tasas de una regla se actualizan en el backend, Magento eliminará de forma nativa todas las filas de la tabla asociadas con la regla y creará otras nuevas. Esto se evidencia por el hecho de que el valor de ID de cada fila se incrementa automáticamente, incluso si ninguno de los valores de esa fila cambió.

Mi objetivo era tener nuevas tasas creadas dinámicamente y luego se agregaron a una regla existente. He optado por crear una nueva regla dinámicamente también. Va a crear más gastos generales en el DB de esta manera (cada tasa impositiva tiene su propia regla impositiva), pero no veo una forma limpia en torno a eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top