Tình trạng của các vấn đề làm tròn trong 1.7 là gì?


27

Chúng tôi đang sử dụng Magento CE 1.7 và có nhiều vấn đề làm tròn. Trong các tính toán khác nhau, có chênh lệch 0,01 EUR.

Vấn đề cơ bản có thể là giá bài viết được bao gồm. Thuế.

Các lập trình viên cùng ghi đè Mage_Core_Model_Store::roundPrice()phương thức để tính toán với độ chính xác 4 chữ số. Nhưng điều này dường như gây ra vấn đề với thanh toán PayPal.

Có một giải pháp cho những vấn đề đó?

CHỈNH SỬA:

Chúng tôi thực sự cố gắng một bản vá lõi chính thức mà về cơ bản thêm 4 chữ số làm tròn đến \Mage_Tax_Model_Sales_Total_Quote_Shipping::_round, \Mage_Tax_Model_Sales_Total_Quote_Subtotal::_deltaRound\Mage_Tax_Model_Sales_Total_Quote_Tax::_deltaRoundđó sửa chữa một vấn đề làm tròn coupon nhưng không phải là vấn đề PayPal.


Theo tôi nhớ giá cửa hàng Magento với 4 điểm thập phân. Vì vậy, nếu giá là đầu vào với 4 điểm thập phân, tính toán là chính xác. Nhưng tôi có thể sai.
dùng487772

1
Bạn có ý nghĩa gì bởi "đầu vào với 4 điểm." Nhưng làm tròn Magento hoạt động với 2 dec. điểm. Ngoài ra tôi nghĩ giao diện PayPal hoạt động với 2 dec. điểm - đây dường như là nơi vấn đề bắt đầu.
Alex

Nếu tôi nhớ lại chính xác, nếu bạn nhập giá trong quản trị viên với 4 điểm thập phân, nó sẽ được lưu trong db với 4 điểm thập phân. Sau đó, nó sẽ được làm tròn đến 2 điểm trong khi đầu ra, nhưng làm tròn sẽ chính xác vì giá có 4 dấu thập phân sẽ được làm tròn.
dùng487772

Chắc chắn - nhưng chúng tôi chủ yếu có vấn đề với tính toán tổng, đặc biệt là nếu các mã phiếu giảm giá dựa trên tỷ lệ phần trăm có liên quan.
Alex

Ồ, sau đó tôi nhận được câu hỏi của bạn sai. Lấy làm tiếc.
dùng487772

Câu trả lời:


10

Chúng tôi nhận thức được một số vấn đề làm tròn trong mô-đun thuế Magento cốt lõi bao gồm các kịch bản đã được mô tả. Hiện tại chúng tôi đang nghiên cứu những vấn đề đó cho phiên bản 1.13 sắp tới. Các vấn đề làm tròn đó đang kích hoạt kiểm tra Paypal đơn giản để xác định xem các chi tiết đơn hàng trong giỏ hàng có đúng không. Có vẻ như bản vá của Fabian sẽ kiểm tra Paypal trong thời gian ngắn.

Nếu bạn có bất kỳ câu hỏi, nhận xét hoặc đề xuất nào về cách chúng tôi có thể cải thiện mô-đun Thuế Magento, vui lòng liên hệ với tôi vì tôi là người quản lý sản phẩm chịu trách nhiệm về thuế.

Trân trọng, Chuck


Tuyệt quá! Có một số loại bộ kiểm tra có sẵn để chỉ ra vấn đề nào sẽ được giải quyết?
Alex

1
Chuck, bạn có phiền khi thiết lập thông tin người dùng của mình để xác minh không?
đánh dấu

Các xét nghiệm chỉ là nội bộ. Theo như chi tiết hơn về các vấn đề làm tròn đã biết - đó là một chút thú vị. Một khách hàng sẽ thấy chúng được liên kết với một số cấu hình thuế nhất định bằng cách sử dụng các kết hợp cụ thể về giá, thuế suất, chiết khấu, v.v ... Cách tiếp cận của chúng tôi cho 1.13 là xác định các cấu hình thuế phổ biến và đảm bảo rằng các kết hợp # sẽ không tạo ra các lỗi làm tròn và gắn thẻ một cách toán học cấu hình (trường hợp góc nhỏ) là cấu hình nguy hiểm nên tránh.
Chuck

Một chút lạc đề, nhưng điều đó có nghĩa là cũng sẽ có phiên bản CE 1.8?
Sergei Guk

Có - CE phát hành lag EE phát hành khoảng một tháng. 1.13 là phiên bản EE tiếp theo.
Chuck

7

Nhờ Andreas Vogt, tôi xây dựng một mô-đun để sửa lỗi vòng Paypal. Andreas đã cho tôi một vài tập tin hack lõi và tôi đã tạo ra mô-đun. Nó kiểm tra số tiền là chính xác và nếu không, nó được sửa.

Afaik hack lõi được thử nghiệm trong tự nhiên. Rất nhiều người đã yêu cầu mô-đun, nhưng không có ai cung cấp cho tôi thông tin phản hồi khi nó hoạt động. Nhưng nó là đơn vị thử nghiệm! (chỉ thời gian viết lại hoạt động, bởi vì tôi không biết, vấn đề paypal là gì ;-))

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


