コンテンツにスキップ

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

入荷伝票は、仕入先からの商品・資材の受入を記録する伝票です。出荷伝票と同じ M_InOut テーブルを使用しますが、入荷方向(MovementType=V+)で区別されます。入荷伝票の完成時に倉庫の在庫が増加します。

  • 仕入先からの入荷(受入)の記録
  • 在庫の自動増加(完成時)
  • 発注伝票との照合(数量・品目の突合)
  • 仕入請求書との照合
  • 入荷確認(検品)の管理
  • ロット番号・シリアル番号の記録

🖥️ インタラクティブ画面レイアウト: AD メタデータから自動生成した 入荷伝票の全タブ・全フィールド レイアウト(HTML版) で、実際の画面配置をご確認いただけます。

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

graph TD
    subgraph "入荷伝票ウィンドウ (Window ID: 184)"
        T1["📋 入荷伝票<br/>M_InOut<br/>47項目"]
        T2["📦 入荷伝票明細<br/>M_InOutLine<br/>27項目"]
        T3["🔗 確認明細<br/>M_InOutLineConfirm<br/>11項目"]
        T4["🔗 属性<br/>M_InOutLineMA<br/>7項目"]
        T5["🔗 発注照合<br/>M_MatchPO<br/>11項目"]
        T6["🔗 請求書照合<br/>M_MatchInv<br/>10項目"]
    end
    T1 --> T2
    T2 --> T3
    T2 --> T4
    T2 --> T5
    T2 --> T6

入荷伝票ウィンドウ (Window ID: 184) 入荷伝票 M_InOut 47項目 入荷伝票明細 M_InOutLine 27項目 確認明細 M_InOutLineConfirm 11項目 属性 M_InOutLineMA 7項目 発注照合 M_MatchPO 11項目 請求書照合 M_MatchInv 10項目

タブ名テーブル役割
入荷伝票M_InOutヘッダー情報(仕入先・倉庫・日付等)
入荷伝票明細M_InOutLine品目・数量の明細行
入出荷確認伝票明細M_InOutLineConfirm検品確認の明細
属性M_InOutLineMAロット・シリアル番号の属性情報
発注照合M_MatchPO発注伝票との照合状況
請求書照合M_MatchInv仕入請求書との照合状況

📌 ポイント: 入荷伝票明細タブの下に「確認明細」「属性」「発注照合」「請求書照合」の4つの子タブがあります。これらは明細行ごとのデータを管理します。ロット管理品目では「属性」タブへの入力が在庫管理上必須です。

graph TD
    A["🚀 開始"] --> B["新規ボタンをクリック"]
    B --> C["ヘッダー情報を入力<br/>(伝票タイプ・移動日付・倉庫)"]
    C --> D{"発注伝票あり?"}
    D -->|あり(推奨)| E["発注伝票フィールドに<br/>発注伝票を選択<br/>(仕入先等が自動セット)"]
    D -->|なし| F["仕入先を手動入力"]
    E --> G["保存"]
    F --> G
    G --> H{"明細の入力方法"}
    H -->|自動取込| I["「Create lines from」ボタンで<br/>発注伝票から明細を取り込み"]
    H -->|手動入力| J["入荷伝票明細タブで<br/>品目・数量・ロケーターを入力"]
    I --> K["入荷数量を確認・修正"]
    J --> K
    K --> L["ロット・シリアル品目は<br/>属性タブに番号を入力"]
    L --> M["伝票アクションボタンで<br/>「完了」を実行"]
    M --> N["✅ 入荷伝票 完了"]
    N --> O["在庫が自動増加"]
    N --> P["発注伝票の入荷済数量が更新"]
    N --> Q["発注照合レコードが自動作成"]

開始 新規ボタンをクリック ヘッダー情報を入力 (伝票タイプ・移動日付・倉庫) 発注伝票あり? 発注伝票フィールドに 発注伝票を選択 (仕入先等が自動セット) 仕入先を手動入力 保存 明細の入力方法 「Create lines from」ボタンで 発注伝票から明細を取り込み 入荷伝票明細タブで 品目・数量・ロケーターを入力 入荷数量を確認・修正 ロット・シリアル品目は 属性タブに番号を入力 伝票アクションボタンで 「完了」を実行 入荷伝票 完了 在庫が自動増加 発注伝票の入荷済数量が更新 発注照合レコードが自動作成 あり(推奨) なし 自動取込 手動入力

💡 ヒント: 「Create lines from」ボタンを使うと、発注伝票の未入荷数量が自動で明細に展開されます。部分入荷の場合は取り込んだ数量を実際の入荷数に修正してから完了してください。

メニューから「購買管理 > 入荷伝票(標準)」を開きます。

