HILFE: Kunde darf Artikel insgesamt nur einmal / 1x bestellen

Moin,

ich überlege schon seit längerer Zeit, konnte aber bisher für mein Vorhaben keine SW6-Lösung finden:

i) Es gibt eine Art „Test-Produkt“, welches jeder Kunde insgesamt nur ein einziges Mal im Leben bestellen können soll.
ii) Falls bereits bestellt, soll es dem Kunden nicht mehr angezeigt werden.

i) muss auf jeden Fall gelöst werden.
ii) muss nicht unbedingt gelöst werden, dann würde einfach eine Fehlermeldung im Warenkorb angezeigt werden oder Ähnliches.

Mein Ansatz wäre das automatische Setzen einer Kundengruppe „hat Test-Produkt gekauft“ nach einer Bestellung, welche diesen Artikel enthält.
Und dann per Dynamic Access den besagten Test-Artikel für die Kundengruppe „hat Test-Produkt gekauft“ nicht mehr anzuzeigen.
Dies würde ja i) und ii) lösen.

Das konnte man in SW5 mit einem Plugin lösen, dieses hat allerdings keinen SW6 Support.

Habe bereits im Rule Builder geguckt und lediglich conditions gefunden, die sich auf den Warenkorb beziehen, o.Ä. - leider gibt es meines Wissens nach keine condition in Richtung Bestellverlauf des Kunden oder dergleichen.

Habt ihr vielleicht eine Idee?

Viele Grüße

Dein Ansatz mit den unterschiedlichen Kundengruppen funktioniert so prinzipiell, allerdings für das Anzeigen von unterschiedlichen Produkten pro Kundengruppe bedarf es einer Pluginfunktionalität.
Zuerst benötigen deine Produkte eine ManyToMany Verknüpfung zu den Kundengruppen (and vice versa)
Um das auch noch hübsch in der Administration einstellen zu können benötigst du eine Erweiterung der Produktbearbeitung in der Administration (als tip: src/Resources/app/administration/src/extension/sw-product), diese Felder ließen sich natürlich auch über die schon vorhandene REST-API definieren.

Zum Anzeigen bzw. eher ausblenden bestimmter Produkte benötigst du einen Subscriber auf das Event
ProductListingCollectFilterEvent::class

und musst dem Product Listing hier einen weiteren Filter hinzufügen

Abschließend benötigst du einen Subscriber auf das Event
‚order_line_item.written‘

Um hier bei jedem LineItem zu überprüfen ob es das einmalig bestellbare ist. Sollte dieses LineItem auftauchen muss nur noch die Kundengruppe des Kunden geändert werden.