Varianten-Preisaufschlag: Fehlerbehebung und FAQ
Fehlerbehebung für den Varianten-Preisaufschlag in Sylius: Preis ändert sich nicht, Fehler nach Update, Setup-Befehl bricht ab, fehlende Channel-Preise, bekannte Einschränkungen und FAQ.
Varianten-Preisaufschlag: Fehlerbehebung und FAQ
Der Preis ändert sich nicht
Symptom: Eine Variante mit Prozentsatz und Aufschlag zeigt weiter ihren eigenen Preis.
Prüfen:
- Ist Preisaufschläge aktivieren auf der Seite Preisaufschlag-Einstellungen eingeschaltet?
- Ist bei der Variante Aufschlag anwenden aktiv und die Variante nicht selbst als Basisvariante markiert? Prüfe auch den Abschnitt Einstellungen pro Verkaufskanal: Steht der betroffene Channel dort auf "Nein, für diesen Kanal", gibt es in diesem Channel keinen Aufschlag.
- Gibt es bei einer anderen Variante desselben Produkts eine Basisvariante? Ohne Basisvariante bleibt jeder Preis unverändert.
- Ist der Prozentsatz 100 und der feste Aufschlag 0? Dann ist das Ergebnis der Preis der Basisvariante, nicht der eigene Preis.
- Steht in der Übersicht der Aufschläge eine Zeile für die Variante? Eine Zeile entsteht nur, wenn Basisvariante oder Aufschlag anwenden beim Speichern aktiv war oder ein Channel eine eigene Einstellung trägt.
- Steht im Log ein Eintrag der Stufe
errormit dem Text "Could not resolve variant price surcharge"? Dann ist beim Ermitteln des Aufschlags ein Fehler aufgetreten, etwa weil die Migrationen fehlen. Das Plugin liefert in dem Fall den eigenen Preis. Führebin/console mmd:variant-price-surcharge:setupaus.
Nach einem Update liefern Varianten ihren eigenen Preis oder das Variantenformular meldet einen Fehler
Symptom: Nach composer update zeigen Varianten mit Aufschlag ihren eigenen Preis, und das Bearbeiten einer Variante im Admin wirft einen Fehler.
Lösung: Die Tabelle mmd_product_variant_price_surcharge_channel fehlt noch. Führe bin/console mmd:variant-price-surcharge:setup aus und leere den Cache.
Der Setup-Befehl bricht ab
| Meldung | Ursache und Lösung |
|---|---|
| "Migrations this plugin builds on are still open." | Migrationen von Sylius sind noch offen. Führe bin/console doctrine:migrations:migrate aus und danach den Setup-Befehl erneut |
| "The migrations of this plugin are not registered with Doctrine." | Das Bundle ist nicht aktiv, oder sylius_core.prepend_doctrine_migrations steht auf false. Prüfe config/bundles.php und diese Einstellung |
| "The migrations ran, but Doctrine does not list them as executed." | Die Migrationen liefen, stehen aber nicht in doctrine_migration_versions. Prüfe die Datenbankverbindung und die Tabelle der Migrationen |
Meldet der Befehl, die Route sei nicht importiert, und gibt einen YAML-Snippet aus, trage ihn wie unter Installation und Betrieb beschrieben ein. Der Befehl läuft in dem Fall trotzdem weiter.
Der Bereich "Preisaufschlag" fehlt im Variantenformular
Prüfen: Ist das Bundle in config/bundles.php registriert und der Cache geleert? Die Twig-Hooks registriert das Plugin selbst, sobald das Bundle geladen ist.
Der Menüpunkt fehlt oder die Seite liefert einen Fehler
Prüfen: Ist der Routen-Import @MmdSyliusVariantPriceSurchargePlugin/config/routes/admin.yaml vorhanden? Der Menüpunkt verweist auf die Route mmd_variant_price_surcharge_admin_settings.
Fehler wegen fehlender Channel-Konfiguration
Symptom: Eine Produktseite oder der Warenkorb meldet, dass für Variante und Channel kein Preis vorliegt.
Lösung: Hinterlege für die Aufschlagsvariante und für die Basisvariante je einen Preis im betroffenen Channel. Das Plugin fragt beide ab und fängt diesen Fehler absichtlich nicht ab.
Der feste Aufschlag eines Channels hat die falsche Währung
Das Feld Fester Aufschlag im globalen Bereich nimmt die Basiswährung des ersten Channels, bei einem Shop ganz ohne Channel USD. Der gespeicherte Wert ist ein Betrag in der kleinsten Einheit, der in jedem Channel ohne eigene Einstellung gleich gilt, egal welche Währung der Channel hat. Aus 100 wird in jedem solchen Channel also 1,00 der jeweiligen Währung, nicht ein umgerechneter Betrag. Für einen genauen Betrag in einer bestimmten Währung überschreibst du den festen Aufschlag in diesem Channel. Dort gibst du ihn in der Basiswährung des Channels ein.
Bekannte Einschränkungen
- Pro Produkt ist genau eine Basisvariante vorgesehen, das Plugin erzwingt das aber nicht. Die Basisvariante gilt für das ganze Produkt und lässt sich nicht pro Channel überschreiben.
- Der globale Schalter lässt sich nicht pro Channel überschreiben.
- Das Eingabefeld des festen Aufschlags rechnet den Betrag mit 100 in die gespeicherte Einheit um, passt also für Währungen mit zwei Nachkommastellen.
- Die Spalte Aufschlag anwenden in der Übersicht zeigt nur den globalen Wert. Eine Variante, die nur über eine Überschreibung pro Channel einen Aufschlag bekommt, steht dort als "Nein".
- Der niedrigste Preis vor der Aktion (
lowestPriceBeforeDiscount) wird nicht umgerechnet. - Eine Sortierung nach Preis in Produktlisten nutzt die gespeicherten Channel-Preise.
- Die Aufschläge lassen sich nicht per Import oder API pflegen.
- Die Migrationen laufen nur auf MySQL und MariaDB.
FAQ
Wirkt der Aufschlag auch auf andere Varianten, wenn ich die Basisvariante ändere? Ja. Der Preis wird bei jeder Berechnung neu aus dem aktuellen Preis der Basisvariante gebildet, es wird nichts zwischengespeichert.
Kann eine Variante mit Aufschlag selbst Basis für eine dritte sein? Nein. Die Basis ist immer die als Basisvariante markierte Variante, und deren Preis wird nie aufgeschlagen.
Was passiert, wenn ich die Basisvariante lösche? Ihre Aufschlagszeile wird mit ihr gelöscht. Danach hat das Produkt keine Basisvariante, und die übrigen Varianten behalten ihre eigenen Preise.
Kann ich einen Rabatt statt eines Aufschlags abbilden? Ja, mit einem Prozentsatz unter 100.
Kann ein Preis negativ werden? Nein, das Ergebnis wird auf ganze Cent gerundet und liegt mindestens bei 0.
Was gilt in einem Channel, für den ich nichts eingestellt habe? Die globalen Werte der Variante.
Werden personenbezogene Daten verarbeitet oder externe Dienste angefragt? Nein.