Shopware 5 Streichpreise und Preisgruppen

Eine Kunde nutzt Preisgruppen für Artikel / Produktgruppen, z.B. eines Lieferanten. Im Backend lässt sich das einfach einstellen bietet dennoch einige Stolpersteine und es kamen einige Fragen dazu auf.

  1. Warum werden keine Streichpreise für die neu eingefügten Artikel angezeigt, obwohl die Preisgruppen gepflegt wurden?
  2. Wie lässt sich die Pflege automatisieren. Sprich die Preisgruppen ggf. nachträglich ändern?

Zur Frage 1:

Die Fehlersuche dauerte ein paar Minuten. Als wir damals den Shop initial aufgebaut hatten, importierten wir die Artikel über die Import/Export Schnittstelle. „Achtung, das CVS mit Open Office bearbeiten, sonst gibt es u.U. Probleme mit dem Zeichensatz.“

Was war nun das Problem, dass die Streichpreise nicht angezeigt wurden?

In den Stammdaten der Artikeldetails findet sich der Bereich für die Preise. In unserem Fall werden die Produkte nicht mit individuellen „Streichpreisen“ und Rabatten versehen, sondern eine Rabattierung erfolgt über Kundengruppen und / oder Preisgruppen. Somit muss für unseren Fall der Pseudopreis logischen / formalen Regeln folgen.

  • Es muss ein Pseudopreis eingetragen sein.
  • Der Pseudopreis muss für die korrekte Berechnung dem Verkaufspreis entsprechen.
    • Allgemein: der Streichpreis muss gleich oder grösser als der Preis sein. Nur dann wird dieser dargestellt.
  • Diese Anpassung muss für alle Kundengruppen vorgenommen werden.
Preis und Pseudopreis

Zur Frage 2:

Über die Mehrfachänderung lässt sich lediglich die Preisgruppe aktivieren und deaktivieren.

In unserem Fall wollen wir es auf den Hersteller / Marke einschränken. Die SupplierID findet man in der Tabelle: s_articles_supplier

Ansicht der Tabelle Supplier

Ebenfalls kann es vorab nützlich sein, zu ermitteln welche Artikel keinen oder einen abweichenden Pseudopreis gesetzt haben.

Bitte beachten! Vor jeder Änderung an der Datenbank, vorher eine Sicherung durchführen.

SELECT art.name, artp.price, artp.pseudoprice 
FROM `s_articles_prices` artp, `s_articles` art 
WHERE art.id = artp.articleID 
AND artp.price != artp.pseudoprice

Nach der Initialen Befüllung haben wir die Pseudopreise und Preise angeglichen.

update s_articles_prices set pseudoprice = price;

Damit wurden alle Artikel mit einem identischen Pseudopreis versehen, der dem regulären Verkaufspreis entspricht. Später wurden die Preisgruppen hinzugefügt und die Streichpreise im Frontend dargestellt.

Später haben wir nur noch die Unterscheide abgeglichen:

update s_articles_prices set pseudoprice = price where price != pseudoprice;

In unserem Fall haben wir die Streichpreise auf die Hersteller eingeschränkt. Je Hersteller bestanden unterschiedliche Händlerkonditionen, welche hier eingeflossen sind. Dies kann sich von Fall zu Fall unterscheiden, z.B. unterschiedliche Lieferanten.

Die Supplier ID Sprich ID des Hersteller findet man in der Tabelle s_articles_supplier

Daraus ergibt sich folgendes Statement, zum aktualisieren aller Artikel des Hersteller Ayer.

update s_articles_prices set pseudoprice = price
from s_articles_prices artp, s_articles art 
WHERE s_articles.supplierid = 4
AND s_articles_prices.price != s_articles_prices.pseudoprice
AND s_articles_prices.articleID = s_articles.id

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert