Leider ist der altbekannte Rundungsfehler auch in der aktuellen Magento Version 1.6 nicht vollständig behoben. Da Magento die Preise intern teilweise auf 2 Nachkommastellen rundet (weiß der Henker, warum…), entstehen unter bestimmten Voraussetzungen immernoch Abweichungen in der Preisberechnung. Im hier vorliegendem Fall waren es zum Beispiel konfigurierbare Produkte mit Preisen inklusive Mehrwertsteuer.
Das Problem ist zum Glück recht leicht zu beheben. Hierzu muss folgende Funktion der Datei /app/code/core/Mage/Core/Model/Store.php angepasst werden.
1 2 3 4 5 6 7 8 9 10 | /** * Round price * * @param mixed $price * @return double */ public function roundPrice($price) { return round($price, 2); } |
Ihr seht, dort wird der Preis auf 2 Nachkommastellen gerundet.
Dies ändern wir in 4 Nachkommastellen und speichern die Datei unter /app/code/local/Mage/Core/Model/Store.php (Niemals Änderungen direkt im Core vornehmen!). Schon sollte Magento richtig rechnen.
1 2 3 4 5 6 7 8 9 10 | /** * Round price * * @param mixed $price * @return double */ public function roundPrice($price) { return round($price, 4); } |
Keine Angst, ausgegeben werden die Preise natürlich trotzdem mit nur 2 Nachkommastellen.



