Мы используем 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, которые охватывают описанные сценарии. В настоящее время мы работаем над этими проблемами в следующем выпуске 1.13. Эти проблемы округления приводят к простой проверке Paypal, которая определяет, правильно ли складываются позиции в корзине. Похоже, патч Фабиана позаботится о проверке Paypal в краткосрочной перспективе.
Если у вас есть какие-либо вопросы, комментарии или предложения о том, как мы можем улучшить модуль Magento Tax, пожалуйста, не стесняйтесь обращаться ко мне, поскольку я являюсь менеджером по продукту и отвечаю за налоги.
С уважением, Чак
источник
Благодаря Андреасу Фогту, я создаю модуль для исправления ошибки раунда Paypal. Андреас дал мне несколько основных взломанных файлов, и я сделал модуль. Он проверяет, правильны ли суммы, а если нет, то исправляется.
Afaik ядро взломать тестируется в дикой природе. Множество людей спрашивали о модуле, но никто не дал мне обратную связь, если он работает. Но это юнит! (только переписывает работу, потому что я понятия не имел, в чем проблема PayPal ;-))
https://github.com/magento-hackathon/PaypalRoundBugfix
источник
Мы сталкиваемся как с ошибкой округления 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!
источник
Существует общая взаимосвязь между ценами, количеством, скидкой, налогом и их точностью.
Важной проблемой является округленная промежуточная сумма, которую я рассчитываю с макс. Ошибка. 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) Итого => Налог / Скидка => Итого B) Налог / Скидка => Итого => Налог / Скидка
A) x * y / 10 ^ 2 // s * 10 ^ 2 / y
B) x * 10 ^ 2 / y // s * y / 10 ^ 2
С точностью до 2 цифр у вас должна быть скорость без ДРАГОЦЕННЫХ ЦИФРОВ. Пример: Итого: 15,15 ставка налога: 0,3% => налог 0,04545 => округленный налог 0,0455: 0,0455 => итого: 15,17
если а является точностью, то должно быть у меньше, чем + 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. , Решите это там. Для меня это похоже на работу.
источник