PAngV & 30-Tage-Tiefstpreis¶
Die Preisangabenverordnung (PAngV) in der seit 28. Mai 2022 geltenden Fassung verlangt bei jeder Werbung mit einer Preisermäßigung die Angabe des niedrigsten Preises der letzten 30 Tage. Dieses Plugin setzt die Vorgabe automatisiert um – Du musst nichts im Template anpassen.
Rechtlicher Hintergrund¶
§ 11 Abs. 1 PAngV sagt:
Wer zur Angabe eines Gesamtpreises verpflichtet ist und mit einer Preisermäßigung wirbt, hat den niedrigsten Gesamtpreis anzugeben, den er innerhalb der letzten 30 Tage vor der Anwendung der Preisermäßigung gegenüber Verbrauchern angewendet hat.
Praktisch bedeutet das:
- Bei einem klassischen „Statt 49,99 € jetzt 29,99 €"-Werbeangebot muss neben dem Aktionspreis der niedrigste Preis der letzten 30 Tage stehen.
- War der Preis im 30-Tage-Zeitraum nie unter 49,99 €, ist die Angabe
49,99 €korrekt. - War der Preis im 30-Tage-Zeitraum zwischenzeitlich auf 19,99 € (z.B. ein Wochenend-Aktionspreis), dann ist
19,99 €der zwingend anzugebende Vergleichspreis.
Wie das Plugin das umsetzt¶
1. History-Tracking¶
Bei jeder Preisänderung (egal ob via Admin, API, Import, CLI) schreibt das Plugin einen History-Eintrag mit:
- Produkt-ID
- Feldname (
price.gross,price.net,price.listPriceetc.) - Alt-Wert + Neu-Wert
- Zeitstempel
- User/Quelle
2. regulierter_preis-Berechnung¶
Ein Scheduled Task (täglich 03:00) berechnet pro Produkt den niedrigsten Brutto-Preis der letzten 30 Tage und schreibt ihn in das Custom Field kommora_regulated_price am Produkt.
Bei Preisänderungen wird das Custom Field zusätzlich sofort aktualisiert (wenn in der Konfig aktiviert) – damit ist es immer maximal 24h alt.
3. Storefront-Anzeige¶
Im Storefront-Template (Buy-Widget, Listing-Cards) liest das Plugin das Custom Field aus und zeigt es nach dem konfigurierten Modus an. Die Anzeige ist:
- aktiv, wenn
kommora_regulated_price < currentPrice(es gab also wirklich einen niedrigeren Preis als heute) - inaktiv, wenn der heutige Preis der niedrigste ist (dann gibt es nichts zu signalisieren)
Anzeige-Modi im Storefront¶
„Unter dem Preis" (Default)¶
Direkt unter dem Aktionspreis:
29,99 € Niedrigster Preis der letzten 30 Tage: 24,99 €
Beste Sichtbarkeit, klare Compliance.
„Neben dem Preis (klein)"¶
Inline neben dem Aktionspreis als kleine Subskript:
29,99 € vorher 30-Tage-Tiefstpreis: 24,99 €
Kompakter, aber etwas schwerer zu lesen.
„Nur im Tooltip"¶
Über ein Info-Icon neben dem Preis – beim Hover/Tap erscheint der Tooltip:
29,99 € ⓘ → 30-Tage-Tiefstpreis: 24,99 €
Möglich, aber nach herrschender Auslegung nicht rechtssicher – PAngV verlangt „klare und eindeutige" Anzeige, nicht versteckt.
Empfehlung
Bleibe bei „unter dem Preis" – die anderen Varianten gibt es vor allem für ältere Themes oder Sonderfälle.
Anpassung des Anzeige-Textes¶
Standardtext: „Niedrigster Preis der letzten 30 Tage: %price%"
Anpassbar über Shopware-Snippets:
- DE:
kommora.history.pangv.label - EN:
kommora.history.pangv.labelim EN-Snippet-Set
Variablen im Text:
%price%– formatierter Preis (z.B. „24,99 €")%days%– Konfigurations-Wert „30"
Eigenes Wording
„Tiefstpreis 30 Tage: %price%" – kompakter „Niedrigster Preis (gemäß § 11 PAngV) der letzten %days% Tage: %price%" – ausführlich
Anzeige bei Variants¶
Bei Produkten mit Variants gilt die PAngV pro Variant. Das Plugin trackt jede Variant einzeln und zeigt im Storefront pro ausgewählter Variant den zugehörigen 30-Tage-Tiefstpreis.
Was zählt als „Preis"?¶
Das Plugin berücksichtigt für die 30-Tage-Berechnung:
price.gross(Bruttopreis) – Standardgrundlageprice.net(Nettopreis) – sekundär für B2B-Shops- NICHT den
listPrice(UVP/Streichpreis) – das wäre kontraproduktiv
Wenn der Shop Brutto-zentriert ist (B2C), wird der Bruttopreis als Vergleich genommen. Bei reinen B2B-Shops mit Netto-Anzeige automatisch der Nettopreis.
Mehrere Sales-Channels und Preise¶
Bei produkt-spezifischen Sales-Channel-Preisen (Erweiterte Preise) trackt das Plugin pro Sales-Channel separat. Im Storefront wird der für den jeweiligen Channel relevante 30-Tage-Tiefstpreis angezeigt.
Welche Produkte erscheinen mit PAngV-Anzeige?¶
Nur Produkte, bei denen es im 30-Tage-Zeitraum eine Preissenkung gab. Stabilen-Preis-Produkten wird kein „30-Tage-Tiefstpreis" angezeigt (wäre redundant mit dem aktuellen Preis).
Test-Szenario¶
So testest Du, ob die Anzeige korrekt greift:
- Im Admin ein Test-Produkt öffnen, aktueller Preis z.B. 49,99 €.
- Preis auf 19,99 € ändern, speichern.
- Im Admin sofort
bin/console kommora:history:sync-regulated-priceausführen (oder bis morgen 03:00 warten). - Im Storefront das Produkt aufrufen – jetzt steht unten: > 19,99 € > Niedrigster Preis der letzten 30 Tage: 19,99 €
- Preis wieder auf 49,99 € ändern, sync laufen lassen.
- Storefront öffnen – jetzt: > 49,99 € > Niedrigster Preis der letzten 30 Tage: 19,99 €
✓ Funktioniert.
Weiter¶
- Audit-Log & Rollback – das Modul für Backoffice-Nutzung
- FAQ