Apa status masalah pembulatan di 1,7?

27

Kami menggunakan Magento CE 1.7 dan memiliki berbagai masalah pembulatan. Dalam berbagai perhitungan ada perbedaan 0,01 EUR.

Masalah dasar mungkin adalah harga artikel termasuk. pajak.

Programer bersama menimpa Mage_Core_Model_Store::roundPrice()metode untuk menghitung dengan presisi 4 digit. Tetapi ini tampaknya menyebabkan masalah dengan pembayaran PayPal.

Apakah ada solusi untuk masalah itu?

EDIT:

Kami benar-benar mencoba patch inti resmi yang pada dasarnya menambahkan pembulatan 4 digit \Mage_Tax_Model_Sales_Total_Quote_Shipping::_round, \Mage_Tax_Model_Sales_Total_Quote_Subtotal::_deltaRounddan \Mage_Tax_Model_Sales_Total_Quote_Tax::_deltaRoundyang memperbaiki masalah pembulatan kupon tetapi bukan masalah PayPal.

Alex
sumber
Sejauh yang saya ingat Magento menyimpan harga dengan 4 poin desimal. Jadi jika harga dimasukkan dengan 4 angka desimal perhitungannya sudah benar. Tapi saya mungkin salah.
user487772
1
Apa yang Anda maksud dengan "input dengan 4 des. Poin"? Tapi pembulatan Magento bekerja dengan 2 Desember. poin. Juga saya pikir antarmuka PayPal berfungsi dengan 2 Desember. poin - ini sepertinya masalahnya dimulai.
Alex
Jika saya ingat dengan benar, jika Anda memasukkan harga dalam admin dengan 4 titik desimal, itu akan disimpan dalam db dengan 4 poin desimal. Kemudian akan dibulatkan menjadi 2 titik selama output, tetapi pembulatan akan benar karena harga dengan 4 titik desimal akan dibulatkan.
user487772
Tentu - tetapi kami terutama memiliki masalah dengan perhitungan total, terutama jika kode kupon berbasis persentase terlibat.
Alex
Oh, kalau begitu aku salah pertanyaan. Maaf.
user487772

Jawaban:

10

Kami menyadari beberapa masalah pembulatan dalam modul pajak Magento inti yang mencakup skenario yang telah dijelaskan. Saat ini kami sedang mengerjakan masalah tersebut untuk rilis 1.13 mendatang. Masalah pembulatan tersebut memicu cek Paypal sederhana yang menentukan apakah item baris dalam keranjang bertambah dengan benar. Sepertinya tambalan Fabian menangani cek Paypal dalam jangka pendek.

Jika Anda memiliki pertanyaan, komentar, atau saran tentang bagaimana kami dapat meningkatkan modul Pajak Magento, jangan ragu untuk menghubungi saya karena saya adalah manajer produk yang bertanggung jawab atas pajak.

Salam, Chuck

Membuang
sumber
Besar! Apakah ada semacam test suite yang tersedia untuk menunjukkan masalah yang akan ditangani
Alex
1
Chuck, maukah Anda mengatur info pengguna Anda untuk memverifikasi?
patokan
Tes hanya internal. Sejauh lebih detail tentang masalah pembulatan dikenal - itu sedikit menarik. Pelanggan akan melihatnya terkait dengan konfigurasi pajak tertentu menggunakan kombinasi harga, tarif pajak, diskon, dll. Pendekatan kami untuk 1,13 adalah mengidentifikasi konfigurasi pajak umum dan memastikan bahwa # kombinasi tidak akan secara matematis menghasilkan kesalahan pembulatan dan menandai tertentu konfigurasi (kasus sudut kecil) sebagai konfigurasi berbahaya yang harus dihindari.
Chuck
Sedikit di luar topik, tetapi apakah itu berarti akan ada juga edisi CE 1.8?
Sergei Guk
Ya - CE merilis lag rilis EE sekitar satu bulan. 1.13 adalah rilis EE berikutnya.
Chuck
7

Berkat Andreas Vogt, saya membuat modul untuk memperbaiki bug putaran Paypal. Andreas memberi saya beberapa file inti yang diretas dan saya membuat modul. Ia memeriksa apakah jumlahnya benar dan jika tidak, itu diperbaiki.

Afaik hack inti diuji di alam liar. Banyak orang meminta modul, tapi tidak ada yang memberi saya umpan balik apakah itu berfungsi. Tapi itu unit yang diuji! (hanya apakah penulisan ulang bekerja, karena saya tidak tahu, apa masalahnya paypal ;-))

https://github.com/magento-hackathon/PaypalRoundBugfix

