Magentoの注文データには、いくつかの状態があります。毎日のオペレーションの中でよく使う機能なだけに、使い方を誤ると取り返しの付かないことが起きる場合があります。
このエントリでは、注文の中でも「キャンセル」と「クレジットメモ」に焦点を当てて解説します。

注文のキャンセルとは

「さっき注文した件、やっぱりキャンセルしたいんです」

こういうお問い合せはネットショップでは避けて通れません。
標準状態のMagentoでは、マイページなどの公開画面から、顧客自身による注文のキャンセルはできません。
キャンセルは管理画面からしかできない作りになっています。

そして、注文のキャンセルは、Magento上では限定された注文の状態でしか行うことができません。
その条件とは、

  • 領収データがないこと
  • 出荷データがないこと
  • 返金(クレジットメモ)データがないこと

です。
つまり、注文を受け付けた状態のままでなければならない、ということです。
ちなみに、ダウンロード商品や、仮想商品などの商品の出荷が必要ない商品だけで構成された注文データについては、一般的に注文作成時に領収データも作ってしまうことが多いため、キャンセル処理は行えません。

クレジットメモとは

クレジットメモは、アメリカなどの店舗で返品をした際に、購入時のレシートの裏に「返金するかわりに返金額を記入したメモ」を手渡される商習慣に由来しています。要はその店舗に「残高=クレジット」があることを示す「メモ」というわけです。

Magentoではクレジットメモを返金伝票として扱っていて、返金処理は全てこのクレジットメモを作成することで行います。
また、クレジットメモは領収済みでなければ作成することができないことに注意が必要です。 

キャンセルとクレジットメモの違い

キャンセルとクレジットメモは似て非なる存在ですが、明確に用途が異なります。
ここではその違いについて説明します。 

キャンセルの概念

Magentoの注文管理におけるキャンセルは、常に「購入内容全てに対するキャンセル」です。
明細行単位でのキャンセルや、一部数量のキャンセルといった処理は標準ではできません。

従って、「さっき注文したけどやっぱりキャンセルしたいんです」というリクエストが、注文そのものをとりやめるという意味であれば、領収前であればキャンセルをすれば良いことになります。

つまり、キャンセルは注文を「なかったこと」にする用途で使用するわけです。

クレジットメモを使用するケース

キャンセルに対してクレジットメモは領収後を取り扱います。
銀行振込・コンビニ支払い等の場合に代金を受領してしまったにもかかわらず、欠品が起きてしまい入荷予定が立たない場合に返金を行うようなケースや、完全に払い戻しをしたい場合に使用します。

つまり、クレジットメモは「払い戻し」が前提なのです。
また、クレジットメモは、購入時に選択した支払方法によっては、

  • 明細行の部分キャンセル
  • 数量の部分キャンセル

ができます。
これは支払方法に依存するため、一部返金処理のできない支払方法の場合は全額返金以外はできないことがあります。

クレジットメモによる部分払い戻しと金額の調整

クレジットメモで部分払い戻しをする場合は、明細行の数量を調整します。
部分払い戻しに対応している支払方法が使用されている注文に紐づくクレジットメモの場合、クレジットメモ作成画面は図のようになっているはずです。

払い戻し明細

部分払い戻しをしたい場合は、「払戻数量」を変更して、グレーになっている「個数の更新」をクリックします。
(数量を変更すると自動的にグレーからオレンジに色が変わります)

さらに、手数料(代引き手数料やラッピング等のオプションサービスなど)がある場合や、純粋に金額を返金する場合は、合計のところで調整します。

金額調整

合計のところには3つの入力欄があります。

  • 払戻配送
  • 払戻調整
  • 調整料

「払戻配送」は、配送料金の中から払い戻す金額を指定します。
「払戻調整」は、注文時の金額を上限とした金額を、払い戻す金額として指定できます(注文金額をオーバーする場合はエラーになります)。
「調整量」は払い戻し総額から減額する金額を指定します。

これらを組み合わせて返金額をコントロールすることで、希望する金額を返金することができます。

支払方法によって異なるクレジットメモの作成手順

さて、最後に支払方法によって異なるクレジットメモの作成手順を説明します。
クレジットメモの概念として、「支払いに紐づくデータ」として作成されるというものがあります。
クレジットカードをはじめとした、外部の決済サービスと連携している注文データの場合、

注文 - 領収 - 返金

という流れに沿って、決済サービスと連携をしなければなりません。
代引や銀行振込(決済サービスによる自動消し込みをしない場合)はこのようなことを考える必要はありません。

外部サービスと連携している場合は、必ず「領収」データからクレジットメモを作成します
そうでなければ、注文受付時に取得した取引データを引き継いで作成されている領収データを変更・取り消しすることができないからです。

この領収データ経由でクレジットメモを作成しなければならない支払方法については、決済サービスと決済サービスに接続するためのエクステンションごとに変わります。こればかりは開発元に確認しなければなりません。