web-dev-qa-db-ja.com

注文ステータスが変更されたときにメールを送信する

注文ステータスを変更するとき(たとえば、保留中から処理完了キャンセル済み)にお客様にメッセージを送信する必要があります。 Rules でこれを行うにはどうすればよいですか?

2
Fabrica

ルールは間違いなくこれを行う方法です。

  1. 新しいルールを作成...

名前:注文ステータス更新タグ:React:イベント=コマース注文>既存のコマース注文を更新した後

  1. 次に、アクションを追加します。 システム>メールを送信

  2. 「To」の値をメールで送信します。 [commerce-order:mail]トークンを使用する

  3. 件名とメッセージを入力します。次に保存します。

更新:注文が更新されるたびにメールを送信しないようにするには、次のルールを設定します...

  1. 追加条件:データ比較。 Commerce-order:status = Completed

  2. 「AND」を追加します。

  3. 追加条件:データ比較。 Commerce-order-unchanged:status = Completed、ただしNEGATEを確認してください。

これにより、 PHPフィルター モジュールを有効にする必要がなくなります。

3
Collins

ルールだけでこれを行う方法を理解するのに完全に時間がかかりすぎましたが、これが私が働いているものです:

OR
    AND
        Data comparison
        Parameter: Data to compare: [commerce-order:status], Data value (equals): Canceled

        NOT Data comparison
        Parameter: Data to compare: [commerce-order-unchanged:status], Data value (equals): Canceled

    AND
        Data comparison
        Parameter: Data to compare: [commerce-order:status], Data value (equals): Processing

        NOT Data comparison
        Parameter: Data to compare: [commerce-order-unchanged:status], Data value (equals): Processing

追加のステータス更新が必要な場合は、それぞれを作成してラップし、ルールが何をチェックするかを認識できるようにする必要があります。完了した注文に対して完全にカスタムメッセージを送信する必要があるため、「完了」を省略しました。

Phpスニペットを使って精神的に考えさせてくれた@Colton Echolsに声をかけてください。

0
phil

「既存のコマース注文を更新した後のイベント」を使用するルールを設定します。 「カスタムの実行PHPコード」という条件を追加します。次に、次のコードを追加します。

if("[commerce-order:status]" == "completed" && "[commerce-order-unchanged:status]" != "[commerce-order:status]") { return TRUE; } else { return FALSE; }

次に、メールアクションを設定できます。

0
Colton Echols