web-dev-qa-db-ja.com

ルールを使用してチェックアウト後にユーザーポイントを付与するにはどうすればよいですか?

チェックアウトの過程で特定のプランを選択したユーザーに、いくつかのユーザーポイントを付与しようとしています。

これが私のウェブサイトの機能の説明です。

  1. ユーザーがロールに登録すると、ユーザーは特定の機能を備えたWebサイトにアクセスできるようになります。
  2. 一部のユーザーには、新しいノードを作成する権限があります。
  3. ノードの作成中に、ユーザーはプランを選択する必要があります(Commerce Node Checkoutモジュールを使用して製品をプランとして追加しています)。
  4. ユーザーの選択に基づいて、ユーザーはチェックアウトページにリダイレクトされます。
  5. チェックアウトプロセスの完了後、ユーザーはいくつかのユーザーポイントを受け取ります。このためにルールを作成しましたが、期待どおりに機能していません。

これが私のルールのエクスポートです:

{ "rules_per_day" : {
    "LABEL" : "Per day",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "per day" ],
    "REQUIRES" : [ "commerce_order", "userpoints_rules", "commerce_checkout" ],
    "ON" : { "commerce_checkout_complete" : [] },
    "IF" : [
      { "commerce_order_contains_product" : {
          "commerce_order" : [ "site:current-cart-order" ],
          "product_id" : "day_4dxivfX2oFRAqQH-Ij6VBFnBheZBRIo744cF46KKPSI",
          "operator" : "=",
          "value" : "1"
        }
      }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "site:current-user" ],
          "points" : "50",
          "tid" : "0",
          "entity" : [ "commerce-order" ],
          "description" : "You have received  the points for selected plan.",
          "operation" : "Insert",
          "display" : 1,
          "moderate" : "approved"
        }
      }
    ]
  }
}

ルール条件は、注文に製品ID nの特定の製品が含まれているかどうかを確認します。

このルールで何を間違えたのか、何を見逃したのかわかりません。このルールを機能させるための提案はありますか?

1
James

ルール条件が満たされるためには、[〜#〜] all [〜#〜]これらの基準が真である必要があります。

  • 注文には商品が含まれていますが、その商品のSKUは "day_4dxivfX2oFRAqQH-Ij6VBFnBheZBRIo744cF46KKPSI"である必要があります。
  • 注文時に指定された製品の数量は、「= 1 "である必要があります。

ユーザーはユーザーポイントを受け取っていないように見えるため、次のいずれかの理由が考えられます。

  • 理由1:ルール条件が満たされていません。 SKU値にタイプミスがないと仮定すると、数量が "= 1"ではないことが原因である可能性があります。

    これが問題の原因であるかどうかを確認するための簡単なチェックとして、ルール条件の[否定]チェックボックスを使用して、このルール条件を(一時的に)反対に変更するテストを実行します。そのシナリオでユーザーポイントが付与されている場合は、数量が実際には「= 1」ではないことを確認できます(考えたり期待したりしても)そうなると...)。

  • 理由2:ルールの条件は問題ありませんが、何らかの理由でルールアクションを実行しても、実際にはユーザーにポイントが付与されません。

    これが問題の原因であるかどうかを確認するための簡単なチェックとして、別のルールアクション(既に持っているアクションの前)を追加して、単に「メッセージを表示する」(「システム」内にあります)。すべてのメッセージは、「ルールアクションがトリガーされました」のようなものである必要があります。そのシナリオでそのようなメッセージが実際に表示された場合、問題の原因は、ルールアクション(ポイントを付与するため)に関連するものであり、期待どおりに機能していないことを確認できます。

上記のいずれも役に立たない場合は、「 起動したくないルールをデバッグする方法は? 」で詳しく説明されているように、ルールのデバッグの時間です。

1
Pierre.Vriens