Magento – Falle “Katalog Preisregel”

BildEin Thema welches ich heute einmal ansprechen möchte, da es uns gerade schwer beschäftigt hat: Magento und Katalog Preisregeln.

Warenkorb Preisregeln und Katalog Preisregeln überschneiden sich teilweise haben aber auch einige Unterschiede und einen ganz gewaltigen zu dem wir später kommen. Beide Preisregel Arten geben dem Shopbetreiber die Möglichkeit (speziellen) Kunden oder Kundengruppen abweichende Preise einzurichten.

Allgemein gesagt, wird dies bei Warenkorb Preisregeln häufig durch einen Gutscheincode bewirkt und auf jeden Fall erst im Warenkorb / Checkout. Die Katalog Preisregeln hingegen kann die Preise schon direkt im Katalog anpassen. Der Kunde sieht also direkt zu welchen Konditionen er einkauft.

BildKatalog Preisregeln werden ähnlich wie Warenkorb Preisregeln erstellt. Unter Verkaufsförderung > Katalog Preisregeln kann man sie hinzufügen. Man gibt einen Namen, stellt sie von Inaktiv auf Aktiv, lässt sie nur für bestimmte Kundengruppen anwenden, kann Bedingungen anknüpfen wie z.B. nur für bestimmte Artikelnummern etc. Abschließend stellt man dan ein, welche Aktion vorgenommen werden soll, wenn alle vorgenannten Bedingungen zutreffen. Hier kann man um Prozentsätze minimieren, oder feste Beträge. Wichtig ist hier die Unterscheidung von “UM” und “AUF”. UM 5% zu vergünstigen ist für den Shopbetreiber deutlich besser als AUF 5%.
Nach dem normalen Speichern der Regel ist diese zwar eventuell aktiv, muss aber durch aktives drücken von Anwenden oder vorheriges Drücken durch Speichern und anwenden in den Katalog eingelesen werden. Anschließend werden die Änderungen dann angezeigt und auch genutzt.

Bis dahin alles fein. Nun kommt aber das RIESEN Problem: Löscht man eine solche Regel einfach, verschwindet sie zwar aus der Regelübersicht im Gegensatz zu einer Warenkorb Preisregel bleibt die Wirkung (u.U.) erhalten.

Nun zu unserem konkreten Fall: Der Kunde hatte das Problem, dass bei einigen Artikeln seines Shops als Sonderpreis immer 5% des Originalpreises angezeigt und auch genutzt wurden. Dabei war es egal ob der Artikel einen regulären Sonderpreis hatte oder nicht, die 5% wurden stets vom Originalpreis angezeigt. Aber eben nur bei einigen und nicht bei allen. Zuerst waren es nur 5 oder 6. Der Kunde entschloss sich diese Artikel zu löschen und neu anzulegen, da hier das Problem nicht mehr auftrat.

Einen Tag später waren plötzlich wieder einige Artikel von der 5% Problematik betroffen. Er konnte sich das nicht erklären. Nach einigen Tests stellte sich heraus, dass erst nach dem Speichern (auch ohne Änderung) des Artikels die 5% Sache auftrat. Es musste also eine Änderung im System sein, die sich nur auf Produkte auswirkte, die zum Zeitpunkt der Änderung im System waren und keine später erstellten.

Weiterhin interessant war, dass regulär im Backend eingestellte Sonderpreise vom System ignoriert wurden SOLANGE sie größer waren als 5% des Originalpreises. Sobald sie kleiner waren, wurden die manuell hinterlegten Sonderpreise angezeigt.

Nach längerem Probieren und Diagnostizieren fanden wir heraus, dass es keinerlei Parallelen zwischen den betroffenen ggü. den nichtbetroffenen Artikeln gab AUSSER dass die nicht betroffenen zuletzt angelegt wurden und die betroffenen vorher. Wir wussten also, dass alle Artikel, die nach einem bestimmten Datum angelegt wurden von dem 5% Problem NICHT betroffen waren und alle davor betroffen. In der Datenbank bei den Artikeln gab es auch keine Hinweise auf das Problem. Die Sonderpreise wurden -wenn eingestellt- normal angezeigt, waren keine regulären Sonderpreise hinterlegt, war das Feld leer.

Wo lag nun das Problem? In unserem konkreten Fall war es nun so, dass im Shop eine Regel hinterlegt worden ist, die alle (zur Zeit der Erstellung vorhandenen) Produkte AUF 5% vergünstigte. Problem war hier jedoch schon, dass die Regel im Frontend keinen Unterschied ausmachte. Die Produkte behielten ihren Preis. So wurde die Regel kurzer Hand wieder gelöscht und geriet in Vergessenheit. Einige Zeit später trat dann plötzlich das Problem wie oben beschrieben auf. Jedes Mal wenn ein Artikel abgespeichert wurde, kostete er plötzlich nur noch 5% des Originalpreises.

Die Lösung des Problems war das Entfernen des Inhaltes der zuständigen Katalogregel Tabellen in der Datenbank. Hierzu wird der Befehl

TRUNCATE `catalogrule`;
TRUNCATE `catalogrule_product`;
TRUNCATE `catalogrule_product_price`;

