コンテンツにスキップ

iDempiere 仕入先返品出荷伝票の使い方|購買管理 操作マニュアル・技術仕様

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

仕入先返品出荷伝票(Return to Vendor)は、仕入先へ返品する品目を実際に出荷し、倉庫の在庫を払い出すための伝票です。入荷伝票と同じ M_InOut テーブルを使用しますが、移動タイプが「仕入先返品(V-)」となり、在庫が減少する方向に働きます。

📌 ポイント: この伝票を完了して初めて在庫が減ります。仕入先返品依頼伝票(Vendor RMA)を完了しただけでは在庫は動きません。返品依頼と返品出荷は必ずセットで運用してください。

仕入先返品出荷伝票でできること

Section titled “仕入先返品出荷伝票でできること”
  • 仕入先へ返品する品目・数量の出荷登録(在庫の払出)
  • 仕入先返品依頼伝票(RMA)を参照した明細の取込
  • 保管場所(ロケーター)を指定した在庫の引き落とし
  • ロット・シリアル番号(属性セットインスタンス)単位の払出指定
  • 入出荷確認伝票による実出荷数量・欠陥品数量の確認
  • 運送会社・トラックNo・運送料など配送情報の記録
  • 返品出荷をもとにした仕入請求伝票(貸方伝票)の生成
graph TD
    subgraph "仕入先返品出荷伝票ウィンドウ(Window ID: 53098)"
        T1["↩️ 仕入先返品出荷伝票<br/>M_InOut<br/>51項目"]
        T2["📋 仕入先返品出荷伝票明細<br/>M_InOutLine<br/>27項目"]
        T3["✅ 入出荷確認伝票<br/>M_InOutLineConfirm<br/>11項目"]
        T4["🏷 属性<br/>M_InOutLineMA<br/>6項目"]
    end
    T1 --> T2
    T2 --> T3
    T2 --> T4

仕入先返品出荷伝票ウィンドウ(Window ID: 53098) ↩ 仕入先返品出荷伝票 M_InOut 51項目 仕入先返品出荷伝票明細 M_InOutLine 27項目 入出荷確認伝票 M_InOutLineConfirm 11項目 属性 M_InOutLineMA 6項目

タブ名テーブル役割主な入力項目
仕入先返品出荷伝票M_InOutヘッダー(取引先・倉庫・伝票タイプ・配送情報)伝票タイプ、取引先、倉庫、移動日付、RMA
仕入先返品出荷伝票明細M_InOutLine返品する品目・数量の明細品目、保管場所、移動数量、RMA Line
入出荷確認伝票M_InOutLineConfirm出荷実績の確認(差異・欠陥品)確認済(正常品)数量、欠陥品数量
属性M_InOutLineMAロット・シリアル別の払出数量割当属性セットインスタンス、移動数量

💡 ヒント: 「入出荷確認伝票」タブと「属性」タブは明細タブの子タブです。属性セットで在庫を追跡していない品目の場合、「属性」タブは使用しません。

graph TD
    A["🚀 メニューから開く<br/>返品管理 > 仕入先返品出荷伝票"] --> B["➕ 新規でヘッダーを入力<br/>(伝票タイプ・取引先・倉庫)"]
    B --> C["🔗 RMA を選択<br/>(仕入先返品依頼伝票)"]
    C --> D["💾 保存"]
    D --> E{明細の作り方}
    E -->|RMA から取込| F["📥 Create lines from ボタン<br/>RMA 明細を取り込む"]
    E -->|手動入力| G["✏️ 明細タブで品目・<br/>保管場所・移動数量を入力"]
    F --> H["🏷 属性セット品目は<br/>属性タブでロット/シリアルを指定"]
    G --> H
    H --> I["▶️ 出荷プロセス(DocAction)<br/>完了 を実行"]
    I --> J["📉 在庫が減少<br/>移動タイプ V- で在庫取引を記録"]
    J --> K["🧾 必要に応じて<br/>仕入請求伝票(貸方)を生成"]

