コンテンツにスキップ

iDempiere 売上返品 RMA(Customer RMA)|操作マニュアル・技術仕様

📖 販売管理の全体像: 販売管理の業務フロー全体図 も合わせてご覧ください。

得意先返品承認(RMA: Return Material Authorization)は、得意先からの返品を受け付け、返品処理を管理するための伝票です。RMAを使うことで、返品受入と貸方メモ(Credit Memo)の作成を体系的に管理できます。

  • 得意先からの返品依頼の受付・記録
  • 出荷伝票を参照した返品明細の自動作成
  • 返品受入伝票(Customer Return)の生成
  • 貸方メモ(売上請求書の減額)の生成
  • 返品理由・返品タイプの管理
graph TD
    subgraph "得意先返品承認ウィンドウ(Window ID: 320)"
        T1["↩️ 顧客返品受付伝票<br/>M_RMA<br/>17項目"]
        T2["📋 顧客返品受付伝票明細<br/>M_RMALine<br/>15項目"]
        T3["💰 税額計算<br/>M_RMATax<br/>8項目(読取専用)"]
    end
    T1 --> T2
    T1 --> T3

得意先返品承認ウィンドウ(Window ID: 320) ↩ 顧客返品受付伝票 M_RMA 17項目 顧客返品受付伝票明細 M_RMALine 15項目 税額計算 M_RMATax 8項目(読取専用)

タブ名テーブル役割主な入力項目
顧客返品受付伝票M_RMAヘッダー(返品元・対象出荷等)伝票タイプ、出荷伝票、取引先
顧客返品受付伝票明細M_RMALine返品品目・数量の明細品目、数量、金額
税額計算M_RMATax税額の自動計算結果税率、税額
graph TD
    S1["① 新規RMA作成"] --> S2["② ヘッダー入力<br/>出荷伝票・RMA Type"]
    S2 --> S3["③ 保存"]
    S3 --> S4["④ 明細取込<br/>Create lines from<br/>または手動入力"]
    S4 --> S5["⑤ 完了処理<br/>Process RMA → 完了"]
    S5 --> S6["⑥ 返品受入伝票の作成<br/>Customer Return"]
    S6 --> S7["⑦ 返品受入完了<br/>在庫に戻る"]
    S5 --> S8["⑧ 貸方メモの作成<br/>Create Order From RMA"]
    S8 --> S9["✅ 売掛金の減額"]

① 新規RMA作成 ② ヘッダー入力 出荷伝票・RMA Type ③ 保存 ④ 明細取込 Create lines from または手動入力 ⑤ 完了処理 Process RMA → 完了 ⑥ 返品受入伝票の作成 Customer Return ⑦ 返品受入完了 在庫に戻る ⑧ 貸方メモの作成 Create Order From RMA 売掛金の減額

メニューから「返品管理 > 得意先返品受付伝票」を開きます。

  1. 新規」ボタンをクリック
  2. ヘッダー情報を入力:
    • 伝票タイプ: 得意先返品承認を選択
    • RMA Type: 返品タイプ(交換、返金、修理 等)を選択
    • 出荷伝票: 元の出荷伝票を選択(取引先が自動セット)
    • 名称: 返品の件名
    • 説明: 返品理由・備考
  3. 保存」をクリック
  4. Create lines from」ボタンで出荷伝票から明細を取り込み、または手動で明細入力
  5. Process RMA」ボタンで「完了」を実行

📌 ポイント: 元の出荷伝票を「Create lines from」で参照すると、品目・数量・単価が自動的に取り込まれます。部分返品の場合は取り込み後に数量を手動で修正してください。

RMA完了後:

  1. メニュー「返品管理 > 得意先返品」を開く
  2. 完了済みのRMAを参照して返品受入伝票を作成
  3. 完了処理で在庫が戻る
  1. RMA画面で「Create Order From RMA」ボタンをクリック
  2. 受注伝票(返品用)が自動生成される
  3. 売上貸方伝票を作成して得意先の債権を減額
項目名必須説明
伝票タイプ-選択得意先返品承認
RMA Type-選択返品タイプ(交換、返金、修理等)
出荷伝票-検索返品対象の元の出荷伝票
取引先-検索返品元の得意先
社内担当者-検索対応する営業担当者
受注伝票-検索元の受注伝票(参照)
金額-金額返品金額
伝票状態自動リスト起案、完了 等

