Moin, in welcher Datei wird die Variable $sBasketAmount erzeugt, welche in alle Shopware Ansichten verfügbar ist. In sBasket.php kann ich diese nicht finden. Danke
Zeile 52 in engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php mit dem Rückgabewert der Methode aus Zeile 82, die sich wiederum der Methode sGetAmount der Klasse sBasket bedient…
[quote=„ovi“]Zeile 52 in engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php mit dem Rückgabewert der Methode aus Zeile 82, die sich wiederum der Methode sGetAmount der Klasse sBasket bedient…[/quote] Bei der sBasket / sGetAmount war ich schon. Diese habe ich zum Test mal mit 11 definiert. Dabei konnte ich aber keine Änderung in der Warenkorbsumme feststellen. Ich schaue es mir noch mal an. Viele Dank.
okay, war mein Fehler. Aber noch fürs allgemeine, public function sGetAmount(){ return $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetRow("SELECT SUM(quantity\*(floor(price \* 100 + .55)/100)) AS totalAmount FROM s\_order\_basket WHERE sessionID=? GROUP BY sessionID",array($this-\>sSYSTEM-\>sSESSION\_ID)); }
was soll das mit floor und + .55 Welcher Sinn steckt da dahinter? Sollte es nicht reichen, die Summe von Menge * Preis von allen Datensätzen und dies dann auf 2 Stellen hinter dem Komma zu runden?
Das ist eine gute Frage… soweit ich weiß, gab es in älteren MySQL Versionen ein Problem mit der Round-Funktion, d.h. sie hat sich auf verschiedenen Systemen unterschiedlich verhalten. Floor, also Abrunden, hatte dieses Problem nicht. Die zweite Dezimalstelle (x,x5) ist offenbar nötig, da Shopware bei Preisen leider einen Gleitkommatyp verwendet (und nicht Festkomma, wie ich es für richtig halten würde, ist aber nur meine Meinung). Ist aber alles nur eine vage Vermutung…