Я потерял несколько часов на эту ночь.Надеюсь, я могу спасти кого-то так же.Эмили подходит для этого примера (где вы загружаете корзину для покупок в предложение).
Это относится к Magento 1.7.0.2, я не уверен, подходит ли оно для других версий.
Если вы программно создаете заказ, но не используетедля этого вам может помочь корзина покупок: основная проблема заключается в том, что Magento запускает collectTotals () каждый раз, когда вы добавляете / обновляете адрес в предложении, и вот важная часть: он кеширует их.(На самом деле, после сохранения адреса, если вы проверите getTotalsCollectedFlag, вы увидите, что для него установлено значение true!).Установка кода купона после этого, даже если вы запускаете collectTotals (), не применяет код купона.
Вы можете вызвать setTotalsCollectedFlag (false) для цитаты, а затем применить купон, но это плохая идея(это может вызвать некоторые просчеты в соответствии с отчетом об ошибке Magento, который больше недоступен), что вы хотите сделать, это вызвать setCouponCode, прежде чем устанавливать какие-либо адреса (или, по крайней мере, перед тем, как задавать последний адрес).