Neu Konfigurator vorläufig falscher Preis

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Moin Moin,

wir haben seit kurzem das Problem, dass der Preis einer Konfiguration vorerst falsch in der Session['warenkorb'] liegt. Seit wann genau ist leider etwas unklar, vrstl. aber mit dem Update auf 4.06.
Aktuelle Shopversion: 4.06.12

Beispielkonfig: 3 Gruppen a 1 Artikel. Jeder Artikel kostet normal 10€. Konfigpreis ist 40€

Folgendes Szenario: Die Konfigitems von 3 Gruppen bekommen fixe Preise von 1€.
Der Konfigitempreis wird eingestellt via Konfigitem Eigenschaften->Reiter Preisliste->"Preise vom Artikel beziehen" deaktivieren->Plattform "JTL Store"->Endkunden VK-Brutto = 1€
In jeder Gruppe kann nur ein Artikel ausgewählt werden => 40€ + 3*1€ = 43€ Endpreis von der Konfig.

Nun legt der Shop die Konfig aber erstmal mit dem echten Preis der Artikel in den Warenkorb. => 30€ + 3*10€ = 60€
Hierbei haben auch die ausgewählten Artikel noch ihren Originalpreis.
In der Session lässt sich das "genau" beobachten, dass hier noch die falschen Preise liegen.
$smarty.session.Warenkorb->PositionenArr[0]->cKonfigeinzelpreisLocalized

Auf den tatsächlichen Preis (Konfig+Artikel) aktualisiert es sich erst beim einfügen des nächsten Artikels in den Warenkorb oder dem Aufrufen der Warenkorbseite.
Ich nehme also an, dass nachdem die Funktion "uebernehmeWarenkorbAenderungen" nochmal durchgelaufen ist, der tatsächliche Preis erst kalkuliert/geholt wird.
Weiterführend ist die Funktion "setzePositionsPreise();" zuständig die Preise richtig zu setzen.


Das Problem ist neu und gab es in der Version 4.05 definitiv noch nicht..

Beste Grüße,
Max
 
Zuletzt bearbeitet:

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Ich habs für mich fixen können.
Ich rate aber jedem mit dem gleichen Problem, der nicht etwas Ahnung von dem Thema hat, davon ab in den Dateien rum zu fuschen :)

Shop Version: 4.06.12
Benötigte Datei: includes/tools.Global.php

Hier VOR Zeile 957 "$_SESSION['Warenkorb']->redirectTo();" folgende Zeile noch einfügen "$_SESSION['Warenkorb']->setzePositionsPreise();".

Die Zeile gehört zu der Funktion, welche einfach gesagt Artikel dem Warenkorb hinzufügt. Innerhalb dieser gehört die Zeile genauer gesagt zum Abschnitt, der für Konfigartikel zuständig ist. Somit wirkt sich der zusätzliche Code auch nur auf das Hinzufügen von Konfigartikeln aus.

Was macht die Zeile Code?
Diese ruft lediglich die Funktion "setzePositionsPreise()" des aktuellen Warenkorb-objektes auf. Die Funktion prüft nach meiner Ansicht, ob die im Warenkorb enthaltenen Artikel den korrekten Preis besitzen oder ob es nicht einen eigenen Preis dafür gibt. Normalerweise wird die Funktion immer bei Änderungen des Warenkorbs aufgerufen. Nun wird sie auch beim Hinzufügen eines Konfigartikels direkt aufgerufen.
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Hallo @MaxWe,

wir haben für die 4.06.12 einige Performanceoptimierungen im WK vor allem beim Hinzufügen von Konfig-Artikeln vorgenommen. Vor allem der Aufruf von setzePositionsPreise() erwies sich als Performancefresser und wurde deshalb auf ein Minimu reduziert. Offensichtlich wurde dabei etwas zu viel des Guten getan... ;) Wir werden das für das nächste 4.06er Update (4.06.13) noch mit fixen.
Bei dem von dir vorgeschlagenen Fix würde ich fast mitgehen. Statt dem expliziten Aufruf von setzePositionsPreise() würde ich beim Aufruf von $_SESSION['Warenkorb']->fuegeEin( (Zeile 919 - 927) den letzten Parameter von false in true ändern. Damit wird beim Einfügen der Konfigkomponenten die WK-Summe explizit neuberechnet.
 
  • Gefällt mir
Reaktionen: MaxWe

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Hallo @MaxWe,

wir haben für die 4.06.12 einige Performanceoptimierungen im WK vor allem beim Hinzufügen von Konfig-Artikeln vorgenommen. Vor allem der Aufruf von setzePositionsPreise() erwies sich als Performancefresser und wurde deshalb auf ein Minimu reduziert. Offensichtlich wurde dabei etwas zu viel des Guten getan... ;) Wir werden das für das nächste 4.06er Update (4.06.13) noch mit fixen.
Bei dem von dir vorgeschlagenen Fix würde ich fast mitgehen. Statt dem expliziten Aufruf von setzePositionsPreise() würde ich beim Aufruf von $_SESSION['Warenkorb']->fuegeEin( (Zeile 919 - 927) den letzten Parameter von false in true ändern. Damit wird beim Einfügen der Konfigkomponenten die WK-Summe explizit neuberechnet.

Ah, dann werde ich das bei mir auch noch dahingehend ändern. Ist ja noch simpler :)
Ist leider immer etwas lästig, wenn man eigene Sachen in den Shop einbaut, die dann auf einmal nicht mehr gehen..
 

Ähnliche Themen