Diese Anpassungen sind in einem (nicht sehr bekannten) Modul von Rouven Rieker bereits fertig umgesetzt:
https://github.com/therouv/Magento-BetterPriceRounding. Die Anpassung behebt einige Rundungsprobleme, aber leider noch nicht alle…
Hallo Andreas, danke für den Hinweis. Das Modul vom Rouven war in meinen Versuchen in der aktuellen Magento Version (1.6.1.0) beim Kunden leider nicht zum Laufen zu kriegen. Daher dieses kleine Tutorial.
aber wenn man das ändert, kriegt man ernsthafte probleme mit paypal!!
http://www.magentocommerce.com/boards/viewthread/266585/
habt ihr dafür ne lösung??
Eigentlich unerklärlich, wie so ein Bug immer noch nicht behoben ist. Immerhin sind die Preise nicht so ganz unwichtig für einen Shop …
Ich meine es war doch schon einmal behoben in der 1.5er oder nicht?
Zu Teilen wurde es in V1.5 behoben. So ganz leider anscheinend noch nicht, haben wir bald in 1.6 feststellen müssen. Daher war diese kleine Änderung leider noch nötig.
Hallo Kai,
was sagst du denn bezüglich deines Workarounds und den daraufhin auftretenden Problemen bei der Übergabe an PayPal.
In meinem Falle kommen dann 90% aller PayPal Zahlung als Fehlerhaft zurück und ich muss sie via Datenbank bzw. Script reaktivieren. Die Zahlung stimmt immer nicht und ich hab dann steuerlich ein Problem.
Lasse ich das Rundungsproblem aber so, werden mir in der Produktansicht zig Artikel nicht korrekt preislich angezeigt -.-
Liebe Grüße
Janine
Ich meine das mit PayPal liegt an etwas anderem (bin selbst gerade an etwas dran für einen Kunden).
Im Moment liegen mir 2 Theorien dazu vor:
1. Die Übergabe im PayPal Modul ist falsch (Steuern, MwSt. Einstellungen werden falsch oder ungenügend berücksichtigt)
2. Von der PayPal Seite (Entgegennahme der Daten auf der PayPal Seite), hier wird die Art und Weise der Preis Bildung anders gehandhabt, etwa wenn im Warenkorb zzgl. MwSt. eingestellt war dann geht die Gesamtsumme an PayPal und PayPal schlägt dann nochmal die MwSt. drauf.
Bei der Vielzahl an Steuer Einstellungen und mögliche Scenarien ist es recht schwer einen spezifischen Fehler auszumachen.
Es soll aber wohl so sein das sich PayPal hier aufgrund eines eigenen Rundungsmechanismus verschluckt in der Berechnung, insbesondere bei Werten mit ,5 – etwa 1,50 €.
Finde es aber auch sehr bedauerlich das Magento PayPal noch immer mit solchen Kinderkrankheiten kämpft, bzw. das diese xtrem wichtigen Dinge bis heute nicht genügend konfigurierbar sind – das Price Rounding ist sogar im kleinen PrestaShop konfigurierbar!!!
Grüße, Daniel
Stimme ich dir in allen Punkten zu, als Magento Nutzer und Designer setzt man sich mit solchen Problemen ja gefühlte Ewigkeiten auseinander.
In meinem Falle ist es leider in der Tat so, das ich PayPal generell nicht aufgeschlüsselt weiterleiten kann. Lasse ich den Rundungsmechanismus von Magento so wie er Standmäßig kommt, kann ich es an PayPal wenigstens als gesammelte Posten weiterleiten.
Ändere ich den Rundungsmechanismus erhalte ich eben für 90% der PayPal Zahlungen eine Missbrauchswarnung.
Am Ende machen solche Dinge Magento immer müßig. Ich persönlich verstehe nicht wie sowas nach so langer Zeit immer noch sein kann. Immerhin werden diese Fehler schon seit zig Versionen mit geschleppt.
Wenn Magento nicht genau das so abbilden würde wie ich mir viele Dinge vorstelle, hätte ich mir vermutlich schon längst ein anderes Shopsystem gesucht.
Liebe Grüße
Janine
Ich bin mittlerweile sehr böse wegen dieses Themas – bei Veröffentlichung der 1.5er wurde es mal ebenso gefixt, aber auch nur weil Deutsche bei der Präsentation in den USA vor Ort waren so viel ich gehört habe und es angesprochen haben vor Ort und man dort wohl keine schlechte Stimmung wollte.
Ist zwar etwas gewagt zu sagen, aber aus meiner Sicht reine Schikane!
Natürlich weiß man um diesen Fehler und natürlich wäre man in der Lage es sogar konfigurierbar zu machen, aber warum fixen im Community Produkt? Ist es von Seiten des Herstellers gewünscht das man real mit dem kostenfreien Produkt Umsätze generiert??? Oder bestehen diese Mega-Bugs auch in der Enterprise, Professional & Go Version?
Grüße, Daniel
Tjo das Problem daran ist, daß in den Staaten (wo nun mal ein Großteil der Magento Entwickler sitzen) Sachen wie Umsatzsteuer und eine Preisauszeichnung wie wir sie kennen und benötigen, offensichtlich nicht wirklich wen interessieren und man es sich daher nunmal so einfach wie möglich macht.
Ich habe die Hoffnung noch nicht völlig aufgegeben, aber ich bezweifle, daß auch die diesjährige Meet Magento im Mai viel daran ändern wird…
Zu den anderen Magento Versionen kann auch ich leider nicht viel sagen.
Hallo Janine,
eine wirkliche Lösung für das Problem habe ich auch noch nicht, allerdings konnte ich es etwas eingrenzen. Magento rechnet nach unseren Änderungen intern mit 4 Nachkommastellen, Paypal bekommt die Preise allerdings immernoch mit nur 2 Nachkommastellen.
Im Magento Forum gibt es diesbezüglich einige Lösungsansätze, die ich allerdings noch nicht testen konnte.
Eine schnelle, aber natürlich sehr unsaubere und nicht wirklich zu empfehlende Möglichkeit, ist es, die “Fraud Protection”, also entweder direkt im Paypal-Konto oder in Magento zu deaktivieren. http://www.magentocommerce.com/boards/&/viewthread/222075/P45/#t355633
Das kann aber einfach keine Lösung sein, denn am Ende kommen in Paypal oft immernoch andere Summen (meist 1 Cent unterschied) heraus, als in Magento. Das kann weder für die Kundenbeziehungen, noch für die Buchhaltung gut sein.
Es ist ganz einfach traurig, daß solche absoluten Kinderkrankheiten nach über 4 Jahren Entwicklungszeit noch immer nicht behoben sind. In jeder Version kommen neue “tolle” Features, die oft nur wenige Shops wirklich benötigen, aber solche Selbstverständlichkeiten interessieren dort offensichtlich einfach keinen…
Wie auch immer, ich bleibe dran und werde, auch wenn ich mit meinen “Entwicklerkünsten” eher im Webdesign, im Frontend- und Template-Bereich zu Hause bin, weiter nach Lösungen suchen.
Bzgl. Paypal könnte der Fix hier helfen:
http://www.collaboration133.com/sales-tax-mismatch-between-magento-checkout-and-paypal-1-cent-01-difference/733/
Kurzfassung: In der Konfiguration bei PayPal die Option ‘Artikel des Warenkorbs übertragen’ auf ‘Nein’ setzen und einen Text für die Warenkorbzusammenfassung eintragen. Ist zwar nicht schön, soll aber funktionieren. Ich konnte es leider nicht testen bisher.
Hilft leider nur bedingt.
Sobald Versandkosten berechnet werden wird paypalseitig bei bestimmten Summen wieder falsch gerundet.
Nach weiterem Lesen bin ich auf den hier gestoßen:
http://www.magentocommerce.com/boards/main.php/viewthread/247201/P15/#t373739
Scheint die einzige Lösung zu sein, die das Problem an der Wurzel packt und einfach die Rundung standardmäßig deaktiviert. Die Preisanzeige wird dadurch jedenfalls behoben. Mal schauen was PayPal dazu sagt… laut o.g. Thread ist das aber auch kein Problem.