Я действительно не знаю, поможет ли это в любом случае, но кое-что, чтобы рассмотреть.
Возможно, что ваш collecttotals
модельный заказ заказывается по-другому, и этот налог заказывается / применяется после grand_total
Вы можете проверить, является ли это проблемой следующим образом. (обратите внимание, это включает в себя настройку файла ядра, чтобы получить некоторую отладочную информацию, пожалуйста, не пытайтесь сделать это на живом сайте!)
Отредактируйте метод, расположенный в:
Mage_Sales_Model_Quote_Address::collecttotals
и добавьте одну строку в метод, который позволит вам выводить модели по мере их обработки.
public function collectTotals()
{
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_before', array($this->_eventObject => $this));
foreach ($this->getTotalCollector()->getCollectors() as $model) {
mage::log($model->getCode()); // <===== ADD THIS LINE
$model->collect($this);
}
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_after', array($this->_eventObject => $this));
return $this;
}
убедитесь, что регистрация включена.
Хвост файл журнала через консоль: tail -f system.log
Воспроизведите проблему через веб-интерфейс.
Вы получите следующие записи в своем журнале (это из ванили 1.9.2.2 - у вас могут быть другие записи)
2015-12-21T05:54:12+00:00 DEBUG (7): nominal
2015-12-21T05:54:12+00:00 DEBUG (7): subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): msrp
2015-12-21T05:54:12+00:00 DEBUG (7): freeshipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): weee
2015-12-21T05:54:12+00:00 DEBUG (7): shipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_shipping
2015-12-21T05:54:12+00:00 DEBUG (7): discount
2015-12-21T05:54:12+00:00 DEBUG (7): tax
2015-12-21T05:54:12+00:00 DEBUG (7): grand_total
Вы увидите, что это повторяется, так что просто посмотрите, где он начинается и заканчивается, должно быть легко увидеть шаблон
Обратите внимание на последние две записи выше: налог идет до grand_total. Вполне возможно, что этот порядок не в порядке, и после grand_total появляется налог, поэтому к grand_total не будут применяться налоги.
РЕДАКТИРОВАТЬ:
Итак, я не увидел, что упомянутый вопрос на самом деле указывает на сортировку коллекций, чтобы быть проблемой. Я подозревал, что это может быть проблемой, но я не проверял это сам в PHP7
Есть решение, но оно не очень хорошее. Любое новое добавленное в магазин расширение, которое вставляет модели в коллектор, должно быть отмечено и дополнительно добавлено к сортировке, иначе все может пойти еще хуже. Может быть небольшая проблема технического обслуживания в будущем.
Просто форсируйте порядок сортировки, поместив определенный <sort_order>
в итоговую конфигурацию. Вы можете сделать это через свое собственное расширение, которое будет иметь только config.xml, где вы указываете порядок для каждого сборщика.
в config.xml есть директива как таковая:
<sales>
<quote>
<totals>
<nominal>
<sort_order>100</sort_order>
</nominal>
<subtotal>
<sort_order>200</sort_order>
</subtotal>
<msrp>
<sort_order>300</sort_order>
</msrp>
<freeshipping>
<sort_order>400</sort_order>
</freeshipping>
......
insert each collector model with a sort directive
......
</totals>
</quote>
Используйте большие промежутки между каждой директивой сортировки, чтобы оставить место для вставки в дальнейшем.
Как уже упоминалось, не очень элегантно, но может решить вашу непосредственную проблему.
Также обратите внимание, что в системе есть другие директивы коллектора, поэтому они также могут быть неправильными / нуждаются в корректировке
Проверьте расширение основных продаж config.xml и найдите <totals>
Там вы найдете:
<order_invoice>
<order_creditmemo>
<pdf>
Там могут быть другие в других расширениях, будь то ядро / сторонние
Надеюсь, это поможет.
PS: я не проверял ничего из этого в PHP7. Я знаю, что размещение директивы sort_order работает под php5.x