チェックアウトの過程で特定のプランを選択したユーザーに、いくつかのユーザーポイントを付与しようとしています。
これが私のウェブサイトの機能の説明です。
Commerce Node Checkout
モジュールを使用して製品をプランとして追加しています)。これが私のルールのエクスポートです:
{ "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
の特定の製品が含まれているかどうかを確認します。
このルールで何を間違えたのか、何を見逃したのかわかりません。このルールを機能させるための提案はありますか?
ルール条件が満たされるためには、[〜#〜] all [〜#〜]これらの基準が真である必要があります。
ユーザーはユーザーポイントを受け取っていないように見えるため、次のいずれかの理由が考えられます。
理由1:ルール条件が満たされていません。 SKU値にタイプミスがないと仮定すると、数量が "= 1"ではないことが原因である可能性があります。
これが問題の原因であるかどうかを確認するための簡単なチェックとして、ルール条件の[否定]チェックボックスを使用して、このルール条件を(一時的に)反対に変更するテストを実行します。そのシナリオでユーザーポイントが付与されている場合は、数量が実際には「= 1」ではないことを確認できます(考えたり期待したりしても)そうなると...)。
理由2:ルールの条件は問題ありませんが、何らかの理由でルールアクションを実行しても、実際にはユーザーにポイントが付与されません。
これが問題の原因であるかどうかを確認するための簡単なチェックとして、別のルールアクション(既に持っているアクションの前)を追加して、単に「メッセージを表示する」(「システム」内にあります)。すべてのメッセージは、「ルールアクションがトリガーされました」のようなものである必要があります。そのシナリオでそのようなメッセージが実際に表示された場合、問題の原因は、ルールアクション(ポイントを付与するため)に関連するものであり、期待どおりに機能していないことを確認できます。
上記のいずれも役に立たない場合は、「 起動したくないルールをデバッグする方法は? 」で詳しく説明されているように、ルールのデバッグの時間です。