Magento Grand Total tanpa pajak dalam 1,9 dengan PHP7

17

Kami bekerja di 1.9 & php7; mendeteksi masalah ini dengan penipuan dugaan paypal (karena jumlah perbedaan).

Semua benar di frontend (menerapkan pajak); tetapi dalam checkout dan perhitungan, magento menggunakan total keseluruhan tanpa pajak.

Perhitungan urutan salah yang sebenarnya:

Harga produk tanpa pajak + pengiriman dengan pajak = jumlah total untuk pembayaran

Beralih ke php5 dan perhitungan sudah benar.

Beberapa ide?

Terima kasih!

Joan M.
sumber
Saya memiliki masalah yang sama. Yang saya temukan sejauh ini adalah ini: stackoverflow.com/questions/34281113/… Solusi untuk menyelesaikan ini akan sangat bagus.
Reinsch
Ini tidak tergantung pada PHP 7 dan telah dilaporkan sebelumnya, misalnya pada tahun 2012: Algoritma sortir: Total checkout Magento diurutkan salah menyebabkan perhitungan pajak pengiriman yang salah , tiket Magento internal yang diberikan adalah [MCACE-129].
hakre

Jawaban:

13

Larutan

Saya telah membuat modul magento untuk menyelesaikan masalah magento dengan perhitungan total untuk php7. Masalah yang saya alami khususnya adalah bahwa pajak telah ditambahkan dua kali ke total keseluruhan untuk pembayaran dengan modul amazon pada halaman checkout pembayaran amazon.

Kredit

Jawaban yang diberikan oleh archigrafix dalam posting ini ( /magento//a/97107/35665 ) memecahkan masalah saya - jadi ini hanyalah perbaikan yang dimasukkan ke modul.

Modul:

https://github.com/hartmut-ltd/magento-php7-totals-fix

Hartmut
sumber
berhasil !!! merekomendasikan solusi
jruzafa
9

Saya benar-benar tidak tahu apakah ini akan membantu dengan cara apa pun, tetapi sesuatu untuk dilihat.

Mungkin saja collecttotalspesanan 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

ProxiBlue
sumber
Penyortiran telah berubah di PHP7, Anda harus secara eksplisit mendefinisikan pesanan penyortiran unik karena memiliki beberapa pesanan penyortiran yang identik (yaitu level 5 pada tiga item berbeda) dapat memiliki hasil yang aneh. stackoverflow.com/questions/34281113/…
Fiasco Labs
Saya telah menambahkan hasil edit ke jawabannya.
ProxiBlue
Terima kasih ProxiBlue; kami akan periksa. Kami mendeteksi beberapa masalah dengan pengindeksan ulang; dalam beberapa kasus, ini mereproduksi masalah ini. Buka konfigurasi PAJAK, simpan beberapa "tidak ada perubahan" dan pengembalian PAJAK.
Joan M
8

Pada Magento 1.6.2 dan PHP 7.0.2 saya menyelesaikannya dengan cara ini:

1 - Dibuat dulu config.xml lokal: Salin /app/code/core/Mage/Sales/etc/config.xml ke /app/code/local/Mage/Sales/etc/config.xml

2 - Mengubahnya seperti ini masukkan deskripsi gambar di sini

Sekarang menghitung dengan benar:

masukkan deskripsi gambar di sini

archigrafix
sumber
1
Anda tidak dapat mengganti file XML dalam kumpulan kode lokal (hanya kelas PHP yang diisolasikan secara otomatis), jadi ini harus menjadi bagian dari config.xml dari modul kustom yang sebenarnya.
Fabian Schmengler
1
Seperti yang dijelaskan ini dilakukan menggunakan config.xml lokal.
archigrafix