メニューから開く 返品管理 > 仕入先返品出荷伝票 新規でヘッダーを入力 (伝票タイプ・取引先・倉庫) RMA を選択 (仕入先返品依頼伝票) 保存 Create lines from ボタン RMA 明細を取り込む 明細タブで品目・ 保管場所・移動数量を入力 属性セット品目は 属性タブでロット/シリアルを指定 ▶ 出荷プロセス(DocAction) 完了 を実行 在庫が減少 移動タイプ V- で在庫取引を記録 必要に応じて 仕入請求伝票(貸方)を生成 明細の作り方 RMA から取込 手動入力

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

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

メニューから「返品管理 > 仕入先返品出荷伝票」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. ヘッダー情報を入力:
    • 伝票タイプ: 仕入先返品用の伝票タイプを選択(必須)
    • 取引先: 返品先の仕入先(必須。取引先住所も必須)
    • 倉庫: 出荷元の倉庫(必須)
    • 移動日付: 在庫が動く日付(必須。初期値は当日)
    • 転記日付: 会計計上日(必須。移動日付から自動セット)
    • RMA: 対象の仕入先返品依頼伝票を選択
    • 移動タイプ: 仕入先返品(V-)(必須)
  3. 保存」をクリック
  4. Create lines from」ボタンで RMA から明細を取り込む、または明細タブで手動入力
  5. 明細では 保管場所(ロケーター)と 移動数量 を必ず確認します

⚠️ 注意: ヘッダーの「発注伝票」と「RMA」はどちらか一方しか設定できません。両方を設定した状態で完了しようとすると @OrderOrRMA@ エラーとなり、伝票状態が「不正(Invalid)」になります。

出荷プロセス」ボタン(DocAction)から以下のアクションを実行します。伝票状態(DocStatus)の初期値は「起案(DR)」、伝票アクションの初期値は「完了(CO)」です。

アクション処理内容
完了(Complete)検証後に在庫を払い出し、在庫取引を記録して「完了(CO)」へ
無効(Void)未完了の伝票を無効化し、確認伝票も無効化
クローズ(Close)完了済み伝票を締め、以降の参照生成を止める
訂正取消(Reverse-Correct)完了済み伝票を打ち消す逆仕訳伝票を生成
再有効化(Re-activate)完了済み伝票を起案状態に戻す

完了処理の前段では、発注伝票と RMA の排他・会計期間・与信・明細行の有無・属性セット必須品目の割当などが検証されます(詳細は技術仕様の prepareIt() を参照)。

主要項目のみ掲載しています。全項目一覧はリファレンス参照

仕入先返品出荷伝票タブ(ヘッダー)

Section titled “仕入先返品出荷伝票タブ(ヘッダー)”
項目名必須説明
伝票番号必須文字列伝票番号(伝票タイプの採番ルールで自動採番)
伝票タイプ必須選択仕入先返品用の伝票タイプ
取引先必須検索返品先の仕入先
取引先住所必須選択出荷元として使用する取引先住所
倉庫必須選択出荷元倉庫
移動日付必須日付在庫が動いた日付(初期値=当日)
転記日付必須日付会計計上日(初期値=当日)
移動タイプ必須リスト仕入先返品(V-)
RMA-検索参照する仕入先返品依頼伝票
発注伝票-検索参照する発注伝票(RMA と排他)
出荷ルール必須リスト出荷の可否判定(初期値=在庫available)
配送方法必須リスト配送手段(初期値=引取Pickup)
送料負担ルール必須リスト送料の扱い(初期値=運賃込Freight included)
運送会社 / トラックNo-選択・文字列運送会社と追跡番号
伝票状態自動リスト起案(DR)/進行中(IP)/完了(CO)/クローズ(CL) 等
出荷プロセス必須ボタンDocAction(完了・無効・クローズ等)
項目名必須説明
明細番号必須整数行番号(自動で10刻み採番)
RMA Line-選択参照する仕入先返品依頼伝票明細
品目-検索返品する品目
保管場所-選択払出元のロケーター
属性セットインスタンス必須属性ロット・シリアル等の属性
入力数量必須数量入力単位での数量(初期値=1)
数量単位必須選択入力数量の単位
移動数量必須数量在庫の基本単位に換算した数量
確認済(正常品)数量-数量確認済みの正常品数量
欠陥品数量-数量QA 不良として計上する数量(初期値=0)
料金-選択品目の代わりに計上する料金

Q. 「発注伝票」と「RMA」を両方入力するとどうなりますか?

Section titled “Q. 「発注伝票」と「RMA」を両方入力するとどうなりますか?”

