Zahlungsart-Regel: kein LineItem mit bestimmter Eigenschaft

Hallo zusammen,

folgende Frage betrifft eine Kombination aus Plugin-Programmierung und Rule Builder-Benutzung.

Ich habe ein Plugin geschrieben, das im Warenkorb eigene LineItems anlegt (also keine Standard-Produkt-LineItems) und würde nun gerne eine Regel anlegen, dass die Zahlungsart „Nachnahme“ deaktiviert wird, wenn eines dieser LineItems eine bestimmte Eigenschaft hat (die z.B. per payload gesetzt werden könnte).

D.h. Nachnahme aktiv <=> es existiert kein LineItem, wo der Payload X den Wert Y hat / enthält.

Ich hatte schon an die Regel „Position mit Tag“ gedacht, und wollte dann den Payload tagIds mit einem entsprechenden Array füllen, aber da kamen mir dann zwei Fragen auf:

  • Erwartet die LineItemTagRule Ids von irgendwelchen vordefinierten Entities oder können diese Tags auch beliebige Strings sein?
  • Wie erstelle ich eine Regel, die wahr ist, wenn kein LineItem den Tag Y hat? Und nicht etwa nur dann, wenn ein LineItem existiert, das nicht den Tag Y hat? (Hierbei ist mir der RuleScope ins Auge gesprungen, aber ich habe keine Ahnung, wie ich den bewusst nutzen kann). Außerdem gibt es zwar anscheinend eine NotRule für das Negieren, aber ich weiß nicht wie ich sie im Adminbereich nutzen kann. Ich könnte ja z.B. eine Regel „Es existiert ein LineItem mit Tag Y“ negieren, um das zu erreichen, was ich eigentlich will. Aber wie geht das?

Also Ideen sind da, aber es gibt zu viele Stellschrauben und ich habe mit den Regeln noch nicht gearbeitet und auch keine Vorstellung davon, wie die mit eigenen LineItems und Strings, die nicht irgendwo mit einer ID gespeichert sind, umgehen können.

Danke!
Michael