Saya benar-benar tidak tahu apakah ini akan membantu dengan cara apa pun, tetapi sesuatu untuk dilihat.
Mungkin saja collecttotals
pesanan model Anda dipesan secara berbeda, dan pajak itu dipesan / diterapkan setelah grand_total
Anda dapat menguji apakah ini masalahnya sebagai berikut. (perhatikan ini melibatkan penyesuaian file inti untuk mendapatkan beberapa informasi debug, tolong jangan coba ini di situs langsung!)
Edit metode yang terletak di:
Mage_Sales_Model_Quote_Address::collecttotals
dan tambahkan satu baris ke metode, yang akan memungkinkan Anda untuk menampilkan model saat mereka diproses.
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;
}
pastikan logging diaktifkan.
ekor file log melalui konsol: tail -f system.log
Reproduksi masalah melalui frontend.
Anda akan mendapatkan entri sebagai berikut di log Anda (ini dari vanilla 1.9.2.2 - Anda mungkin memiliki entri lain)
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
Anda akan melihatnya berulang, jadi lihat saja di mana ia mulai, dan berakhir, harus mudah untuk melihat polanya
Perhatikan dua entri terakhir di atas: Pajak datang sebelum grand_total. Ini mungkin menjadi mungkin memesan ini keluar dari mendera, dan pajak muncul setelah grand_total, sehingga grand_total tidak akan memiliki pajak diterapkan.
EDIT:
Ok, jadi saya tidak melihat pertanyaan yang dimaksud sebenarnya menunjuk ke pengurutan koleksi menjadi masalah. Saya menduga itu mungkin masalahnya, tetapi belum mengujinya sendiri di PHP7
Ada solusinya, tetapi itu tidak terlalu bagus. Setiap ekstensi baru yang ditempatkan di toko, yang menyisipkan model ke dalam kolektor, perlu dicatat, dan tambahan ditambahkan ke penyortiran, kalau tidak hal-hal bisa menjadi lebih salah. Dapat sedikit masalah pemeliharaan ke depan.
Cukup paksa urutan pengurutan dengan menempatkan spesifik <sort_order>
ke dalam konfigurasi total. Anda dapat melakukan ini melalui ekstensi Anda sendiri, yang hanya akan memiliki config.xml, tempat Anda menentukan pesanan untuk setiap kolektor.
di config.xml, miliki arahan seperti itu:
<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>
Gunakan celah besar antara masing-masing arahan penyortiran, untuk memungkinkan ruang untuk memasukkan tambahan ke depan.
Seperti disebutkan, tidak terlalu elegan, tetapi dapat memecahkan masalah langsung Anda.
Juga perhatikan bahwa ada arahan kolektor lain dalam sistem, sehingga mereka juga mungkin salah / perlu penyesuaian
Periksa config.xml ekstensi penjualan inti, dan cari <totals>
Di sana Anda akan menemukan:
<order_invoice>
<order_creditmemo>
<pdf>
Mungkin ada orang lain di ekstensi lain, baik itu core / pihak ke-3
Semoga itu bisa membantu.
PS: Saya belum mengujinya di PHP7. Saya tahu penempatan karya direktif sort_order di bawah php5.x