完了処理時に @OrderOrRMA@ エラーとなり、伝票状態が「不正」になります。MInOut.prepareIt() は「発注伝票または RMA のどちらか一方だけを 1 つの入出荷伝票で処理できる」という制約を持っています。RMA 起点の返品出荷では「発注伝票」欄を空にしてください。

Q. 完了しようとすると @NoLines@ と表示されます。

Section titled “Q. 完了しようとすると @NoLines@ と表示されます。”

明細行が 1 行もありません。「Create lines from」ボタンで RMA から明細を取り込むか、明細タブで手動登録してから再度完了してください。

Q. 属性セット(ロット・シリアル)品目でエラーになります。

Section titled “Q. 属性セット(ロット・シリアル)品目でエラーになります。”

品目の属性セットが「出荷時に必須」に設定されている場合、明細の移動数量と「属性」タブ(M_InOutLineMA)で割り当てたロット/シリアル別数量の合計が一致していないと完了できません。属性タブで自動生成でない行の数量合計が、明細の移動数量と一致するよう調整してください。

Q. 入出荷確認伝票は必ず作らなければいけませんか?

Section titled “Q. 入出荷確認伝票は必ず作らなければいけませんか?”

伝票タイプの設定に応じて、完了準備処理(prepareIt)の中で createConfirmation() が自動実行されます。確認伝票が生成された場合は、確認を処理するまで伝票が完了しません。運用上不要であれば伝票タイプ側の確認設定を見直してください。

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

仕入先返品出荷伝票は Document 型の伝票で、出荷伝票・入荷伝票と共通の M_InOut テーブルに格納されます。ウィンドウ(AD_Window_ID: 53098)が異なるだけで、実体は同一のモデルクラス MInOut(3,644行)です。MInOutDocActionIDocsPostProcess を実装し、伝票ライフサイクルと会計連携を担います。仕入先返品は IsSOTrx=N・移動タイプ V-(Vendor Returns)で識別されます。

M_InOut のアクセスレベルは「組織(Organization)」、削除可(IsDeleteable=Y)です。

