Каков статус вопросов округления в 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.

Alex
источник
Насколько я помню, Magento хранит цены с 4-мя знаками после запятой. Таким образом, если цены вводятся с 4 десятичными знаками, расчет будет правильным. Но я могу ошибаться.
user487772
1
Что вы подразумеваете под «вводом с 4-мя точками»? Но закругление Magento работает с 2 дек. точки. Также я думаю, что интерфейс PayPal работает с 2 декабря. очки - это, кажется, где проблема начинается.
Алекс
Если я правильно помню, если вы введете цены в админке с 4 десятичными знаками, она будет сохранена в дБ с 4 десятичными знаками. Тогда он будет округлен до 2 пунктов во время вывода, но округление будет правильным, так как цена с 4 десятичными знаками будет округлена.
user487772
Конечно, но у нас, в основном, проблемы с общим расчетом, особенно если используются процентные коды купонов.
Алекс
О, тогда я неправильно поняла ваш вопрос. Сожалею.
user487772

Ответы:

10

Нам известно о нескольких проблемах округления в основном налоговом модуле Magento, которые охватывают описанные сценарии. В настоящее время мы работаем над этими проблемами в следующем выпуске 1.13. Эти проблемы округления приводят к простой проверке Paypal, которая определяет, правильно ли складываются позиции в корзине. Похоже, патч Фабиана позаботится о проверке Paypal в краткосрочной перспективе.

Если у вас есть какие-либо вопросы, комментарии или предложения о том, как мы можем улучшить модуль Magento Tax, пожалуйста, не стесняйтесь обращаться ко мне, поскольку я являюсь менеджером по продукту и отвечаю за налоги.

С уважением, Чак

цыпленок
источник
Большой! Есть ли какой-нибудь набор тестов, чтобы показать, какие проблемы будут решаться?
Алекс
1
Чак, не могли бы вы настроить свою информацию для подтверждения?
отметки
Тесты только внутренние. Что касается более подробной информации об известных вопросах округления - это немного интересно. Клиент будет рассматривать их как связанные с определенными налоговыми конфигурациями, использующими определенные комбинации цены, налоговой ставки, скидок и т. Д. Наш подход к 1.13 состоял в том, чтобы идентифицировать общие налоговые конфигурации и гарантировать, что # комбинации не будут математически вызывать ошибки округления и маркировать определенные конфигурации (небольшие угловые случаи) как опасные конфигурации, которых следует избегать.
Чак
Немного не по теме, но значит ли это, что будет и CE 1.8 edition?
Сергей Гук
Да, CE выпускает запаздывающие выпуски EE примерно на месяц. 1.13 - это следующая версия EE.
Чак
7

Благодаря Андреасу Фогту, я создаю модуль для исправления ошибки раунда Paypal. Андреас дал мне несколько основных взломанных файлов, и я сделал модуль. Он проверяет, правильны ли суммы, а если нет, то исправляется.

Afaik ядро ​​взломать тестируется в дикой природе. Множество людей спрашивали о модуле, но никто не дал мне обратную связь, если он работает. Но это юнит! (только переписывает работу, потому что я понятия не имел, в чем проблема PayPal ;-))

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

Фабиан Блехшмидт
источник
1
Хм .. какая именно ошибка это исправляет? Похоже, ошибка переноса элементов корзины. На самом деле мы отключили перенос корзины. И это должно быть применено с патчем округления с 4 цифрами?
Алекс
Есть ли более одной проблемы? Как я уже сказал, я понятия не имею, что именно это решает - если есть более одной проблемы :(
Фабиан Блехшмидт
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!

Уолтер Хубер
источник
отлично, скажите мне, если у вас есть проблемы, я готов помочь и увидеть Bugfix в дикой природе и отладить его при необходимости!
Фабиан Блехшмидт
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

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

Если вы хотите рассчитать со скидками или налогами и хотите пересчитать цену, вам может быть интересно следующее объяснение. Пожалуйста, имейте ввиду, что я не знаю ни одного случая во внешнем интерфейсе, возможно, есть подсчет стажера. A) Итого => Налог / Скидка => Итого B) Налог / Скидка => Итого => Налог / Скидка

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

С точностью до 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

если а является точностью, то должно быть у меньше, чем + 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 просто добавляет число, которое дает magento. см. http://fabiankrueger.de/blog/magento-und-paypayl-rundungsfehler/ Если это не так, и PayPal пересчитывает налог или сумму, эта проблема не решаема, в противном случае цены - неправильные или правильные - отображаются ранее в Magento. , Решите это там. Для меня это похоже на работу.

Андреас Дибалла
источник