Rundungsfehler in Magento beheben

26. November 2010
by Peter Hasitschka BSc

In Magento (1.4 oder älter), das als mächtiges Online-Shop-System bekannt ist, kann in verschiedenen Fällen ein unangenehmer Rundungsfehler aufscheinen, der sich aber leicht beheben lässt:

Anmerkung: Um den Core unberührt zu lassen, empfiehlt es sich, die geänderten Files in der gleichen Struktur in Ordner Local abzuspeichern.

Die beiden Änderungen bewirken eine genauere Rundung von Zahlen. Bei der bisherigen Rundung kann es bei der Aufsummierung von Zahlen zu einem Ungenauigkeitsfehler kommen, da sich die Rundung auf zwei Nachkommastellen beschränkt.
Mit den Änderungen rundet Magento auf vier Stellen genau – Dadurch werden obige Fehler vermieden.

Folgende Änderungen sind durchzuführen:

Erstellen Sie Duplikat der Datei:
/app/code/core/Mage/Core/Model/Store.php
und fügen Sie das Duplikat in folgendem Pfad ein:
/app/code/local/Mage/Core/Model/Store.php

Die Änderung betrifft die Zeile 715 der Datei:

public function roundPrice($price)
{
return round($price, 4);
}

Erstellen Sie Duplikat der Datei:
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Helper/Form/Price.php
und fügen Sie das Duplikat in folgendem Pfad ein:
/app/code/local/Mage/Adminhtml/Block/Catalog/Product/Helper/Form/Price.php

Die Änderungen beginnen bei Zeile: 78

public function getEscapedValue($index=null)
{
$value = $this->getValue();
if (!is_numeric($value))
{
return null;
}
return number_format($value, 4, null, '');
}

Beachten Sie, dass Sie niemals ein File bearbeiten sollten dass direkt in der Core-Struktur von Magento liegt. Die Core Files werden bei jedem Update von Magento überschrieben, sodass Änderungen nicht persistent sind.

Weiters sollten Sie speziell bei Systemen wie Magentocommerce eine genaue Dokumentation über geänderte / angelegte Files führen, um den Überblick zu behalten. Bei Magento – Versionssprüngen wie etwa von 1.3 auf 1.4 sind derartige Dokumentationen ein relevanter Zeitfaktor.

About

Peter Hasitschka ist seit 2010 bei der Lorem Ipsum web.solutions GmbH als Softwareentwickler für die Planung, und Entwicklung von Magento-Commerce Webshops.