Який статус питань округлення в 1.7?


27

Ми використовуємо Magento CE 1.7 і маємо різні проблеми округлення. У різних розрахунках різниця 0,01 євро.

Основним питанням може бути те, що ціни на товари включають. податок.

Співпрограмісти замінили Mage_Core_Model_Store::roundPrice()метод обчислення з точністю до 4 цифр. Але це, мабуть, спричиняє проблеми з платежами PayPal.

Чи є рішення цих проблем?

Редагувати:

Ми на самому справі намагалися офіційний патч ядра , який в основному додає 4-значний округлення до \Mage_Tax_Model_Sales_Total_Quote_Shipping::_round, \Mage_Tax_Model_Sales_Total_Quote_Subtotal::_deltaRoundі \Mage_Tax_Model_Sales_Total_Quote_Tax::_deltaRoundякий фіксує купон округлення проблему , але не проблема PayPal.


Наскільки я пам’ятаю, Magento зберігає ціни з 4 десятковими знаками. Отже, якщо ціни вводяться з 4 десятковими знаками, розрахунок правильний. Але я можу помилятися.
user487772

1
Що ви маєте на увазі під "введенням з 4 балами"? Але округлення Magento працює з 2 дек. бали. Також я думаю, що інтерфейс PayPal працює з 2 грудня. бали - це здається, звідки починається проблема.
Олексій

Якщо я пам'ятаю правильно, якщо ви введете ціни в адміністраторі з 4 десятковими знаками, вони будуть збережені в db з 4 десятковими знаками. Тоді він буде округлений до 2 балів під час виведення, але округлення буде правильним, оскільки ціна з 4 десятковою точкою буде округлена.
user487772

Звичайно - але в основному у нас є проблеми із загальним розрахунком, особливо якщо задіяні процентні коди купонів.
Олексій

О, тоді я неправильно зрозумів ваше запитання. Вибачте.
user487772

Відповіді:


10

Ми знаємо про декілька проблем округлення в рамках основного податкового модуля Magento, які охоплюють описані сценарії. Зараз ми працюємо над цими питаннями для майбутнього випуску 1.13. Ці проблеми із округленням викликають просту перевірку Paypal, яка визначає, чи позиції позицій у кошику правильно складаються. Схоже, патч Фабіана піклується про чек Paypal за короткий термін.

Якщо у вас є якісь запитання, коментарі чи пропозиції щодо того, як ми можемо вдосконалити модуль Magento Tax, будь ласка, не соромтеся зв’язатися зі мною, оскільки я менеджер продукту, відповідальний за податки.

З повагою, Чак


Чудово! Чи є якийсь тестовий набір, щоб показати, які проблеми будуть вирішуватися?
Олексій

1
Чак, ти не проти налаштувати свою інформацію користувача, щоб перевірити?
орієнтири

Тести є лише внутрішніми. Що стосується більш детальної інформації про відомі питання округлення - це трохи цікаво. Клієнт бачить, що вони пов'язані з певними податковими конфігураціями з використанням конкретних комбінацій ціни, податкової ставки, знижок тощо. Наш підхід для 1.13 полягає у визначенні загальних податкових конфігурацій та гарантуванні того, що # комбінації математично не створюють помилок округлення та позначають певні позначення конфігурації (невеликі кутові корпуси) як небезпечні конфігурації, яких слід уникати.
Чак

Трохи поза темою, але чи означає це, що буде також версія CE 1.8?
Сергій Гук

Так - CE випускає відставання випуску EE приблизно на місяць. 1.13 - наступний випуск EE.
Чак

7

Завдяки Андреасу Фогту я будую модуль для виправлення помилки Paypal. Андреас дав мені декілька основних злому файлів, і я зробив модуль. Він перевіряє, чи є суми правильними, а якщо ні, то вони виправляються.

Afaik core hack тестується в дикій природі. Дуже багато людей попросили модуль, але жоден відгук не дав мені відгуків, як це працює. Але це одиничне випробування! (тільки тоді, коли переписувачі працюють, тому що я не мав уявлення, що таке проблема з paypal ;-))

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


1
Гм .. який помилку точно виправляє? Схоже, помилка перенесення кошика-рядка-позиції. Ми фактично відключили передачу кошика. І чи застосовувати його 4-розрядний патч із заокругленням?
Олексій

