Ich möchte dem Produktbesitzer User Point in Höhe des Produktpreises nach dem Verkauf eines Produkts gewähren .
Dafür habe ich eine Regel wie folgt definiert:
Ereignisse: Abschluss des Bestellvorgangs
Aktionen: Loop (
commerce-order:commerce-line-items
)
Und ich habe eine Regelkomponente wie folgt definiert:
Bedingungen: Entity hat Feld (Entity:
commerce-line-item
, Feld:commerce_product
)Aktionen: Erteilen Punkte an einen Benutzer (User:
commerce-line-item:commerce-product:creator
, Punkte:commerce-line-item:commerce-product:commerce-price:amount
)
Wenn ich jedoch eine Komponente speichere, wird folgende Fehlermeldung generiert:
Datenauswahl Commerce-Werbebuchung: Handelsprodukt: Handelspreis: Betrag für Parameterpunkte ist ungültig.
Wie kann ich das machen?
quelle
Antworten:
Zuerst habe ich versucht, Ihre Frage mithilfe des Moduls Regeln und Benutzerpunkte zu beantworten , aber ich habe festgestellt , dass es beim Hinzufügen von Grant-Punkten zu einem Benutzer als Aktion keine solche Datenauswahl für die Auswahl des Benutzers gibt, der das Produkt erstellt hat. Ich habe die Datenauswahl für die Auswahl des Benutzers gefunden, der Eigentümer der Bestellung ist, aber das ist nicht Ihre Anforderung. (Deshalb habe ich dies in Kommentaren klargestellt).
Ich habe eine Modullösung für Ihre Frage gefunden. Das Modul verwendet hook_commerce_checkout_complete () . Von der Hook-Seite:
Dies ist die Codierung des Moduls, das ich entworfen habe:
Datei YOURMODULE.info :
UPDATE Wie von Clive vorgeschlagen , habe ich die Moduldatei so geändert, dass dieses benutzerdefinierte Modul auch mit mehrsprachigen Sites funktioniert.
YOURMODULE.module Datei:
Referenzlinks:
userpoints_userpointsapi ($ params)
Commerce_checkout-API
Commerce_line_item_load ($ line_item_id)
Commerce_product_load ($ product_id)
Benutzerpunkte: Punkte programmgesteuert abziehen
Commerce_Currency_amount_to_decimal ()
quelle
field_get_items()
zum Abrufen zu verwenden$order->commerce_line_items
, auf diese Weise funktioniert dies auch bei mehrsprachigen WebsitesAls Alternative zur vorherigen Antwort, für die benutzerdefinierter Code erforderlich ist, können Sie die unten beschriebene Alternative ausprobieren, um diese Fehlermeldung zu umgehen ...
Ihre Frage scheint eine Variation (kein Duplikat) der Frage zu sein, wie Benutzerbenutzerpunkte vergeben werden, die dem Wert / berechneten Wert eines bestimmten Felds entsprechen . Versuchen Sie, ähnlich wie bei der akzeptierten Antwort auf diese Frage, Ihre Regelkomponente wie folgt anzupassen:
Fügen Sie diese zusätzlichen Regelaktionen vor der Regelaktion in Ihrer Regelkomponente hinzu, die den Fehler verursacht:
commerce-line-item:commerce-product:commerce-price:amount
. Nehmen wir an, Sie nennen diese Variableprice_amount
.price_amount
Variablen in Ganzzahl . Nehmen wir an, Sie nennen das Konvertierungsergebnisamount_of_points
.amount_of_points
.PS 1: Ein solcher "Datentyp konvertieren" hängt einfach davon ab, wie Regeln funktionieren (von Natur aus), daher ist er auch nicht als Fehler anzusehen ...
PS 2: Ich nehme an, Ihre Frage bezieht sich auf D7.
quelle