Im Anwenderhandbuch findet man unter Punkt 9.36 die Beschreibung zur Globalen Preisänderungen in der Datenbank. Diese lautet hier wie folgt (Beispiel mit Preiserhöhung um 5%):
UPDATE products SET products_price=round(products_price*1.05);
Dies hat aber einen kleinen Haken, denn die Funktion "round()" innerhalb der Anweisung rundet die Preise nicht auf Cent-Beträge sonder auf volle Euros. Das führt dann zu nicht gewollten Preisänderungen.
z.B.:
1,50€ werden zu 2,00€
1,40€ werden zu 1,00€
Somit ergeben sich hier völlig ungewollte Preisänderungen die zum Teil nicht mal eine Preiserhöhung sondern eine Preisminderung zur Folge haben.
Man kann das nun wie folgt umgehen.
1. man lässt die Funktion "round()" komplett aus der Anweisung raus
oder
2. man erweitert die Funktion "round()" um die Angabe von Decimalstellen
Mit der Angabe von z.B. 4 Dezimalstellen würde das wie folgt aussehen:
UPDATE products SET products_price=round(products_price*1.05,4);
Somit würde das Ergebnis wie folgt aussehen:
[Preis 1,4567€] * [Preiserhöhung 5%] = [Ergebnis inkl. Rundung 1,5295€] // altes Ergebnis wäre hier = 2,0000€
[Preis 1,3745€] * [Preiserhöhung 5%] = [Ergebnis inkl. Rundung 1,4432€] // altes Ergebnis wäre hier = 1,0000€
@Dokuman:
Ich denke man sollte dies mit in die Doku übernehmen um hier evtl. falsche Ergebnisse zu vermeiden.
Grüße
Thomas
Linkback: https://www.modified-shop.org/forum/index.php?topic=13480.0