classDiagram
    class MInOut {
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +closeIt() boolean
        +reverseCorrectIt() boolean
        +reActivateIt() boolean
        +getLines(boolean) MInOutLine[]
        +createConfirmation() void
        +getMovementType(ctx, C_DocType_ID, issotrx, trxName)$ String
    }
    class MInOutLine {
        +beforeSave(boolean) boolean
        +getOfRMALine(...)$ MInOutLine[]
        +setM_Locator_ID(BigDecimal) void
    }
    class X_M_InOut {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class DocAction {
        <<interface>>
    }
    class IDocsPostProcess {
        <<interface>>
    }
    MInOut --|> X_M_InOut
    X_M_InOut --|> PO
    MInOut ..|> DocAction
    MInOut ..|> IDocsPostProcess
    MInOut --> MInOutLine : has many
    MInOutLine --> MInOutLineMA : attribute allocation
    MInOutLine --> MInOutLineConfirm : confirmation
    MInOutLine --> MRMALine : references

+prepareIt() String +completeIt() String +voidIt() boolean +closeIt() boolean +reverseCorrectIt() boolean +reActivateIt() boolean +getLines(boolean) MInOutLine[] +createConfirmation() void +getMovementType(ctx, C_DocType_ID, issotrx, trxName)$ String +beforeSave(boolean) boolean +getOfRMALine(...)$ MInOutLine[] +setM_Locator_ID(BigDecimal) void <> <> <> > X_M_InOut X_M_InOut -- > DocAction MInOut ..

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MInOut.java(3,644行)、MInOutLine.java(1,039行)、MInOutLineConfirm.java(210行)

📌 ポイント: M_InOut は出荷・入荷・得意先返品・仕入先返品を 1 テーブルで扱います。Model Validator でフックする際は isSOTrx()getMovementType() の組み合わせで伝票の種類を判定してください。ウィンドウ ID だけで分岐すると、REST API やプロセス経由の生成を取りこぼします。

カラム名必須説明備考
M_InOut_IDIDPK入出荷伝票ID主キー
AD_Client_IDTableDirectYクライアント既定 @#AD_Client_ID@
AD_Org_IDTableDirectY組織callout CalloutOrder.organization
DocumentNoStringY伝票番号
C_DocType_IDTableY伝票タイプcallout CalloutInOut.docType
DocStatusListY伝票状態既定 DR
DocActionButtonY伝票アクション既定 CO
IsSOTrxYesNoY販売取引フラグ既定 @IsSOTrx@。仕入先返品は N
MovementTypeListY移動タイプ仕入先返品は V-
MovementDateDateY移動日付既定 @#Date@、callout CalloutEngine.dateAcct
DateAcctDateY転記日付既定 @#Date@
C_BPartner_IDSearchY取引先callout CalloutInOut.bpartner
C_BPartner_Location_IDTableDirectY取引先住所
M_Warehouse_IDTableDirectY倉庫callout CalloutInOut.warehouse
M_RMA_IDSearchN仕入先返品依頼伝票callout CalloutInOut.rma
C_Order_IDSearchN発注伝票callout CalloutInOut.order。RMA と排他
DeliveryRule / DeliveryViaRuleListY出荷ルール/配送方法既定 A / P
FreightCostRule / PriorityRuleListY送料負担ルール/優先度既定 I / 5
Processed / PostedYesNo / ButtonY処理済み/転記状態
カラム名必須説明備考
M_InOutLine_IDIDPK明細IDcallout CalloutInOut.navigateInOutLine
M_InOut_IDSearchYヘッダーFK
LineIntegerY明細番号既定 SQL で最大値+10
M_RMALine_IDTableDirectNRMA明細FKcallout CalloutInOut.rmaLine
M_Product_IDSearchN品目callout CalloutInOut.product
C_Charge_IDTableDirectN料金
M_Locator_IDLocatorN保管場所callout CalloutFillLocator.fillLocator
M_AttributeSetInstance_IDProductAttributeY属性セットインスタンスcallout CalloutInOut.asi
QtyEntered / C_UOM_IDQuantity / TableDirectY入力数量と単位既定 1、callout CalloutInOut.qty
MovementQtyQuantityY移動数量既定 1、callout CalloutInOut.qty
ConfirmedQty / ScrappedQtyQuantityN確認済(正常品)数量/欠陥品数量ScrappedQty 既定 0
C_OrderLine_IDTableDirectN発注明細FKcallout CalloutInOut.orderLine
テーブル主要カラム役割
M_InOutLineConfirmM_InOutLine_ID, M_InOutConfirm_ID, TargetQty, ConfirmedQty, DifferenceQty, ScrappedQty出荷実績の確認と差異・欠陥品の記録
M_InOutLineMAM_InOutLine_ID, M_AttributeSetInstance_ID, MovementQty, DateMaterialPolicy, IsAutoGeneratedロット・シリアル別の払出数量割当
erDiagram
    M_InOut ||--o{ M_InOutLine : "has lines"
    M_InOutLine ||--o{ M_InOutLineMA : "attribute allocation"
    M_InOutLine ||--o{ M_InOutLineConfirm : "confirmation"
    M_InOut }o--o| M_RMA : "vendor RMA"
    M_InOutLine }o--o| M_RMALine : "RMA line"
    M_InOut }o--|| C_BPartner : "vendor"
    M_InOut }o--|| M_Warehouse : "ship from"
    M_InOutLine }o--o| M_Product : "product"
    M_InOutLine }o--o| M_Locator : "locator"

has lines attribute allocation vendor RMA RMA line ship from

stateDiagram-v2
    [*] --> Drafted : 新規作成(DocStatus=DR)
    Drafted --> InProgress : prepareIt()
    Drafted --> Invalid : 検証エラー
    InProgress --> Completed : completeIt() 在庫払出
    Completed --> Closed : closeIt()
    Completed --> Reversed : reverseCorrectIt()
    Completed --> Drafted : reActivateIt()
    Drafted --> Voided : voidIt()

*

prepareIt() の主要検証(MInOut.java 1438行〜)

