web-dev-qa-db-ja.com

カスタムのコマース注文状態を作成する方法は?

カスタム注文状態を作成し、ビューで「ボタン」または「選択リスト」を使用して、それらの状態を切り替えます。

たとえば、完了とマークされたすべての注文の表が表示されるビューがあります。各注文の状態を切り替えることができるように、各行に「ボタン」または「選択リスト」を追加したいと思います。

これはできますか?

6
Samp

このモジュールをチェックしてください Commerceカスタムオーダーステータス カスタムステータスを支援します。

2
Vadim Eremeev

そこで2つあります。

A.注文情報フックの1つを使用して、カスタム注文状態を定義します。

  1. hook_commerce_order_state_info
  2. hook_commerce_order_status_info

B. commerce_orderベースのVBOビューを作成し、注文の状態を変更する操作を追加します。各行のボタンではなく、単なるチェックボックスまたはラジオボタンですが、その方法でバッチ更新できます。

または、注文を編集して、編集フォームで状態を設定します。

10
David Thomas

これに関するドキュメントは不明瞭であることがわかりました。参考のために、ここにプログラムでステータス(状態ではない)を追加する例を示します。これにより、「キャンセル済み」状態の下に新しい「クレジットカード障害」ステータスが追加されます。

function mymodule_commerce_order_status_info() {
  $order_statuses['ccfail'] = array(
    'name' => 'ccfail',
    'title' => t('Credit card failure'),
    'state' => 'canceled',
  );

 return $order_statuses;
}
1
Patrick Kenny

前の例のコードに問題がありましたが、これは、既存の「キャンセル済み」ステータスの後に新しいステータス「返金済み」を既存の「キャンセル済み」ステータスに追加する方法として私にとってはうまくいきました。

function mymodule_commerce_order_status_info_alter(&$order_statuses) {
    $order_statuses['refund'] = array(
            'name' => 'refund',
            'title' => t('Refunded'),
            'state' => 'canceled',
            'cart' => FALSE,
            'weight' => 10,
    );
}

'cart'インデックスは必須であり、含めない場合は、未定義のインデックスエラーが発生することに注意してください。

0
user19993