Je voudrais accorder un point utilisateur au propriétaire du produit en montant du prix du produit après la vente d'un produit.
Pour cela, j'ai défini une règle comme ci-dessous:
Événements: achèvement du processus de paiement
Actions: boucle (
commerce-order:commerce-line-items
)
Et j'ai défini un composant de règles comme ci-dessous:
Conditions: Entité a champ (Entité:
commerce-line-item
, Champ:commerce_product
)Actions: points de subvention à un utilisateur: (Utilisateur:
commerce-line-item:commerce-product:creator
, Points:commerce-line-item:commerce-product:commerce-price:amount
)
Mais lorsque j'enregistre le composant, il génère ce message d'erreur:
Sélecteur de données commerce-line-item: commerce-product: commerce-price: le montant des points de paramètre n'est pas valide.
Comment je peux faire ça?
la source
Réponses:
Au début , j'essayé de répondre à votre question en utilisant des règles et Points Utilisateurs module, mais je l' ai vu tout en ajoutant des points de subvention à un utilisateur que l' action il n'y a pas sélecteur de données pour sélectionner l'utilisateur qui a créé le produit. J'ai trouvé le sélecteur de données pour sélectionner l'utilisateur qui est le propriétaire de la commande, mais ce n'est pas votre exigence. (C'est pourquoi j'ai clarifié cela dans les commentaires).
J'ai trouvé une solution de module à votre question. Le module utilise hook_commerce_checkout_complete () . À partir de la page du crochet:
Voici le codage du module que j'ai conçu:
Fichier YOURMODULE.info :
MISE À JOUR Comme suggéré par Clive , j'ai changé le fichier du module afin que ce module personnalisé fonctionne également avec les sites multilingues.
Fichier YOURMODULE.module :
Liens de référence:
userpoints_userpointsapi ($ params)
API commerce_checkout
commerce_line_item_load ($ line_item_id)
commerce_product_load ($ product_id)
Userpoints: déduire des points par programme
commerce_currency_amount_to_decimal ()
la source
field_get_items()
pour récupérer$order->commerce_line_items
, de cette façon cela fonctionnera aussi avec des sites multilinguesComme alternative à la réponse précédente, qui nécessite un code personnalisé, vous pouvez essayer l'alternative décrite ci-dessous pour contourner ce message d'erreur ...
Votre question semble être une variante (et non un doublon) de la question " Comment accorder aux utilisateurs des points utilisateurs égaux à la valeur de certains champs / valeur calculée? ". Semblable à la réponse acceptée à cette question, essayez d'adapter votre composant de règles comme suit:
Ajoutez ces actions de règles supplémentaires avant l'action de règles dans votre composant de règles qui provoque l'erreur:
commerce-line-item:commerce-product:commerce-price:amount
. Supposons que vous nommiez cette variableprice_amount
.price_amount
variable en entier . Supposons que vous nommiez ce résultat de conversionamount_of_points
.amount_of_points
.PS 1: Un tel "type de données de conversion" est simplement une question de fonctionnement des règles (par conception), donc il ne doit pas être considéré comme un bug non plus ...
PS 2: Je suppose que votre question concerne D7.
la source