動的にUserpoints を付与したい

Events happening in the community are now at Drupal community events on www.drupal.org.
kamihicouki's picture

こんにちは、
はじめまして、
西川と申します。

丸一日使ってどうしてもうまくいかなかったため投稿させていただきます。
目的はタイトルの通りなのですが、言い方を変えるとRule の使い方が分からない と同義です。
以下、状況としたいことを記載させていただきます。

[状況]
* Drupal7 をカスタマイズしてECサイトを作っています
* 様々モジュールを導入して 商品登録〜購入手続きの完了 まではできます
* userpoints, commerce_points モジュールをインストールしています
* 手動でのポイント付与は各ユーザへ可能です

[したいこと]
* Order Status 更新(complete)と連動して各ユーザへポイントを付与したい
* 商品(SKU)ごとで還元率(ポイント)は変動的にしたい

どなたでも構いません。
ご助力いただけると幸いです。

Comments

Commerce のチェックアウト完了時に

hgoto's picture

Commerce のチェックアウト完了時に Userpoints のポイントを自動付与されたいとのことですね。

うまく行かないとのことですが、具体的にはどの部分がうまく行かないでしょうか? SKU ごとに還元率を変動させるところでしょうか?必要な condition や action が足りないでしょうか?あるいは、 rule のそもそもの使い方がわかりづらい感じでしょうか?

ゴールとして、実現されたいことを Rules で実現するにはおおよそ次のような rule を作ることになるかと思います(実際に今再現しているわけではないので正確ではありません。その点ご了承ください)。

  • Event: 「 Completing the checkout process 」もしくは「オーダーが保存」(名前は正確ではありません)を選択。
  • Condition: ( Event に「オーダーが保存された」を選んだ場合は status の変更チェックを入れる)
  • Action:
    1. order の line items に対して loop を回す。
    2. loop 内で各 line item に対してポイント数を決定( SKU を見て決める必要があれば rule コンポーネントが必要かもしれません)。
    3. loop 中ポイント数を合算。
    4. 合算したポイント数を order の owner に付与する。

「ロジックとしては問題ないはずなんだけど何がうまく行っていないのかわからない・・・」という場合は Rules のログを確認したり途中の変数を出力したりされるとよろしいかと思います。

「そもそも Rules がよくわからない・・・」という場合は実際の rule ( Commerce のデフォルトの rule など)をたくさん見たりドキュメントやチュートリアルを読んだりされるとよいかもしれません。

ご参考になればと思います。

@hgoto

kamihicouki's picture

@hgoto さん

お返事ありがとうございます。
いろいろ理解できていない部分はありますが、まずは示していただいた Action: を試してみました。
現状としましては、

Action:
- 1. loop の回し方は理解できました
- 2. line item の数だけ100ポイント付与することができました。 またポイントの付与に関しては"ポイント付与率"というタクソノミー及び項目を作成し、各SKUはそのどれか1つに属するようにしたいと考えています。イメージは店頭の商品に割引タグがついてるのと同じです。
- 3. 合算処理がどの項目で設定するのか分かりませんでした。また、合算アクションはloopの内側?に追加するということでよろしいでしょうか。。
- 4. ルール内の USER.Data selector という項においてcommerce-order:ownerを選択してできました

「そもそも Rules がよくわからない・・・」という場合は実際の rule ( Commerce のデフォルトの rule など)をたくさん見たりドキュメントやチュートリアルを読んだりされるとよいかもしれません。

はい。Rule の理解がままならない状態でとりあえず手を動かし、ドキュメントを見たりして試行錯誤中です。
これから教えていただいたリンク先を読んでみようと思います(英語がくるしぃ;;

また今日も午後からがんばりますb
ありがとうございました。

hgoto's picture

ご丁寧にご説明くださりありがとうございます。

ご説明を読ませていただいたかぎりですと、ほぼ完成!された感じのようですね。

    1. 合算処理がどの項目で設定するのか分かりませんでした。また、合算アクションはloopの内側?に追加するということでよろしいでしょうか。。

こちらに関して。すでにご解決済みかもしれませんが、こちらは確か「変数を追加」で初期化した後、「値を計算」・「データの値をセット」という action をループ内で順次実行していくことで合計額の計算が実現可能かと思います。ご参考になさっていただければと思います。

Rules は、その「感じ」が徐々にわかってくるととても便利で重宝しますが、やはりちょっと直感的でないというかとっつきにくいところがありますもんね。。情報源がほとんど英語になってしまうところも、なかなか難しいですね。。

上述の合算の件については以下のページなども英語にはなりますがご参考になるかもしれません。よろしければご覧になってみてください。

がんばってくださいb