コンテンツにスキップ

iDempiere RMAタイプの使い方|販売管理 操作マニュアル・技術仕様

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

RMAタイプ(RMA Type)は、顧客からの返品(RMA: Return Material Authorization)を分類するためのマスタです。「初期不良」「誤発送」「顧客都合」といった返品理由をあらかじめ登録しておき、顧客返品伝票(Customer RMA)の作成時に選択します。

📌 ポイント: RMAタイプは名称・説明・コメントだけの非常にシンプルなマスタです。返品分析の切り口そのものになるため、あとから増やしにくい粒度(返品理由の大分類)で設計しておくことが実務上いちばん重要です。

  • 返品理由・返品区分の分類コードを定義する
  • 顧客返品伝票(M_RMA)に返品区分を割り当てる
  • コメント(ヘルプ)欄に、その区分を使う判断基準を記載して運用ルールを共有する
  • 使わなくなった区分を「有効」チェックを外して新規選択から除外する(過去伝票は保持)

RMAタイプは単一タブのシンプルなマスタです。

graph TD
    subgraph "RMAタイプウィンドウ(Window ID: 331)"
        T1["🏷 RMAタイプ<br/>M_RMAType<br/>6項目"]
    end

RMAタイプウィンドウ(Window ID: 331) RMAタイプ M_RMAType 6項目

タブ名テーブル項目数役割
RMAタイプM_RMAType6項目返品区分の名称・説明・コメント
graph TD
    A["🚀 メニューから開く<br/>返品管理 > RMAタイプ"] --> B["➕ 新規ボタンをクリック"]
    B --> C["✏️ 名称を入力<br/>(例: 初期不良)"]
    C --> D["📝 説明・コメントを入力<br/>(運用ルールの明文化)"]
    D --> E["💾 保存"]
    E --> F["🔗 顧客返品伝票で<br/>RMAタイプとして選択可能に"]

メニューから開く 返品管理 > RMAタイプ 新規ボタンをクリック 名称を入力 (例: 初期不良) 説明・コメントを入力 (運用ルールの明文化) 保存 顧客返品伝票で RMAタイプとして選択可能に

アクセス方法(メニューパス)

Section titled “アクセス方法(メニューパス)”