1
Hừm .. lỗi nào chính xác là nó sửa? Trông giống như lỗi cart-line-item-transfer. Chúng tôi thực sự đã tắt chuyển giỏ hàng. Và nó có được áp dụng với miếng vá làm tròn 4 chữ số không?
Alex

Có nhiều hơn một vấn đề? Như tôi đã nói, tôi không biết chính xác nó đã sửa cái gì - nếu có nhiều hơn một vấn đề :(
Fabian Blechschmidt

5

Chúng tôi đang phải đối mặt với cả hai, lỗi làm tròn paypal và vấn đề với mã phiếu giảm giá 100%. Chúng tôi chỉ gặp vấn đề về giá (như thuế bao gồm 3,99 Eur), trong đó giá ròng có trên chữ số thứ 3 là 5 (3,325). Vì vậy, thuế (ở đây với 20%) có trên chữ số thứ 3 là 5 (0,665). Vì vậy, nếu bạn làm tròn và thêm cả hai giá (những gì paypal và magento làm) thì tổng số là hơn 0,01 Eur so với giá cơ bản (Eur 4,00).

Phép tính đúng phải là Eur 3,32 net + Eur 0,67 thuế = Eur 3,99

Vì chúng tôi cũng đang cố gắng tìm một giải pháp chung, chúng tôi sẽ thử sửa lỗi làm tròn paypal!


thật tuyệt, hãy nói cho tôi biết nếu bạn gặp vấn đề, tôi rất muốn giúp và xem Bugfix trong tự nhiên và gỡ lỗi nếu cần!
Fabian Blechschmidt

1
FYI vấn đề bạn mô tả đã được khắc phục trong bản phát hành sắp tới của chúng tôi (1.8 CE / 1.13 EE).
Chuck

@Chuck Tôi vừa thử nghiệm kịch bản này với Mage_Tax_Model_Sales_Total_Quote_Tax từ 1.13.0.1 và có vẻ như đã giải quyết vấn đề như một sự thay thế thả xuống trong dự án 1.12. Cảm ơn rất nhiều. Có ETA cho 1.8CE chưa?
Ngày Jonathan

4

có một mối quan hệ chung giữa giá cả, số lượng, chiết khấu, thuế và các quy định của họ.

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.

Vấn đề quan trọng là tổng phụ được làm tròn mà tôi đang tính với max. Lỗi. 2 chữ số phân số có nghĩa là 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

Nếu bạn muốn tính toán với giảm giá hoặc thuế và muốn tính toán lại giá, lời giải thích tiếp theo có thể thú vị cho bạn. Xin lưu ý vì tôi không biết bất kỳ trường hợp nào ở mặt trước, có thể có một tính toán thực tập. A) Tổng => Thuế / Chiết khấu => Tổng B) Thuế / Chiết khấu => Tổng => Thuế / Chiết khấu

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

Với độ chính xác là 2 chữ số, bạn phải có một tỷ lệ KHÔNG CÓ SỐ TIỀN LÃI. Ví dụ: Tổng: 15,15 thuế suất: 0,3% => thuế 0,04545 => làm tròn 0,0455 thuế: 0,0455 => tổng: 15,17

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

nếu a là độ chính xác, thì phải nhỏ hơn y + 2.

Xin lưu ý nếu bạn xử lý số lượng. Lỗi sẽ được nhân lên. Vì vậy, nếu bạn có tối đa 10 ^ 5, bạn phải có độ chính xác là 7. Điều này chỉ đáng lo ngại, nếu bạn đang tính toán với bù!

BỔ SUNG (9.10.2013 Phiên bản Magento 1.7.0.2) Brutto <=> Netto và Thuế // Mỹ <=> Bộ Châu Âu cũ là số nguyên (Cents) và ánh xạ
f (x) = round (a * x) a> 1 là không tính toán. Theo lời của tôi: Không phải cho mỗi giá bao gồm. tồn tại một giá excl. hoặc đôi khi có 2 giá bao gồm. cho một giá excl. hoặc Bạn có thể nhận được 2 kết quả khác nhau tùy thuộc vào cách bạn tính toán

Ví dụ thực tế từ Đức:

Bạn cố gắng nhập một giá bao gồm. thuế: 19,95 Bạn nhận được 16,76 (2 chữ số) khi giá của bạn không bao gồm. các loại thuế (19%). Nếu bạn tính thuế 19% bạn nhận được (16,76 * 0,19) 3,18. (Lưu ý: 19,95 * 019 / 1,19 ~ 3.19)

Vì vậy, có sự khác biệt 1 Cent. 16,76 => 19,94 16,77 => 19,96

Không có giá 19,95 ở Mỹ - vùng đất của netto.

Vì vậy, tính toán với giá gốc càng xa càng tốt. Để bao gồm giá sử dụng giá nhập và các loại thuế (số bị hỏng).

PayPal có kiểm tra gian lận này - bây giờ tôi không chắc chắn - nhưng PayPal chỉ thêm số magento cung cấp cho nó. xem http://fabiankrueger.de/blog/magento-und-paypayl-rundungsfehler/ Nếu điều này không đúng và PayPal tính lại Thuế hoặc Tổng, vấn đề này không thể giải quyết được, nếu không thì giá - sai hoặc đúng - được hiển thị trước trong Magento . Giải quyết nó ở đó. Đối với tôi nó dường như làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.