📌 ポイント: 入荷伝票(Material Receipt)は出荷伝票(Shipment)と同じ M_InOut テーブルを共有しています。MovementType = 'V+'(仕入先からの入荷)で購買側として区別されます。

  1. 新規」ボタンをクリック
  2. ヘッダー情報を入力:
    • 伝票タイプ: 入荷伝票を選択
    • 発注伝票: 対象の発注伝票を選択(仕入先等が自動セット)
    • 移動日付: 入荷日を入力
    • 倉庫: 入荷先倉庫を確認
  3. 保存」をクリック
  4. Create lines from」ボタンで発注伝票から明細を取り込み
  5. 入荷数量を確認・修正
  6. 伝票アクション」ボタンで「完了」を実行

完了処理により:

  • 在庫が増加(倉庫に入荷数量分を加算)
  • 発注伝票の入荷済数量が更新
  • 発注照合レコードが自動作成

⚠️ 注意: 入荷伝票を完了すると在庫が即座に増加します。数量や品目を誤って入力した場合は「無効」処理で在庫を元に戻せますが、既に仕入請求書との照合が済んでいる場合は先に請求書側の処理が必要です。

発注伝票なしでも入荷伝票を作成できます。仕入先と品目・数量を手動入力します。

💡 ヒント: 手動入荷でも、後から「マッチング」フォームで発注伝票や仕入請求書と紐付け(照合)できます。発注なし入荷が業務上必要な場合(緊急入荷など)に活用できます。

項目名説明
伝票タイプ選択入荷伝票
発注伝票検索紐づく発注伝票
移動日付日付入荷日(在庫移動の日付)
転記日付日付会計上の転記日付
取引先検索仕入先
倉庫選択入荷先の倉庫
項目名説明
品目検索入荷する品目
移動数量数量入荷数量
ロケーター選択倉庫内の保管場所
属性セットインスタンス選択ロット・シリアル番号
発注伝票明細検索紐づく発注明細行

はい。発注数量の一部だけを入荷伝票に記載して完了できます。残りは次回の入荷伝票で処理します。

Q. 入荷と発注の数量が合わない場合は?

Section titled “Q. 入荷と発注の数量が合わない場合は?”

「発注照合」タブで差異を確認できます。また、メニュー「購買管理 > マッチング」フォームで発注・入荷・請求の3方マッチングを管理できます。

⚠️ 注意: 入荷数量が発注数量を超過している場合(過剰入荷)は、マッチング時に警告が表示されます。発注修正か入荷修正かを仕入先と確認してから処理してください。

「無効」処理で在庫が戻り、発注伝票の入荷済数量も元に戻ります。

graph TD
    A[発注伝票] -->|入荷| B[入荷伝票]
    B -->|マッチング| C[仕入請求書]
    B -->|在庫更新| D[在庫台帳]
    B -->|品質検査| E[入出荷確認]

入荷 マッチング 在庫更新 品質検査 発注伝票 入荷伝票 仕入請求書 在庫台帳 入出荷確認


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

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


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

入荷伝票は Document 型の伝票で、M_InOut テーブルに MovementType=V+(仕入先入荷)として格納されます。出荷伝票と同じ MInOut クラス(3,644行)を共有し、IsSOTrx=N で購買側の入荷として動作します。DocAction および IDocsPostProcess インターフェースを実装しています。

classDiagram
    class MInOut {
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +closeIt() boolean
        +reverseCorrectIt() boolean
        +createConfirmation() MInOutConfirm
    }
    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
    MInOut --> MInOutConfirm : has many

+prepareIt() String +completeIt() String +voidIt() boolean +closeIt() boolean +reverseCorrectIt() boolean +createConfirmation() MInOutConfirm <> <> <> > X_M_InOut X_M_InOut -- > DocAction MInOut ..

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

M_InOut(入荷ヘッダー、MovementType=V+)

Section titled “M_InOut(入荷ヘッダー、MovementType=V+)”

出荷と同一テーブルを使用。IsSOTrx=N, MovementType=V+ で入荷として動作。

⚠️ 注意: 入荷伝票は出荷伝票と同じ M_InOut テーブル・MInOut クラスを共有します。MovementType の値(C-=出荷, C+=返品入荷, V+=仕入先入荷, V-=仕入先返品)を正確に把握してクエリやバリデーションを記述してください。

