Anzeige der Rabatte nicht durchgängig

Hallo zusammen,

in unserem Shop werden die Rabatte nicht überall angezeigt.
Beispiel:

Ich rufe in einer Kategorie alle Artikel als eingeloggter Benutzer auf. Die Rabatte werden mir angezeigt:

Ich klicke auf den Artikel und sehe mir die Details an. Der Rabatt ist verschwunden:

Lege ich den Artikel in den Warenkorb wird im Warenkorb der richtige Preis angezeigt und man sieht wie im Hintergrund auch auf der Detailseite der korrekte Preis angezeigt wird:

Ab jetzt wird der rabattierte Preis so lange angezeigt bis ich den Artikel wieder aus dem Warenkorb entferne:

Könnt ihr mir die Ursache dafür nennen?

Viele Grüße
Chris

Hallo zusammen,

der Beitrag wurde in “Administration” verschoben. Kann ich davon ausgehen, dass es sich um einen Konfigurationsfehler handelt?
Konfiguriert sind Rabatte für bestimmte Kategorien. Diesen Kategorien sind Artikel zugewiesen. Der Rabatt ist dann für manche Gruppen konfiguriert. Preis und UVP sind pro Artikel konfiguriert.
Da an manchen Stellen der Rabatt angezeigt wird dachte ich nicht an einen Konfigurationsfehler.

Viele Grüße
Chris

Ich habe eine Kategorie zugeordnet, damit überhaupt eine Kategorie zugeordnet ist. Könnte ein Konfigurations-/Admin-Problem sein, könnte aber auch am Template liegen.

Unter Umständen könnte ich mir sogar Vorstellen, dass es sich um einen Bug handelt. Versuch das doch bitte mal am Demoshop oder in einer jungfräulichen Installation nachzuvollziehen.

Im Demoshop scheint alles korrekt zu funktionieren. Ich habe alles exakt so konfiguriert, wie in unserem Shop auch. Ich habe bewusst

  1. Einen neuen Artikel angelegt
  2. Eine neue Kategorie angelegt
  3. Eine neue Benutzergruppe angelegt
  4. Einen neuen Benutzer angelegt
  5. Einen neuen Rabatt angelegt
  6. Alle anderen Rabatte deaktiviert
  7. Einen neuen Hersteller angelegt
  8. Einen neuen Lieferanten angelegt

-> Auch in der Detailansicht wird der Rabatt angezeigt.
Jetzt muss man dazu sagen: Ich nutze noch die v4.10.2 der Demoshop ist eine v6.1.1



Da ich mich bei der Konfiguration des Demoshops 1:1 an unseren Shop gehalten habe gehe ich nicht von einem Administrationsproblem aus.
Das Theme mit den Templates ist ein von “Flow” geerbtes. An dieser Stelle habe ich meines Wissens nichts verändert dennoch würde ich es gerne überprüfen.
Welche Stelle wäre dafür relevant?

Viele Grüße
Chris

Hier noch die Konfiguration des Demo-Shops (bei uns analog):

Zusammenfassung

Rabatt Konfiguration:


Rabatt Konfiguration Benutzergruppenzuordnung:

Rabatt Konfiguration Kategoriezuordnung:

Kategorie Konfiguration:

Benutzergruppe Konfiguration:

Benutzer Konfiguration:

Artikel Konfiguration:

Artikel (Erweitert):

Artikel (Lager)

Herstellerkonfiguration:

Lieferant Konfiguration:

Hallo zusammen,

mittlerweile habe ich herausgefunden, dass das Problem eine Folge davon ist, dass ich wie hier beschrieben

die Parameter in der URL weggelassen habe.

Konkret scheint dadurch folgende Abfrage “false” zu sein:

[{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}]

Ist “&listtype=search&searchparam=…” Teil der URL ist $tprice->getBruttoPrice() > $price->getBruttoPrice(), sonst ist $tprice->getBruttoPrice() = $price->getBruttoPrice()

Warum ist das so?

Viele Grüße
Chris

Eigentlich haben die beiden Dinge nichts gemein. Bei [{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}] geht’s nur im die Einblendung der UVP bzw. das Hinzufügen von Klassennamen.

Vll. habe ich nicht ausreichend Angaben gemacht.

[{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}]
   <del>[{$oDetailsProduct->getFTPrice()}] [{$currency->sign}]</del>
   <br/>
[{/if}]

lautet der gesamte Block.
Hier springt er nur rein, wenn ich die oben genannten Parameter in der URL angebe.

Bei Ausgabe von

$price->getBruttoPrice

sehe ich dann eben, dass mit den URL Paramtern der Wert rabattiert ist und ohne die Parameter nicht.
Ggf. ist die eigentliche Ursache an anderer Stelle, aber das Ergebnis des Funktionsaufrufs zeigt, dass der Preis anders berechnet wird.

Dazu fällt mir nur Folgendes ein: oxarticles.php

/**
* Performance issue. Sometimes you want to load articles without calculating
* correct discounts and prices etc.
*
* @var bool
*/
protected $_blLoadPrice = true;

Bekomme ich noch nicht ganz zusammen:

Wenn ich “&listtype=search” eingebe führt er die Suche nochmal aus.
Wenn ich “&listtype=search” weglasse, führt er die Suche nicht aus → schneller

Wäre es dann nicht logischer bei einer ausgeführten Suche aus Performancegründen die Rabattberechnung wegzulassen?
Hier wird sie aber weggelassen, wenn ich die Suche nicht ausführe.

M.E. hat das nichts mit der Suche sondern eher was mit der Session zu tun, schau mal ob der Benutzer angemeldet ist wenn kein Rabatt erscheint. Vielleicht kannst du den Shop mal irgendwo online stellen damit man mal draufschauen kann, ansonsten ist das ein ziemliches Ratespiel.

In beiden Fällen ist der Benutzer angemeldet.
Hier Screenshots inkl. URL:

Aufruf des Artikels über die Kategorie: Honda Nice Motor -> Motorersatzteile -> E-1 Deckel Zylinderkopf.
In der Kategorieansicht wird der Rabatt angezeigt:

Klick auf den Artikel erzeugt folgende Anzeige (URL: Ohne Suchparameter):

Ergänze ich händich die URL-Parameter und drücke Enter erzeugt das folgende Ansicht:

In beiden Fällen ist der Benutzer angemeldet.

Testbenutzer: [email protected]
Passwort: Oxid2018

Der Shop ist eine Entwicklungsumgebung und es kann sein, dass zwischendurch etwas nicht funktioniert.
Grundsätzlich habe ich das Problem mit dem Testbenutzer so nachgestellt, dass es sichtbar wird, wenn man den Schritten in den Bildern folgt.

Viele Grüße
Chris

Die Anzeige und Berechnung erfolgt nur, wenn der Wert der o.a. Variable true ist. Nun würde ich mir den Wert zur Kontrolle ausgeben lassen. Ist er bei Deinem Problem false, musst die Ursache finden.

Schalt mal alle Module aus und probier nochmal.

Erledigt.
Module deaktiviert, tmp-Ordner geleert.

Ergebnis bleibt gleich.

Das habe ich ebenfalls gemacht. Der Wert ist in beiden Fällen (Rabatt angezeigt oder Rabatt nicht angezeigt) “1”.
Zur Kontrolle habe ich die Funktion [{$oDetailsProduct->disablePriceLoad()}] eingebaut. Das hat aber nur zur Folge, dass gar kein Preis mehr angezeigt wird und der Inhalt der Variable “$_blLoadPrice” leer ist:
URL ohne “listtype”/ $_bloadprice=1 → kein Rabatt:

URL mit “listtype” / $_bloadprice=1 → Rabatt:

Funktion “disablePriceLoad()” eingebaut zur Kontrolle → gar kein Preis angezeigt:

Dann würde ich den Quelltext untersuchen, ob die Angabe nur nicht sichtbar ist, also per CSS ausgeblendet bzw. überlagert wird. Da es ja auch bei Deiner anderen Frage um sowas geht, ist das vielleicht naheliegend.

Dann wäre aber doch die Ausgabe von " $price->getBruttoPrice" auch entsprechend korrekt.
Zugegeben: Bei der anderen Frage war ich nicht ganz auf der Höhe und hätte mir den Beitrag vermutlich schenken können.

Wie schon geschrieben wurde, ist das eine wilde Raterei…aber gut: zu Thema:
Obiges mag sein. Dann lass Dir beide Vergleichswerte ausgeben. Ist ein Wert von

$tprice->getBruttoPrice() > $price->getBruttoPrice()

leer, würde ich

if (!$this->getConfig()->getConfigParam(‘bl_perfLoadPrice’) || !$this->_blLoadPrice) {

in

public function getTPrice()

prüfen. Das ist ja die einzige Stelle, die die Ausgabe von TPrice noch verhindert.

Also ich lasse mir die beiden Werte ausgeben. Zuerst habe ich das einfach so ohne Prüfung in den Quelltext geschrieben und festgestellt, dass $tprice wohl nicht vorhanden ist, wenn der Rabatt nicht angezeigt wird:

Also habe ich in der productmain.tpl den Code wie folgt verändert:

[{block name="details_productmain_tprice"}] [{oxhasrights ident="SHOWARTICLEPRICE"}] [{assign var=tprice value=$oDetailsProduct->getTPrice()}] [{assign var=price value=$oDetailsProduct->getPrice()}] [{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}]
			<h1>$tprice->getBruttoPrice() : [{$tprice->getBruttoPrice()}] </h1>
			<h1>$price->getBruttoPrice() : [{$price->getBruttoPrice()}] </h1>

                            <del>[{$oDetailsProduct->getFTPrice()}] [{$currency->sign}]</del>
                            <br/>
		    [{else}]

			<h1>$tprice->getBruttoPrice() : $tprice non object </h1>
			<h1>$price->getBruttoPrice() : [{$price->getBruttoPrice()}] </h1>

                        [{/if}]
                    [{/oxhasrights}]
                [{/block}]

Damit habe ich die Werte mit Prüfung ausgegeben und laufe nicht in das non-object Problem:

Beim ersten Aufruf, wenn kein Rabatt angezeigt wird ist wie schon gesagt $tprice nicht vorhanden. Der Rabatt wird nicht angezeigt:

Lege ich das Produkt in den Warenkorb ist das Objekt vorhanden und der Rabatt wird angezeigt:

Rufe ich das Produkt nochmal auf, wird initial wieder kein Rabatt angezeigt und $tprice ist nicht vorhanden. Gebe ich dann in der URL oben wieder “&listtype=search&searchparam=1234” ein, wird der Rabatt angezeigt und das Objekt ist vorhanden:

In der Funktion “getTprice” ist $this->_oTPrice leer.
Er geht in diesen Block:

In der Folge wird $this->_oTPrice nicht gesetzt und es bleibt dabei, dass der Originalpreis angezeigt wird.

In einem Fall ist oPrice2 als kleiner als oPrice. Wieso ist das so?

Hilft das zur Fehleranalyse weiter?

Hallo zusammen,

ich habe nun die Änderungen aus [Die Suche nach Performance] rückgängig gemacht. Das bedeutet: die Anpassungen in der search.php über das Modul (Modul gelöscht) und den Templates (zurück-Button, Anzeige “Artikel x von y”) zurück gebaut, so dass sie wieder mit dem originalen Flow übereinstimmen.

Die Anpassungen haben nur Probleme bereitet daher setze ich dort nun auf das Sphinx Modul, in der Hoffnung dass ich die Performance wie gewünscht erreiche.
Das Rabatt-Problem hat es leider nicht gelöst.
Könnt ihr mir kurz bestätigen, dass in der Kategorieansicht normalerweise kein “listtype” in der URL angezeigt wird. Ich habe leider keinen neu installierten Testshop mehr hier um zu vergleichen.

Final habe ich den SEO Parameter wieder auf “true” gestellt:
$this->blSeoMode = true;

Damit habe ich nun wie gewünscht die korrekte Rabattanzeige.
Dabei habe ich gemerkt dass es einen weiteren Fehler gab:
Wenn ein Artikel mehreren Kategorien zugeordnet war und man hat ihn aus der zweiten heraus aufgerufen gelangte man aus der Detailansicht mit Klick auf “Zur Übersicht” zur ersten Kategorie.

Ich weiß nicht wieso das alles auftritt. Ich scheine der einzige zu sein, bei dem das so war.
Danke trotzdem allen fürs Mitdenken.