Чи є одна проблема? Як я вже говорив, я не маю уявлення, що саме це виправляє - якщо існує більше однієї проблеми :(
Fabian Blechschmidt

5

Ми стикаємося як з помилкою округлення Paypal, так і з кодом купонів зі знижкою 100%. У нас є лише проблеми з цінами (наприклад, 3,99 євро з урахуванням податку), де чиста ціна має на 3-й розряд 5 (3,325). Тож також податок (тут з 20%) має на 3-й розряд 5 (0,665). Тож якщо ви округляєте і додаєте обидві ціни (що робить paypal і magento), загальна сума на 0,01 євро більше, ніж базова ціна (4,00 євро).

Правильний облік повинен становити 3,32 євро + 0,67 євро податку = 3,99 євро

Оскільки ми також намагаємось знайти загальне рішення, ми намагаємося виправити округлення Paypal!


чудово, скажіть, якщо у вас є проблеми, я хочу допомогти і побачити помилку в дикій природі і налагоджувати її за потреби!
Фабіан Блешшмідт

1
Вище описана вами проблема виправлена ​​у нашому майбутньому випуску (1,8 CE / 1,13 EE).
Чак

@Chuck Я щойно тестував цей сценарій з Mage_Tax_Model_Sales_Total_Quote_Tax від 1.13.0.1, і, схоже, вирішив проблему як заміну в проекті 1,12. Дуже дякую. Чи є ETA для 1,8CE ще?
День Джонатана

4

існує загальний взаємозв'язок між цінами, кількістю, знижкою, податком та їх точністю.

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.

Важливим питанням є округлий підметал, який я обчислюю з макс. Помилка. 2 дробові цифри означає 5 * 10 ^ -3

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

В) 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

Якщо ви хочете розрахувати зі знижками або податками і хочете перерахувати ціну, наступне пояснення може бути цікавим для вас. Будь ласка, майте на увазі, оскільки я не знаю жодного випадку на передовій, можливо, є стаж розрахунку. А) Всього => Податок / Знижка => Всього В) Податок / Знижка => Всього => Податок / Знижка

А) х * у / 10 ^ 2 // с * 10 ^ 2 / у

Б) х * 10 ^ 2 / у // с * у / 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

З точністю 2 цифри, ви повинні мати швидкість без ФРАКЦІЙНИХ ЦИФРІВ. Приклад: Разом: 15,15 ставка податку: 0,3% => податок 0,04545 => округлий 0,0455 податок: 0,0455 => сумарно: 15,17

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

якщо a - точність, то y повинна бути y менше, ніж a + 2.

Зверніть увагу, якщо ви обробляєте кількість. Помилка буде багаторазовою. Тож якщо у вас є максимум 10 ^ 5, ви повинні мати точність 7. Це хвилює лише те, якщо ви розраховуєтесь зі зміщенням!

Додавання (9.10.2013 Magento версії 1.7.0.2) Брутто Нетто <=> і податки // Америка <=> старі набори Європа є цілими числами (Cents) і відображення
F (х) = круглий (а * х)> 1 не біективні. З моїх слів: Не за кожну ціну існує ціна без або Іноді є 2 ціни з урахуванням за одну ціну без урахування або Ви можете отримати 2 різні результати залежно від способу розрахунку

Приклад із реального світу з Німеччини:

Ви намагаєтеся ввести ціну в т.ч. податки: 19,95 Ви отримуєте 16,76 (2 цифри) без ваших цін. податки (19%). Якщо обчислити 19% податків, ви отримаєте (16,76 * 0,19) 3,18. (Будьте в курсі: 19,95 * 019 / 1,19 ~ 3,19)

Отже, є різниця в 1 цент. 16,76 => 19,94 16,77 => 19,96

Немає ціни 19,95 в Америці - землі нетто.

Тому обчислюйте з оригінальними цінами, наскільки це можливо. Для включення цін використовуються введена ціна та податки (несправне число).

У PayPal є ця перевірка шахрайства - зараз я не впевнений - але PayPal просто додає число, яке дає їй Магенто. див. http://fabiankrueger.de/blog/magento-und-paypayl-rundungsfehler/ Якщо це неправда і PayPal перерахує податок або Total, ця проблема не вирішена, інакше ціни - неправильні чи правильні - відображаються раніше в Magento . Вирішіть його там. Для мене це, здається, працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.