PrestaShop bietet im Standard verschiedene Rundungsmöglichkeiten für Preise an. Die besondere Schweizer Rappenrundung (immer auf 5 Rappen) ist jedoch nicht berücksichtigt. Ausschlaggebend für diese Rundung ist die Mitte zwischen 0 und 5 Rappen oder zwischen 5 und 10 Rappen. Ist die zu rundende Zahl gleich oder höher als die Mitte, wird aufgerundet, ansonsten abgerundet.
Die Schweizer Rappenrundung selber programmieren
Wer gerne selbst im PrestaShop Hand anlegt, kann mit ein paar kleinen Anpassungen die Rundung einbauen. Man muss dabei beachten, dass Core-Dateien von PrestaShop geändert werden. Bei der nächsten Aktualisierung sind diese Änderung mit hoher Wahrscheinlichkeit verloren und müssen nochmals integriert werden.
Neuen Rundungstyp registrieren
Zuerst muss man einen neuen Rundungstyp anlegen.
define(‚PS_ROUND_HALF_EVEN‘, 4);
define(‚PS_ROUND_HALF_ODD‘, 5);
define(‚PS_ROUND_CHF‘, 150);
Jetzt kann man den neuen Rundungstyp im PrestaShop Admin registrieren.
Funktion:__construct
…
array(
‚value‘ => PS_ROUND_DOWN,
’name‘ => $this->l(‚Round down to the nearest value‘)
),
array(
‚value‘ => PS_ROUND_CHF,
’name‘ => $this->l(‚Swiss franc round mode‘)
));
Rundungsfunktionen anpassen
Die bestehende Rundungsfunktion muss erweitert werden.
Funktion: ps_round()
…..
case PS_ROUND_HALF_UP:
case PS_ROUND_CHF:
return round(20 * $value) / 20;
default:
return Tools::math_round($value, $precision, PS_ROUND_HALF_UP);
Integration ins Template
Funktion: ps_round(value, precision)
…
else if (method == 150)
return Math.round(20 * value) / 20;
…
Sofern im Order des aktiven Template ebenfalls eine tools.js vorhanden ist, muss diese auch angepasst werden.
Funktion: ps_round(value, precision)
…
else if (method == 150)
return Math.round(20 * value) / 20;
…
guten tag
ich habe ps 1.6.14 installiert. wie es scheint lässt sich beim template bootstrap unter /themes/template/js kein tools.js finden. bei mir liegt eine ähnliche datei unter /js/tools.php. dort aber wiederum finde ich keine Funktion: ps_round(value, precision).
ich suche nun schon seit tagen eine verlässliche anleitung, wie ich CHF richtig runden kann. kann das denn so schwer sein, diese regel fix in das shop-system einzubauen und der schweizer währung zuzuordnen?
Ich habe die Beschreibung zur Rundung überarbeitet. Wenn das Template keine tools.js hat, muss diese auch nicht angepasst werden. Ich würde jedoch empfehlen, die tools.js im PrestaShop JavaScript Ordner („/js/“) anzupassen
ich bin derzeit dabei einen prestashop für einen kunden zu konfigurieren. ich war froh endlich die lösung gefunden zu haben, um die rundungen der schweizer rechnung in den griff zu bekommen. dies ist mein letztes übriges problem. leider hat es nicht funktioniert. zur warenkorb-ajax berechnung (teil 4) ihrer ausführung habe ich die entsprechende datei in meiner auflistung nicht finden können (/themes//js/tools.js). die ersten 3 schritte hatte ich ausgeführt. somit bin ich nicht weiter gekommen. den shop hatte es erst garnicht mehr angezeigt.
also habe ich den ‚urzustand‘ der 3 dateien wieder hergestellt.
der shop ist die neueste version 1.6.0.14. – schade.
vielleicht haben sie noch einen gedanken dazu. vielen dank.
jens
Hallo Jens, ich habe die Beschreibung angepasst. Die Funktion ps_round() in /js/tools.js sollte immer angepasst werden, diese ist im Standard enthalten. Wenn Dein aktives Template keine „tools.js“ im JavaScript Ordner hat muss es nicht angepasst werden. Viele Grüsse, André
Guten Tag, kann es sein, dass ab Prestashop 1.6.1 tools.js anders aufgebaut ist? – ps_round(value, places) … Grüsse Markus Sorg
Hallo Herr Sorg
Bei der aktuellen 1.6.1.1 habe ich es gerade probiert, dort ist die Tools.js noch genauso aufgebaut wie hier beschrieben. Ich habe einen Screenshot ergänzt, wo genau ich die Anpassungen platziert habe.
Ich kann sonst auch gerne mal kurz drauf schauen, senden Sie mir doch einfach ein Mail.
Viele Grüsse
André Rühle
Velle Dank för die super Beschriibig. Hed super klappet! Grüess, Armin
Prestashop 1.6.1.4 mit einem bitnami image.
Vielen Dank André für die Beschreibung. Hat alles sehr gut geklappt.
Hat niemand Einfluss um die Anpassungen für die Schweiz bei Prestashop zu positionieren? Auch wenn wir eines der ganz wenigen Länder sind, wäre es doch genial, die Anpassungen bei einem Update nicht wieder zu integrieren.
Ein Modul installieren nur wegen der Rundung ist auch übertrieben…..
Nochmals Danke
Thomas
Hallo, vielen Dank für diese tolle Anleitung.
Leider habe ich jedoch ein kleines Problem. Nach dem aktivieren des neuen Rundungsmodus im Backoffice, habe ich beim Produkt anlegen keine Möglichkeit mehr den Preis usw. einzugeben. Dort wo normalerweise die Preiseinstellungen sind, ist einfach nichts. Alles andere funktioniert.
Habe Prestashop Version 1.6.1.4
Beste Dank und freundliche Grüsse
Denis
Prestashop 1.6.1.5
Vielen Dank für die ausführliche Beschreibung. Leider komme ich bei der Tools.js nicht weiter. Ich habe ps_round_half_up(value, precision) und ps_round(value, places) gefunden. Leider aber fand ich ps_round(value, precision) nicht. Eine Idee was ich falsch mache?