メニューから「返品管理 > RMAタイプ」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 名称(必須): 返品区分名(例: 初期不良誤発送顧客都合
    • 説明: 区分の補足説明(255文字まで)
    • コメント: 運用上の判断基準や注意点(2000文字まで)
  3. 保存」をクリック

💡 ヒント: このテーブルには検索キー(Value)がありません。伝票上の識別は「名称」で行われるため、名称そのものをコード的に読める文字列(例: RMA-01 初期不良)にしておくと一覧での並び順を制御しやすくなります。

不要になった区分は削除せず、「有効」チェックを外してください。新規伝票の選択肢から外れますが、そのRMAタイプを参照している過去の返品伝票はそのまま保持されます。

項目名カラム必須説明
クライアントAD_Client_ID必須選択テナント
組織AD_Org_ID必須選択組織
名称Name必須文字列(60)返品区分の名称
説明Description-文字列(255)補足説明
コメントHelp-テキスト(2000)運用上の判断基準・ヒント
有効IsActive必須チェック選択肢として使用するか(既定: Y)

全項目一覧はリファレンス参照

Q. RMAタイプに検索キー(コード)を設定できますか?

Section titled “Q. RMAタイプに検索キー(コード)を設定できますか?”

M_RMAType テーブルには Value(検索キー)カラムが存在しないため、標準では設定できません。コード管理が必要な場合は名称の先頭にコードを含めるか、カスタムカラムを追加してください。

Q. RMAタイプは組織ごとに分けられますか?

Section titled “Q. RMAタイプは組織ごとに分けられますか?”

M_RMAType のデータアクセスレベルは「クライアント」です。テナント単位で共有されるマスタのため、組織ごとに別の区分体系を持たせる設計には向きません。組織別に運用したい場合は名称に組織を含めるなどの工夫が必要です。

Q. 使用中のRMAタイプを削除できますか?

Section titled “Q. 使用中のRMAタイプを削除できますか?”

テーブル自体は削除可能(IsDeleteable=Y)ですが、顧客返品伝票(M_RMA)から参照されているレコードは外部キー制約により削除できません。運用上は削除ではなく「有効」チェックを外す運用を推奨します。

Q. 返品時の在庫戻し入れや返金は、RMAタイプで制御されますか?

Section titled “Q. 返品時の在庫戻し入れや返金は、RMAタイプで制御されますか?”

制御されません。M_RMAType は名称・説明・コメントのみを保持する分類マスタで、在庫や会計の挙動を切り替えるフラグは持ちません。返品後の処理は顧客返品伝票の伝票タイプ側で制御します。


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

RMAタイプはマスタデータ型のウィンドウ(AD_Window_ID: 331)で、M_RMAType テーブルに格納されます。専用の M クラスは存在せず、AD から自動生成された X_M_RMAType(199行)のみが提供されています。つまりコア側に beforeSave() / afterSave() などの独自ビジネスロジックは実装されておらず、PO の標準的な永続化処理のみが動作します。Document 型ではありません。

classDiagram
    class X_M_RMAType {
        <<generated>>
        +setName(String)
        +getName() String
        +setDescription(String)
        +setHelp(String)
        +getM_RMAType_ID() int
    }
    class PO {
        <<abstract>>
    }
    class I_M_RMAType {
        <<interface>>
    }
    X_M_RMAType --|> PO
    X_M_RMAType ..|> I_M_RMAType
    M_RMA --> X_M_RMAType : classifies

<> +setName(String) +getName() String +setDescription(String) +setHelp(String) +getM_RMAType_ID() int <> <> > PO X_M_RMAType ..

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

テーブル属性: 削除可(IsDeleteable=Y)/大量データ扱いなし(IsHighVolume=N)/アクセスレベル=クライアント/ビューではない。

カラム名必須説明備考
M_RMAType_IDIDPKRMAタイプID主キー
M_RMAType_UUUUID(36)NUUIDキー
AD_Client_IDTable DirectYクライアント既定 @#AD_Client_ID@
AD_Org_IDTable DirectY組織既定 @#AD_Org_ID@
NameString(60)Y名称識別子カラム
DescriptionString(255)N説明
HelpText(2000)Nコメント
IsActiveYes-NoY有効既定 Y
Created / CreatedByDate+Time / SearchY作成日時・作成者既定 SYSDATE
Updated / UpdatedByDate+Time / SearchY更新日時・更新者既定 SYSDATE
erDiagram
    M_RMAType ||--o{ M_RMA : "classifies return"
    M_RMA ||--o{ M_RMALine : "lines"
    M_RMA }o--|| M_InOut : "original shipment"

classifies return original shipment

M_RMAType_ID を参照しているテーブルは M_RMA(顧客返品伝票)のみです。

M クラスが存在しないため、コアに固有のビジネスロジックはありません。保存時の挙動は PO の標準処理(必須チェック、Name の長さ60文字制限、アクセスレベル制御)に従います。

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

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

M クラスが無いテーブルでは、Model Validator が唯一の安全な検証追加手段です。

public class CustomRMATypeValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (po instanceof X_M_RMAType
&& (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
X_M_RMAType rmaType = (X_M_RMAType) po;
// 例: 命名規則(RMA-99 形式のプレフィックス)を強制
if (rmaType.getName() == null || !rmaType.getName().matches("RMA-\\d{2} .+")) {
throw new AdempiereException("RMAタイプ名は「RMA-99 名称」形式で入力してください");
}
}
return null;
}
}

M_RMAType のカラムには AD 上の callout 定義がありません。入力時の自動補完が必要な場合は独自 callout を追加してください。

RMAタイプごとに処理を分岐させたい場合は、M_RMAType 側ではなく M_RMATIMING_BEFORE_COMPLETE / TIMING_AFTER_COMPLETEgetM_RMAType_ID() を判定する実装が定石です。

このウィンドウには専用のプロセスボタンは定義されていません。


RMAタイプは M クラスを持たない軽量マスタのため、返品理由コード体系の強制や返品ワークフローとの連動は Model Validator での拡張が中心になります。 返品分析レポートや品質管理システムとの連携もコア改変なしで実現できます。

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

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