Q. RMAを使わずに返品処理できますか?

Section titled “Q. RMAを使わずに返品処理できますか?”

直接「得意先返品」伝票を作成することも可能ですが、RMAを経由することで返品の承認フローを管理でき、トレーサビリティが向上します。

💡 ヒント: RMAを使う運用では「RMAが承認されるまで実際の返品受入を行わない」というコントロールが可能です。承認フローが必要な業務にはRMAを使うことを推奨します。

はい。RMA明細で返品数量を出荷数量より少なく設定することで、部分返品に対応できます。

Q. 返品時の在庫はどうなりますか?

Section titled “Q. 返品時の在庫はどうなりますか?”

返品受入伝票(Customer Return)を完了した時点で、返品品目が倉庫の在庫に戻ります。

⚠️ 注意: RMAを完了しただけでは在庫は戻りません。在庫に戻すには必ず「返品受入伝票(Customer Return)」を別途作成・完了する必要があります。また、売掛金の減額には「貸方メモ」の作成も別途必要です。

graph TD
    A[出荷伝票] -->|返品依頼| B[RMA]
    B -->|返品受入| C[返品受入伝票]
    B -->|減額| D[貸方メモ]
    C -->|在庫戻し| E[在庫台帳]
    D -->|消込| F[入出金]

返品依頼 返品受入 減額 在庫戻し 消込 出荷伝票 返品受入伝票 貸方メモ 在庫台帳 入出金


As-Link株式会社では、iDempiereの導入支援・カスタマイズ開発を承っております。

OSS ERP導入サービスの詳細はこちら


🛠 技術仕様(開発者向け)

得意先返品(Return Material Authorization)は Document 型の伝票で、M_RMA テーブルに格納されます。出荷済み商品の返品受付を管理し、返品入荷伝票やクレジットメモ(訂正請求書)の生成元となります。MRMA クラス(1,008行)が中核ビジネスロジックを担い、DocAction インターフェースを実装しています。

classDiagram
    class MRMA {
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +closeIt() boolean
        +reverseCorrectIt() boolean
        +getLines() MRMALine[]
    }
    class X_M_RMA {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class DocAction {
        <<interface>>
    }
    MRMA --|> X_M_RMA
    X_M_RMA --|> PO
    MRMA ..|> DocAction
    MRMA --> MRMALine : has many

+prepareIt() String +completeIt() String +voidIt() boolean +closeIt() boolean +reverseCorrectIt() boolean +getLines() MRMALine[] <> <> <> > X_M_RMA X_M_RMA --

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MRMA.java

📌 ポイント: M_RMA テーブルは IsSOTrx カラムで得意先返品(Y)と仕入先返品(N)を区別します。MRMA クラスは単一クラスで両方向の返品を処理します。ModelValidator でのフック時は必ず rma.isSOTrx() で方向を確認してください。

カラム名必須説明備考
M_RMA_IDIDPK返品ID主キー
AD_Client_IDTableDirectYクライアント
AD_Org_IDTableDirectY組織
DocumentNoStringY伝票番号
IsSOTrxYesNoY販売取引フラグY=得意先返品, N=仕入先返品
C_DocType_IDTableDirectY伝票タイプ
DocStatusListY伝票状態DR/IP/CO/CL/VO/RE
DocActionButtonY伝票アクション
NameStringY名前返品理由の概要
DescriptionTextN説明
C_BPartner_IDSearchY取引先
M_InOut_IDSearchY元出荷伝票返品対象の出荷
C_Order_IDSearchN受注伝票
SalesRep_IDTableY担当者
AmtAmountY返品金額自動計算
ProcessedYesNoY処理済み
カラム名必須説明
M_RMALine_IDIDPK明細ID
M_RMA_IDSearchYヘッダーFK
LineIntegerY行番号
M_InOutLine_IDSearchY元出荷明細
QtyQuantityY返品数量
AmtAmountY返品金額
DescriptionTextN説明
QtyDeliveredQuantityY返品入荷済数量
erDiagram
    M_RMA ||--o{ M_RMALine : "has"
    M_RMA }o--|| C_BPartner : "references"
    M_RMA }o--|| M_InOut : "original shipment"
    M_RMA }o--o| C_Order : "references"
    M_RMALine }o--|| M_InOutLine : "original line"
    M_RMA ||--o| M_InOut : "generates return receipt"
    M_RMA ||--o| C_Invoice : "generates credit memo"