direkt über SQL eingegeben oder die Tabellen manuell gelöscht (Backup der DB auf jeden Fall empfohlen!). Anschließend war das 5% Problem weg.

Da dies ein so skuriles Problem war, hoffe ich mit dieser Darstellung dem einen oder anderen schneller helfen zu können, als ich mir selber helfen konnte.

Aber wer kann sagen, dass das nicht komisch ist:

  1. EINIGE (nicht alle) Artikel kosten plötzlich nur noch 5%
  2. Es gibt keine anderen StoreViews oder Webseiten
  3. Templateänderungen (man probiert ja alles) machen auch keinen Unterschied
  4. Neu angelegte Artikel sind vom Problem nicht betroffen auch Duplizieren geht ohne dass es anschließend Probleme beim neuen Produkt gibt
  5. Artikel kosten erst 5% wenn sie einmal geöffnet und abgespeichert wurden
  6. Es gibt (lt. Backend) keine Warenkorb- oder Katalog Preisregel
  7. Es gibt keine offensichtlichen Parallelen zwischen betroffenen Produkten
  8. Es macht keinen Unterschied ob es regulär hinterlegte Sonderpreise gibt oder nicht
  9. Ist der regulär hinterlegte Sonderpreis jedoch kleiner als 5% des Originalpreises wird er angezeigt

Alles in allem kann man also sagen, dass man mit Katalog Preisregeln SEHR vorsichtig sein und diese nur dann einsetzen sollte wenn man genau weiß was man macht.

Genutzt in Magento Version 1.6.2.0. Kommentare, Anregungen, Fragen? Gerne!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

9 comments on “Magento – Falle “Katalog Preisregel””

  1. Genau das gleiche Problem haben wir auch mit einem Shop eines Kunden. Werde deine Lösung mal ausprobieren. Danke Dir!
    Grüsse
    Adrian

  2. Das Problem hatte ich auch.
    Als Ursache stellten sich fehlende Fremschlüssel heraus!
    Bei einer Überprüfung der Datenbank war dann ein Großteil der Tabellen ohne die entsprechenden Fremdschlüssel / Constraints – wie das auch immer passieren konnte.
    Nach Wiederherstellung (Magento Database Repair Tool) funktioniert das wieder.

    Hab gerade ein ganz anderes Problem:
    Katalog Preisregel 10% auf alle Produkte und alle Kundengruppen.
    Habe angenommen, dass dann die entsprechenden Gruppenpreise und Staffeln auch um 10% reduziert sind – falsch gedacht.
    Scheinbar vergleicht Magento den reduzierten Standardpreis mit dem *nicht* reduzierten Gruppenpreis, und zeigt dann den jeweils kleineren Preis an.
    Meiner Meinung nach ist das absurd.
    Vermutlich funktioniert es nur, wenn ich statt den Gruppenpreisen entsprechende Preisregeln verwende, oder die Gruppenpreise manuell ändere.

  3. Hallo
    Habe das gleiche Problem:
    Katalog Preisregel (10 % auf ausgewählte Kategorien) habe ich zuerst deaktiviert und danach ausversehentlich gelöscht.
    Nun sind aber die reduzierten Preise trotzdem noch dargestellt.
    Was kann ich tun? (Habe leider nur wenig programmier Kenntnisse)

    Danke für euere Hilfe!
    Beste Grüsse

  4. Hallo habe mir bei euch das widerrufsrecht-tool gekauft.

    Bin auf diesen Artikel gestossen und habe nun eine Frage dazu:

    Kann man die Warenkorbpreisregel als Einzelrabatt pro Produkt in der Bestellung anzeigen lassen und nicht als Gesamtrabatt ?

    1. Nein, nicht standardmäßig. Im Backend kann es anders aussehen aber generell wird der Coupon einmal unten abgezogen.

  5. Ich möchte einen Rabattcode erzeugen der für bestimmte Produkte unterschiedliche Rabatte vorsieht:
    Produkt A mit 30%
    Produkte B, C und D mit 25 %
    Produkte E und F mit 15%

    Wie kann ich das in Magento2 anlegen.

    Danke für Tipps

    1. Grundsätzlich muss hier zwischen Katalog-Regeln und Warenkorb-Preisregeln unterschieden werden. Rabattcodes gibt es bei Katalog-Preisregeln nicht, sondern nur bei zweiteren. Und ich fürchte, dass dies mit einer (Standard-)Warenkorb-Preisregel nicht funktionieren wird. Es gibt zwar etliche Bedingungen, die man hinterlegen kann, jedoch kann immer nur ein Rabatt hinterlegt werden. Es wäre somit kein Problem zu sagen “wenn Produkt A = 30%” aber man kann nicht sagen, “wenn A = 30%, wenn B,C oder D = 25%…”. Leider lässt Magento auch nicht die Anlage von drei verschiedenen Regeln mit dem gleichen Code zu – sonst hätte man die drei Regeln unabhängig anlegen können (alle mit demselben Code) und das System müsste schauen, dass es die einzig anwendbare Regel raussucht.
      Man müsste somit nach einer Extension suchen oder sich etwas bauen lassen.

Leave a Reply to Covos

Your email address will not be published. Required fields are marked *