Um die Rundungsfehler zu beheben, die vor allem dann auftreten, wenn man einen Shop mit Bruttopreisen konfiguriert und im Warenkorb oder zusätzlich einen Gutschein einlöst, muss man einfach nur die Rundungsgenauigkeit erhöhen.
Da alle Datenbankfelder, die Preise speichern, ohnehin als Decimal(12,4) angelegt sind, kann man dies auch nutzen und die standardmäßig eingestellte Rundungsgenauigkeit von "2" auf "4" erhöhen. Bei nur zwei Nachkommastellen kommen recht schnell Rundungsfehler zustande wenn mit mehreren gerundeten Werte gerechnet wird, wie man sich leicht vorstellen kann.
Lösung:
In der Klasse Mage_Core_Model_Store den zweiten Parameter verändern:
public function roundPrice($price)
{
//return round($price, 2);
return round($price, 4);
}
Im Frontend werden ohnehin alle Preisangaben durch den formatPrice() Filter auf zwei Nachkommastellen gerundet, so dass der Kunde nichts davon mitbekommt. Das einzige, was eventuell problematisch sein kann ist, dass Preise, die direkt aus der Datenbank oder über das Model exportiert und an Schnittstellen übergeben werden Fehler verursachen, wenn nun plötzlich vier Stellen nach dem Komma ausgegeben werden.
Allerdings sind mir bis jetzt keine Fehler diesbezüglich in den gängigen Extensions oder Zahlungsschnittstellen begegnet.