カラム名必須説明備考
M_InOut_IDIDPK入荷ID主キー
IsSOTrxYesNoY販売取引フラグN=入荷
MovementTypeListY移動タイプV+=仕入先入荷
DocumentNoStringY伝票番号
C_DocType_IDTableDirectY伝票タイプMMR(入荷伝票)
DocStatusListY伝票状態DR/IP/CO/CL/VO/RE
MovementDateDateY入荷日付
DateAcctDateY転記日付
C_BPartner_IDSearchY仕入先
M_Warehouse_IDTableDirectY入荷先倉庫
C_Order_IDSearchN発注伝票発注からの入荷時に設定
ProcessedYesNoY処理済み
PostedButtonY転記
カラム名必須説明
M_InOutLine_IDIDPK明細ID
M_InOut_IDSearchYヘッダーFK
LineIntegerY行番号
M_Product_IDSearchN品目
M_Locator_IDTableDirectYロケーター(保管場所)
MovementQtyQuantityY入荷数量
QtyEnteredQuantityY入力数量
C_OrderLine_IDSearchN発注明細FK
M_AttributeSetInstance_IDPAttributeN属性セットインスタンス
erDiagram
    M_InOut ||--o{ M_InOutLine : "has"
    M_InOut }o--|| C_BPartner : "vendor"
    M_InOut }o--|| M_Warehouse : "received at"
    M_InOut }o--o| C_Order : "from PO"
    M_InOutLine }o--|| M_Locator : "stored at"
    M_InOutLine }o--o| M_Product : "references"
    M_InOutLine }o--o| C_OrderLine : "from PO line"
    M_InOutLine ||--o{ M_MatchPO : "PO matching"
    M_InOutLine ||--o{ M_MatchInv : "invoice matching"
    M_InOut ||--o{ M_InOutConfirm : "confirmations"

received at from PO stored at from PO line PO matching invoice matching

  1. ModelValidator.TIMING_BEFORE_COMPLETE イベント発火
  2. 受入確認(Confirmation)の完了チェック
  3. 在庫の増加MStorageOnHand の更新)
  4. ロケーターへの品目登録
  5. 発注マッチングM_MatchPO レコードの自動生成)
  6. 発注の入荷済数量(QtyDelivered)更新
  7. 発注引当数量(QtyReserved)の解放
  8. 属性セットインスタンス(ロット番号、シリアル番号等)の登録
  9. ModelValidator.TIMING_AFTER_COMPLETE イベント発火
stateDiagram-v2
    [*] --> Drafted : 新規作成
    Drafted --> InProgress : prepareIt()
    InProgress --> Completed : completeIt()
    Completed --> Closed : closeIt()
    Completed --> Voided : voidIt()
    Completed --> Reversed : reverseCorrectIt()

*

📌 ポイント: M_MatchPO レコードは入荷伝票の completeIt() 内で自動生成されます。このレコードが存在しないと3-Way Matching が機能せず、仕入請求書の原価照合が行われません。入荷伝票を完了せずに請求書を先に処理するワークフローはサポートされていません(発注直接請求を除く)。

入荷伝票の完了時に M_MatchPO レコードが自動生成され、発注との照合を記録:

  • 発注明細ID(C_OrderLine_ID)と入荷明細ID(M_InOutLine_ID)の紐付け
  • 入荷数量と発注数量の照合
  • 価格差異の検出(標準原価計算方式の場合)

入荷時の品質検査フローは M_InOutConfirm(確認タイプ=QC)で管理:

  • 検査結果の記録
  • 不合格品の返品処理への連携
Calloutクラスメソッドトリガーフィールド処理内容
CalloutInOutorderC_Order_ID発注情報の自動セット
CalloutInOutdocTypeC_DocType_ID入荷用伝票タイプの初期値セット
CalloutInOutbpartnerC_BPartner_ID仕入先住所の自動セット
CalloutInOutwarehouseM_Warehouse_ID倉庫変更時のロケーター更新
CalloutInOutorderLineC_OrderLine_ID発注明細から品目・数量の自動セット
CalloutInOutproductM_Product_ID品目情報の自動セット
CalloutInOutqtyMovementQty数量変更時の単位変換

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

💡 ヒント: CalloutInOut.orderLine は発注明細選択時に品目・数量・ロケーターを自動セットします。ロット番号やシリアル番号の自動採番が必要な場合は、M_AttributeSetInstance_ID の Callout として実装し、MSequence を利用した採番ロジックを追加できます。

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

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

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

public class CustomReceiptValidator implements ModelValidator {
@Override
public String docValidate(PO po, int timing) {
if (po instanceof MInOut) {
MInOut inout = (MInOut) po;
if (!inout.isSOTrx() && timing == TIMING_BEFORE_COMPLETE) {
// 例: 品質検査の必須チェック
MInOutLine[] lines = inout.getLines(false);
for (MInOutLine line : lines) {
if (line.getM_Product_ID() > 0) {
MProduct product = MProduct.get(inout.getCtx(), line.getM_Product_ID());
if (product.isInspectionRequired() && !isInspected(line)) {
return "品質検査が未完了の品目があります: " + product.getName();
}
}
}
}
}
return null;
}
}

入荷時のロケーター自動割当ロジックをカスタマイズし、品目属性に基づく保管場所の自動決定を実装可能。

🔧 カスタマイズ: ILocatorStrategy インターフェースを OSGi サービスとして実装することで、品目カテゴリ・温度帯・危険物区分などに基づくロケーター自動割当ルールを追加できます。コアの MLocator.getDefault() を変更する必要はありません。実装参考: org.adempiere.base/src/org/adempiere/model/ILocatorStrategy.java

プロセス名説明
伝票アクション (DocAction)伝票の完了・無効・取消等
発注から入荷伝票生成発注伝票から入荷伝票を一括生成
受入確認数量・品質の確認処理

iDempiereの入荷伝票は Model Validator や Callout で安全にカスタマイズできます。 品質検査フロー、ロケーター自動割当、発注マッチングをコア改変なしで拡張可能です。

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

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