original shipment original line generates return receipt generates credit memo

stateDiagram-v2
    [*] --> Drafted : RMA新規作成
    Drafted --> InProgress : prepareIt()
    InProgress --> Completed : completeIt()
    Completed --> ReturnReceipt : 返品入荷伝票生成
    ReturnReceipt --> CreditMemo : クレジットメモ生成
    Completed --> Closed : closeIt()
    Completed --> Voided : voidIt()

*

  1. ModelValidator.TIMING_BEFORE_PREPARE イベント発火
  2. 会計期間のオープンチェック
  3. 明細行の存在チェック
  4. 元出荷伝票の妥当性検証
  5. 返品数量が出荷数量を超えていないかチェック
  6. ModelValidator.TIMING_AFTER_PREPARE イベント発火
  1. ModelValidator.TIMING_BEFORE_COMPLETE イベント発火
  2. 返品金額の最終計算
  3. RMAステータスの更新
  4. ModelValidator.TIMING_AFTER_COMPLETE イベント発火

⚠️ 注意: RMA は「承認」にすぎず、完了しただけでは在庫は戻りません。在庫回復には返品入荷伝票(M_InOut, MovementType=C+)を別途完了させる必要があります。クレジットメモ生成もそれとは独立しています。自動化する場合はプロセスまたは Model Validator で明示的にこれらの伝票を生成・完了させる実装が必要です。

RMA完了後、以下の手順でクレジットメモ(訂正請求書)を生成:

  1. RMAから返品入荷伝票(M_InOut, MovementType=C+)を生成
  2. 返品入荷伝票の完了で在庫が増加
  3. RMAからクレジットメモ(C_Invoice, DocBaseType=ARC)を生成
  4. クレジットメモの完了で売掛金が減少
Calloutクラスメソッドトリガーフィールド処理内容
CalloutInOutrmaM_RMA_IDRMA情報から出荷明細の自動セット
CalloutInOutrmaLineM_RMALine_IDRMA明細から品目・数量の自動セット

Calloutソース: org.adempiere.base.callout/src/org/compiere/model/CalloutInOut.java

💡 ヒント: RMA 承認フローを追加する場合は、TIMING_BEFORE_COMPLETE タイミングで承認状態を確認する Model Validator が最もシンプルです。AD_WF_Activity ベースのワークフローと組み合わせることで、多段階承認も実現できます。デバッグは AD_WF_Process テーブルを確認してください。

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”

返品伝票に独自バリデーションを追加する最も安全な方法:

public class CustomRMAValidator implements ModelValidator {
@Override
public String docValidate(PO po, int timing) {
if (po instanceof MRMA) {
MRMA rma = (MRMA) po;
if (timing == TIMING_BEFORE_COMPLETE) {
// 例: 返品理由の必須チェック
if (Util.isEmpty(rma.getDescription())) {
return "返品理由の入力は必須です";
}
// 例: 返品金額の上限チェック
if (rma.getAmt().compareTo(new BigDecimal("100000")) > 0) {
return "返品金額が上限を超えています。承認が必要です";
}
}
}
return null;
}
}

RMAからの返品入荷伝票生成やクレジットメモ生成を自動化するプロセスを SvrProcess で実装可能。

🔧 カスタマイズ: 返品理由コードのマスタ管理が必要な場合、AD_Reference / AD_Ref_List でカスタム選択肢を定義し、M_RMA にカスタムカラム(例: ReturnReason)を追加する方法が iDempiere の標準的なアプローチです。2Pack でメタデータを管理してください。

プロセス名説明
伝票アクション (DocAction)伝票の完了・無効・取消等
RMAから返品入荷伝票生成返品入荷伝票の自動生成
RMAからクレジットメモ生成訂正請求書の自動生成

iDempiereの得意先返品は Model Validator や Callout で安全にカスタマイズできます。 返品承認フローや自動クレジットメモ生成をコア改変なしで拡張可能です。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら