Я дійсно не знаю, чи це допоможе в будь-якому випадку, але на що слід звернути увагу.
Можливо, що 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