Ich bin nach wie vor der Meinung, dass die Preisfestsetzungsregeln der richtige Weg sind.
Natürlich können Sie nicht für jeden Zustand eine Bedingung festlegen, da dies zu einem Chaos führen würde. Ich würde vorschlagen, eine neue Tabelle mit zwei Spalten einzurichten: Staat und Rabatt. Füllen Sie die Tabelle mit den Daten, die Sie für Ihr Projekt benötigen.
Richten Sie eine neue Preisregel ein (Shop -> Konfiguration -> Produktpreisregeln -> Liste -> Hinzufügen). Überspringen Sie den Teil Bedingungen. Holen Sie im Teil Aktionen die Statusdaten des Benutzers und machen Sie sie als Variable verfügbar. Fügen Sie dann eine PHP-Aktion hinzu, um die Tabelle nach dem entsprechenden Rabatt abzufragen. Verwenden Sie eine dritte Aktion, um den Preis auf den abgefragten Rabatt zu setzen, oder, falls keine Ergebnisse zurückgegeben wurden, auf den ursprünglichen Wert.
Es könnte sich als sinnvoll erweisen, diese Logik in ein ordentliches Modul mit folgendem Inhalt zu verpacken:
- Eine Benutzeroberfläche für die Verwaltung der Rabatttabelle.
- Eine Regelaktion zur Abfrage der Tabelle für einen bestimmten Zustand.
- Eine Regelbedingung zur Überprüfung, ob es für einen bestimmten Staat einen Rabatt gibt.
(Sie können dann Punkt 3 oben in den Bedingungen der Preisregel verwenden, um den Preis nur zu ändern, wenn ein Rabatt gefunden wird).
Ich hoffe, das hilft. Viel Glück!