Section titled “prepareIt() の主要検証(MInOut.java 1438行〜)”
#検証失敗時のメッセージ
1TIMING_BEFORE_PREPARE の発火
2発注伝票と RMA の排他(C_Order_ID != 0 && M_RMA_ID != 0@OrderOrRMA@
3会計期間のオープン(MPeriod.isOpen()@PeriodClosed@
4過去日付取引の許可(MAcctSchema.isBackDateTrxAllowed()@BackDateTrxNotAllowed@
5参照先発注がクローズ済みでないこと(逆伝票時はスキップ)OrderClosed
6与信チェック(Core.getCreditManager()Credit Manager のエラー
7明細行の存在@NoLines@
8容積・重量の集計(setVolume() / setWeight()
9属性セット必須品目の M_InOutLineMA 割当一致@M_AttributeSet_ID@ @IsMandatory@
10確認伝票の自動生成(逆伝票以外で createConfirmation()

明細側は MInOutLine.beforeSave()(561行〜)で品目・料金・数量・保管場所の整合性が検証されます。MInOutLine.getOfRMALine() により RMA 明細に紐づく入出荷明細を取得でき、返品数量の重複計上チェックに利用されます。

X_M_InOut に定義された定数のうち、購買・返品業務で使用する主な値は次のとおりです。

定数意味
V+MOVEMENTTYPE_VendorReceipts仕入先からの入荷(在庫増)
V-MOVEMENTTYPE_VendorReturns仕入先への返品出荷(在庫減)
C-MOVEMENTTYPE_CustomerShipment得意先への出荷
C+MOVEMENTTYPE_CustomerReturns得意先からの返品受入

移動タイプは MInOut.getMovementType(ctx, C_DocType_ID, issotrx, trxName) により伝票タイプと販売取引フラグから決定されます。

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

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

返品出荷に固有の業務ルールを追加する場合は docValidate()TIMING_BEFORE_COMPLETE でフックします。

public class CustomReturnToVendorValidator implements ModelValidator {
@Override
public String docValidate(PO po, int timing) {
if (po instanceof MInOut && timing == TIMING_BEFORE_COMPLETE) {
MInOut inout = (MInOut) po;
// 仕入先返品のみを対象にする
if (!inout.isSOTrx()
&& MInOut.MOVEMENTTYPE_VendorReturns.equals(inout.getMovementType())) {
if (inout.getM_RMA_ID() == 0) {
return "仕入先返品出荷には返品依頼伝票(RMA)の指定が必要です";
}
}
}
return null;
}
}
Calloutクラスメソッドトリガーカラム処理内容
CalloutInOutdocType / bpartner / warehouseC_DocType_ID / C_BPartner_ID / M_Warehouse_ID伝票タイプ・取引先・倉庫に応じた既定値のセット
CalloutInOutorder / rmaC_Order_ID / M_RMA_ID発注伝票・RMA からヘッダー情報を取込
CalloutInOutorderLine / rmaLineC_OrderLine_ID / M_RMALine_ID発注明細・RMA 明細から品目・数量を取込
CalloutInOutproduct / asiM_Product_ID / M_AttributeSetInstance_ID品目選択時の単位・属性のセット
CalloutInOutqtyQtyEntered / MovementQty / C_UOM_ID入力数量と移動数量の単位換算
CalloutInOutnavigateInOutLineM_InOutLine_ID明細へのナビゲーション
CalloutEnginedateAcctMovementDate移動日付から転記日付を自動セット
CalloutFillLocatorfillLocatorM_Locator_ID既定ロケーターの自動補完
CalloutOrderorganizationAD_Org_ID組織変更時の関連項目リセット

MInOut はコアクラスのため直接改変せず、IModelFactory によるモデルクラス差し替え、または Model Validator によるフックを使用します。会計仕訳をカスタマイズする場合は IDocFactory を実装したプラグインを登録してください。

プロセス名画面上のボタン説明
Create lines fromCreateLinesFromRMA や既存伝票から明細を一括取込
入出荷確認伝票作成CreateConfirm確認伝票を手動生成
パッケージ作成CreatePackage出荷用パッケージの作成
入荷伝票をもとに仕入請求伝票作成GenerateTo完了済み伝票から請求伝票を生成
出荷プロセスDocAction完了・無効・クローズ・訂正取消・再有効化

仕入先返品出荷は在庫・会計・仕入先評価に直結するため、返品理由コードの追加や返品承認フローの組み込みといったカスタマイズ需要が多い領域です。 Model Validator と Callout を用いれば、コアの MInOut に手を入れずに自社の返品ルールを実装できます。

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

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