Fabian Blechschmidt
sumber
1
Hm .. bug mana yang sebenarnya diperbaiki? Sepertinya bug transfer item baris. Kami sebenarnya telah menonaktifkan transfer-keranjang. Dan apakah itu akan diterapkan dengan patch pembulatan 4 digit?
Alex
Apakah ada lebih dari satu masalah? Seperti yang saya katakan, saya tidak tahu, apa sebenarnya yang diperbaiki - jika ada lebih dari satu masalah :(
Fabian Blechschmidt
5

Kami menghadapi keduanya, bug pembulatan paypal dan masalah dengan kode kupon diskon 100%. Kami hanya memiliki masalah pada harga (seperti Eur 3.99 termasuk pajak), di mana harga bersih memiliki pada digit ke-3 a 5 (3.325). Begitu juga pajak (di sini dengan 20%) ada pada digit ke-3 a 5 (0,665). Jadi jika Anda membulatkan dan menambahkan kedua harga (apa yang dilakukan paypal dan magento) totalnya adalah Eur 0,01 lebih dari harga dasar (Eur 4,00).

Perhitungan yang tepat adalah Eur 3,32 net + Eur 0,67 pajak = Eur 3,99

Karena kami juga mencoba menemukan solusi umum, kami mencoba pembulatan paypal!

Walter Huber
sumber
Hebat, beritahu saya jika Anda memiliki masalah, saya ingin sekali membantu dan melihat Bugfix di alam bebas dan men-debugnya jika diperlukan!
Fabian Blechschmidt
1
FYI masalah yang telah Anda jelaskan telah diperbaiki pada rilis kami yang akan datang (1,8 CE / 1,13 EE).
Chuck
@Chuck Saya baru saja menguji skenario ini dengan Mage_Tax_Model_Sales_Total_Quote_Tax dari 1.13.0.1 dan tampaknya telah menyelesaikan masalah sebagai pengganti drop-in dalam proyek 1,12. Terima kasih banyak. Apakah ada ETA untuk 1.8CE?
Jonathan Day
4

ada hubungan umum antara harga, jumlah, diskon, pajak dan ketentuannya.

Assume:
x is the price
y is the percentage
s is the rounded sub-total

2 Directions
A) incl. Tax => excl. Tax => incl. Tax
B) excl. => incl. => excl.

Masalah penting adalah subtotal bulat yang saya hitung dengan maks. Kesalahan. 2 digit fraksional berarti 5 * 10 ^ -3

A) x * 10 ^ 2 / (y + 10 ^ 2) // s * (y + 10 ^ 2) / 10 ^ 2

B) x * (y + 10 ^ 2) / 10 ^ 2 // s * 10 ^ 2 / (10 ^ 2 + y)

A)
Subtotal precision 2 fractional digits:
5*10^-3*(y+10^2)/10^2 => (y+10^2)/10^2<1 => no y
3 fractional digits:
5*10^-4*(y+10^2)/10^2 => (y+10^2)/10^2<10 => y<900
4 fractional digits:
5*10^-5*(y+10^2)/10^2 => (y+10^2)/10^2<10^2 => y<90900
(must be a very bad country)

......

B)
Subtotal precision 2 fractional digits:
(5*10^-3)*10^2/(10^2+y) => 10^2/(10^2+y)&lt;1 => every y

Jika Anda ingin menghitung dengan diskon atau pajak dan ingin menghitung ulang harganya, penjelasan selanjutnya bisa menarik bagi Anda. Perlu diketahui karena saya tidak tahu kasus apa pun di front-end, mungkin ada perhitungan magang. A) Total => Pajak / Diskon => Total B) Pajak / Diskon => Total => Pajak / Diskon

A) x * y / 10 ^ 2 // s * 10 ^ 2 / y

B) x * 10 ^ 2 / y // s * y / 10 ^ 2

A) Subtotal precision 2 fractional digits:
(5*10^-3)*10^2/y => 10^2/y < 1 => y>10^2
Subtotal precision 3 fractional digits:
(5*10^-4)*10^2/y => 10^2/y < 10 => y>10
Subtotal precision 4 fractional digits:
... 10^2/y < 10^2 => y>1

Dengan ketepatan 2 digit, Anda harus memiliki nilai tanpa NO FRAKSIONAL. Contoh: Total: 15,15 tarif pajak: 0,3% => pajak 0,04545 => bulat 0,0455 pajak: 0,0455 => total: 15,17

B) Subtotal precision 2 fractional digits:
(5*10^-3)*y/10^2 => y/10^2 &lt; 1 => y < 10^2

jika a adalah presisi, maka harus y kurang dari + 2.

Harap dicatat jika Anda menangani jumlah. Kesalahan akan berlipat ganda. Jadi, jika Anda memiliki maks 10 ^ 5, Anda harus memiliki ketepatan 7. Ini hanya mengkhawatirkan, jika Anda menghitung dengan offset!

TAMBAHAN (9.10.2013 Magento Versi 1.7.0.2) Brutto <=> Netto dan Pajak // Amerika <=> Kumpulan Eropa lama adalah bilangan bulat (Sen) dan pemetaan
f (x) = putaran (a * x) a> 1 adalah tidak bersifat kata sifat. Dalam kata-kata saya: Tidak untuk setiap harga termasuk ada harga tidak termasuk atau Kadang-kadang ada 2 harga termasuk. untuk satu harga tidak termasuk atau Anda bisa mendapatkan 2 hasil berbeda tergantung cara Anda menghitung

Contoh nyata dari Jerman:

Anda mencoba memasukkan harga termasuk. pajak: 19,95 Anda mendapatkan 16,76 (2 digit) karena harga Anda tidak termasuk. pajak (19%). Jika Anda menghitung pajak 19% yang Anda dapatkan (16,76 * 0,19) 3,18. (Waspada: 19.95 * 019 / 1.19 ~ 3.19)

Jadi ada 1 sen perbedaan. 16,76 => 19,94 16,77 => 19,96

Tidak ada harga 19,95 di Amerika - tanah netto.

Jadi hitung dengan harga asli sejauh mungkin. Untuk harga termasuk menggunakan harga yang dimasukkan dan pajak (angka rusak).

PayPal memiliki pemeriksaan penipuan ini - sekarang saya tidak yakin - tetapi PayPal hanya menambahkan angka yang diberikan magento. lihat http://fabiankrueger.de/blog/magento-und-paypayl-rundungsfehler/ Jika ini tidak benar dan PayPal menghitung ulang Pajak atau Total, masalah ini tidak dapat dipecahkan, selain itu harga - salah atau kanan - ditunjukkan sebelumnya di Magento . Selesaikan di sana. Bagi saya sepertinya itu berhasil.

Andreas Dyballa
sumber